Technical Article

Servo-Loop ADC Testing: Choosing the Parameters

October 11, 2023 by Dr. Steve Arar

In this article, we’ll take a look at how servo-loop ADC test parameters can be chosen based on the noise level of the ADC and the desired measurement precision.

Linearity is one of the most important specifications of A/D converters (ADCs). In my introduction to the servo-loop method for ADC testing, I noted that this is a popular industrial test for measuring the ADC transfer function. While the basic idea of the servo-loop method is easy to understand, determining different parameters of the test setup can be a challenging task.

 

Some Important Questions

Consider the basic servo-loop test configuration for Figure 1. At the center of this test configuration is an analog integrator circuit with an op amp. 

 

Figure 1. Basic servo-loop test configuration. Image used courtesy of H. Khorramabadi

 

In the first part of this article, we discussed that the ADC input voltage experiences a transient response and then settles within a small error from its final value. Two example waveforms discussed in the introductory article are repeated in Figure 2.

 

Figure 2. Transient response of servo-loop testing demonstrating oscillatory behavior. Image used courtesy of S. Max (subscription required)

 

Note that the averaging process should start after the loop settles. For example, in the above waveform, the average taken over all 30 samples is very different from that taken over the last 20 samples, which is actually an estimate of the code edge value. Therefore, one important question is, how many samples should we discard before starting to measure the average of the ADC input? Another question that arises is, how many samples should we average to suppress the noise effect to an acceptable level? Before we move on, let’s examine the step size effect in the ideal case of a noiseless system.

 

A Noiseless Servo-Loop Tester

If each step of the test procedure connects the current source I to the integrator input for a time duration of Δt, then the integrator output voltage changes by a fixed step size (ΔV) as calculated below:

\[\Delta V = \frac{I}{C_1}\Delta t\]

Equation 1.

 

The integrator output voltage is actually a continuous-time signal. However, for the sake of simplifying the circuit analysis, we can assume that the integrator output takes only discrete values given by:

\[V_i = V_0+i \times \Delta V\]

Equation 2.

where:

V0 is the initial value of the integrator output voltage at the beginning of the test procedure

i is an integer.

 

Consider an example where the step size is 0.2 LSB (least significant bit) and the initial value of the integrator output is zero volts. If the target code edge is the transition from 00…01 to 00…10, we’ll get a waveform similar to that depicted in Figure 3.

 

Example servo-loop ADC test sequence

Figure 3. Example servo-loop ADC test sequence. Image used courtesy of Steve Arar

 

As can be seen, each of the consecutive input ranges of 1 LSB is divided into 5 steps. It takes seven steps (or 7Δt) to reach the voltage level just below the target code edge value. With the following steps, the direction of the voltage adjustment changes alternately. An estimate of the code edge value is found by determining the average of the triangular waveform. Since the maximum and minimum of the triangular waveform are one ΔV away from each other, the estimation error is less than or equal to ΔV/2.

This example shows that the step size affects the duration of the transient response and the resolution of our measurement. In fact, there is a trade-off between these two parameters. By reducing the step size, we can increase the resolution of our measurement and locate the transition point with finer steps; however, this increases the settling time (and hence the measurement duration).

Based on the above discussion, we only need to choose the step size according to the required resolution. For example, for a measurement resolution of 0.1 LSB, we choose appropriate values for I, C1, and Δt to have ΔV = 0.1 LSB. Normally, a small current (I) along with a large capacitor (C1) is used to achieve a small step size and limit the integrator noise.

Sadly, this simplified analysis doesn’t give us a full picture of what happens because it’s based on the assumption that the system is noiseless. In servo-loop testing, the step size is a fraction of an LSB. Such a small step size can be easily comparable with the noise produced by a medium-resolution ADC. Therefore, it should be no surprise that the settling time and the measurement precision of the servo-loop method depend on both the step size and the noise present in the system.

 

Finding Optimum Test Parameters

