Successive-approximation ADC
A successive-approximation ADC is a type of analog-to-digital converter (ADC) that digitizes each sample from a continuous analog waveform using a binary search through all possible quantization levels. AlgorithmThe successive-approximation analog-to-digital converter circuit typically contains four chief subcircuits:
The successive-approximation register is initialized with 1 in the most significant bit (MSB) and zeroes in the lower bits. The register's code is fed into the DAC, which provides an analog equivalent of its digital code (initially 1/2Vref) to the comparator for comparison with the sampled input voltage. If this analog voltage exceeds Vin, then the comparator causes the SAR to reset this bit; otherwise, the bit is left as 1. Then the next bit is set to 1 and the same test is done, continuing this binary search until every bit in the SAR has been tested. The resulting code is the digital approximated output of the sampled input voltage. The algorithm's objective for the nth iteration is to approximately digitize the input voltage to an accuracy of 1⁄2n relative to the reference voltage. To show this mathematically, the normalized input voltage is represented as x in [−1, 1] by letting Vin = xVref. The algorithm starts with an initial approximation of x0 = 0 and during each iteration i produces the following approximation:
where the binary signum function sgn mathematically represents the comparison of the previous iteration's approximation xi-1 with the normalized input voltage x:It follows using mathematical induction that the approximation of the nth iteration theoretically has a bounded accuracy of: |xn − x| ≤ 1/2n. Inaccuracies in non-ideal analog circuitsWhen implemented as a real analog circuit, circuit inaccuracies and noise may cause the binary search algorithm to incorrectly remove values it believes Vin cannot be, so a successive-approximation ADC might not output the closest value. It is very important for the DAC to accurately produce all 2n analog values for comparison against the unknown Vin in order to produce a best match estimate. The maximal error can easily exceed several LSBs, especially as the error between the actual and ideal 2n becomes large. Manufacturers may characterize the accuracy using an effective number of bits (ENOB) smaller than the actual number of output bits. As of 2001[update], the component-matching limitations of the DAC generally limited the linearity to about 12 bits in practical designs and mandated some form of trimming or calibration to achieve the necessary linearity for more than 12 bits.[1] As of 2012[update], SAR ADCs are limited to 18 bits, while delta-sigma ADCs (which can be 24 bits) are better suited if more than 16 bits are needed.[2] SAR ADCs are commonly found on microcontrollers because they are easy to integrate into a mixed-signal process, but suffer from inaccuracies from the internal reference voltage resistor ladder and clock and signal noise from the rest of the microcontroller, so external ADC chips may provide better accuracy.[3] ExamplesExample 1: The steps to converting an analog input to 9-bit digital, using successive-approximation, are shown here for all voltages from 5 V to 0 V in 0.1 V iterations. Since the reference voltage is 5 V, when the input voltage is also 5 V, all bits are set. As the voltage is decreased to 4.9 V, only some of the least significant bits are cleared. The MSB will remain set until the input is one half the reference voltage, 2.5 V. The binary weights assigned to each bit, starting with the MSB, are 2.5, 1.25, 0.625, 0.3125, 0.15625, 0.078125, 0.0390625, 0.01953125, 0.009765625. All of these add up to 4.990234375, meaning binary 111111111, or one LSB less than 5. When the analog input is being compared to the internal DAC output, it effectively is being compared to each of these binary weights, starting with the 2.5 V and either keeping it or clearing it as a result. Then by adding the next weight to the previous result, comparing again, and repeating until all the bits and their weights have been compared to the input, the result, a binary number representing the analog input, is found. Example 2: The working of a 4-bit successive-approximation ADC is illustrated below. The MSB is initially set to 1 whereas the remaining digits are set to zero. If the input voltage is lower than the value stored in the register, on the next clock cycle, the register changes its value to that illustrated in the figure by following the green line. If the input voltage is higher, then on the next clock cycle, the register changes its value to that illustrated in the figure by following the red line. The simplified structure of this type of ADC that acts on 2n volts range can be expressed as an algorithm:
The successive-approximation ADC can be alternatively explained by first uniformly assigning each digital output to corresponding ranges as shown. It can be seen that the algorithm essentially divides the voltage range into two regions and checks which of the two regions the input voltage belongs to. Successive steps involve taking the identified region from before and further dividing the region into two and continuing identification. This occurs until all possible choices of digital representations are exhausted, leaving behind an identified region that corresponds to only one of the digital representations. Variants
Charge-redistribution successive-approximation ADCOne of the most common SAR ADC implementations uses a charge-scaling DAC consisting of an array of individually-switched capacitors sized in powers of two and an additional duplicate of the smallest capacitor, for a total of N+1 capacitors for N bits. Thus if the largest capacitance is C, then the array's total capacitance is 2C. The switched capacitor array acts as both the sample-and-hold element and the DAC. Redistributing their charge will adjust their net voltage, which is feed into the negative input of a comparator (whose positive input is always grounded) to perform the binary search using the following steps:[4][5]
See alsoReferences
Further reading
External links |