
Keywords: ADCs, analog to digital, a to d, INL, errors, intermodulation distortion, linearity, linear time invariant, LTI, integral nonlinearity, DSP, signal processing, superposition, converters


Understanding Integral NonLinearity Errors
By: 
Jim LeClare, Principal Member of Technical Staff, Smart Grid Solutions 

Abstract: To understand the effects of integral nonlinearity errors, the most straightforward approach is to analyze a simple sine wave and apply wellknown trigonometric identities to a nonideal, analogtodigital output transfer function, which contains an INL error.
With an ideal system, a singletone sine wave with amplitude A and frequency fo,
X(t) = Asin(2
π fot)
Sampling with an ADC with a period of T results in a discrete signal:
X[n]=Asin(2
π fonT),
where X[n] is the discretetime signal obtained from the uniform sampling of X(t) every T seconds. The reciprocal 1/T = F is called the sampling rate or sampling frequency.
A particularly important class of systems consists of those that are linear and time invariant, or "LTI." These two properties in combination lead to especially convenient representations for such systems. Most important, the relationship between the input to a LTI system X[n] and the output Y[n] can be given by a convolution sum. Convolution is fundamental to the analysis and description of LTI systems. In this example, we will only be analyzing the linearity of a system.
A linear system is one that satisfies the superposition principle. Simply stated, the principle of superposition requires that the response of the system to a weighted sum of signals be equal to the corresponding weighted sum of the responses (outputs) of the system to each individual input signals. The superposition property greatly simplifies the analysis of linear systems. Because of the decomposition property, you can evaluate separately the different components of the output.
Comparing an ideal ADC transfer curve to a transfer curve with an INL error, it is easy to demonstrate how a system with INL error yields a nonlinear output. The output Y3[n] is not equal to the sum of output Y1[n] +Y2[n] when its input is X3[n] = X1[n] + X2[n]. More precisely, F(X1 + X2) ≠ F(X1) + F(X2). As a result, the nonlinearity error produces additional, unwanted, internally generated sinusoids which can increase the design cost and the filter complexity. (Electrical engineers recognize this effect of internally generated sinusoids as intermodulation distortion.)
Figure 1. The distance between the tip of arrow A and the tip of arrow B, is a measurement of the INL error.
In the above figure, the ideal transfer function is draw as a straight linear line. In this example, the non ideal transfer curve, which includes INL error, is drawn just as a second order function Y[n] = k[X[n]]^2. In reality, the non ideal transfer function may also contain second order, third order, fourth order, etc., components Y[n] = kX1[n] + k2X[n]^2 + k3X[n]^3 + k4X[n]^4 + ...
For the following analysis, only the second order component is considered.
X1[n] = sin(2
π × fo × nT) fo = 1Hz (separated out fo for clarity), amplitude A=1, no phase
Y1[n] = kX1[n]X1[n] set constant k = 1 for simplicity in this example
Y1[n] = sin(2
π × 1 × nT)sin(2
π × 1 × nT)
Note: Recall from trigonometry identities, Sin(A)Sin(B) = Cos(AB)/2  Cos(A+B)/2
Y1[n] = cos(2
π × 1 × nT  2
π × 1 × nT)/2  cos(2
π × 1 × nT + 2
π × 1 × nT)/2
Y1[n] = cos(0)/2  cos(4
π × 1 × nT)/2
Y1[n] = 1/2  cos(2
π × 2 × nT)/2 (cosine wave with fo = 2Hz and peak amplitude of 0.5)
Figure 2. Y2[n] = X2[n]^{2} = 1/2  cos(2π × 6 × nT)/2.
X2[n] = sin(2
π × fo × nT) with fo = 3Hz with an amplitude A=1
Y2[n] = sin(2
π × 3 × nT)sin(2
π × 3 × nT)
Y2[n] = cos(2
π × 3 × nT  2
π × 3 × nT)/2  cos(2
π × 3 × nT + 2
π × 3 × nT)/2
Y2[n] = cos(0)/2  cos(4
π × 3 × nT)/2
Y2[n] = 1/2  cos(2
π × 6 × nT)/2 (cosine wave with fo = 6Hz and peak amplitude of 0.5)
Figure 3. Y1[n] = X1[n]^{2} = 1/2  cos(2π × 2 × nT)/2.
We can now apply X3[n] = X1[n] + X2[n] , with Y3[n] = [X[3]]^2
Y3[n] = [ X1[n] + X2[n] ]^2
Y3[n] = X1[n]X1[n] + 2 X1[n]X2[n] + X2[n]X2[n]
As previously noted:
X1[n]X1[n] results in a constant value of 1/2 and a cosine wave of 2Hz, amplitude 0.5
X2[n]X2[n] results in a constant value of 1/2 and a cosine wave of 6Hz, amplitude 0.5
For 2X1[n]X2[n] 
= 2sin(2π × 1 × nT)sin(2π × 3 × nT) 

