Measure an ADC's Transition Noise
Using a statistical technique, you can calculate an ADC
Frank Ohnhauser, Burr-Brown, Tuscon, AZ -- Test & Measurement World, 1/1/1999
| While analog-to-digital converters (ADCs) do a good job of digitizing analog signals, the devices aren’t perfect. An ideal ADC produces only one digital code for a given input voltage range, and the transitions between adjacent codes are instantaneous and stable. Unfortunately, all ADCs produce some internal noise that causes them to produce more than one code for a given input voltage. Today’s low-noise, 12-bit ADCs don’t produce enough noise for you to use traditional RMS noise measurement techniques. You do, however, have options. In this article, I will describe how you can use a modified traditional statistical technique to calculate an ADC’s RMS noise. Next month, part two of the article will show you a technique that uses a modified servo-loop circuit and some statistics to improve measurement speed and accuracy while reducing the calculations. An ADC’s RMS noise adds to the device’s input voltage (Vin) to produce a band of output-code transitions centered around an ideal transition voltage, Vtrans. The RMS noise is Gaussian in nature and causes the ADC to produce more than one digital output code for a fixed Vin. Figure 1 shows the nature of transitions of three output codes.
For some ADCs, you can measure RMS noise by observing an ADC’s output codes. In this traditional RMS noise-measurement technique, you select a fixed value for Vin and count the occurrences of all the codes that the ADC produces. Then, you plot a histogram of counts per code and calculate the mean output code and its standard deviation (s ), where s is a measure of the device’s RMS noise. Several Output Codes If you tried to pick a value for Vin the way you do to make noise measurements with 16-bit devices, you might land in a stable range and get just one output code, which tells you nothing. You can get the necessary information from the output codes’ "frequencies of occurrence" around the transition voltage and then calculate RMS noise. Figure 2 shows that a given value of Vin produces complementary probabilities (such as 90:10 and so on) for codex and for codex+1. When Vin = Vtrans, the ADC produces the two codes in equal numbers. Thus, at Vtrans, the probability for codex equals that for codex+1.
For other than 50:50 probabilities, you will need a difference voltage, DV, which moves the value of Vin away from Vtrans. The magnitude of DV for a given probability ratio, say 90:10, depends on the amount of RMS noise around Vtrans. The greater the RMS noise, the larger DV you will need to achieve that 90:10 probablility ratio of codex to codex+1. To make the measurements from which you calculate the RMS noise, start by choosing an ADC output code (codex). Generally, you should pick a codex near the high end of the ADC’s range of codes, because most ADCs show higher noise when Vin nears full scale. A 12-bit ADC produces digital output codes from 000h to FFFh, so you might pick FF0h as codex. Find Transition Voltage To calculate the RMS noise (s ), you first find Vtrans for code FF0h. Adjust Vin until you find equal occurrences for FF0h and FF1h. Next, select a value for D V and measure a code’s frequency of occurrence, which becomes that code’s probability of occurrence in calculating s . Adjust D V and measure the occurrences until you find that FF0h occurs about 10% of the time. Generate a histogram of the output codes and take the frequency of occurrence of FF0h. The equation a) below shows the relationship between the frequency of occurrence at D V, which is Px+1(D V), and the value of s given that F = D V / s. The math is easier than it looks. To calculate s , you need a value for F . Unfortunately, you can’t calculate F directly, but you can find it using a table of normal distributions and equation b) below:
Find the value of FF from the equation, and then get the corresponding value for F from Table 1. Once you know F , you can find s , the standard deviation of Vtrans. For example, if you observed a 10% occurrence of codex+1, then px+1 as a function of DV equals 0.1. So, F(F ) = 0.4. From Table 1, the corresponding F for F( F ) = 0.4 is approximately 1.28. Now that you know the value of F , you can calculate s , the device’s RMS noise. The above process is tedious, but you can use a servo-loop circuit to generate Vin. You set the frequency of occurrence for the output codes by selecting circuit components. With that fixed frequency of occurrence, F(F ) and, therefore, F become constant—you eliminate the substitution into the above equations. TMW Frank Ohnhauser
designs integrated circuits for motor control.
| ||||||||||||||||


















