Abstract:
A multi-stage pipeline analog-to-digital converter employs an internal digital domain error detection and calibration algorithm to eliminate accumulated digital truncation errors to thereby improve its accuracy and linearity.

Description:
BACKGROUND AND SUMMARY OF THE INVENTION 
     The present invention relates generally to analog-to-digital converters, hereinafter referred to as ADCs, and, more particularly, to a pipeline ADC employing internal digital calibration to improve linearity of the ADC. 
     Multi-stage pipeline ADCs exhibit the distinct advantage of achieving a high sample rate for low power, compared to other architectures such as flash and successive approximation. For this reason, pipeline ADCs have been widely used in many applications, especially those that can tolerate this architecture&#39;s inherent delay between the time the input signal is sampled and the time the digitized output becomes available. Exemplary of these applications are image capture applications such as ultrasound, video cameras, scanners, etc., as well as intermediate frequency demodulation in wireless communications applications and various laboratory instrumentation applications. 
     Recent advancements in these applications have pushed the resolution requirement for ADCs to 12 bits or higher. In order to meet this level of performance demand, a number of digital domain error calibration techniques have been developed. In the case of multi-stage pipeline ADCs with 1.5 bits per stage, U.S. Pat. No. 5,465,092 to Mayes et al., U.S. Pat. No. 5,499,027 to Karanicolas et al., and U.S. Pat. No. 5,510,789 to Lee describe a means for detecting and correcting errors in reconstruction digital-to-analog converters in each stage. This 1.5 bits per stage architecture is simple to design and also to calibrate because all stages have the same circuit topology. Its disadvantage is that it inherently consumes more power than a multi bits per stage counterpart described in Cline et al., “A Power Optimized 13-b 5M samples/s Pipelined Analog-to-Digital Converter in 1.2 um CMOS,” IEEE Journal of Solid State Circuits, March, 1996, pp. 294-303. 
     Lee et al., “Digital-Domain Calibration of Multistep Analog-to-Digital Converters,” IEEE Journal of Solid State Circuits, December, 1992, pp. 1679-1688, proposes a means of digitally calibrating a multi bits per stage pipeline ADC. This reference teaches a means for detecting an error between two adjacent codes of a multiplying DAC (MDAC) composed of a capacitor array and an operational transconductance amplifier (OTA), by the subsequent stages of the ADC. As each code transition error or differential linearity error (DLE) is measured, it is digitally accumulated to derive the linearity error of all codes or integral linearity error (ILE). As acknowledged by the authors in this reference, this digital accumulation technique inherently suffers from digital truncation errors, which increase as the resolution of each stage increases. 
     The prior art circuits of FIGS. 1A and 1B serve to measure an MDAC&#39;s segment error for code transition from j to j+1. The MDAC is composed of the operational transconductance amplifier (OTA), feed back capacitor Cf, the binary weighted capacitor array, the sampling switch SW, and other switches that selectively connect bottom plates of the capacitor array to terminals Vref or AGND, or to an output from the previous stage. The latter switches are not shown in FIGS. 1A and 1B for clarity. The non-overlapping clock signals in FIG. 1C control this two phase operation. During the first clock phase, Phase 1, the clock signal qs is high. The clock signal qg is high in the second clock phase, Phase 2. The clock signal qsp controls the sampling switch SW, and is identical to clock signal qs except that it has a preceding falling edge. In Phase 1, the bottom plates of the capacitor array are driven to the voltages at either of terminals Vref or AGND in accordance to the digital input j. At the same time, OTA is configured to be a unity gain buffer, and the bottom plate of capacitor Cf connects to terminal AGND. At the end of Phase 1, the sampling switch SW opens and traps the charge on the common top plate of all the capacitors. In Phase 2, the bottom plates of the capacitor array are driven according to the digital input j+1. The feedback capacitor Cf is connected between the output and the negative input of the OTA, thereby closing the loop. The output of OTA at the end of Phase 2 would ideally be equal to Vref/2. Any deviation from this ideal voltage is an error voltage, or DLE, associated with the code transition between code j and j+1. The error voltage is digitized by the subsequent stages of the ADC. This sequence is repeated for every code increment, and the results are incrementally accumulated in digital domain to derive the digital representation of ILE for all codes of the MDAC. The accumulation of code transition errors in digital domain by definition accumulates the digital truncation errors of all code transition errors. 
     U.S. Pat. No. 5,870,041 to Lee et al. recognizes this digital truncation error problem and attempts to reduce the truncation error just by increasing resolution of the over-all ADC used during error detection. This approach is common to minimizing truncation errors in general, but it does not solve the fundamental problem of truncation error limitations that stem from the error detection algorithm originally proposed in the above-cited paper authored by Lee et al. It also requires that all analog signals must settle to a higher resolution level with a small lsb size, which limits the maximum speed attainable for a given technology and power consumption. 
     Another practical limitation of the prior art circuits of FIGS. 1A and 1B is that the voltage reference, Vref changes between the two clock phases, due to its finite output impedance, thus limiting its capability to absorb switching transients and maintain the output voltage. This limitation becomes more pronounced for higher resolution, higher speed ADCs. 
     It would therefore be advantageous to provide a digital domain error detection and calibration algorithm for a multi stage pipeline ADC that is free from accumulation of digital truncation errors to thereby provide a multi stage pipeline ADC of inherently higher accuracy. 
     It would also be advantageous to provide a digital domain error detection method which exhibits greatly reduced sensitivity to changes in the reference voltage from one phase of operation to the other. 
     It would be further advantageous to provide a multi-stage pipeline ADC architecture that incorporates digital circuitry to perform the aforementioned digital domain error detection and calibration algorithm. 
     It would be further advantageous to provide a high speed, high resolution multi-stage pipeline ADC which offers superior performance with respect to accuracy, linearity, offset, gain error, total harmonic distortion (THD), spurious free dynamic range (SFDR), signal to noise ratio (SNR), and effective number of bits (ENOBs). 
     It would also be advantageous to provide a complementary metal oxide semiconductor process for implementing a multi stage pipeline ADC. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIGS. 1A and 1B are circuit diagrams illustrating two prior art clock phase circuits for detecting code segment error of a binary-weighted capacitor MDAC. 
     FIG. 1C is a waveform diagram of the clock signals that control operation of the two prior art circuits of FIGS. 1A and 1B. 
     FIGS. 2A and 2B are circuit diagrams illustrating two prior art clock phase circuits for detecting code segment errors in a fully segmented capacitor MDAC. 
     FIGS. 3-18 illustrate sets of digital codes in accordance with the present invention that are employed in a fully segmented MDAC for the two-phase operation to detect the MDAC error at code 0 to 15 in decimal. 
     FIG. 19 is a circuit block diagram of a multi-stage pipeline ADC in accordance with an embodiment of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     Referring now to FIGS. 2A-B, there are shown two prior art circuits representing fully segmented 4-bit MDACs. Fifteen unit capacitors, C 0  to C 14 , serve as DAC segments. The two capacitors C 15  and C 16 , each of which is one half the unit capacitor, are used to create a ½ LSB offset for the MDAC. The two phase sequence in FIGS. 2A-B detects the segment error for the DAC code transition of 0 to 1 in decimal. The non-overlapping clock signals, qs, qsp, and qg, are applied to perform this two phase operation. The fully segmented MDAC is shown here instead of the binary weighted capacitor array in FIGS. 1A-B, to reflect the actual implementation of the present invention. The fully segmented MDAC is much preferred because it can be driven directly by a thermometer code output from a flash type sub ADC of the stage. In contrast, a binary weighted MDAC requires a thermometer code to binary code translator between the flash sub ADC and the MDAC. It is well known that the signal path between the sub ADC and MDAC is one of the most critical paths with respect to its speed and that this path very often limits the speed of the overall ADC. The fundamental problem of digital truncation error accumulation applies to either case. So does the problem of sensitivity to reference voltage change between the phases. 
     The capacitance of each capacitor in the array is denoted as: 
     
       
           C   i   =C   u   +e   i   i =0, 1, . . . , 14  (1) 
       
     
     
       
         
           
             
               
                 
                   
                     
                       
                         
                           C 
                           15 
                         
                         = 
                         
                           
                             
                               C 
                               u 
                             
                             2 
                           
                           + 
                           
                             e 
                             15 
                           
                         
                       
                     
                     
                       
                         
                           C 
                           16 
                         
                         = 
                         
                           
                             
                               C 
                               u 
                             
                             2 
                           
                           + 
                           
                             e 
                             16 
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   2 
                   ) 
                 
               
             
           
         
                 
         
             
         
      
     
     where e i  is a deviation of C i  from the average unit capacitor value. The average unit capacitor value C u  is given by:                C   u     =       1   16     ·       ∑     i   =   0     16          C   i                 (   3   )                                
     By definition, the sum of deviations of all capacitors is zero.                  ∑     i   =   0     16          e   i       =   0           (   4   )                                
     It may be seen from FIGS. 2A-B that the OTA forces its negative input to its offset voltage V os  in phase 1 when qsp is logic HI. The total charge accumulated on the common top plate of the capacitor array and feedback capacitor is:                Q   T     =         V   os     ·     (         ∑     i   =   0     14          C   i       +     C   15     +     C   f       )       +       (       V   os     -     V   ref       )     ·     C   16                 (   5   )                                
     The switch, SW, opens and traps Q T  in addition to its own charge injection, q sw , on the common top plate node.                  Q   T     +     q   sw       =         V   os          (         ∑     i   =   1     14          C   i       +     C   15       )       +       (       V   os     -     V   ref       )     ·     (       C   0     +     C   16       )       +       (       V   os     -     V   out       )     ·     C   f                 (   6   )                                
     From equations (5) and (6), OTA output in phase 2, V out , is found to be:                      V   out     =         -     (       C   0     ·     V   ref       )       -     q   sw         C   f                   =           -     (       C   u     +     e   0       )       ·     V   ref       -     q   sw         C   f                     (   7   )                                
     In deriving equation (6), it has been assumed that OTA has a sufficient open loop gain and that the error due to the finite open loop gain is negligible. If the open loop gain of OTA, A o , is taken into account, the denominator of equation (7), C f , is replaced with C f +(C T /A o ), where C T  is the sum of all capacitors sharing the common top plate at the negative input to OTA. This effect of finite A o  would carry out through the following description, and it does not affect in any way the validity and technical integrity thereof. 
     Once the error term by q sw  is subtracted in digital domain, the deviation of V out  from the ideal output, −C u V ref /C f , is equal to −e 0 V ref /C f . This error voltage is digitized by the subsequent ADCs, and the resultant digital code D DLEl ( 1) is stored in RAM. This error corresponds to DLE of the code. This sequence is repeated for all code transitions to obtain D DLE (j) for j=1, 2, 3, . . . , 15. The segment error for j=0, D DLE (0), is obtained by connecting all the bottom plates of C 0  to C 16  to AGND in Phase 1 and flipping the bottom plate of C 16  only to Vref in Phase 2. The error in output V out  from its ideal output, −C u V ref /C f , is equal to −e 16 V ref /C f . The segment errors are added in digital domain to produce a digital representation of ILE for all codes, as set forth in the following equation (8).                    D   ILE          (   j   )       =         ∑     i   =   0     j              D   DLE          (   i   )                     j       =   0       ,   1   ,   …              ,   15           (   8   )                                
     The digital representation of ILE for all codes, D ILE (0) to D ILE (15), is stored in RAM and used to correct for ILE of the MDAC during normal conversions. This process of accumulating segment errors in digital domain results in accumulation of digital truncation errors. The digital truncation error for each of D DLE (i) is +−0.5 lsb. with lsb being the least significant bit weight for the ADC composed of the remaining stages. Equation (8) indicates that the digital truncation error of D ILE (15) can be as large as +−8 lsbs. Note that V out  given by equation (7) in the ideal case (without e 0  and q,) would be exactly V ref /2. This means that one half of any change in V ref  between the two phases looks like the error e 0  that is being detected. 
     The present invention presents a means of detecting ILE of MDAC that is free from this accumulation of digital truncation errors. It detects ILE of all codes of MDAC directly, rather than detecting DLE of all codes and accumulating them to calculate ILE for all codes. 
     ILE calibration starts with e 16  detection. FIG. 3 shows a set of thermometer codes that drive MDAC. Each row contains a code during reset phase (Phase 1) and a code in gain phase (Phase 2). If the thermometer code is 1, the bottom plate of the corresponding capacitor C i  is connected to V ref . If it is 0, the bottom plate is connected to AGND. In the following description, the charge injection or pedestal error due to q sw  is omitted for clarity. It is detected and corrected for in digital domain as described in the above-cited paper authored by Lee et al. The output of OTA in phase 2 corresponding to the first row in FIG. 3 will be:                V   out     =         V   ref     ·     (       -     e   0       +     e   15     +     e   16       )         C   f               (   9   )                                
     This error voltage is digitized to obtain the code d20 — 00(0:8). This digital code may be any number of bits. The representation used here reflects the actual embodiment of the invention, which happens to be 9 bits.              d20_      00          (     0   :   8     )              V   ref     ·     (       -     e   0       +     e   15     +     e   16       )         C   f                 (   10   )                                
     Similarly, the following equations are obtained for the remainder of the table in FIG. 3 after the pedestal is subtracted:              d20_i          (     0   :   8     )              V   ref     ·     (       -     e   i       +     e   15     +     e   16       )         C   f                 (   11   )                                
     where i=1, 2, . . . , 14               d20_      15        (     0   :   8     )       ←         V   ref     ·     (       -     e   15       +     e   16       )         C   f               (   12   )                                
     One important constraint should be noted in this table in FIG.  3  and all the remaining tables in FIGS. 4 to  18  for MDAC ILE detection. That is: the ideal output, V out , when ILE is zero, is 0 V. This condition is imposed in order to ensure that the gain error due to an error in V ref  between two phases has a negligible effect on the ILE measured this way. 
     Examining the remainder of the table and recalling equation (4), the following equation is obtained:                        ∑     j   =   0     14          d20_j        (     0   :   8     )         ←                    V   ref     ·     {         ∑     j   =   0     14          (     -     e   j       )       +     15   ·     (       e   15     +     e   16       )         }         C   f                   =                    V   ref     ·   16   ·     (       e   15     +     e   16       )         C   f                     (   13   )                                
     The following digital value, d2e(0)(0;8), is introduced.                  d1e        (   0   )            (     0   :   8     )       =         d20_      15        (     0   :   8     )       +         ∑     j   =   0     14          d20_j        (     0   :   8     )         16       2             (   14   )                                
     From equations (12) and (13), the following equation for d2e(0)(0;8) is obtained.                  d2e        (   0   )            (     0   :   8     )       ←         V   ref     ·     e   16         C   f               (   15   )                                
     This corresponds to ILE of MDAC for input code 0. The digital truncation error in d2e(0)(0:8) is no more than +−0.48(={0.5+0.5*(15/16)}/2) lsbs because each digital cod d20_j(0:8) in FIG. 3 has +−0.5 lsbs of truncation error. 
     Examining the codes in FIG. 4, the following equation results:                        ∑     j   =   0     14          d21_j        (     0   :   8     )         ←                    V   ref     ·     {       15   ·     e   0                ∑     j   =   1       16          (     -     e   j       )         }         C   f                   =                    V   ref     ·   16   ·     e   0         C   f                     (   16   )                                
     Therefore, d2e(1)(0:8) may be introduced as follows:                  d2e        (   1   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     14          d21_j        (     0   :   8     )         16               (   17   )                                
     From equations (15) and (16), this corresponds to ILE of MDAC for input code 1 as shown by the following equation (18).                  d2e        (   1   )            (     0   :   8     )       ←         V   ref     ·     (       e   16     +     e   0       )         C   f               (   18   )                                
     The digital truncation error in d2e(1)(0:8) is no more than +−0.95(=0.48+(15/16)*0.5) lsbs because d2e(0)(0:8) contains +−0.48 lsb error, and the second term of the equation (17) has 0.5*15/16 lsbs of truncation error. 
     In order to simplify mathematical expressions, the following parameter is introduced.              VC   =       V   ref       C   f               (   19   )                                
     One more example is given before deriving a general expression for ILE of MDAC. The following expressions are obtained for the detected codes in FIG.  18 . 
     
       
           d 215 — 00(0:8)← VC {( e   0   + . . . +e   7 )−( e   8   + . . . +e   14 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 01(0:8)← VC {( e   1   + . . . +e   8 )−( e   9   + . . . +e   14   +e   0 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 02(0:8)← VC {( e   2   + . . . +e   9 )−( e   10   + . . . +e   14   +e   0   +e   1 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 03(0:8)← VC {( e   3   + . . . +e   10 )−( e   11   + . . . +e   14   +e   0   + . . . +e   2 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 04(0:8)← VC {( e   4   + . . . +e   11 )−( e   12   + . . . +e   14   +e   0   + . . . +e   3 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 05(0:8)← VC {( e   5   + . . . +e   12 )−( e   13   +e   14   +e   0   + . . . +e   4 )−(e 15   +e   16 )} 
       
     
       d 215 — 06(0:8)← VC {( e   6   + . . . +e   13 )−( e   14   +e   0   + . . . +e   5 )−( e 15 +e   16 )} 
     
       
           d 215 — 07(0:8)← VC {( e   7   + . . . +e   14 )−( e   0   + . . . +e   6 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 08(0:8)← VC {( e   8   + . . . +e   14   +e   0 )−( e   1   + . . . +e   7 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 09(0:8)← VC {( e   9   + . . . +e   14   +e   0   +e   1 )−( e   2   + . . . +e   8 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 10(0:8)← VC {( e   10   + . . . +e   14   +e   0   + . . . +e   2 )−( e   3   + . . . +e   9 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 11(0:8)← VC {( e   11   + . . . +e   14   +e   0   + . . . +e   3 )−( e   4   + . . . +e   10 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 12(0:8)← VC {(e 12   + . . . +e   14   +e   0   + . . . +e   4 )−( e   5   + . . . +e   11 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 13(0:8)← VC {(e 13   +e   14   +e   0   + . . . +e   5 )−( e   6   + . . . +e   12 )−( e   15   +e   16 )} 
       
     
     
       
           d 215 — 14(0:8)← VC {(e 14   +e   0   + . . . +e   6 )−( e   7   + . . . +e   13 )−( e   15   +e   16 )} 
       
     
     It should be noted that each code has +−0.5 lsbs of truncation error. Adding all the codes yields +−7.5 lsbs of truncation error:                  ∑     j   =   0     14          d215_j        (     0   :   8     )         ←                VC        {       8   ·     (       e   0     +   …   +     e   7       )       -                                      7   ·     (       e   8     +   …   +     e   14       )       -     15   ·     (       e   15     +     e   16       )         }                 =                VC        {       (       e   0     +   …   +     e   14       )     -     15   ·     (       e   15     +     e   16       )         }                   =                VC        {     16   ·     (       e   0     +   …   +     e   14       )       }                   =                    V   ref     ·   16   ·     {       ∑     j   =   0     14          e   j       }         C   f                                    
     It should be noted that the above equation divided by 16 will have +−15/16 lsb&#39;s of truncation error. Therefore,                  d2e        (   15   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     14          d215_j        (     0   :   8     )         16               (   20   )                   d2e        (   15   )            (     0   :   8     )       ←           V   ref     ·     {       e   16     +       ∑     j   =   0     14          e   j         }         C   f       .             (   21   )                                
     It is obvious that d2e(15)(0:8) corresponds to ILE of MDAC for input code 15. A similar expression can be obtained for each of FIGS. 4 to  17 , as shown below.                  d2e        (   2   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     6          d22_j        (     0   :   8     )         8               (   22   )                   d2e        (   3   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     12          d23_j        (     0   :   8     )         16               (   23   )                   d2e        (   4   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     2          d24_j        (     0   :   8     )         4               (   24   )                   d2e        (   5   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     10          d25_j        (     0   :   8     )         16               (   25   )                   d2e        (   6   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     4          d26_j        (     0   :   8     )         8               (   26   )                   d2e        (   7   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     8          d27_j        (     0   :   8     )         16               (   27   )                   d2e        (   8   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     0          d28_j        (     0   :   8     )         2               (   28   )                   d2e        (   9   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     8          d29_j        (     0   :   8     )         16               (   29   )                   d2e        (   10   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     9          d210_j        (     0   :   8     )         16               (   30   )                   d2e        (   11   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     10          d211_j        (     0   :   8     )         16               (   31   )                   d2e        (   12   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     11          d212_j        (     0   :   8     )         16               (   32   )                   d2e        (   13   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     12          d213_j        (     0   :   8     )         16               (   33   )                   d2e        (   14   )            (     0   :   8     )       =         d2e        (   0   )            (     0   :   8     )       +         ∑     j   =   0     13          d214_j        (     0   :   8     )         16               (   34   )                                
     The numerator of the second term of right hand side of equations (22) to (34) can be derived as follows:                        ∑     j   =   0     6          d22_j        (     0   :   8     )         ←     VC        {       7   ·     (       e   0     +     e   1       )       -     (       e   2     +   …   +     e   16       )       }                     =     VC   ·   8   ·     (       e   0     +     e   1       )                                  (   35   )                         ∑     j   =   0     12          d23_j        (     0   :   8     )         ←     VC        {       13   ·     (       e   0     +   …   +     e   2       )       -     3   ·     (       e   3     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   2       )                                  (   36   )                         ∑     j   =   0     2          d24_j        (     0   :   8     )         ←     VC        {       3   ·     (       e   0     +   …   +     e   3       )       -     (       e   4     +   …   +     e   16       )       }                     =     VC   ·   4   ·     (       e   0     +   …   +     e   3       )                                  (   37   )                         ∑     j   =   0     10          d25_j        (     0   :   8     )         ←     VC        {       11   ·     (       e   0     +   …   +     e   4       )       -     5   ·     (       e   5     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   4       )                                  (   38   )                         ∑     j   =   0     4          d26_j        (     0   :   8     )         ←     VC        {       5   ·     (       e   0     +   …   +     e   5       )       -     3   ·     (       e   6     +   …   +     e   16       )         }                     =     VC   ·   8   ·     (       e   0     +   …   +     e   5       )                                  (   39   )                         ∑     j   =   0     8          d27_j        (     0   :   8     )         ←     VC        {       9   ·     (       e   0     +   …   +     e   6       )       -     7   ·     (       e   7     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   6       )                                  (   40   )                         ∑     j   =   0     0          d28_j        (     0   :   8     )         ←     VC        {       (       e   0     +   …   +     e   7       )     -     (       e   8     +   …   +     e   16       )       }                   =     VC   ·   2   ·     (       e   0     +   …   +     e   7       )                     (   41   )                         ∑     j   =   0     8          d29_j        (     0   :   8     )         ←     VC        {       7   ·     (       e   0     +   …   +     e   8       )       -     9   ·     (       e   9     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   8       )                                  (   42   )                         ∑     j   =   0     9          d210_j        (     0   :   8     )         ←     VC        {       6   ·     (       e   0     +   …   +     e   9       )       -     10   ·     (       e   10     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   9       )                                  (   43   )                         ∑     j   =   0     10          d211_j        (     0   :   8     )         ←     VC        {       5   ·     (       e   0     +   …   +     e   10       )       -     11   ·     (       e   11     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   10       )                                  (   44   )                         ∑     j   =   0     11          d212_j        (     0   :   8     )         ←     VC        {       4   ·     (       e   0     +   …   +     e   11       )       -     12   ·     (       e   12     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   11       )                                  (   45   )                         ∑     j   =   0     12          d213_j        (     0   :   8     )         ←     VC        {       3   ·     (       e   0     +   …   +     e   12       )       -     13   ·     (       e   13     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   12       )                                  (   46   )                         ∑     j   =   0     13          d214_j        (     0   :   8     )         ←     VC        {       2   ·     (       e   0     +   …   +     e   13       )       -     14   ·     (       e   14     +   …   +     e   16       )         }                     =     VC   ·   16   ·     (       e   0     +   …   +     e   13       )                                  (   47   )                                
     From equations (15), (18), (21), and (22) through (47), the results for FIGS. 3 to  18  are simply presented in the following general form.                  d2e        (   N   )            (     0   :   8     )       ←         V   ref     ·     {       e   16     +       ∑     j   =   0       N   -   1            e   j         }         C   f               (   48   )                                
     where N=0, 1, 2, . . . , 15 
     Thus, MDAC ILE has been detected for code=N (N=0, 1, 2, . . . , 15) in digital domain as d2e(N)(0:8). The truncation error for each of these is less than +−1 lsb. This is another constraint imposed upon the ILE detection code setups shown in FIGS. 3 to  18 . The code setups in FIGS. 3 to  18  may look overly complicated, but the reason for that lies on this constraint, which is that the digital truncation error for each ILE error code is no more than +−1 lsb. 
     This constraint, along with the previous constraint, overcomes the problems associated with the prior art. Once all digital codes corresponding to ILEs are obtained, they are stored in RAM and used to correct for ILE of the MDAC code during normal conversions. The correction is nothing but a digital subtraction of the ILE error of the code that is selected for the conversion. 
     The DAC ILE detection algorithm of the present invention may be simply applied to MDAC of any number of resolution as well as other types of DAC implementation such as a resistor string DAC, an R-2R DAC, and a binary weighted capacitor DAC. 
     FIG. 19 is a circuit block diagram representative of an embodiment of the present invention. The pipeline ADC is composed of the sample-and-hold amplifier (SHA), four stages of a flash sub ADC and an MDAC in each stage, and the last sub ADC stage (ADC 5 ). The analog signal path in the circuit of FIG. 19 is differential, reflecting the actual embodiment of the present invention. Calibration is applied to the first three stages of the ADC since inherent errors in the stage 4 and ADC 5  do not affect the accuracy of the overall ADC. Stage 3 is calibrated first, then Stage 2, and finally Stage 1. For calibration of a stage, an ADC made up of the subsequent stages is used for error detection in digital domain described above. 
     The Calibration Control block controls the timing and values of thermometer code setups to the stage being calibrated, in accordance with the algorithm of the present invention shown in FIGS. 3 to  18 . ILE errors are detected by the subsequent stages of the ADC, after being averaged to reduce circuit noise, and stored in RAM. During normal conversions, relevant errors stored in RAM will be retrieved and used to correct errors of MDACs in Stages 1 to 3.