= cos(2π × 1 × nT  2π × 3 × nT)  cos(2π × 1 × nT + 2π × 3 × nT) 

= cos(4π × nT)  cos(8π × nT) 

= cos(2π × 2 × nT)  cos(2π × 4 × nT) 

= cos(2π × 2 × nT)  cos(2π × 4 × nT) (cosine waves of 2Hz and 4Hz) 
Therefore,
For Y3[n] 
= X1[n]^2 + X2[n]^2 

= Y1[n] + Y2[n] 

= 1  cos(2π × 2 × nT)/2  cos(2π × 6 × nT)/2 
Figure 4. Y3[n] = X1[n]^2 = 1  cos(2π × 2 × nT)/2  cos(2π × 6 × nT)/2.
However,
For Y3[n] 
= ( X1[n] + X2[n] )^2 

= 1  cos(2π × 2 × nT)/2  cos(2π × 6 × nT)/2 + cos(2π × 2 × nT)  cos(2π × 4 × nT) 
Figure 5. Y3[n] = X1[n] + X2[n])^2 = 1  cos(2π × 2 × nT)/2  cos(2π × 6 × nT)/2 + cos(2π × 4 × nT).
As a result of the integral nonlinearity error, we have added two additional cosine waves of 2Hz and 4Hz. The superposition principle is not satisfied, therefore the system is nonlinear and is not a Linear Time Invariant system. As noted above, filtering needs to be applied to suppress the additional unwanted frequencies (or side lobes), adding design complexity and cost.
Listing 1: Matlab Code
% Frequency Resolution Demonstration
% Maxim Integrated
% Magnitude Verses Frequency Plots  NonLinearity Error
n = 0:1023;
w0 = 0.02*pi; % w0 = 2*pi*1*0.01 , frequency = 1Hz, Sample period = .01s
w1 = 0.06*pi; % w1 = 2*pi*3*0.01 , frequency = 3Hz, Sample period = .01s
N = 2048;
w = (N/2:(N1)/2)*2*pi/N;
x1=cos(w0*n); % X1[n] = cos(2*pi*1*n*0.01) freq = 1Hz , Sample period = .01s
x2=cos(w1*n); % X2[n] = cos(2*pi*3*n*0.01) freq = 3Hz , Sample period = .01s
x3=x1+x2;
y1=x1.*x1; % Y1[n] = [X1[n]]^2
y2=x2.*x2; % Y2[n] = [X2[n]]^2
y3=y1+y2;
y4=x3.*x3;
L = 1024;
Z0=[y1(1:L) zeros(1, 2048  L)];
Z1=[y2(1:L) zeros(1, 2048  L)];
Z2=[y3(1:L) zeros(1, 2048  L)];
Z3=[y4(1:L) zeros(1, 2048  L)];
%Perform FFT on signals
Z5=fft(Z0, N);
fftshift(Z5);
Z6=fft(Z1, N);
fftshift(Z6);
Z7=fft(Z2, N);
fftshift(Z7);
Z8=fft(Z3, N);
fftshift(Z8);
%Plot signals
subplot(2,2,1);plot(w/(.02*pi),abs(fftshift(Z5)/512)), xlabel(''), ylabel('magnitude');
title('X1[n]^2');
subplot(2,2,2);plot(w/(.02*pi),abs(fftshift(Z6)/512)), xlabel(''), ylabel('magnitude');
title('X2[n]^2');
subplot(2,2,3);plot(w/(.02*pi),abs(fftshift(Z7)/512)), xlabel('Frequency Graph'), ylabel('magnitude');
title('Y3[n]=X1[n]^2 + X2[n]^2');
subplot(2,2,4);plot(w/(.02*pi),abs(fftshift(Z8)/512)), xlabel('Frequency Graph'), ylabel('magnitude');
title('Y3[n]=(X1[n] + X2[n])^2');
References
 DiscreteTime Signal Processing, Alan Oppenheim and Ronald Schafer
 Understanding Digital Signal Processing, Richard Lyons
 Digital Signal Processing, John Proakis and Dimitris Manolakis
 Signal Processing & Linear Systems, B.P. Lathi
Additional Information:
The ABCs of ADCs: Understanding How ADC Errors Affect System Performance
© Sep 29, 2003, Maxim Integrated Products, Inc.

The content on this webpage is protected by copyright laws of the United States and of foreign countries. For requests to copy this content, contact us.
APP 2395: Sep 29, 2003
TUTORIAL 2395,
AN2395,
AN 2395,
APP2395,
Appnote2395,
Appnote 2395