The mathematical analysis of the servo-loop configuration in the presence of noise is beyond the scope of this article. Without going through all the mathematical details, we’ll take a look at the results of the analysis provided in the research paper Measurement of Static ADC Nonlinearities Using the Servoloop Method by A. Sabatini.

The research explains that a mathematical model based on a Markov chain can be used to characterize the performance of a servo-loop ADC testing system. In this case, a Gaussian-distributed random variable with zero mean and standard deviation equal to σn is added to the ADC input to model the input-referred noise of the ADC and output-referred noise of the integrator. The paper uses the symbol \(\delta\) to represent the step size parameter. An interesting result of the analysis is that some important parameters of the system are a function of the ratio \(\frac{\sigma_{n}}{\delta}\). For example, consider the duration of the transient response expressed in the number of samples, as plotted in Figure 4.

 

Duration of transient response in servo-loop ADC testing.

Figure 4. Duration of transient response in servo-loop ADC testing. Image used courtesy of A. Sabatini

 

The above information can be used to determine the number of samples that should be discarded before we start to measure the integrator output. Note that for a given step size, the transient response duration increases with the noise RMS. Figure 4 is obtained for the case where the target code edge is about 6σn away from the initial value of the integrator output (V0). If this is not the case, an additional transient period proportional to the distance between the code edge and V0 should be added to the value obtained from the above graph.

Another design question is the number of samples that need to be averaged to achieve a target measurement variance. The paper provides this information as a plot for three example values of \(\frac{\sigma_{n}}{\delta}\) as shown in Figure 5.

 

Figure 5. Number of average samples required in servo-loop testing to achieve target measurement variance. Image used courtesy of A. Sabatini

 

In the above figure, the horizontal axis is the standard deviation of the code estimation normalized to the step size. Again, the number of samples to be averaged is a function of \(\frac{\sigma_{n}}{\delta}\).

 

Example: Verifying the DNL Performance Through Servo-Loop Testing

Consider a 12-bit, 10 MSPS ADC with a typical DNL of 0.5 LSB RMS. Assume that the ADC typical noise is specified as 0.26 LSB RMS. We want to use the servo-loop test to verify the DNL performance of the ADC. What are the appropriate servo-loop parameters if we aim for the standard deviation of the DNL measurement to be 0.033 LSB.

First, we need to derive the standard deviation of code edge measurement based on the standard deviation specified for the DNL measurement. To determine the DNL of a code in the ADC transfer function, we need to measure two adjacent transition points and find the difference between these two trip points. Therefore, the measured DNL value can be considered as a random variable (because of the system noise that causes uncertainty in our measurement) that is obtained by finding the difference between two other random variables (the random variables of the code edge measurement).

A quick review from probability theory can be helpful here. Let's make two assumptions:

  • X has a normal distribution with mean µx and variance \(\sigma^{2}_{x}\)
  • Y is another normally-distributed random variable with mean µy and variance \(\sigma_{y}^{2}\)

If X and Y are independent, then the difference of the two variables, X-Y, follows a normal distribution with:

  • Mean: µxy
  • Variance: \(\sigma^{2}_{x}\)\(\sigma^{2}_{y}\).

Returning to our example, if the standard deviation of code edge measurement is σT, the standard deviation of DNL measurement can be calculated as \(\sqrt{2\sigma^{2}_{T}}\). With a DNL standard deviation of 0.033 LSB, we obtain σT=0.023.

In order to be able to design the system based on the information provided in Figures 4 and 5, we can choose \(\frac{\sigma_{n}}{\delta}\). With σn = 0.26 LSB, the step size works out to \(\delta\) = 0.13 LSB. Based on the information in Figure 4, about 18 samples should be discarded for the transient response to elapse. Also, since \(\frac{\sigma_{r}}{\delta}=\frac{0.023}{0.13}\) = 0.18, about 200 samples should be averaged to achieve the desired accuracy.

 

Featured image used courtesy of Adobe Stock