ADC轉換參數——INL_DNL


     說起來都是教科書害人。幾乎所有的教科書、參考書、文獻選編都只關心模數器件的分辨率和速度,而忽略了器件的精度。而關系到器件精度的兩個非常重要的參數就是INL值和DNL值。小弟覺得非常有必要專門寫一篇貼子來普及一下模數器件
精度這個重要的概念。 
     說精度之前,首先要說分辨率。最近已經有貼子熱門討論了這個問題,結論是分辨率決不等同於精度。比如一塊精度0.2%(或常說的准確度0.2級)的四位半萬用表,測得A點電壓1.0000V,B電壓1.0005V,可以分出B比A高0.0005V,但A點電壓的真實值可能在0.9980~1.0020之間不確定。 

     那么,既然數字萬用表存在着精度和分辨率兩個指標,那么,對於ADC和DAC,除了分辨率以外,也存在精度的指標。
模數器件的精度指標是用積分非線性度(Interger NonLiner)即INL值來表示。也有的器件手冊用 Linearity error 來表示。他表示了ADC器件在所有的數值點上對應的模擬值,和真實值之間誤差最大的那一點的誤差值。也就是,輸出數值偏離線性最大的距離。單位是LSB(即最低位所表示的量)。
     比如12位ADC:TLC2543,INL值為1LSB。那么,如果基准4.095V,測某電壓得的轉換結果是1000,那么,真實電壓值可能分布在0.999~1.001V之間。對於DAC也是類似的。比如DAC7512,INL值為8LSB,那么,如果基准4.095V,給定數字量1000,那么輸出電壓可能是0.992~1.008V之間。 

     下面再說DNL值。理論上說,模數器件相鄰量個數據之間,模擬量的差值都是一樣的。就相一把疏密均勻的尺子。但實際並不如此。一把分辨率1毫米的尺子,相鄰兩刻度之間也不可能都是1毫米整。那么,ADC相鄰兩刻度之間最大的差異就叫差分非線性值(Differencial NonLiner)。DNL值如果大於1,那么這個ADC甚至不能保證是單調的,輸入電壓增大,在某個點數值反而會減小。這種現象在SAR(逐位比較)型ADC中很常見。
     舉個例子,某12位ADC,INL=8LSB,DNL=3LSB(性能比較差),基准4.095V,測A電壓讀數1000,測B電壓度數1200。那么,可判斷B點電壓比A點高197~203mV。而不是准確的200mV。對於DAC也是一樣的,某DAC的DNL值3LSB。那么,如果數字量增加200,實際電壓增加量可能在197~203mV之間。


     很多分辨率相同的ADC,價格卻相差很多。除了速度、溫度等級等原因之外,就是INL、DNL這兩個值的差異了。比如AD574,貴得很,但它的INL值就能做到0.5LSB,這在SAR型ADC中已經很不容易了。換個便宜的2543吧,速度和分辨率都一樣,但INL值只有1~1.5LSB,精度下降了3倍。

     另外,工藝和原理也決定了精度。比如SAR型ADC,由於采用了R-2R或C-2C型結構,使得高權值電阻的一點點誤差,將造成末位好幾位的誤差。在SAR型ADC的2^n點附近,比如128、1024、2048、切換權值點阻,誤差是最大的。1024值對應的電壓甚至可能會比1023值對應電壓要小。這就是很多SAR型器件DNL值會超過1的原因。但SAR型ADC的INL值都很小,因為權值電阻的誤差不會累加。
和SAR型器件完全相反的是階梯電阻型模數/數模器件。比如TLC5510、DAC7512等低價模數器件。比如7512,它由4095個電阻串聯而成。每個點阻都會有誤差,一般電阻誤差5%左右,當然不會離譜到100%,更不可能出現負數。因此這類器件的DNL值都很小,保證單調。但是,每個電阻的誤差,串聯后會累加,因此INL值很大,線性度差。

     這里要提一下雙積分ADC,它的原理就能保證線性。比如ICL7135,它在40000字的量程內,能做0.5LSB的INL值(線性度達到1/80000 !!)和0.01LSB的DNL值.這兩個指標在7135的10倍價錢內,是不容易被其他模數器件超越的。所以7135這一類雙積分ADC特別適合用在數字電壓表等需要線性誤差非常小的場合。

     還要特別提一下基准源。基准源是測量精度的重要保證。基准的關鍵指標是溫飄,一般用ppm/K來表示。假設某基准30ppm/K,系統在20~70度之間工作,溫度跨度50度,那么,會引起基准電壓30*50=1500ppm的漂移,從而帶來0.15%的誤差。溫漂越小的基准源越貴,比如30ppm/K的431,七毛錢;20ppm/K的385,1塊5;10ppm/K的MC1403,4塊5;1ppm/K的LM399,14元;0.5ppm/K的LM199,130元。
該死的教科書害了一代學生。說起來好笑的一個現象:我這邊新來的學生大多第一次設計ADC電路的時候,基准直接連VCC,還理直氣壯的找來N本教科書,書上的基准寫了個網標:+5V。天下的書互相抄,也就所有的學校的教科書都是基准接5V。教科書把5V改成5.000V多好?學生就會知道,這個5V不是VCC。或者提一下基准需要高穩定度,也好啊!  

     最后說一下Sigma-Delta型ADC,它比較特殊,對於精度,一般用直接用線性度表示,比如0.0015%.不說差分非線性值,而直接用有效分辨率來表示。此外,Sigma-Delta型ADC還存許多怪脾氣,難伺候。
ADC應用中被 bangzhu 發表於 2006-3-20 23:15 模擬技術 ←返回版面 



總結:
(1)INL(Interger NonLinear,Linearity error)精度。理解為單值數據誤差,對應該點模擬數據由於元器件及結構造成的不能精確測量產生的誤差。
(2)DNL(Differential NonLinear)差分非線性值。理解為刻度間的差值,即對每個模擬數據按點量化,由於量化產生的誤差。
例子:
(1)INL,精度
     比如12位ADC:假設基准Vref=4.095V,那么1LSB=Vref/2^12=0.001V。如果精度為1LSB,則它的單值測量誤差0.001V*1=0.001V,比如測量結果1.000V,實際在1.000+/-0.001V范圍。如果精度為8LSB,則他的單值測量誤差0.001V*8=0.008V,比如測量結果1.000V,實際在1.000+/-0.008V范圍

(2)DNL,差分非線性值
     比如12位ADC:假設基准Vref=4.095V,那么1LSB=Vref/2^12=0.001V。不考慮精度,即精度為0LSB。沒有單值誤差。如果DNL=3LSB=0.001V*3=0.003V假設A實際電壓為1.001V,B實際電壓為1.003V。理論上A點讀數1.001V/1LSB=1001,B點讀數1.003V/1LSB=1003,B-A=2,B>A,但由DNL=3LSB=0.003V,模擬數據間的量化誤差有0.003V,那么B-A會在-1(2-3=-1)到+5(2+3=5)之間的某一個數。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM