<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 使用兩點(diǎn)校準(zhǔn)消除ADC偏移和增益誤差使用兩點(diǎn)校準(zhǔn)消除ADC偏移和增益誤差

          使用兩點(diǎn)校準(zhǔn)消除ADC偏移和增益誤差使用兩點(diǎn)校準(zhǔn)消除ADC偏移和增益誤差

          作者: 時(shí)間:2024-09-04 來源:EEPW編譯 收藏

          通過示例了解方法和定點(diǎn)實(shí)現(xiàn),以補(bǔ)償模數(shù)轉(zhuǎn)換器(ADC)偏移和。

          本文引用地址:http://www.ex-cimer.com/article/202409/462651.htm

          在上一篇文章中,我們討論了單點(diǎn)校準(zhǔn)可用于微調(diào)誤差。為了補(bǔ)償偏移和,我們需要。在本文中,我們將探索方法,并通過一個(gè)例子了解該技術(shù)的定點(diǎn)實(shí)現(xiàn)。

          確定實(shí)際的兩點(diǎn)校準(zhǔn)測試

          圖1顯示了受偏移和增益誤差影響的單極12位ADC的特性曲線。

          受偏移和增益誤差影響的單極12位ADC的特性曲線。

           1.png

          圖1。受偏移和增益誤差影響的單極12位ADC的特性曲線。

          ADC的滿標(biāo)度值為3V。選擇ADC滿標(biāo)度范圍10%和90%的兩個(gè)測試輸入點(diǎn)A和B,以確定和增益誤差。在0.3V和2.7V時(shí),測量的輸出代碼分別為437和3749。測量的傳遞函數(shù)的斜率可以計(jì)算為:

           

          2.png

          使用點(diǎn)A的x和y值,我們得到以下直線方程:

           3.png

          通過替換Vin=0,發(fā)現(xiàn)偏移誤差為+23 LSB。以下方程式描述了理想12位ADC的線性模型:

           4.png

          因此,0.3V和2.7V下的理想碼值分別為409和3686。使用這些值,理想響應(yīng)的斜率可得:

           5.png

          現(xiàn)在我們可以計(jì)算ADC的增益誤差如下:

           6.png

          兩點(diǎn)校準(zhǔn)——消除ADC偏移誤差和增益誤差

          知道實(shí)際響應(yīng)后,我們現(xiàn)在可以很容易地消除數(shù)字域中的偏移和增益誤差。首先,我們可以從每個(gè)輸出代碼中減去偏移量,得到一個(gè)通過原點(diǎn)且斜率為Slopem的響應(yīng)。接下來,將結(jié)果乘以

           SlopeiSlopemSlopeiSlopem 

          將獲得的直線繞原點(diǎn)旋轉(zhuǎn),并產(chǎn)生斜率為Slopei的直線。

          這些數(shù)學(xué)運(yùn)算將實(shí)際響應(yīng)的直線映射到理想ADC的直線。圖2使用了一個(gè)夸張的例子來說明校準(zhǔn)概念。

          顯示ADC校準(zhǔn)的示例響應(yīng)。

           7.png

          圖2:顯示ADC校準(zhǔn)的示例響應(yīng)。

          因此,通過應(yīng)用方程式1,可以從實(shí)際代碼Codea計(jì)算出校準(zhǔn)的輸出代碼CodeCal:

           8.png

          方程式1。

          定點(diǎn)校準(zhǔn)實(shí)施

          另一方面,如果我們試圖補(bǔ)償偏移和增益誤差的固定值,我們可以簡化方程1,實(shí)現(xiàn)計(jì)算效率更高的系統(tǒng)。繼續(xù)我們的例子,我們可以將offset=23、Slopei=1365.42和Slopem=1380代入方程1,得到以下關(guān)系:

           9.png

          為了節(jié)省系統(tǒng)處理器的一些CPU(中央處理單元)周期,我們可以將上述方程簡化為方程2:

           10.png

          方程式2。

          解釋:

          c1=0.989434782

          c2=-22.757

          雖然我們可以使用浮點(diǎn)算法來實(shí)現(xiàn)上述方程,但定點(diǎn)實(shí)現(xiàn)可能更高效、更劃算。我們有兩個(gè)分?jǐn)?shù),c1和c2。為了以定點(diǎn)格式表示分?jǐn)?shù),我們將使用隱含的二進(jìn)制點(diǎn)。這意味著我們將假設(shè)寄存器的一定數(shù)量的位表示整數(shù)部分,而剩余的位表示數(shù)字的小數(shù)部分。

          然后使用Q格式表示法來指定整數(shù)和小數(shù)部分的位數(shù)。例如,101.0011可以是Q3.4格式的數(shù)字,因?yàn)樗褂萌槐硎菊麛?shù),四位表示小數(shù)部分。

          請注意,二進(jìn)制點(diǎn)實(shí)際上并沒有在硬件中實(shí)現(xiàn);它只是一個(gè)概念,允許我們在定點(diǎn)處理器中表示分?jǐn)?shù)。此外,給定Q格式的數(shù)字可能表示正值或負(fù)值。

          回到我們的ADC校準(zhǔn)示例,我們有兩個(gè)分?jǐn)?shù)c1和c2,它們應(yīng)該以適當(dāng)?shù)亩c(diǎn)格式表示。讓我們假設(shè)使用二進(jìn)制補(bǔ)碼格式的帶符號16位寄存器來存儲這些常數(shù)。由于c1小于1,整數(shù)部分只需要一個(gè)比特作為符號。其余的比特可以表示小數(shù)部分,從而形成Q1.15格式。

          為了找到c1的不動點(diǎn)表示,我們將其乘以215,將其四舍五入到最接近的整數(shù),并將舍入結(jié)果轉(zhuǎn)換為二進(jìn)制形式。

          11.png

          由于c2在16到32之間,我們需要5位用于整數(shù)部分,1位用于符號。這給我們留下了10位用于小數(shù)部分。因此,c2的適當(dāng)表示是Q6.10格式。為了用這種格式表示,我們將c2乘以210,將其四舍五入到最接近的整數(shù),并將四舍五進(jìn)的結(jié)果轉(zhuǎn)換為二進(jìn)制形式。

          12.png

          請注意,c2是2補(bǔ)碼格式的負(fù)數(shù)。由于新系數(shù)使用不同的縮放因子,我們需要仔細(xì)跟蹤縮放因子對計(jì)算的影響。讓我們定義一個(gè)新的臨時(shí)變量Var1,將c1、new和未校準(zhǔn)ADC讀數(shù)的乘積存儲為方程式3:

           13.png

          方程式3。

          這產(chǎn)生了方程2右側(cè)的第一項(xiàng)。假設(shè)ADC的12位輸出存儲在C程序中的帶符號16位寄存器中。因此,Codea可以被視為Q16.0數(shù)字。這意味著實(shí)現(xiàn)方程式3需要將Q1.15值乘以Q16.0值。變量Var1應(yīng)該是一個(gè)32位寄存器來存儲此乘法的結(jié)果。此外,由于Q16.0的數(shù)字乘以Q1.15的值,Var1的格式為Q17.15。如果你需要使用定點(diǎn)表示法來復(fù)習(xí)乘法,請參閱這篇文章。

          如您所見,乘法運(yùn)算增加了數(shù)據(jù)字長。在實(shí)現(xiàn)DSP(數(shù)字信號處理器)算法時(shí),我們通常會截?cái)嗷蛏崛氤朔ㄝ敵?,以防止字長無限增長。然而,在截?cái)嗷蛏崛氤朔ㄝ敵鲋埃覀儜?yīng)該考慮對數(shù)據(jù)的下一步操作。

          在這個(gè)例子中(方程式2),乘法結(jié)果將被添加到Q6.10格式的c2 new中??紤]到c2的分?jǐn)?shù)部分,我們可以丟棄Var1的五個(gè)最低有效位,并將截?cái)嗟慕Y(jié)果存儲在一個(gè)新的變量Var2中。C編程中的右移運(yùn)算符可用于執(zhí)行此操作:

           14.png

          方程式4。

          如果我們的系統(tǒng)中有任意的寄存器長度(例如,在FPGA中),我們可以使用Q17.10格式的27位寄存器存儲Var2。然而,在C編程中,Var2仍然必須存儲在32位寄存器中。如果我們截?cái)郠17.15數(shù)字的五個(gè)最低有效位并將結(jié)果存儲在32位寄存器中,我們將得到Q22.10數(shù)字。最后,我們可以將c2添加到Var2中,并丟棄10個(gè)最低有效位,以得到校準(zhǔn)的ADC值,得到方程5:

           15.png

          方程式5。

          作為旁注,為了避免任何混淆,我想提到的是,方程4和5中的變量不使用下標(biāo),因?yàn)檫@兩行被假設(shè)為偽代碼。例如,文本中的Var2在方程式4和5中表示為Var2。

          ADC定點(diǎn)校準(zhǔn)驗(yàn)證

          讓我們看看上述定點(diǎn)系數(shù)(c1,new=32422和c2,new=23303)是否可以將測量的ADC響應(yīng)映射到理想的直線模型。在圖1中的A點(diǎn),ADC輸出為437。應(yīng)用方程式3,Var1為:

           16.png

          將其轉(zhuǎn)換為二進(jìn)制格式,右移5位,然后找到十進(jìn)制等效值,我們得到:

           17.png

          現(xiàn)在,我們添加c2、new,并將結(jié)果的二進(jìn)制等效值右移10位,得到:

           18.png

          您同樣可以驗(yàn)證點(diǎn)B是否也映射到理想代碼3686。請注意,計(jì)算機(jī)程序使用系數(shù)的二進(jìn)制等效值,我只是使用十進(jìn)制值來闡明計(jì)算。我們同樣可以從測量的ADC響應(yīng)中檢查其他點(diǎn),以確保定點(diǎn)實(shí)現(xiàn)產(chǎn)生所需的值。如果不滿足這個(gè)要求,我們將不得不使用更大的寄存器來存儲校準(zhǔn)系數(shù)。

          ADC未使用的輸出代碼和輸入范圍

          之前,我們討論過偏移和增益誤差會導(dǎo)致未使用的輸出代碼。上述校準(zhǔn)技術(shù)是在A/D轉(zhuǎn)換之后執(zhí)行的。因此,它無法解決未使用的代碼問題。為了澄清這一點(diǎn),請考慮圖3中所示的示例。

          顯示未使用和可用輸入范圍的示例。

           19.png

          圖3。示例顯示了未使用和可用的輸入范圍和輸出代碼范圍。

          在這個(gè)例子中,顯示了一個(gè)偏移為-13LSB的單極ADC。通過將ADC讀數(shù)加13,可以校準(zhǔn)偏移誤差。但是,請注意,ADC輸出小于13 LSB的輸入值的全零碼。該輸入范圍在校準(zhǔn)響應(yīng)中仍然不可用,因?yàn)樾?zhǔn)是在A/D轉(zhuǎn)換后進(jìn)行的。校準(zhǔn)僅向?qū)嶋HADC響應(yīng)添加恒定偏移,在上述示例中為低于13LSB的所有值產(chǎn)生代碼13。應(yīng)該注意的是,一些ADC具有與本文討論的后轉(zhuǎn)換方法不同的內(nèi)置校準(zhǔn)功能。這些內(nèi)置校準(zhǔn)技術(shù)可能能夠保持ADC的本機(jī)范圍。這種內(nèi)置校準(zhǔn)技術(shù)用于TI的TMS320280x和TMS3202801x設(shè)備上的12位ADC。




          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();