測量差分輸出、電流模式數/模轉換器的線(xiàn)性度
注意:Maxim提供各種精度的電流輸出DAC。本文中,將以MAX5891 作為測量和規格說(shuō)明的特例。但所介紹的參數和測量方法可以用于其他的差分輸出、電流模式DAC。
線(xiàn)性參數說(shuō)明
定義數據轉換器線(xiàn)性精度主要有兩個(gè)參數:積分(INL)和差分(DNL)非線(xiàn)性。INL是輸出傳輸函數和理想直線(xiàn)之間的偏差;DNL是轉換器輸出步長(cháng)相對于理想步長(cháng)的誤差。
可以采用兩種方法之一對INL進(jìn)行定義:(1)端點(diǎn)INL或(2)最佳擬合INL。端點(diǎn)INL是采用DAC傳輸函數端點(diǎn)測得的實(shí)際值計算轉換器的線(xiàn)性度;最佳擬合INL則是計算傳輸函數的斜率獲得INL的峰值。
圖1a. 端點(diǎn)積分非線(xiàn)性誤差
圖1b. 最佳擬合積分非線(xiàn)性誤差
圖1a和圖1b以圖形的形式顯示了兩種測試方法與給定傳輸函數之間的關(guān)系。注意,兩種情況中,DAC傳輸函數曲線(xiàn)的數值和形狀都一樣。還要注意,圖1a的端點(diǎn)線(xiàn)性度有較大的正INL,而沒(méi)有負誤差。
采用圖1b所示的最佳擬合方法,將部分正誤差轉移到直線(xiàn)的負側,以降低報告的最大INL。注意,線(xiàn)性度誤差總量和直線(xiàn)計算結果相同。
DNL定義理解起來(lái)要難一些,確定最低有效位(LSB)的權值會(huì )影響DNL。DAC中需要考慮DNL沒(méi)有小于-1 LSB的編碼。小于這一電平的DNL誤差表明器件是非單調的。當輸出不隨輸入碼增大而減小時(shí),或者輸出不隨輸入碼減小而增大時(shí),DAC是單調的。圖2解釋了正、負DNL誤差,澄清了單調的概念。
圖2. DNL誤差實(shí)例
測量線(xiàn)性度所采用的方法需要考慮待*估DAC的體系結構。優(yōu)先選擇將電流模式DAC輸出轉換為電壓,因為這樣可以使用電壓表而不是電流表。普通的萬(wàn)用表在測量電壓時(shí)分辨率要高于電流測量。電流源的配置決定了需要測量多少位編碼才能對器件性能進(jìn)行精確的*估。
有很多方法可以將電流(I)轉換為電壓(V),主要取決于幾種因素。首先考慮使用萬(wàn)用表進(jìn)行測量,能夠得到的最高分辨率決定了精確測量的最小LSB權重。推薦LSB權重與儀表分辨率的比是100比1;儀表應能夠測量LSB的1/100。
待測DAC的輸出額定容限也影響了如何進(jìn)行I至V的轉換。電流模式DAC輸出容限是指器件在輸出上能夠承受多大的電壓而不會(huì )對性能有影響。增大負載電阻會(huì )提高電壓擺幅和LSB的大小,但是容限限制了最大負載。
替代簡(jiǎn)單的電阻轉換的方法是使用虛擬地配置的運算放大器,如圖3所示。由于DAC輸出電壓保持為零,這種配置的優(yōu)勢是能夠提高LSB的大小,明顯高于容限限制。然而,放大器容限和線(xiàn)性度以及熱梯度會(huì )影響測量。同樣的,需要兩個(gè)匹配放大器來(lái)測量差分輸出器件。
圖3. 虛擬地的I至V轉換
測量線(xiàn)性度時(shí)需要考慮的另一因素是待*估DAC的分辨率。器件分辨率越高,LSB越小??紤]MAX5891 (16位)、MAX5890 (14位)、MAX5889 (12位)器件。每一器件的滿(mǎn)量程輸出為20mA。使用50Ω負載時(shí),相應的LSB大小為15.25?V、61.04?V和244.2?V。LSB越小,萬(wàn)用表需要的精度和分辨率就越高。
考慮到DAC的分辨率,還應該確定需要多少位編碼才能精確地測量器件性能。16位器件有65,536個(gè)可能的輸入編碼,12位器件有4,096個(gè)。由于不可能人工測量所有這些編碼,因此,常用的方法是測量編碼子集。少量的編碼減少了采集數據所需要的時(shí)間,并且能夠提供非常精確的結果。掌握器件的體系結構有助于選擇某一器件的最佳編碼。
測量電流輸出器件的線(xiàn)性度時(shí),溫度效應比較明顯。輸出負載電阻的功耗導致發(fā)熱,從而改變了電阻值(除非采用的電阻具有0ppm溫度系數)。解決這一問(wèn)題的方法是轉換輸入編碼,有效地對負載功耗進(jìn)行平均。
這里采用的方法非常適合自動(dòng)測量,因為它能夠減小所有編碼的延遲時(shí)間。測量每一編碼及其補碼,例如0x4800,然后是0xB7FF。通過(guò)測量每一編碼及其補碼,負載平均功率保持固定,這是因為采用了從零到滿(mǎn)量程遞增的方式來(lái)測量最高有效位(MSB)輸入。由于在量程中部測量LSB,該方法不太適合,因為功率的變化相當小。
測量說(shuō)明
以下是Maxim開(kāi)發(fā)的幾種器件所采用的線(xiàn)性度測量方法。MAX5873 、MAX5875 、MAX5885、MAX5888 MAX5891、MAX5895 和MAX5898 /都采用了該方法進(jìn)行測量。在最初設計*估和產(chǎn)品測試時(shí)進(jìn)行了實(shí)驗室測量。雖然下面實(shí)例針對MAX5891,該方法也可以用于其他器件。
MAX5891采用了5-4-3-4分段結構。分段是指將一個(gè)16位器件有效地分成四個(gè)單獨的DAC,一個(gè)5位、一個(gè)4位、一個(gè)3位和第二個(gè)4位器件。5個(gè)MSB含有31個(gè)(25 - 1)等權重電流源,對于5位分辨率,每個(gè)輸入編碼采用一個(gè)等權重電流源。下一個(gè)4位使用15個(gè)源,再下一個(gè)3位使用7個(gè)。4個(gè)LSB是二進(jìn)制權重電流源,每個(gè)低位比特等于前一比特值的一半。
電流源的總數57 (31 + 15 + 7 + 4)加上滿(mǎn)幅值和零值,確定了測量MAX5891線(xiàn)性度所需的最少編碼數。59次測量支持重新構建完整的DAC輸出傳輸函數。一旦確定了傳輸函數,即可計算線(xiàn)性度。該方法雖然縮短了測試時(shí)間,但降低了測量精度。表1列出了推薦的MAX5891編碼組。
表1. 5-4-3-4體系結構16位編碼組
MAX5890和其他Maxim 14位器件使用5-4-3-2分段體系結構,14位體系結構的編碼組如表2所示。MAX5889和其他Maxim 12位器件使用5-4-3體系結構,12位體系結構的編碼組如表3所示。
表2. 5-4-3-2體系結構的14位編碼組
表3. 5-4-3體系結構的12位編碼組
定義了編碼組后,必須解決采集測量點(diǎn)的問(wèn)題。適合這類(lèi)測量的萬(wàn)用表是Agilent? 3458,分辨率高達8.5位。該表連接在MAX5891的OUTP和OUTN端之間,輸出端以50Ω負載接地。當
萬(wàn)用表量程設置為固定的1.2V,使用最大分辨率,得到10nV最小測量結果。切換表的量程會(huì )增大測量值的增益誤差;因此,使用單電壓量程可以避免其他的誤差源。由于需要鎖存數字輸入,MAX5891還需要時(shí)鐘信號。一旦連接好了萬(wàn)用表、時(shí)鐘源、電源和數字輸入控制,就可以采集線(xiàn)性度測量點(diǎn)。
采集所有測量點(diǎn)后,需要畫(huà)出重建后的DAC輸出傳輸函數。由于對每一電流源都進(jìn)行了測量,很容易產(chǎn)生對應于所有編碼的傳輸函數。例如,考慮器件的4個(gè)LSB。我們測量編碼0x8000、0x8001、0x8002、0x8004和0x8008。對于編碼0x8000,LSB計算的基準是DAC量程中部。LSB權重是在0x8001測得的電壓值減去在0x8000測得的電壓值。
在0x8001和0x8780之間測量的所有編碼采用相同的公式。0x0800到0xF800的其他點(diǎn)是MSB電流源,以編碼0x0000為基準進(jìn)行計算??紤]編碼0x4F31作為各種電流相加的例子。
首先,我們需要確定哪一測量點(diǎn)什么時(shí)候相加能夠等于實(shí)例編碼。0x4800是小于目標編碼的最大MSB。從0x4F31中減去0x4800后的余數為0x0331。編碼0x0300是可以減掉的次最大編碼(0x8300 - 0x8000),隨后是0x0030 (0x8030 - 0x8000),最后是0x0001 (0x8001 - 0x8000)。
因此,可以采用下面的等式來(lái)表示編碼0x4F31的電壓值:
[V(0x4800) - V(0x0000)] + [V(0x8300) - V(0x8000)] + [V(0x8030) - V(0x8000)] + [V(0x8001) - V(0x8000)](公式1)
使用相似的等式,可以計算任意給定輸入編碼的電壓值。利用MATLAB?或Excel?軟件等工具可以很容易地計算所有編碼的電壓,重建全部的DAC傳輸。
一旦建立了傳輸函數,就可以計算線(xiàn)性度。第一步是根據傳輸函數的端點(diǎn)計算LSB的電壓值(端點(diǎn)法)。
VLSB = [V(0xFFFF) - V(0x0000)]/[2N - 1](公式2)
其中
N是器件分辨率 (16、14或者12位)
V(0x0000)是測得的DAC零標輸出電壓。
V(0xFFFF)是測得的DAC滿(mǎn)幅輸出電壓。
采用下面的等式來(lái)計算任意給定編碼的INL:
INLCODE(LSB) = [VCODE - (CODE × VLSB)]/VLSB(公式3)
其中
CODE是要計算的數字編碼。
VLSB是公式2中計算的電壓值。
VCODE是計算的DAC輸出電壓值。
下面的等式用于計算任意給定編碼的DNL:
DNLCODE(LSBs) = [VCODE - VCode-1 - VLSB]/VLSB(公式4)
其中
CODE是要計算的數字編碼。
VCODE是針對CODE計算的DAC輸出電壓值。
VCODE-1是針對CODE - 1計算的DAC輸出電壓值。
VLSB是公式2中計算的電壓值。
以下舉例說(shuō)明利用MATLAB腳本計算MAX5889、MAX5890和MAX5891的線(xiàn)性度。每次計算都得到最小和最大DNL和INL誤差編碼和誤差值。實(shí)例還為所有編碼畫(huà)出了傳輸函數,得到INL和DNL。要求用戶(hù)輸入前面表格中所列出編碼的電壓測量值。必須按照所列順序輸入數值。
評論