使用DS1863/DS1865的內(nèi)部校準和右移位增強ADC性能
概述
DS1863和DS1865控制器/監(jiān)控器使用內(nèi)部校準和右移位(可擴展動態(tài)范圍)可極大地增強內(nèi)部13位ADC的性能,無需增加成本和尺寸即可達到更高的精確度和準確度。此外,DS1863/DS1865的內(nèi)部校準還具有可編程增益和可編程偏移,從而可以省去大部分的外部信號調(diào)理電路。在ADC之前的模擬域中提供可編程增益,對輸入信號進行放大或衰減,這樣可以充分利用ADC的整個動態(tài)范圍。然后在數(shù)字域,通過右移再將數(shù)字輸出同比縮小(除以某數(shù)),從而使所需的(或者SFF-8472所要求的) LSB保持不變,甚至對用戶透明。
模擬監(jiān)測輸入
DS1863/DS1865的MON輸入框圖如圖1所示。為簡明起見,只畫出了其中一路輸入,所有的四個MON輸入(MON1、MON2、MON3和MON4)原理相同。MON輸入用來監(jiān)測信號,例如Tx功率和Rx功率。
圖1. DS1863/DS1865 MON輸入框圖
如圖1所示,一個單端電壓加于DS1863/DS1865的MON引腳。在模擬域中,該電壓被送入一個可編程增益單元中。該增益單元可對MON通道進行校準,以獲得需要的LSB或滿量程電壓。這個滿量程電壓是需要的LSB 2n,其中n為位數(shù)。此外,增益單元還可將小輸入信號放大,以便最大限度利用ADC動態(tài)范圍。稍后將對此進行詳細說明。
增益單元之后是13位ADC。13位轉(zhuǎn)換結(jié)果以左對齊的2字節(jié)(16位)數(shù)字量形式輸出。這個ADC能輸出從0000h至FFF8h的數(shù)字值。
通過用戶可編程數(shù)字偏移可以對ADC之后的數(shù)字信號進行進一步調(diào)整。數(shù)字偏移功能通過簡單的數(shù)字相加,在內(nèi)部增加正向或負向偏移。必須指出的是,正向偏移將鉗位在FFF8h數(shù)值上;負向偏移將具有小于FFF8h的滿量程數(shù)值(因為負向便移須從轉(zhuǎn)換結(jié)果中扣除)。這種情況下,最小值仍為0000h。有關(guān)數(shù)字偏移的更詳細信息請參見后面的偏移寄存器部分。
右移位是數(shù)字量輸出前的最后一部操作。每一路MON輸入都有3個控制位,用來控制需要的右移次數(shù)(右移位的好處將在后面討論)。如果將此3位設(shè)為0,則禁止右移功能。與偏移一樣,右移位也會影響滿量程數(shù)字輸出。例如,若將其設(shè)置成右移2位,則滿量程數(shù)字輸出變?yōu)?FFEh。移位完成后,數(shù)值將被寫入相應(yīng)的寄存器中,從這里用戶可以讀取轉(zhuǎn)換結(jié)果(存儲器的低半?yún)^(qū),寄存器64h-6Bh)。這也是用來進行報警及警告比較的參數(shù)。
關(guān)于密碼訪問的說明
四個MON輸入的增益和偏移值的設(shè)置都在DS1863/DS1865的表02h中。讀寫這些數(shù)值,需要2級密碼訪問(PW2)。如果2級訪問密碼被輸入到密碼登錄字節(jié)(PWE位于存儲器的低半?yún)^(qū),寄存器7Bh-7Eh),訪問將被批準。
工廠校準MON輸入
每個DS1863/DS1865 MON輸入都已經(jīng)在工廠調(diào)整為2.5V滿量程電壓。而且,每一個數(shù)字偏移也已經(jīng)在工廠設(shè)置為0,所以0V的輸入即意味著0000h數(shù)字輸出。右移位的工廠默認設(shè)置值也為0。工廠校準后的DS1863/DS1865的傳遞函數(shù)示于圖2中的B圖,稍后將詳細介紹。
對于0至2.5V輸入電壓,工廠校準過的器件將輸出8192個量化值中的一個,為13位轉(zhuǎn)換提供305μV的分辨率(2.5V/8192)。理想情況下,將被量化的輸入信號是一個0到2.5V的信號,這樣就可利用整個轉(zhuǎn)換范圍。然而,現(xiàn)實情況并非總是如此。以接收功率(Rx 功率)為例, 0到0.5V的輸入電壓就很常見,這意味著80%的數(shù)字輸出碼永遠不會用到。這對于可產(chǎn)生8192個數(shù)字碼的13位ADC來說,只能輸出1638個碼之一。剩下的6554個數(shù)編碼將永遠不被使用。而且,對于用到的1638個碼來說,分辨率仍為305μV。
為了更好的利用13位ADC,DS1863/DS1865 MON值必須被重新校準為0.5V的滿量程電壓。但是,僅僅重新校準MON并不能解決輸入信號的問題,因為此時LSB會改變,且不再與所要求的LSB匹配。從根本上講,為了得到ADC的最佳性能,必須使用右移位并進行增益和偏移值的調(diào)整。
內(nèi)部校準和右移位
內(nèi)部校準和右移位在被監(jiān)視信號較小、沒有利用整個ADC動態(tài)范圍時最有用。模數(shù)轉(zhuǎn)換之前,在模擬域中先將信號放大一定的倍數(shù),然后在數(shù)字域中再除以相同的系數(shù),這樣所需的LSB保持不變。而精密度和準確度在每右移一位(最多3位)時提高了2倍。在3次右移位之后,精密度或準確度將不會再有改善。
用內(nèi)部校準和右移位的好處可用圖2所示的例子予以恰當(dāng)?shù)恼f明。其中圖A為一被監(jiān)視信號的電壓—時間曲線。該信號在0到0.5V之間擺動。圖B和圖C為MON輸入電壓—數(shù)字輸出曲線,分別代表經(jīng)工廠校準的傳遞函數(shù),以及采用2次右移和滿量程電壓為2.5V / 4 = 0.625V時的傳遞函數(shù)。0.625V的滿量程電壓意味著被浪費掉的碼更少,因為轉(zhuǎn)換結(jié)果比2.5V滿量程時擴大了4倍, 而接下來它又被除以4而同比縮小(2次右移位)。下面將討論確定右移位數(shù)以及與之相關(guān)聯(lián)的滿量程電壓的根據(jù)。這里只使用2次右移位來比較有右移位與無右移位的差別。所采用的器件設(shè)置以及與每一個傳遞函數(shù)相關(guān)的計算列于相應(yīng)的傳遞函數(shù)下面。
圖2. 無右移(B)與右移(C)的比較
圖2中,三條曲線以相同的y軸坐標并排排列。這樣,對于輸入信號上的某個特定點(圖A),通過一條通過該點及各傳遞函數(shù)的水平直線,可粗略地估計出數(shù)字輸出。再回到本例的0到0.5V輸入信號,0.5V輸入由一條穿過三條曲線的水平粗線標出,比較圖B與C即可看出右移位的好處。當(dāng)ADC的輸入范圍遠大于輸入信號范圍時,大量的量化臺階將被浪費掉(見圖 B)。8192個數(shù)值中只使用了1638個;圖B中剩余的80%碼字被浪費掉。與之相對比,圖C則顯示,通過在內(nèi)部校準到一個較小的滿量程電壓,再使用右移位之后,精密度提高了?,F(xiàn)在可用8192個數(shù)字碼中的6554個碼來對輸入信號進行量化。而且,在右移位之后,所需的LSB仍保持不變。右移位操作對用戶透明。通過觀察這兩條曲線上的輸出近似為同一數(shù)值即可驗證這一點。
確定需要的右移位數(shù)
某一應(yīng)用可以使用的右移位數(shù)取決于滿量程電壓(內(nèi)部校準),以及給定輸入信號所用到的數(shù)字編碼百分比。如果已知輸入信號的最大電壓(以及滿量程電壓),則可計算出理想的數(shù)字輸出碼。否則,將要求在進行工程估值以確定數(shù)字輸出范圍時采用一種所謂的“傳遞”方法,并由此而得出理想的右移位數(shù)。以下對這種“傳遞”法加以詳細說明。
將右移位數(shù)設(shè)為0。
執(zhí)行內(nèi)部校準以獲得所需的LSB ,這將確定起始滿量程電壓。(這個過程將在這篇應(yīng)用筆記的后面討論。)
施加最小及最大輸入信號并讀取相應(yīng)的數(shù)字輸出以確定所使用的范圍。
確定所使用的ADC動態(tài)范圍百分比。如果讀數(shù)超出7FFFh ,則不能使用右移位(0右移位)。如果讀數(shù)小于7FFFh ,則至少可使用1 次右移位。如果讀數(shù)小于3FFFh, 則可使用2次右移位,依此類推。表1中總結(jié)了這些數(shù)據(jù)。
為補償右移位所引入的除數(shù),必須在模擬域中增加增益以保持所需的LSB量值不變??赏ㄟ^使用下述公式計算新的滿量程電壓來增加增益:
新的滿量程電壓=原來的滿量程電壓 / 2右移位數(shù)
所以,如果步驟2的內(nèi)部校準得到2.0V的滿量程電壓,并且數(shù)字讀數(shù)大于1FFFh但絕不超過3FFFh,此時2個右移位是比較理想的選擇。對于此例,新的滿量程電壓為2.0V/22 = 0.5V。
內(nèi)部校準該通道為新的滿量程電壓。
將右移位數(shù)設(shè)置為新值。
一旦估算出理想右移位數(shù)及針對特定應(yīng)用的滿量程電壓,則只需用步驟1、6及7進行校準。
內(nèi)部校準和右移位寄存器
DS1863/DS1865器件內(nèi)負責(zé)保存各模擬通道內(nèi)部校準及右移位參數(shù)的寄存器列于表2。同時列出了每個MON通道以及VCC通道設(shè)置的寄存器地址。VCC通道不在本應(yīng)用筆記討論之列,但為完整性起見將其一并列于表中。量化結(jié)果的存放地址也列于表中,以表明其相對位置。請注意,增益、偏移及右移位寄存器位于存儲表02h中(請不要將其與本應(yīng)用筆記中的表2混淆)。存儲表02h的選擇是通過將02h寫入位于存儲器低半?yún)^(qū),寄存器7Fh中的表選擇字節(jié)來完成。
增益寄存器
增益寄存器為一個2字節(jié)值,它通過調(diào)整輸入開關(guān)電容網(wǎng)絡(luò)來確定某一特定被監(jiān)視通道的增益/衰減量。這個增益寄存器使得用戶能將滿量程電壓校準為介于~250mV至6.5536V之間的任何期望值。由于工藝處理的差異和終端應(yīng)用中的不同需求,這個寄存器必須被校準。此校準步驟以及確定要寫入增益寄存器的值的步驟列于如何實現(xiàn)內(nèi)部校準部分。
注意:當(dāng)校準DS1863/DS1865時,了解偏移量和右移位寄存器的值是非常重要的。否則,如果這些值非0并且未補償?shù)脑?,器件將不會被校準成需要的結(jié)果。
偏移寄存器
偏移寄存器是一個2字節(jié)值,它確定對每一被監(jiān)視輸入信號所施加的數(shù)字偏移量。DS1863/DS1865的偏移是轉(zhuǎn)換值的簡單數(shù)字增加或減少。因此在增益被校準成所需值后(且在右移位以前),可通過可編程偏移抵消任何失調(diào)誤差或轉(zhuǎn)移動態(tài)范圍。
偏移校準可通過先確定應(yīng)從轉(zhuǎn)換值中增加或減去多少個數(shù)來計算。典型的一種做法是先施加零輸入(如關(guān)掉激光源),然后再讀出轉(zhuǎn)換值,而這正是您應(yīng)從所有轉(zhuǎn)換值中減去的值。
可通過在式1中代入所需的偏移數(shù)來計算需要寫入到偏移寄存器的值:
例1:如果輸入電壓的參考不是地而是某一基準,那么要將這個基準從測量結(jié)果中減掉。假設(shè)將該基準加到MON輸入上,得到的讀數(shù)是200 (C8h)。你可以使用偏移寄存器從模數(shù)轉(zhuǎn)換器中減去200 (C8h)來將其清零。利用下式來確定寫入寄存器的值:
請記住,在此情況下將執(zhí)行減法運算,這樣滿量程數(shù)FFF8h也將減少C8h ,新的滿量程數(shù)為FF30h。
例2:假設(shè)你想在讀數(shù)中增加200個計數(shù)。這個結(jié)果在下列的等式中:
為計算新的滿量程數(shù),您或許會嘗試將FFF8h加上C8h。 但FFF8h已是最大可能讀數(shù),因此滿量程數(shù)仍將保持為FFF8h。較低的數(shù)將不再是00h,而是C8h,因為已將這個偏移加到所有的讀數(shù)上。
例3:計算0偏移時的偏移值:
這也是出廠默認的偏移寄存器設(shè)置。
右移位寄存器
右移位寄存器位于表02h,寄存器8Eh-8Fh。由于MON1到MON4可執(zhí)行多達7次右移位,所以對于每一MON輸入均需使用3位。MON1和MON2的設(shè)置位于表02h,寄存器8Eh中,同時MON3和MON4的設(shè)置位于表02h,寄存器8Fh中。請參考數(shù)據(jù)資料(或上面的表1)中存儲器分布圖中的數(shù)位位置。EEPROM寄存器的出廠默認值為00h,禁止右移位。
為了進一步闡明右移位的結(jié)果,圖3給出了幾個右移后的MON量化值例子。
圖3. MON寄存器右移位的例子
這篇應(yīng)用筆記討論了二進制搜索方法。算法的輸出是增益和偏移寄存器值,從而得到期望的傳遞函數(shù)即期望的LSB。
為使用這種算法,同時必須做兩件事情:將激光設(shè)置為兩種不同的強度,例如最小值和接近最大值(大約90%);而且還必須能進行多次重復(fù)。對于非光學(xué)應(yīng)用,必須按要求將兩種不同的電壓加于MON輸入。這篇應(yīng)用筆記提供的算法使用90%最大值,所以 “〉”比較是可行的。然而,當(dāng)使用滿量程一定百分比時,在做數(shù)值計算時也應(yīng)考慮相應(yīng)的數(shù)字量百分比。
偽碼示例
下面這段偽碼是用來確定增益的二進制搜索法的一個實例。
現(xiàn)在,這個增益寄存器被設(shè)置并且轉(zhuǎn)換分辨率將與期望的LSB實現(xiàn)最佳匹配。下一步是校準DS1863/DS1865的偏移。正確的增益值被寫入增益寄存器,再次將零輸入加到這個引腳。讀取這部分(Meas1)的數(shù)字結(jié)果。在式1中將CNT1作為輸入可計算偏移。
偽碼的說明
可通過將偏移及右移位寄存器設(shè)置成已知狀態(tài)例如0偏移及0右移位來開始該偽碼算法。 盡管本例中將兩個寄存器均設(shè)置為0,但只要對它們進行相應(yīng)的補償,則亦可采用其他值。例如,如果以所編程偏移開始,則FFF8h可能不再是被鉗位的滿量程數(shù)字值。(參見偏移校準寄存器部分)除初始化寄存器外,該算法也可從計算幾個為所需LSB函數(shù)的重要常數(shù)開始。
二進制搜索增益值時首先將增益校準寄存器設(shè)置成滿量程的一半,即8000h。然后再將90%最大輸入加至被校準MON通道然后,讀取量化值。將此測量值稱為Meas2。接著再檢查Meas2看它是否被鉗位在FFF8h上(此時偏移及右移位均為0)。如果讀數(shù)被鉗位,則無法斷定轉(zhuǎn)換值恰好是FFF8h還是比這大許多(此時也被鉗位成FFF8h)。無論怎樣,增益設(shè)置都太高。在后續(xù)的二進制搜索法中,將增益值減半并重復(fù)此操作直至找到非鉗位增益值為止。
一旦找到非鉗位的Meas2,即可通過施加零輸入并讀取其數(shù)字轉(zhuǎn)換值來繼續(xù)。該算法此轉(zhuǎn)換值即為Meas1。最后。計算Meas2 與Meas1的差值并使用在算法開始時所算出的常數(shù)來與所需差值(CNT2 - CNT1)進行比較。如果Meas2 - Meas1大于CNT2 - CNT1則將增益再減半。如果Meas2 - Meas1小于CNT2 - CNT1則在減半后再將其恢復(fù)到當(dāng)前增益值。重復(fù)此過程直至總共進行16 次,即獲得一個代表所需增益(所需LSB)的16位值。
以下介紹另一種能使該增益校準過程更加形象的方法。先從16 位增益校準寄存器的MSB (b15)開始,將該位設(shè)置為0 (同時也將其他各位初始化為0); 再使MSB = 1,并加上模擬輸入,然后再讀取對應(yīng)的數(shù)字輸出,如果該讀數(shù)被鉗位,則表示增益太高,可將MSB寫回至0,否則將其保留為1,因此現(xiàn)在即已知MSB。然后再轉(zhuǎn)向下一位(b14)也是先將b14設(shè)為1 (此時保留b15 為已確定值),此時b13至b0仍為0。 如果增益仍太高。則可重復(fù)前述操作,即將b14設(shè)為0,否則保留為1。此過程一位接一位進行,直至確定出全部16位為止,其結(jié)果仍是一個代表所需增益的16 位值。
在確定所需增益以后,即可計算新的偏移或?qū)⑵浔A魹?0)。無偏移此校準方法取決于所使用的偏移性質(zhì)。數(shù)據(jù)資料中對該算法的解釋是基于如下假設(shè),即;用戶想要執(zhí)行負偏來清零數(shù)字讀數(shù),以使零模擬輸入時產(chǎn)生全0輸出。這可簡單地通過施加零模擬輸入并讀取相應(yīng)的轉(zhuǎn)換值來實現(xiàn)。如果零輸入(例如激光關(guān)斷)產(chǎn)生例如(20h)的數(shù)字輸出,則可對偏移進行編程以將20h從每一轉(zhuǎn)換值中減去。在本例中,則是先將20h 代入偏移公式中,然后再將計算結(jié)果編程至所需MON 通道的偏移校準寄存器中來完成。
內(nèi)部的校準和右移位實例
為演示本應(yīng)用筆記所提及的概念,我們采用了以下示例。
在此例中利用MON3來監(jiān)視Rx功率,當(dāng)施加-40dBm最小輸入時,在DS1859的MON3管腳上呈現(xiàn)出10mV的電壓,此時該輸入所需數(shù)字輸出為0000h。當(dāng)施加0dBm輸入時,MON3管腳上的電壓為300mV,此時所需數(shù)字輸出為2710h,這樣的選擇是為了滿足SFF-8472規(guī)定的LSB (Rx功率的LSB對應(yīng)于0.1μW)。
確定此例中的理想右移位數(shù)相對比較簡單因為已經(jīng)給定所需的數(shù)字輸出范圍(0000h至2710h)。利用上面的表1,可得到理想右移位數(shù)為2?,F(xiàn)在請記住右移位數(shù)為2,要使2710h在經(jīng)過2次右移位后仍為最終輸出數(shù)字值,我們可推斷,此時300mV的輸入在右移位以前必須產(chǎn)生9C40h的轉(zhuǎn)換值,因此需要用內(nèi)部校準來將300mV輸入的轉(zhuǎn)換值“抬高”至9C40h。在完成偏移的內(nèi)部校準及編程以后,即可執(zhí)行2次右移位。該舉例被歸納于表3中。
在確定了輸入與輸出之間的關(guān)系后(如表3所示),即可用數(shù)據(jù)資料中提供的內(nèi)部校準。程序先從執(zhí)行幾步如下所示的預(yù)先計算開始。請注意,這里并未采用數(shù)據(jù)資料校準程序中所給出的90%, 因為第二校準點(300mV = 9C40h)已經(jīng)小于滿量程值的90%。
根據(jù)表3進行以下計算:
LSB = (0.300V – 0.010V) / (9C40h – 0000h) = 0.290V/40,000 = 7.25μV
最大讀數(shù) = LSB x 65535 = 7.25μV x 65535 = 0.475128V
CNT1 = 0.010/LSB = 1379.3 => 1379 (dec)
CNT2 = 0.300/LSB = 41379.31 => 41379 (dec)
當(dāng)采用兩個校準點時,CNT1及CNT2為所期望(所需)的數(shù)字輸出內(nèi)部校準程序?qū)⒎磸?fù)搜索與這兩個值所確定的斜率最接近的斜率。
校準程序反復(fù)進行16次以下過程,即先用二進制來對該斜率進行編程然后再檢查其是否與所需的斜率相等。在此例中是采用內(nèi)部校準程序以及表4中所列全部16次重復(fù)輸入與輸出來對DS1863/DS1865進行校準。
表4中的第一欄“重復(fù)”等于程序中的n?!霸鲆娼Y(jié)果”欄為每次重復(fù)時被編程進“增益校準”寄存器(即器件表02h中的字節(jié)98至99h)中的值。Meas1及Meas2欄則分別為施加300mV及10mV輸入時器件上的讀數(shù);最后,對于Meas2不被鉗位的重復(fù),將Meas2 - Meas1與CNT2 - CNT1進行比較,如果Meas2 - Meas1大于CNT2 - CNT1,則表示“增益結(jié)果”太大,對應(yīng)于此次重復(fù)的增益校準位為0。而這隨后又確定后續(xù)重復(fù)中的“增益結(jié)果”。當(dāng)完成全部16 次重復(fù)后,即得到增益校準值,如表3所示,此例中所使用器件的增益校準值為5038h。
從表3我們可看到最小的差值在第三重復(fù)出現(xiàn)(Meas2 - Meas1和CNT2 - CNT1同時為40000)。用戶可以在算法中加一個變量來檢查最小差值出現(xiàn)的位置,然后用這個重復(fù)產(chǎn)生的“增益結(jié)果”作為增益校準寄存器的值,替代最終的值。
對于已被編程成新增益校準值的器件,可通過施加10mV (即我們希望其輸出讀數(shù)為0000h的電壓)并讀取其數(shù)字輸出結(jié)果來確定其偏移校準。此例中所使用的器件在輸入為10mV時輸出為0558h。利用偏移公式,可將偏移校準計算如下:
MON3失調(diào) = -(-0558h/4) = 0156h
最后,再按下式來計算新鉗位值:
新鉗位值(預(yù)右移) = FFF8h - 0558h = FAA0h
完成內(nèi)部校準后,即可通過將20h寫入表01h中的8Fh來執(zhí)行2次右移位。
結(jié)論
DS1863/DS1865的內(nèi)部校準及右移位特性,可為用戶提供最大的靈活性并使其適用于各種應(yīng)用。本應(yīng)用筆記提供了DS1863/DS1865數(shù)據(jù)資料中未給出的附加信息,例如為什么內(nèi)部校準及右移位具有優(yōu)勢以及如何來實現(xiàn)等。同時還給出了一個與理論相聯(lián)系的運用傳遞方法的實例,并提供了DS1863/DS1865內(nèi)部校準過程中實際得到的讀數(shù)。
評論