This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F2812: ADC noise floor in 4-5 bit range

Part Number: TMS320F2812


Hi,

Good Day. I have a customer who is working with TMS320F2812EZDSP. Please see below for his query for your reference. Thank you very much.

I am working with the EzDSP evaluation board for the TMS320F2812 and the ADC performance is poor. In my application, I am running the CPU PLL at 45 MHz and scale clock to the ADC at 12.25 MHz. I'm using the PS register at 0. When I perform sequential reads of a DC signal, I am getting noise levels of 4-5 bits out of 12 bit ADC. From the Errata and datasheet is appears the noise level should be limited to 2 bits. I have tried higher PS settings up to 4 with no real improvements. Only when PS goes to 15 do I get to a noise level of 3 bits. Can you assist me on what I am doing wrong or is this within expectation?

Best Regards,

Ray Vincent

  • Ray,

    When the customer states 4-5 bits or 3 bits, I assume they mean 2^4-2^5 or 16 to 32 LSBs/codes of variation vs 2^3 or 8 codes of variation under the different scenarios above.  Let me know if this is incorrect, but will work on that for now.

    I think in the scenario of ACQPS = 15 and 8 codes of variation is getting to something reasonable for this ADC; I'd want to understand the standard deviation of the 8 codes a bit more.  They should be seeing a std deviation on the order of 0.9LSB or lower.  If the std deviation is higher than this then the signal is still limiting the noise floor vs the ADC.

    I'd also like to verify how the customer is setting up the ADC to get sequential samples; are they converting more than one signal on each ADC trigger(SOC).  i.e. MAXCONV >0?  Many times the issue with noise is that the ADC's sample and hold cap can't charge to the external value in time on the first sample from idle.  This is where increasing the ACQPS will help, as it give the sample and hold cap longer to charge and match the external voltage.  We can also try to sample the same channel back to back using MAXCONV to keep settling the sample and hold cap.

    For instance let's set the MAXCONV = 3(which should do 4 samples).  Ask the customer to only take the 4th sample from each SOC and see if this improves the distribution.  If that's the case then we are still dealing with the input signal limiting the SNR/code spread.

    Due to the nature of the eZDSP using pin headers to connect the voltage, we also need to limit the physical distance from the source as much as possible.  The customer may find it necessary to place some small capacitance to help buffer the signal which will improve noise.

    Here is a link to a newer app note discussing proper driving of the ADC input,  this will help derive the best balance of the above settings.

    Best,

    Matthew

  • Hi Matthew,

    Good Day. Please see below the feedback of our customer to your last response. Thank you very much.

    When the customer states 4-5 bits or 3 bits, I assume they mean 2^4-2^5 or 16 to 32 LSBs/codes of variation vs 2^3 or 8 codes of variation under the different scenarios above. Let me know if this is incorrect, but will work on that for now.

    Mark – Yes, this is the correct assumption.  When I mention 3 bits, I mean 3^2 or 8 LSB as mentioned in the example.

    I think in the scenario of ACQPS = 15 and 8 codes of variation is getting to something reasonable for this ADC; I'd want to understand the standard deviation of the 8 codes a bit more. They should be seeing a std deviation on the order of 0.9LSB or lower. If the std deviation is higher than this then the signal is still limiting the noise floor vs the ADC.

    Mark – confirming seeing much higher than 0.9 LSB. I was expecting a performance to be less than <4 LSB but seeing much higher in the 60 LSB realm.

     

    I'd also like to verify how the customer is setting up the ADC to get sequential samples; are they converting more than one signal on each ADC trigger(SOC). i.e. MAXCONV >0? Many times the issue with noise is that the ADC's sample and hold cap can't charge to the external value in time on the first sample from idle. This is where increasing the ACQPS will help, as it give the sample and hold cap longer to charge and match the external voltage. We can also try to sample the same channel back to back using MAXCONV to keep settling the sample and hold cap.

    Mark – MAXCONV = 0.  Reading the same ADC channel continuously using CONT_RUN.  Reading 114 samples of the same ADC channel and randomly distributed.  Some side questions as a result

    • Is it beneficial to set MAXCONV > 0 and use SEQ to read the same channel multiple times?  If yes, this leads to a secondary question.  My application is sensitive to timing.  How can I use MAXCONV > 0 while being able to time accurately read in the sequence?
    • If sample and hold cap is taking a “while” to charge, is there anything that can be done on the external electrical circuit to reduce S&H time?

    For instance let's set the MAXCONV = 3(which should do 4 samples). Ask the customer to only take the 4th sample from each SOC and see if this improves the distribution. If that's the case then we are still dealing with the input signal limiting the SNR/code spread.

    Mark - MAXCONV = 0.  Application does not take advantage of sequencing capability.  Application is to digitizing a 10-us window at > 10MSPS. Time accuracy of acquisition is critical.  Currently the ADC is running at 11.25 MSPS (PLL of 45 MHZ).  Bumping the acquisition rate to 22.5 MSPS is an option for averaging or to read every other acquisition, I’ve read guidance is to keep ADC < 18MSPS to limit noise.

     

    Due to the nature of the eZDSP using pin headers to connect the voltage, we also need to limit the physical distance from the source as much as possible. The customer may find it necessary to place some small capacitance to help buffer the signal which will improve noise.

    Mark – reference and signal lengths have been minimized, although adding a small capacitor can be added as a extra layer of noise suppression. I’m using the ezDSP to crosscheck target hardware design which I expected to have a better then performance.  First cut target hardware for integration is receiving comparable performance to the ezDSP. Sequence of event is as follows setting up for acquisition:

                    SEQ 1.bit.CONV00 is set to the channel desired

                    CONT_RUN is set to 1

                    RST_SEQ1 and SOC_SEQ1 is set to 1

                    Delay of 1 us

    Two assembly instructions to grab data from ADC and save to memory repeated continuously for 10 us.

    Here is a link to a newer app note discussing proper driving of the ADC input (https://www.ti.com/an/spracv0), this will help derive the best balance of the above settings.

    Mark – the provided link does not work.  I receive a Error 404 not found.

    Best Regards,

    Ray Vincent

  • Ray,

    Here is the corrected link for the app note

    Since the customer is using CONTRUN this resolves my concern about mutli-sampling.  If there were cap charging issues that would resolve itself with the initial sample and not be present through the remaining samples.

    I would suggest the following:

    For the eZDSP let's make sure that the the jumper from ADCLO to VSSA is present, I think the data would be much worse if it was not, but want to make sure of this.

    I would also recommend disabling XCLKOUT, by setting bit 3 high in the XINTCNF2 register.  This is enabled at reset and can add noise to the system.

    Can the customer also comment on the DC source that is being sampled?  Is it from a DAC, external generator, etc?  I'm looking for the expected accuracy of this source so we can level set the expectation on the ADC conversion.

    Best,

    Matthew

  • Hi Matthew,

    Good Day. Please see below the latest response of our customer to your reply. Thank you very much.

    Between the information in the app note and disabling XCLKOUT has helped in the accuracy of the ADC reads. That and the combination of rework has improved the performance within 3 bits (8 LSB) which is a big step forward. As for the ezDSP, I’m still having issues there. Unless you have an idea where the remaining noise source may be, the case can be closed. Thank you.

    Best Regards,

    Ray Vincent

  • Ray,

    Glad to hear that we've gotten the noise floor to an acceptable level.  I think the eZDSP is not going to get as good noise as the customer board, one reason is that the socket on that board (I think this is a socketed PCB) is going to add extra series resistance vs a hard soldiered connection.

    Another factor I've seen is that the JTAG Clock can couple into the ADC sample when debugging.  An option would be to dis-connect the JTAG and try to export the data on a serial channel or other for off chip eval.  This isn't the most realistic option I know, since the JTAG is the whole point of debugging.  Once thing could be to store the ADC data into flash and then replug the JTAG and read it.

    All that to say the ezDSP will be an inferior platform to their board for this type of evaluation, since they are seeing the numbers they want I'd continue to focus on their custom board.

    Best,

    Matthew

  • Hi Matthew,

    Good Day. Please see the latest response of our customer to your reply. Thank you very much.

    Understand concern of relying on the ezDSP platform for development and noise.  The JTAG interface is not source of additional noise in case of my measurements as its all done off debugger where I queue all results to RAM and then output capture buffer over serial interface.

    I read online some basic rules for best ADC performance such as keeping sample rate under 18 MSPS.  Are there ground rules of chip setup for lowest noise performance?

    Best Regards,

    Ray Vincent

  • Ray,

    The most common issues we see are the physical board placement of the passives/actives that support the ADC.  This would include the REFP/M caps, RESEXT resistor, power decaps, and ADCIN buffers/bulk caps.  These should be as close in proximity to the physical device/pins as possible to avoid noise pickup.

    The REFP/M caps should be ceramic(not electrolytic); if customer is observing our recommendations in the DS regarding ESR limits, then this should be taken care of.  I think an X7R rated cap can get them what is needed, without going to NPO/COG type. 

    The layout of the F281x ADC is that the analog module/pins is placed in one corner of the device, I would treat this as an analog keep out as much as possible.  There is always debate on isolating the ground planes on the board; I believe we recommend isolation with single point of crossover to limit the digital passthrough.

    I not explicitly familiar with the recommendation of sample rates  <18MSPS, this converter is only capable of 12.5MSPS max.  I'm not aware of any intrinsic advantages of under clocking the ADC, other than increasing the S/H cap charge time but this can also be done with the ACQ_PS register/control.

    Best,

    Matthew