背景技術(shù):
:模數(shù)轉(zhuǎn)換器(adc)將模擬輸入信號(例如,電壓)轉(zhuǎn)換為數(shù)字輸出信號(也稱為“數(shù)字代碼”或簡單地稱為“代碼”)。adc利用有限數(shù)量的數(shù)字輸出代碼來唯一地表示某一范圍內(nèi)的全部模擬輸入。由于模擬刻度是連續(xù)的,而數(shù)字代碼刻度是離散的,因此存在引入誤差的量化過程。也就是說,小范圍的模擬電壓將被adc分解為相同的數(shù)字輸出代碼。作為結(jié)果,模擬輸入電壓與數(shù)字輸出代碼的圖形具有階梯式形狀。一個階梯的寬度被定義為一個最低有效位(lsb)并且通常用作完整的模擬范圍的其他數(shù)量或單位的基準單位。例如,一半lsb表示等于模擬分辨率的一半的模擬數(shù)量。在adc中存在各種類型的誤差。這種誤差的示例包括偏移誤差、增益誤差、微分非線性(dnl)誤差、積分非線性(inl)誤差、絕對精確度誤差以及孔徑誤差。由于模擬電壓是連續(xù)的信號而數(shù)字代碼是離散值,因此adc的數(shù)字輸出代碼和模擬輸入電壓之間的關(guān)系具有階梯式形狀。對于數(shù)模轉(zhuǎn)換器(dac),模擬輸出電壓基于數(shù)字輸入代碼確定,從而導(dǎo)致電壓從一個數(shù)字代碼到下一個數(shù)字代碼的階梯增加。adc的每個階梯的寬度是adc的分辨率度以及adc內(nèi)部的組件失配的函數(shù)。dnl誤差指的是連續(xù)的數(shù)字代碼之間的實際階梯寬度與理想的adc的階梯寬度之間的差值(或?qū)嶋H的和理想的dac之間的階梯高度之間的差值)。理想的adc的階梯寬度可以稱為“1lsb”,dnl誤差可以以lsb為單元來表示。例如,+1/2lsbdnl誤差意味著階梯寬度比理想的adc階梯寬度大50%。inl誤差表示實際傳遞函數(shù)上的值與在一些表示中的直線的偏差。從底部上升到特定階梯的微分非線性的總和確定在該階梯處的inl的值。inl誤差隨著各種數(shù)字代碼的圖形可以在某些鄰近的數(shù)字代碼之間示出inl誤差的急劇跳躍,稱為“msb(最高有效位)跳躍”。盡管模擬輸入和數(shù)字輸出代碼之間的關(guān)系對于理想的adc是線性的,不幸的是,dnl和inl誤差導(dǎo)致模擬輸入和數(shù)字輸出代碼之間的非線性關(guān)系。附圖說明對于各種示例的詳細描述,現(xiàn)在將參考附圖,在附圖中:圖1根據(jù)各種示例示出耦合到adc的測試計算機系統(tǒng)的系統(tǒng)圖;圖2根據(jù)各種示例示出adc的框圖;圖3根據(jù)各種示例示出圖2的adc的開關(guān)矩陣的框圖;圖4根據(jù)各種示例示出對adc進行編程以減小誤差的方法;圖5根據(jù)各種示例示出測量inl誤差的方法;以及圖6根據(jù)各種示例示出對adc的電容器陣列進行重新排序的方法。具體實施方式某些術(shù)語貫穿以下描述和權(quán)利要求使用以指代特定的系統(tǒng)組件。如本領(lǐng)域一個技術(shù)人員將認識到的,不同的公司可以利用不同的名稱來指代組件。本文檔不意在區(qū)別名稱不同但是功能相同的組件。在下面的討論以及權(quán)利要求中,術(shù)語“包括”以及“包含”以開放的方式使用,并且因此應(yīng)該被理解為意味著“包括,但不限于……”。同樣,術(shù)語“耦合”或“耦連”意在意味著間接或直接的有線或無線連接。因此,如果第一器件耦合到第二器件,則該連接可以通過直接連接或通過經(jīng)由其他器件或連接的間接連接。至少一些adc包括將由adc內(nèi)部的逐次逼近寄存器(sar)產(chǎn)生的中間數(shù)字代碼轉(zhuǎn)換為中間模擬電壓的數(shù)模轉(zhuǎn)換器(dac)。許多dac包括電容器的陣列,該電容器可以由耦合到該電容器的開關(guān)動態(tài)地配置以形成電容器分壓器網(wǎng)絡(luò)。每個開關(guān)可以將其相應(yīng)的電容器耦合到若干電壓中的一個,例如,模擬輸入電壓、正基準電壓、或負基準電壓。通過迭代逐次逼近技術(shù),輸出數(shù)字代碼的每一位通常從最高有效位到最低有效位連續(xù)地被確定。一些dac包括msb電容器組(也被稱為“msb電容器陣列”)和lsb電容器組(稱為“l(fā)sb電容器陣列”)。在一些實施方式中,msb電容器陣列中的電容器標稱上全部是相同的(即,具有相同的電容值),而lsb電容器組可以被二進制加權(quán)(例如,4c、2c、1c)。一些dac根據(jù)溫度計編碼方案操作,其中來自sar的二進制中間數(shù)字代碼被轉(zhuǎn)換為溫度計中間數(shù)字代碼,該溫度計中間數(shù)字代碼包含用于msb電容器陣列中的每個電容器的一位。通過控制各個msb電容器的開關(guān),特定比例的基準電壓可以被產(chǎn)生并且被提供到比較器用于與輸入電壓比較以便由此確定數(shù)字輸出代碼的每個位。盡管在理想adc中,溫度計編碼的dac的msb電容器是相同的,然而由于容差以及在制造dac中的其他制造相關(guān)的問題,實際上并不是這種情況。當將模擬輸入信號轉(zhuǎn)換為數(shù)字輸出代碼時,按規(guī)定的順序使用msb電容器陣列的電容器。根據(jù)各種實施例,與各種msb電容器相關(guān)聯(lián)的inl誤差例如在產(chǎn)品測試期間被測量。然后adc基于測量的inl誤差接收編程數(shù)據(jù),該編程數(shù)據(jù)被dac用來實現(xiàn)用于在逐次逼近轉(zhuǎn)換過程期間使用msb電容器的特定順序。編程數(shù)據(jù)由測試計算機系統(tǒng)確定并且由測試計算機系統(tǒng)傳輸?shù)嚼鏰dc中的非易失性存儲體中。在adc的上電期間,編程數(shù)據(jù)可以用于配置內(nèi)部開關(guān)矩陣以確定溫度計代碼位到各個msb電容器開關(guān)之間的耦合。編程數(shù)據(jù)被生成從而促使以預(yù)定的順序使用msb電容器以避免過多的正(或負)dnl誤差被連續(xù)地串在一起。因此,msb電容器陣列的配置減小最大的累積inl誤差。圖1根據(jù)各種示例示出adc120的實施例。在該示例中,adc120包括比較器126、sar128、dac130、開關(guān)矩陣240以及二進制數(shù)字轉(zhuǎn)換器142。模擬輸入電壓(vin)被提供給dac130的開關(guān)136和138。通過這些開關(guān),輸入電壓vin被采樣。模擬輸入電壓vin到數(shù)字輸出代碼的轉(zhuǎn)換是迭代過程,該迭代過程開始于確定最高有效位,然后確定下一個最高有效位,以此類推,直到確定最低有效位。每一位通過中間電壓與用作連續(xù)比較的基準的恒定電壓的比較來確定。如果中間電壓大于恒定基準,則比較器的輸出將是邏輯“0”,否則比較器輸出將是邏輯“1”。比較器的輸出表示迭代計算的數(shù)字輸出代碼中的下一個位。sar128生成n位的中間二進制代碼,其然后被提供給二進制溫度計轉(zhuǎn)換器142。二進制溫度計轉(zhuǎn)換器142將中間二進制代碼轉(zhuǎn)換為m位(m大于n)的溫度計代碼。該溫度計代碼通過開關(guān)矩陣140(稍后將詳細介紹開關(guān)矩陣)被提供到各個開關(guān)136和138的控制輸入端。在迭代轉(zhuǎn)換過程期間,開關(guān)136、138可配置以將正基準電壓(vref+)或負基準電壓(vref-)耦合到相應(yīng)的電容器的終端。dac130包括lsb電容器組132和msb電容器組134。lsb電容器組132可以被二進制加權(quán),如由1c、2c和4c的相對電容器值表明(“c”表示電容單位)。msb組134的電容器標稱上全部具有相同的電容(c)。電容器137將lsb電容器132耦合到msb電容器134。msb電容器134包括電容器134a、134b、134c、134d、134e、134f和134g。雖然圖1的示例中示出了三個lsb電容器132和七個msb電容器134,然而在其他實施例中可以包括不同數(shù)量的lsb和msb電容器。電容器的數(shù)量至少部分地由adc的期望分辨率來確定。每個msb電容器134耦合到相應(yīng)的開關(guān)138。每個開關(guān)138由來自二進制溫度計轉(zhuǎn)換器142的溫度計代碼位中的一個來控制。到給定開關(guān)138的控制輸入端可以將開關(guān)配置為將相應(yīng)的電容器134耦合到vin、vref+或vref-中的任意一個。在一個示例中,溫度計代碼促使零個到全部的msb電容器134通過其相應(yīng)的開關(guān)138被耦合到vref+,而其余的msb電容器通過其相應(yīng)的開關(guān)138被耦合到vref-。例如,對于7位溫度計中間代碼,可能的中間代碼值可以是下表中示出的。溫度計代碼00000000000001000001100001110001111001111101111111111111“1”意味著相應(yīng)的電容器134被耦合到正基準電壓vref+并且“0”意味著相應(yīng)的電容器134被耦合到負基準電壓vref-。溫度計代碼暗示電容器被用于耦合到正或負基準電壓的順序。例如,對于中間代碼0000001,圖1中最右邊的電容器134g可以通過其開關(guān)138被耦合到vref+,而其余的六個電容器134a-134f被耦合到vref-。對于中間代碼0000011,圖1中最右邊的兩個電容器134f和134g可以被耦合到vref+,而其余的五個電容器134a-134e被耦合到vref-,以此類推。根據(jù)公開的實施例,msb電容器134a-134g的使用順序可以基于與電容器相關(guān)聯(lián)的dnl誤差的測量值來確定。如下面所說明的,開關(guān)矩陣140可以實施所產(chǎn)生的順序。根據(jù)各種實施例,如圖2所示,adc120可以被耦合到測試計算機系統(tǒng)100。測試計算機系統(tǒng)100可以包括處理器102、存儲體104以及dac108。測試計算機系統(tǒng)可以被實施為任意類型的計算系統(tǒng),例如膝上型計算機、臺式計算機、定制設(shè)計的計算系統(tǒng)等。存儲體104可以被實施為非暫時性存儲體,諸如易失性存儲器(例如,隨機存取存儲器)、非易失性存儲體(例如,磁存儲體、固態(tài)存儲體等)。存儲體104包括軟件106,該軟件106包含可以由處理器102執(zhí)行以完成本文描述的方法中的至少一些的指令。通過執(zhí)行軟件106,處理器102可以聲明(assert)一系列數(shù)字代碼到dac108以促使dac生成模擬電壓,從而在信號線122上到達adc120。例如,dac108可以由處理器102配置為生成在最小和最大允許adc輸入電壓之間斜升或斜降的模擬電壓。adc120將在信號線122上接收的輸入模擬電壓轉(zhuǎn)換為數(shù)字輸出代碼并且在信號線126上將數(shù)字輸出代碼提供回到測試計算機系統(tǒng)100的處理器102。處理器102可以基于提供給adc120的模擬電壓的大小和所產(chǎn)生的數(shù)字代碼測量dnl、inl等。例如,處理器102可以將模擬輸入電壓斜升到adc并且對其接收相同數(shù)字代碼的次數(shù)的數(shù)量進行計數(shù)。dnl是數(shù)字代碼中的單獨的階梯的誤差。對于adc120,dnl是處理器12針對其接收相同數(shù)字輸出代碼的模擬輸入電壓范圍的寬度。代碼計數(shù)隨后由平均階梯寬度進行歸一化。代碼n的dnl誤差按照下式計算:例如,單獨的階梯的25%的dnl誤差意味著其中特定代碼比所有代碼的平均模擬電壓范圍寬25%的模擬電壓范圍。inl誤差可以被計算為從最初的模擬電壓(例如,0)直到數(shù)字代碼n的dnl誤差的累計值。也就是說,inl是到達代碼n之前dnl值的總和。因此,處理器102可以通過將輸入電壓從最低adc輸入電壓升到最大允許輸入電壓并且如上所述針對每個電壓范圍計數(shù)由adc12輸出的數(shù)字代碼的數(shù)量來測量dnl和inl。當msb代碼變化以產(chǎn)生被稱為dnl_msb的數(shù)據(jù)集時,所產(chǎn)生的數(shù)據(jù)被簡化以對于這些代碼階梯僅考慮dnl。本文提到的“跳躍”是dnl。上面解釋了dnl可以如何被計算。dnl_msb的平均值等于負lsb誤差。可以從dnl_msb中減去該平均值以產(chǎn)生dnl。然后,最大dnl被用于計算error_to_compensate值,并且至少部分基于dnl誤差和error_to_compensate值確定電容器的順序。一旦電容器順序被確定,處理器102就可以將編程數(shù)據(jù)124傳輸?shù)絘dc120。編程數(shù)據(jù)通由adc用來配置開關(guān)矩陣140(圖1)。開關(guān)矩陣140可以將來自二進制溫度計轉(zhuǎn)換器142的溫度計代碼的m位中的任意一個耦合到開關(guān)134a-134g的控制輸入端的任意一個。下面解釋編程數(shù)據(jù)如何可以被外部測試計算機系統(tǒng)100確定以及作為結(jié)果開關(guān)矩陣140如何被配置。圖3說明可以由測試計算機系統(tǒng)100實施的方法。例如,處理器102可以執(zhí)行軟件106以促使圖3中示出的各種操作被執(zhí)行。在200處,該方法包括將要被編程的adc120耦合到測試計算機系統(tǒng)100。該操作可以通過將adc放置在電耦合到測試計算機系統(tǒng)100的測試固定裝置(例如,插座)中來執(zhí)行。在202處,該方法包括測量adc120的dac130中的每個msb電容器的dnl誤差。圖4示出用于計算dnl誤差值的一種技術(shù)。在220處,處理器促使dac108將模擬輸入電壓升到adc120。模擬輸入電壓的變化可以從最小電壓到最大電壓,或反之亦然。來自adc120的數(shù)字輸出代碼在222處被測試計算機系統(tǒng)100接收并且被記錄。在224處,計數(shù)每個被記錄的數(shù)字代碼的實例的數(shù)量。在226處,每個代碼的dnl誤差被計算為:在228處,該方法隨后計算每個電容器的dnl。返回參考圖3,在測量dnl之后,該方法繼續(xù)進行到操作204,其中基于dnl確定msb電容器134的順序。圖5示出如何確定電容器順序的示例?,F(xiàn)在將連同示例解釋圖5的方法。在圖4的操作228中針對特定的adc測量dnl后,下列表格說明所產(chǎn)生的8電容器的msb電容器陣列的值。第三欄中的dnl值是dnl_msb值減去平均dnl_msb0.5。如果電容器以示出的從電容器#1到電容器#8的順序使用,則dnl誤差的聚合將具有最大正值+3.5和最大負值-2,如在inl誤差欄(上述表格的最右邊的欄)中所示。在圖5中的250處,該方法包括基于dnl排序電容器。處理器102可以執(zhí)行該操作并且所產(chǎn)生的重新排序的電容器順序如下所示。在252處,處理器102將error_to_compensate值計算為最大dnl_msb的一半的負數(shù)(即,-(最大dnl_msb)/2)。在上面的示例數(shù)據(jù)集中,最大dnl是4,因此導(dǎo)致error_to_compensate值為-2(被計算為-4/2)。在254處,處理器還將“current_error”值初始化為0。在256處,處理器隨后確定存在于數(shù)據(jù)集中尚未被選擇用于新順序的匹配特定條件的電容器。該條件是電容器的dnl必須是負的,必須是剩余的最大負dnl(到保持具有負dnl的多個電容器的范圍),以及當該電容器的負dnl被添加到current_error時小于error_to_compensate值(本示例中為-2)。在操作254處,current_error值被初始化為0,并且因此處理器102搜索具有最大負dnl為-2的電容器,因為當被添加到為0的current_error時大于-2的任意負dnl將產(chǎn)生大于為-2的error_to_compensate的值。如在256處確定的,如果這種電容器存在,則控制進行到操作258,其中處理器選擇該電容器用于新的順序。根據(jù)上面排序的數(shù)據(jù)集,處理器選擇具有-1.5的負dnl的電容器#2。-1.5的dnl滿足兩個條件-其是負值并且是在被添加到current_error時不超過為-2的error_to_compensate的最大負dnl。因此電容器2是新順序中的第一個電容器。在260處,處理器將新的current_error值計算為之前的current_error值加上被選擇的電容器的dnl。current_error值是0并且電容器#2的dnl是-1.5,并且因此在260處更新的current_error值被計算為-1.5??刂骗h(huán)路回到256以重復(fù)這部分過程并且選擇用于新的順序的在電容器#2之后的下一個電容器。current_error值現(xiàn)在是-1.5。按照操作256,處理器102確定保持待被選擇的另一電容器是否(a)具有負dnl,(b)具有最大剩余的負dnl,以及(c)具有當被添加到current_error時不使所產(chǎn)生的current_error值超過error_to_compensate的負dnl。current_error值是-1.5并且error_to_compensate是-2。僅電容器#6和電容器#4保持被選擇并且分別具有-2.5和-3.5的負dnl。然而,最大剩余dnl-3.5足夠大,使得當被添加到-1.5的current_error值時將超過error_to_compensate值-2。作為結(jié)果,控制流向操作262。在262處,處理器確定是否任何更多的電容器完全保持待被選擇用于新的順序。如果此時全部電容器被選擇,則過程停止。由于目前為止僅電容器#2被選擇,控制流向操作264,其中剩余的電容器中具有最大正dnl的電容器被選擇。根據(jù)上述排序的電容器數(shù)據(jù)集,具有最大正dnl的電容器是具有+3.5的正dnl的電容器#3。因此在264處,電容器#3被選擇在電容器#2之后。在266處,current_error值被再次更新以添加被最新選擇的電容器#3的+3.5dnl。作為結(jié)果,current_error被計算為-1.5+3.5=2??刂苹芈坊氐讲僮?56,并且過程重復(fù)。下列表格示出所產(chǎn)生的電容器順序。順序電容器#dnl_msbdnlinl12-1-1.5-1.52343.5234-3-3.5-1.54821.505121.51.566-2-2.5-17710.5-0.58510.50可以看出,current_error值(該值為來源于確定的電容器順序的inlr)具有最大正誤差+2lsb以及最大負誤差-1.5lsb。來自原始數(shù)據(jù)集的最大正和負累計dnl值分別是+3.5和-2.5lsb,并且因此最大正和負誤差已經(jīng)被降低。圖6示出dac130的開關(guān)矩陣140的實施方式的實施例。該示例中的開關(guān)矩陣包括對應(yīng)于msb電容器陣列134的至少每個開關(guān)138的多路復(fù)用器144。來自二進制數(shù)字轉(zhuǎn)換器142的溫度計代碼的全部位被提供到每個多路復(fù)用器144的輸入端。也就是說,如果溫度計代碼是8位值,則每個多路復(fù)用器是8-1多路復(fù)用器并且可以選擇任意的溫度計代碼位以提供作為相應(yīng)的開關(guān)138的輸入控制。由測試計算機系統(tǒng)100生成的編程數(shù)據(jù)124被存儲在adc120中的非易失性存儲器諸如修整數(shù)據(jù)存儲體(trimdatastorage)144中。來自存儲體144的修整數(shù)據(jù)向每個多路復(fù)用器提供控制信號以指定其哪個輸入溫度計代碼位被操作作為到相應(yīng)的開關(guān)138的輸入控制信號。修整數(shù)據(jù)可以在adc120的初始化過程期間從存儲體144中讀取并且被用于配置每個多路復(fù)用器142。在開關(guān)矩陣140的另一實施例中,該矩陣可以被實施為連接矩陣,其中溫度計代碼位和單獨的電容器開關(guān)138之間的電連接在生產(chǎn)期間并且在上述測量過程之后被形成。在生產(chǎn)過程期間,可以使用掩膜實施連接。該實施例對于在生產(chǎn)運行的多個adc器件之間趨向于相同的電容器失配可能是期望的。上述討論意在說明本發(fā)明的說明性原理和各種實施例。上述公開一旦被充分理解,則許多變化和修改對本領(lǐng)域的技術(shù)人員將變得明顯。意在所附的權(quán)利要求被解釋為包含全部這些變化和修改。當前第1頁12