摘要:這篇應用筆記討論了使用DS1863/D1865控制器/監(jiān)控器芯片的內部校準和右移位(可擴展動態(tài)范圍)改善系統(tǒng)性能的方式。該文描述了如何實現內部校準和右移位,并通過一個實例闡述整個過程。
圖1. DS1863/DS1865 MON輸入框圖
如圖1所示,一個單端電壓加于DS1863/DS1865的MON引腳。在模擬域中,該電壓被送入一個可編程增益單元中。該增益單元可對MON通道進行校準,以獲得需要的LSB或滿量程電壓。這個滿量程電壓是需要的LSB × 2n,其中n為位數。此外,增益單元還可將小輸入信號放大,以便最大限度利用ADC動態(tài)范圍。稍后將對此進行詳細說明。
增益單元之后是13位ADC。13位轉換結果以左對齊的2字節(jié)(16位)數字量形式輸出。這個ADC能輸出從0000h至FFF8h的數字值。
通過用戶可編程數字偏移可以對ADC之后的數字信號進行進一步調整。數字偏移功能通過簡單的數字相加,在內部增加正向或負向偏移。必須指出的是,正向偏移將鉗位在FFF8h數值上;負向偏移將具有小于FFF8h的滿量程數值(因為負向便移須從轉換結果中扣除)。這種情況下,最小值仍為0000h。有關數字偏移的更詳細信息請參見后面的偏移寄存器部分。
右移位是數字量輸出前的最后一部操作。每一路MON輸入都有3個控制位,用來控制需要的右移次數(右移位的好處將在后面討論)。如果將此3位設為0,則禁止右移功能。與偏移一樣,右移位也會影響滿量程數字輸出。例如,若將其設置成右移2位,則滿量程數字輸出變?yōu)?FFEh。移位完成后,數值將被寫入相應的寄存器中,從這里用戶可以讀取轉換結果(存儲器的低半區(qū),寄存器64h-6Bh)。這也是用來進行報警及警告比較的參數。
對于0至2.5V輸入電壓,工廠校準過的器件將輸出8192個量化值中的一個,為13位轉換提供305μV的分辨率(2.5V/8192)。理想情況下,將被量化的輸入信號是一個0到2.5V的信號,這樣就可利用整個轉換范圍。然而,現實情況并非總是如此。以接收功率(Rx功率)為例, 0到0.5V的輸入電壓就很常見,這意味著80%的數字輸出碼永遠不會用到。這對于可產生8192個數字碼的13位ADC來說,只能輸出1638個碼之一。剩下的6554個數編碼將永遠不被使用。而且,對于用到的1638個碼來說,分辨率仍為305μV。
為了更好的利用13位ADC,DS1863/DS1865 MON值必須被重新校準為0.5V的滿量程電壓。但是,僅僅重新校準MON并不能解決輸入信號的問題,因為此時LSB會改變,且不再與所要求的LSB匹配。從根本上講,為了得到ADC的最佳性能,必須使用右移位并進行增益和偏移值的調整。
用內部校準和右移位的好處可用圖2所示的例子予以恰當的說明。其中圖A為一被監(jiān)視信號的電壓—時間曲線。該信號在0到0.5V之間擺動。圖B和圖C為MON輸入電壓—數字輸出曲線,分別代表經工廠校準的傳遞函數,以及采用2次右移和滿量程電壓為2.5V/4 = 0.625V時的傳遞函數。0.625V的滿量程電壓意味著被浪費掉的碼更少,因為轉換結果比2.5V滿量程時擴大了4倍, 而接下來它又被除以4而同比縮小(2次右移位)。下面將討論確定右移位數以及與之相關聯(lián)的滿量程電壓的根據。這里只使用2次右移位來比較有右移位與無右移位的差別。所采用的器件設置以及與每一個傳遞函數相關的計算列于相應的傳遞函數下面。
圖2. 無右移(B)與右移(C)的比較
圖2中,三條曲線以相同的y軸坐標并排排列。這樣,對于輸入信號上的某個特定點(圖A),通過一條通過該點及各傳遞函數的水平直線,可粗略地估計出數字輸出。再回到本例的0到0.5V輸入信號,0.5V輸入由一條穿過三條曲線的水平粗線標出,比較圖B與C即可看出右移位的好處。當ADC的輸入范圍遠大于輸入信號范圍時,大量的量化臺階將被浪費掉(見圖 B)。8192個數值中只使用了1638個;圖B中剩余的80%碼字被浪費掉。與之相對比,圖C則顯示,通過在內部校準到一個較小的滿量程電壓,再使用右移位之后,精密度提高了?,F在可用8192個數字碼中的6554個碼來對輸入信號進行量化。而且,在右移位之后,所需的LSB仍保持不變。右移位操作對用戶透明。通過觀察這兩條曲線上的輸出近似為同一數值即可驗證這一點。
表2. DS1863/DS1865內部校準和右移位寄存器
注意:當校準DS1863/DS1865時,了解偏移量和右移位寄存器的值是非常重要的。否則,如果這些值非0并且未補償的話,器件將不會被校準成需要的結果。
偏移校準可通過先確定應從轉換值中增加或減去多少個數來計算。典型的一種做法是先施加零輸入(如關掉激光源),然后再讀出轉換值,而這正是您應從所有轉換值中減去的值。
可通過在式1中代入所需的偏移數來計算需要寫入到偏移寄存器的值:
例1:如果輸入電壓的參考不是地而是某一基準,那么要將這個基準從測量結果中減掉。假設將該基準加到MON輸入上,得到的讀數是200 (C8h)。你可以使用偏移寄存器從模數轉換器中減去200 (C8h)來將其清零。利用下式來確定寫入寄存器的值:
請記住,在此情況下將執(zhí)行減法運算,這樣滿量程數FFF8h也將減少C8h ,新的滿量程數為FF30h。
例2:假設你想在讀數中增加200個計數。這個結果在下列的等式中:
為計算新的滿量程數,您或許會嘗試將FFF8h加上C8h。 但FFF8h已是最大可能讀數,因此滿量程數仍將保持為FFF8h。較低的數將不再是00h,而是C8h,因為已將這個偏移加到所有的讀數上。
例3:計算0偏移時的偏移值:
這也是出廠默認的偏移寄存器設置。
為了進一步闡明右移位的結果,圖3給出了幾個右移后的MON量化值例子。
圖3. MON寄存器右移位的例子
為使用這種算法,同時必須做兩件事情:將激光設置為兩種不同的強度,例如最小值和接近最大值(大約90%);而且還必須能進行多次重復。對于非光學應用,必須按要求將兩種不同的電壓加于MON輸入。這篇應用筆記提供的算法使用90%最大值,所以“>”比較是可行的。然而,當使用滿量程一定百分比時,在做數值計算時也應考慮相應的數字量百分比。
二進制搜索增益值時首先將增益校準寄存器設置成滿量程的一半,即8000h。然后再將90%最大輸入加至被校準MON通道然后,讀取量化值。將此測量值稱為Meas2。接著再檢查Meas2看它是否被鉗位在FFF8h上(此時偏移及右移位均為0)。如果讀數被鉗位,則無法斷定轉換值恰好是FFF8h還是比這大許多(此時也被鉗位成FFF8h)。無論怎樣,增益設置都太高。在后續(xù)的二進制搜索法中,將增益值減半并重復此操作直至找到非鉗位增益值為止。
一旦找到非鉗位的Meas2,即可通過施加零輸入并讀取其數字轉換值來繼續(xù)。該算法此轉換值即為Meas1。最后。計算Meas2 與Meas1的差值并使用在算法開始時所算出的常數來與所需差值(CNT2 - CNT1)進行比較。如果Meas2 - Meas1大于CNT2 - CNT1則將增益再減半。如果Meas2 - Meas1小于CNT2 - CNT1則在減半后再將其恢復到當前增益值。重復此過程直至總共進行16 次,即獲得一個代表所需增益(所需LSB)的16位值。
以下介紹另一種能使該增益校準過程更加形象的方法。先從16位增益校準寄存器的MSB (b15)開始,將該位設置為0 (同時也將其他各位初始化為0); 再使MSB = 1,并加上模擬輸入,然后再讀取對應的數字輸出,如果該讀數被鉗位,則表示增益太高,可將MSB寫回至0,否則將其保留為1,因此現在即已知MSB。然后再轉向下一位(b14)也是先將b14設為1 (此時保留b15為已確定值),此時b13至b0仍為0。 如果增益仍太高。則可重復前述操作,即將b14設為0,否則保留為1。此過程一位接一位進行,直至確定出全部16位為止,其結果仍是一個代表所需增益的16 位值。
在確定所需增益以后,即可計算新的偏移或將其保留為(0)。無偏移此校準方法取決于所使用的偏移性質。數據資料中對該算法的解釋是基于如下假設,即;用戶想要執(zhí)行負偏來清零數字讀數,以使零模擬輸入時產生全0輸出。這可簡單地通過施加零模擬輸入并讀取相應的轉換值來實現。如果零輸入(例如激光關斷)產生例如(20h)的數字輸出,則可對偏移進行編程以將20h從每一轉換值中減去。在本例中,則是先將20h代入偏移公式中,然后再將計算結果編程至所需MON通道的偏移校準寄存器中來完成。
在此例中利用MON3來監(jiān)視Rx功率,當施加-40dBm最小輸入時,在DS1859的MON3管腳上呈現出10mV的電壓,此時該輸入所需數字輸出為0000h。當施加0dBm輸入時,MON3管腳上的電壓為300mV,此時所需數字輸出為2710h,這樣的選擇是為了滿足SFF-8472規(guī)定的LSB (Rx功率的LSB對應于0.1μW)。
確定此例中的理想右移位數相對比較簡單因為已經給定所需的數字輸出范圍(0000h至2710h)。利用上面的表1,可得到理想右移位數為2。現在請記住右移位數為2,要使2710h在經過2次右移位后仍為最終輸出數字值,我們可推斷,此時300mV的輸入在右移位以前必須產生9C40h的轉換值,因此需要用內部校準來將300mV輸入的轉換值“抬高”至9C40h。在完成偏移的內部校準及編程以后,即可執(zhí)行2次右移位。該舉例被歸納于表3中。
表3. 內部校準和右移位實例
在確定了輸入與輸出之間的關系后(如表3所示),即可用數據資料中提供的內部校準。程序先從執(zhí)行幾步如下所示的預先計算開始。請注意,這里并未采用數據資料校準程序中所給出的90%, 因為第二校準點(300mV = 9C40h)已經小于滿量程值的90%。
根據表3進行以下計算:
LSB = (0.300V – 0.010V)/(9C40h – 0000h) = 0.290V/40,000 = 7.25μV
最大讀數 = 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)
當采用兩個校準點時,CNT1及CNT2為所期望(所需)的數字輸出內部校準程序將反復搜索與這兩個值所確定的斜率最接近的斜率。
校準程序反復進行16次以下過程,即先用二進制來對該斜率進行編程然后再檢查其是否與所需的斜率相等。在此例中是采用內部校準程序以及表4中所列全部16次重復輸入與輸出來對DS1863/DS1865進行校準。
表4中的第一欄“重復”等于程序中的n?!霸鲆娼Y果”欄為每次重復時被編程進“增益校準”寄存器(即器件表02h中的字節(jié)98至99h)中的值。Meas1及Meas2欄則分別為施加300mV及10mV輸入時器件上的讀數;最后,對于Meas2不被鉗位的重復,將Meas2 - Meas1與CNT2 - CNT1進行比較,如果Meas2 - Meas1大于CNT2 - CNT1,則表示“增益結果”太大,對應于此次重復的增益校準位為0。而這隨后又確定后續(xù)重復中的“增益結果”。當完成全部16 次重復后,即得到增益校準值,如表3所示,此例中所使用器件的增益校準值為5038h。
表4. 實際的內部校準值
從表3我們可看到最小的差值在第三重復出現(Meas2 - Meas1和CNT2 - CNT1同時為40000)。用戶可以在算法中加一個變量來檢查最小差值出現的位置,然后用這個重復產生的“增益結果”作為增益校準寄存器的值,替代最終的值。
對于已被編程成新增益校準值的器件,可通過施加10mV (即我們希望其輸出讀數為0000h的電壓)并讀取其數字輸出結果來確定其偏移校準。此例中所使用的器件在輸入為10mV時輸出為0558h。利用偏移公式,可將偏移校準計算如下:
MON3失調 = -(-0558h/4) = 0156h
最后,再按下式來計算新鉗位值:
新鉗位值(預右移) = FFF8h - 0558h = FAA0h
完成內部校準后,即可通過將20h寫入表01h中的8Fh來執(zhí)行2次右移位。
有關本應用筆記的問題/評論/建議可發(fā)送至 MixedSignal.Apps@maxim-ic.com (English only)。
概述
DS1863和DS1865控制器/監(jiān)控器使用內部校準和右移位(可擴展動態(tài)范圍)可極大地增強內部13位ADC的性能,無需增加成本和尺寸即可達到更高的精確度和準確度。此外,DS1863/DS1865的內部校準還具有可編程增益和可編程偏移,從而可以省去大部分的外部信號調理電路。在ADC之前的模擬域中提供可編程增益,對輸入信號進行放大或衰減,這樣可以充分利用ADC的整個動態(tài)范圍。然后在數字域,通過右移再將數字輸出同比縮小(除以某數),從而使所需的(或者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為位數。此外,增益單元還可將小輸入信號放大,以便最大限度利用ADC動態(tài)范圍。稍后將對此進行詳細說明。
增益單元之后是13位ADC。13位轉換結果以左對齊的2字節(jié)(16位)數字量形式輸出。這個ADC能輸出從0000h至FFF8h的數字值。
通過用戶可編程數字偏移可以對ADC之后的數字信號進行進一步調整。數字偏移功能通過簡單的數字相加,在內部增加正向或負向偏移。必須指出的是,正向偏移將鉗位在FFF8h數值上;負向偏移將具有小于FFF8h的滿量程數值(因為負向便移須從轉換結果中扣除)。這種情況下,最小值仍為0000h。有關數字偏移的更詳細信息請參見后面的偏移寄存器部分。
右移位是數字量輸出前的最后一部操作。每一路MON輸入都有3個控制位,用來控制需要的右移次數(右移位的好處將在后面討論)。如果將此3位設為0,則禁止右移功能。與偏移一樣,右移位也會影響滿量程數字輸出。例如,若將其設置成右移2位,則滿量程數字輸出變?yōu)?FFEh。移位完成后,數值將被寫入相應的寄存器中,從這里用戶可以讀取轉換結果(存儲器的低半區(qū),寄存器64h-6Bh)。這也是用來進行報警及警告比較的參數。
關于密碼訪問的說明
四個MON輸入的增益和偏移值的設置都在DS1863/DS1865的表02h中。讀寫這些數值,需要2級密碼訪問(PW2)。如果2級訪問密碼被輸入到密碼登錄字節(jié)(PWE位于存儲器的低半區(qū),寄存器7Bh-7Eh),訪問將被批準。工廠校準MON輸入
每個DS1863/DS1865 MON輸入都已經在工廠調整為2.5V滿量程電壓。而且,每一個數字偏移也已經在工廠設置為0,所以0V的輸入即意味著0000h數字輸出。右移位的工廠默認設置值也為0。工廠校準后的DS1863/DS1865的傳遞函數示于圖2中的B圖,稍后將詳細介紹。對于0至2.5V輸入電壓,工廠校準過的器件將輸出8192個量化值中的一個,為13位轉換提供305μV的分辨率(2.5V/8192)。理想情況下,將被量化的輸入信號是一個0到2.5V的信號,這樣就可利用整個轉換范圍。然而,現實情況并非總是如此。以接收功率(Rx功率)為例, 0到0.5V的輸入電壓就很常見,這意味著80%的數字輸出碼永遠不會用到。這對于可產生8192個數字碼的13位ADC來說,只能輸出1638個碼之一。剩下的6554個數編碼將永遠不被使用。而且,對于用到的1638個碼來說,分辨率仍為305μV。
為了更好的利用13位ADC,DS1863/DS1865 MON值必須被重新校準為0.5V的滿量程電壓。但是,僅僅重新校準MON并不能解決輸入信號的問題,因為此時LSB會改變,且不再與所要求的LSB匹配。從根本上講,為了得到ADC的最佳性能,必須使用右移位并進行增益和偏移值的調整。
內部校準和右移位
內部校準和右移位在被監(jiān)視信號較小、沒有利用整個ADC動態(tài)范圍時最有用。模數轉換之前,在模擬域中先將信號放大一定的倍數,然后在數字域中再除以相同的系數,這樣所需的LSB保持不變。而精密度和準確度在每右移一位(最多3位)時提高了2倍。在3次右移位之后,精密度或準確度將不會再有改善。用內部校準和右移位的好處可用圖2所示的例子予以恰當的說明。其中圖A為一被監(jiān)視信號的電壓—時間曲線。該信號在0到0.5V之間擺動。圖B和圖C為MON輸入電壓—數字輸出曲線,分別代表經工廠校準的傳遞函數,以及采用2次右移和滿量程電壓為2.5V/4 = 0.625V時的傳遞函數。0.625V的滿量程電壓意味著被浪費掉的碼更少,因為轉換結果比2.5V滿量程時擴大了4倍, 而接下來它又被除以4而同比縮小(2次右移位)。下面將討論確定右移位數以及與之相關聯(lián)的滿量程電壓的根據。這里只使用2次右移位來比較有右移位與無右移位的差別。所采用的器件設置以及與每一個傳遞函數相關的計算列于相應的傳遞函數下面。
圖2. 無右移(B)與右移(C)的比較
圖2中,三條曲線以相同的y軸坐標并排排列。這樣,對于輸入信號上的某個特定點(圖A),通過一條通過該點及各傳遞函數的水平直線,可粗略地估計出數字輸出。再回到本例的0到0.5V輸入信號,0.5V輸入由一條穿過三條曲線的水平粗線標出,比較圖B與C即可看出右移位的好處。當ADC的輸入范圍遠大于輸入信號范圍時,大量的量化臺階將被浪費掉(見圖 B)。8192個數值中只使用了1638個;圖B中剩余的80%碼字被浪費掉。與之相對比,圖C則顯示,通過在內部校準到一個較小的滿量程電壓,再使用右移位之后,精密度提高了?,F在可用8192個數字碼中的6554個碼來對輸入信號進行量化。而且,在右移位之后,所需的LSB仍保持不變。右移位操作對用戶透明。通過觀察這兩條曲線上的輸出近似為同一數值即可驗證這一點。
確定需要的右移位數
某一應用可以使用的右移位數取決于滿量程電壓(內部校準),以及給定輸入信號所用到的數字編碼百分比。如果已知輸入信號的最大電壓(以及滿量程電壓),則可計算出理想的數字輸出碼。否則,將要求在進行工程估值以確定數字輸出范圍時采用一種所謂的“傳遞”方法,并由此而得出理想的右移位數。以下對這種“傳遞”法加以詳細說明。- 將右移位數設為0。
- 執(zhí)行內部校準以獲得所需的LSB ,這將確定起始滿量程電壓。(這個過程將在這篇應用筆記的后面討論。)
- 施加最小及最大輸入信號并讀取相應的數字輸出以確定所使用的范圍。
- 確定所使用的ADC動態(tài)范圍百分比。如果讀數超出7FFFh ,則不能使用右移位(0右移位)。如果讀數小于7FFFh ,則至少可使用1 次右移位。如果讀數小于3FFFh, 則可使用2次右移位,依此類推。表1中總結了這些數據。
表1. 針對不同的輸出范圍所使用的右移位數Output Range Used with Zero Right-Shifts Number of Right-Shifts Needed 0h .. FFFFh 0 0h .. 7FFFh 1 0h .. 3FFFh 2 0h .. 1FFFh 3
- 為補償右移位所引入的除數,必須在模擬域中增加增益以保持所需的LSB量值不變??赏ㄟ^使用下述公式計算新的滿量程電壓來增加增益:
新的滿量程電壓 = 原來的滿量程電壓 2右移位數
所以,如果步驟2的內部校準得到2.0V的滿量程電壓,并且數字讀數大于1FFFh但絕不超過3FFFh,此時2個右移位是比較理想的選擇。對于此例,新的滿量程電壓為2.0V/22 = 0.5V。 - 內部校準該通道為新的滿量程電壓。
- 將右移位數設置為新值。
內部校準和右移位寄存器
DS1863/DS1865器件內負責保存各模擬通道內部校準及右移位參數的寄存器列于表2。同時列出了每個MON通道以及VCC通道設置的寄存器地址。VCC通道不在本應用筆記討論之列,但為完整性起見將其一并列于表中。量化結果的存放地址也列于表中,以表明其相對位置。請注意,增益、偏移及右移位寄存器位于存儲表02h中(請不要將其與本應用筆記中的表2混淆)。存儲表02h的選擇是通過將02h寫入位于存儲器低半區(qū),寄存器7Fh中的表選擇字節(jié)來完成。表2. DS1863/DS1865內部校準和右移位寄存器
? | VCC | MON1 | MON2 | MON3 | MON4 |
Scale* | 92-93h | 94-95h | 96-97h | 98-99h | 9A-9Bh |
Offset* | A2-A3h | A4-A5h | A6-A7h | A8-A9h | AA-ABh |
Right Shifts* | N/A | 8Eh (b6-b4) | 8Eh (b2-b0) | 8Fh (b6-b4) | 8Fh (b2-b0) |
Readings | 62-63h | 64-65h | 66-67h | 68-69h | 6A-6Bh |
? | *Table 02h |
增益寄存器
增益寄存器為一個2字節(jié)值,它通過調整輸入開關電容網絡來確定某一特定被監(jiān)視通道的增益/衰減量。這個增益寄存器使得用戶能將滿量程電壓校準為介于~250mV至6.5536V之間的任何期望值。由于工藝處理的差異和終端應用中的不同需求,這個寄存器必須被校準。此校準步驟以及確定要寫入增益寄存器的值的步驟列于如何實現內部校準部分。注意:當校準DS1863/DS1865時,了解偏移量和右移位寄存器的值是非常重要的。否則,如果這些值非0并且未補償的話,器件將不會被校準成需要的結果。
偏移寄存器
偏移寄存器是一個2字節(jié)值,它確定對每一被監(jiān)視輸入信號所施加的數字偏移量。DS1863/DS1865的偏移是轉換值的簡單數字增加或減少。因此在增益被校準成所需值后(且在右移位以前),可通過可編程偏移抵消任何失調誤差或轉移動態(tài)范圍。偏移校準可通過先確定應從轉換值中增加或減去多少個數來計算。典型的一種做法是先施加零輸入(如關掉激光源),然后再讀出轉換值,而這正是您應從所有轉換值中減去的值。
可通過在式1中代入所需的偏移數來計算需要寫入到偏移寄存器的值:
例1:如果輸入電壓的參考不是地而是某一基準,那么要將這個基準從測量結果中減掉。假設將該基準加到MON輸入上,得到的讀數是200 (C8h)。你可以使用偏移寄存器從模數轉換器中減去200 (C8h)來將其清零。利用下式來確定寫入寄存器的值:
請記住,在此情況下將執(zhí)行減法運算,這樣滿量程數FFF8h也將減少C8h ,新的滿量程數為FF30h。
例2:假設你想在讀數中增加200個計數。這個結果在下列的等式中:
為計算新的滿量程數,您或許會嘗試將FFF8h加上C8h。 但FFF8h已是最大可能讀數,因此滿量程數仍將保持為FFF8h。較低的數將不再是00h,而是C8h,因為已將這個偏移加到所有的讀數上。
例3:計算0偏移時的偏移值:
這也是出廠默認的偏移寄存器設置。
右移位寄存器
右移位寄存器位于表02h,寄存器8Eh-8Fh。由于MON1到MON4可執(zhí)行多達7次右移位,所以對于每一MON輸入均需使用3位。MON1和MON2的設置位于表02h,寄存器8Eh中,同時MON3和MON4的設置位于表02h,寄存器8Fh中。請參考數據資料(或上面的表1)中存儲器分布圖中的數位位置。EEPROM寄存器的出廠默認值為00h,禁止右移位。為了進一步闡明右移位的結果,圖3給出了幾個右移后的MON量化值例子。
圖3. MON寄存器右移位的例子
內部校準
這篇應用筆記討論了二進制搜索方法。算法的輸出是增益和偏移寄存器值,從而得到期望的傳遞函數即期望的LSB。為使用這種算法,同時必須做兩件事情:將激光設置為兩種不同的強度,例如最小值和接近最大值(大約90%);而且還必須能進行多次重復。對于非光學應用,必須按要求將兩種不同的電壓加于MON輸入。這篇應用筆記提供的算法使用90%最大值,所以“>”比較是可行的。然而,當使用滿量程一定百分比時,在做數值計算時也應考慮相應的數字量百分比。
偽碼示例
下面這段偽碼是用來確定增益的二進制搜索法的一個實例。/* Assume that the null input is 0.5V */ /* Assume that the desired LSB of the lowest weighted bit is 50μV */ Max Reading = 65535 x 50e-6 /* 3.27675 */ CNT1 = 0.5 / 50e-6 /* 10000 */ CNT2 = 0.90 x FS / 50e-6 /* 58981.5 */ /* The null input is 0.5V and the 90% of FS input is 0.9*3.27675 = 2.949075V */ Set the trim-offset-register to zero Set Right Shift register to zero
(typically zero. See Right Shifting section above..) Scale_result = 0h Clamp = FFF8h/2Right_Shift_Register For n = 15 down to 0, Begin scale_result = scale_result + 2n Force the 90% FS input (2.949075V) Meas2 = read the digital result from the part If Meas2 >= Clamp then scale_result = scale_result – 2n Else Begin Force the null input (0.5V) Meas1 = read the digital result from the part If (Meas2 – Meas1) > (CNT2 – CNT1) then scale_result = scale_result – 2n End End Set the Scale register to scale_result現在,這個增益寄存器被設置并且轉換分辨率將與期望的LSB實現最佳匹配。下一步是校準DS1863/DS1865的偏移。正確的增益值被寫入增益寄存器,再次將零輸入加到這個引腳。讀取這部分(Meas1)的數字結果。在式1中將CNT1作為輸入可計算偏移。
偽碼的說明
可通過將偏移及右移位寄存器設置成已知狀態(tài)例如0偏移及0右移位來開始該偽碼算法。 盡管本例中將兩個寄存器均設置為0,但只要對它們進行相應的補償,則亦可采用其他值。例如,如果以所編程偏移開始,則FFF8h可能不再是被鉗位的滿量程數字值。(參見偏移校準寄存器部分)除初始化寄存器外,該算法也可從計算幾個為所需LSB函數的重要常數開始。二進制搜索增益值時首先將增益校準寄存器設置成滿量程的一半,即8000h。然后再將90%最大輸入加至被校準MON通道然后,讀取量化值。將此測量值稱為Meas2。接著再檢查Meas2看它是否被鉗位在FFF8h上(此時偏移及右移位均為0)。如果讀數被鉗位,則無法斷定轉換值恰好是FFF8h還是比這大許多(此時也被鉗位成FFF8h)。無論怎樣,增益設置都太高。在后續(xù)的二進制搜索法中,將增益值減半并重復此操作直至找到非鉗位增益值為止。
一旦找到非鉗位的Meas2,即可通過施加零輸入并讀取其數字轉換值來繼續(xù)。該算法此轉換值即為Meas1。最后。計算Meas2 與Meas1的差值并使用在算法開始時所算出的常數來與所需差值(CNT2 - CNT1)進行比較。如果Meas2 - Meas1大于CNT2 - CNT1則將增益再減半。如果Meas2 - Meas1小于CNT2 - CNT1則在減半后再將其恢復到當前增益值。重復此過程直至總共進行16 次,即獲得一個代表所需增益(所需LSB)的16位值。
以下介紹另一種能使該增益校準過程更加形象的方法。先從16位增益校準寄存器的MSB (b15)開始,將該位設置為0 (同時也將其他各位初始化為0); 再使MSB = 1,并加上模擬輸入,然后再讀取對應的數字輸出,如果該讀數被鉗位,則表示增益太高,可將MSB寫回至0,否則將其保留為1,因此現在即已知MSB。然后再轉向下一位(b14)也是先將b14設為1 (此時保留b15為已確定值),此時b13至b0仍為0。 如果增益仍太高。則可重復前述操作,即將b14設為0,否則保留為1。此過程一位接一位進行,直至確定出全部16位為止,其結果仍是一個代表所需增益的16 位值。
在確定所需增益以后,即可計算新的偏移或將其保留為(0)。無偏移此校準方法取決于所使用的偏移性質。數據資料中對該算法的解釋是基于如下假設,即;用戶想要執(zhí)行負偏來清零數字讀數,以使零模擬輸入時產生全0輸出。這可簡單地通過施加零模擬輸入并讀取相應的轉換值來實現。如果零輸入(例如激光關斷)產生例如(20h)的數字輸出,則可對偏移進行編程以將20h從每一轉換值中減去。在本例中,則是先將20h代入偏移公式中,然后再將計算結果編程至所需MON通道的偏移校準寄存器中來完成。
內部的校準和右移位實例
為演示本應用筆記所提及的概念,我們采用了以下示例。在此例中利用MON3來監(jiān)視Rx功率,當施加-40dBm最小輸入時,在DS1859的MON3管腳上呈現出10mV的電壓,此時該輸入所需數字輸出為0000h。當施加0dBm輸入時,MON3管腳上的電壓為300mV,此時所需數字輸出為2710h,這樣的選擇是為了滿足SFF-8472規(guī)定的LSB (Rx功率的LSB對應于0.1μW)。
確定此例中的理想右移位數相對比較簡單因為已經給定所需的數字輸出范圍(0000h至2710h)。利用上面的表1,可得到理想右移位數為2。現在請記住右移位數為2,要使2710h在經過2次右移位后仍為最終輸出數字值,我們可推斷,此時300mV的輸入在右移位以前必須產生9C40h的轉換值,因此需要用內部校準來將300mV輸入的轉換值“抬高”至9C40h。在完成偏移的內部校準及編程以后,即可執(zhí)行2次右移位。該舉例被歸納于表3中。
表3. 內部校準和右移位實例
Customer Signal Rx Power (dBm) | Voltage Applied to MON3 Pin (mV) | Digital Outputs During Cal. (0 Right Shifts) (hex) | Final Digital Output (2 Right Shifts) (hex) |
-40 | 10 | 0000 | 0000 |
50 | 0563 | ||
100 | 0C1F | ||
150 | 12DB | ||
200 | 1997 | ||
250 | 2051 | ||
0 | 300 | 9C40 | 2710 |
在確定了輸入與輸出之間的關系后(如表3所示),即可用數據資料中提供的內部校準。程序先從執(zhí)行幾步如下所示的預先計算開始。請注意,這里并未采用數據資料校準程序中所給出的90%, 因為第二校準點(300mV = 9C40h)已經小于滿量程值的90%。
根據表3進行以下計算:
LSB = (0.300V – 0.010V)/(9C40h – 0000h) = 0.290V/40,000 = 7.25μV
最大讀數 = 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)
當采用兩個校準點時,CNT1及CNT2為所期望(所需)的數字輸出內部校準程序將反復搜索與這兩個值所確定的斜率最接近的斜率。
校準程序反復進行16次以下過程,即先用二進制來對該斜率進行編程然后再檢查其是否與所需的斜率相等。在此例中是采用內部校準程序以及表4中所列全部16次重復輸入與輸出來對DS1863/DS1865進行校準。
表4中的第一欄“重復”等于程序中的n?!霸鲆娼Y果”欄為每次重復時被編程進“增益校準”寄存器(即器件表02h中的字節(jié)98至99h)中的值。Meas1及Meas2欄則分別為施加300mV及10mV輸入時器件上的讀數;最后,對于Meas2不被鉗位的重復,將Meas2 - Meas1與CNT2 - CNT1進行比較,如果Meas2 - Meas1大于CNT2 - CNT1,則表示“增益結果”太大,對應于此次重復的增益校準位為0。而這隨后又確定后續(xù)重復中的“增益結果”。當完成全部16 次重復后,即得到增益校準值,如表3所示,此例中所使用器件的增益校準值為5038h。
表4. 實際的內部校準值
從表3我們可看到最小的差值在第三重復出現(Meas2 - Meas1和CNT2 - CNT1同時為40000)。用戶可以在算法中加一個變量來檢查最小差值出現的位置,然后用這個重復產生的“增益結果”作為增益校準寄存器的值,替代最終的值。
對于已被編程成新增益校準值的器件,可通過施加10mV (即我們希望其輸出讀數為0000h的電壓)并讀取其數字輸出結果來確定其偏移校準。此例中所使用的器件在輸入為10mV時輸出為0558h。利用偏移公式,可將偏移校準計算如下:
MON3失調 = -(-0558h/4) = 0156h
最后,再按下式來計算新鉗位值:
新鉗位值(預右移) = FFF8h - 0558h = FAA0h
完成內部校準后,即可通過將20h寫入表01h中的8Fh來執(zhí)行2次右移位。
結論
DS1863/DS1865的內部校準及右移位特性,可為用戶提供最大的靈活性并使其適用于各種應用。本應用筆記提供了DS1863/DS1865數據資料中未給出的附加信息,例如為什么內部校準及右移位具有優(yōu)勢以及如何來實現等。同時還給出了一個與理論相聯(lián)系的運用傳遞方法的實例,并提供了DS1863/DS1865內部校準過程中實際得到的讀數。有關本應用筆記的問題/評論/建議可發(fā)送至 MixedSignal.Apps@maxim-ic.com (English only)。
評論
查看更多