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.

Calculation of INL of an ADC

Other Parts Discussed in Thread: ADS1248, ADCPRO, ADS1248EVM-PDK

HI

I am reading the article "Selecting an ADC" (http://www.ti.com/lit/an/sbaa004a/sbaa004a.pdf).

I request to give some more elaboration on the following :

1) the calculation of the INL using end point and best fit: a more detailed paper/link describing the whole procedure more elaborately would be nice.

2) the formula for the ideal noise floor is "6.02n+1.76+10log(m/2)" : is this valid only for nyquist rate ADCs ?? whay is the processing gain not taken into consideration while calculating the SNR of the sigma delta ADC??

3) the rms quantization noise is given as "q/sqrt(n)" where n is the number of bits: how is this formula derieved?? as far as I've read, the formula is "q/(2*sqrt(3))"

Kindly help me claer my doubts.

  • Pankaj,


    I'll break your questions up into two responses. I'll address the INL in the first post, and the other two questions in the second post. A long time ago, I made a quick INL test using the ADS1248. I'm just posting my method and results - hopefully this explains how the INL test works.

    I was able to make the measurement with a single Data Precision 8200 (as a DC source), and Agilent 3458A, and the ADS1248EVM running ADCPro. In my measurement, I got about 9ppm of INL. This is close to the value of 6ppm in the specification table and similar to Figure 20 of the datasheet. We measure it by putting in an input and measuring it back with a highly linear measurement. Here, we use the 3458A. The linearity is about 1 ppm (or much less) on the range we're interested in.

    Here is the test procedure:

    I set up the ADS1248EVM-PDK and turn on ADCPro. I've only got one Data Precision 8200 and one Agilent 3458A.

    Using ADCPro I set the measurement to AIN0 and AIN1. I've taken the 8200 and tied those to the inputs AIN0 and AIN1. In parallel with the 8200 are two 1k resistors in series. The common point of the two resistors are tied to AIN2. I use this to set up the DC common mode point of the 8200 measurement. This is done by turning on VBIAS to set AIN2 at 2.5V. Note that this common mode point is a tiny bit noisy and might contribute some small amount of noise, but it doesn't look like it in the measurement.

    For this measurement I wait a few minutes for the reference to settle. I think that this can be avoided with better components with less dielectric absorption, but the EVM is a pretty basic setup. I first measure the reference at the beginning of the setup and at the end of the setup with the 3458A. In this case, I'm hoping that I don't have too much reference drift (based on the measurements, I don't think I have much, but I do think this does contribute some amount of error). It certainly would have been better to measure this for each measurement, but again, I only have one 3458A.

    While I'm making the measurements, I use the 3458A to measure the input. I set the 8200 to 2.00000V, Remember that with the two resistors, and AIN2 tied to 2.5V, I've set the input common mode to 2.5V. I let the input settle for about 30 seconds for each measurement. I take 256 samples at 20SPS and record the average code and the 3548A reading.

    For each reading I've set the 8200 to .25V lower, wait for 30 seconds, and take 256 samples at 20SPS. This goes for inputs from 2V to -2V, each time the common mode voltage is set by VBIAS to 2.5V.

    Below is the data. The reference voltage readout was about 2.047991 at the beginning, it did change a bit to the end of the reading to about 2.048001 which does make some difference, but you can look at this for yourself.

    Code ADC readout 3458A reading
    8193493.13 2.000356 1.99992
    7169278.1 1.750304 1.749924
    6145145.06 1.500273 1.499945
    5120947.91 1.250226 1.249946
    4096826.18 1.000197 0.9999629
    3072648.91 0.750155 0.7499653
    2048517.38 0.500124 0.4999832
    1024271.64 0.250065 0.2499845
    -1.42 0.000000 0.000003
    -1024268.37 -0.250064 -0.2499809
    -2048493.34 -0.500118 -0.4999802
    -3072622.43 -0.750149 -0.7499621
    -4096809.81 -1.000193 -0.9999598
    -5120921.13 -1.250219 -1.249943
    -6145174.42 -1.500280 -1.499958
    -7169311.06 -1.750312 -1.749938
    -8193499.26 -2.000357 -1.999935

    I entered this into an excel spreadsheet that I'll attach to this post. In the excel file, you can go through the equations in the cells to see how they're generated. I'll reference the columns in the spreadsheet for the explanation below.

    Column 1 of the spreadsheet is the reference voltage which I kept constant at 2.047991. Again, this may contribute some error, but I can only rectify that with a second 3458A measurement.

    Column 2 is the ADC code that comes out. This is the average readout of each value you see in the above columns.

    Column 3 is the ADC reading. This is calculated from the ADC code multiplied by the reference value, divided by 2^23.

    Column 4 is the 3458A measurement. We assume this to be absolute correct measurement with a perfect non-linearity.

    Column 5 takes the ADC reading and scales it linearly so that it matches with the 3458A measurement in gain error.

    Column 6 then subtracts the offset from the scaled ADC reading in column 5 from the 3458A measurement in column 4.

    Column 7 is the error from the scaled, offset adjusted ADC measurement in 6 to the 3458A measurement. Here it is recorded in Volts.

    Column 8 is the INL error, divided by the full scale and converted to parts per million.

    Below these columns is a graph showing the INL plotted versus the input voltage. As mentioned previously, it is similar in magnitude and shape to the INL listed in the datasheet. However, there still can be sources of error. Long cables, used in either the input drive or 3458A measurement can have extra capacitance or inductance (or even pick up extra noise), that can affect the measurement. The reference drift may cause some extra error as the measurements are taken. This may have larger effect on the endpoint calculations. The 3458A measurement may not be ideal because it is far away from the input pins of the DUT. I've also ignored some possible common-mode error in the setup.

    It's a bit of a long write-up, but it should have enough detail to read through. Hopefully this explains a basic way INL is determined.


    Joseph Wu
  • Pankaj,

    Attaching the excel file.

    ADS1248EVM_INL.xlsJoseph Wu

  • Pankaj


    The equation you're referring to is generally used for the SNR measurement of the ADC. You're correct in that this is used more for Nyquist (or SAR) data converters rather than for delta-sigma (or oversampling) converters.

    Generally, delta-sigma ADCs are slower than their SAR ADC counterparts. Delta-sigma ADCs also use a digital filter which also adds some sort of limiting frequency response. Most delta-sigma ADCs are great for DC and low frequency measurements. If you talk about SNR of the ADC, generally you want to look at the spectrum of the signal and noise to look at the signal-to-noise which is useful when there is a sinusoidal input, but is less meaningful when there is a DC input. In this case, delta-sigma ADCs are specified for the noise value itself and not part of an SNR calculation.

    Note that some delta-sigma ADCs are fast enough to measure to use this metric. In particular the ADS126x, ADS127x, and ADS128x all do a good job with periodic signals, and the SNR metric is applicable and used in the datasheet.

    As for the last question, are you mixing up the quantization noise RMS value for the RMS noise for a set of samples? I'd need more information about the context of how you are using either equation.


    Joseph Wu
  • HI Joseph,

    First of all thanks a ton for ur reply.

    I had a look at the excel sheet you had attached.

    But as far as i could understand, it describes none of the two procedures ( end point linearity and best fit )  mentioned in the document - http://www.ti.com/lit/an/sbaa004a/sbaa004a.pdf

    I was looking forward to an explanation on the following lines in the document:

    1) "For the end point linearity, a straight line is drawn between the converter ’s offset and gain intercept points, the transfer function is plotted against that straight line. The maximum deviation from the line is the worst case integral nonlinearity." :  a diagram elaborating the stepwise prcedure


    2) "For the best-fit example, the transitions are used in a least-squares calculation, the line of best-fit is drawn, and the transfer function is plotted against that line. As in the example of the end point linearity, the maximum deviation from the best-fit line describes the integral nonlinearity of the converter" : what is least squares calculation??

    can you please elaborate on the above.

  • Hi Joseph,
    Thanks again for the reply.
    1) I will be more specific on my doubts on SNR formula : I had read in the book "Data Converters" by Franco Maloberti (first chapter). In this book, it is mentioned that noise floor of the nyquist rate ADC depends on the number of fft points. While calculating the SNR of the ADC we need to deduct the dependency on the number of fft points or "processing gain". I completely agree with this.
    My confusion is with application of the same logic for oversampled ADCs e.g. sogma delta ADCs. But as far as I've read, I never came across any mention of this processing gain in the books or codes written to calculate the SNR of oversampled ADCs.
    So, My question is, is there any dependency of the SNR of a sigma delta ADC on the number of fft points?? if yes, what is the dependency??


    2) rms quantization noise is given as "q/sqrt(n)" where n is the number of bits : -- I am concerned with context with which it is mentioned in the document mentioned above (page 6).
  • Pankaj,


    For your first post today:

    1. The method I describe is endpoint INL measurement. You can tell because on the INL measurement the error is 0 at each endpoint. The difference between the mine and the one described in the document, is that my measurement is bipolar and I include negative values, so my endpoints are a negative full scale and positive full scale. The document measurement goes from a 0 input to a positive full scale.

    In mine, I take the endpoints, remove the offset and gain error, and calculate the error from the ideal input.

    2. Least squares is a way to find the best fit line (or curve) to a set of data. Look it up here:
    en.wikipedia.org/.../Least_squares


    Joseph Wu