6.3.1 溫度計碼電流模式D/A轉換器
另一種實現D/A轉換器的方式是將輸入值數字上重編碼為溫度計碼,溫度計碼與二進位制碼的主要區別是,二進位制碼透過\(2^N-1\)個數字輸入來表達\(2^N\)個不同的數字值。顯然,溫度計碼相比二進位制表示消耗更多的編碼位數,同樣是對\(2^N\)個數字值,二進位制碼只需要\(N\)個數字輸入。但是,我們接下來會看到,溫度計碼相比二進位制碼會存在一些優勢,包括降低差分非線性噪聲,保證單調性,以及降低毛刺噪聲。
典型情況下,一個溫度計碼錶示中,其編碼中1的數量對應了其十進位制值。例如,對於一個3-bit二進位制輸入,十進位制值4被編碼為二進位制值100,而其對應的溫度計碼為0001111。剩餘的其他3-bit值的編碼表示如下表所示:
一種D/A轉換器的實現方式就是使用溫度計碼輸入來構建一個\(2^N-1\)個相等尺寸的電阻以及連線到放大器虛地點的開關,如下圖所示:
注意此處單調性得到了保證,因為當二進位制輸入切換到下一個更大的值時,溫度計碼會再有一位翻轉為高,使得額外的電流從虛地點流出,並使得放大器的輸出進而變得更高(反正絕不會變低)。這對於二進位制編碼的D/A轉換器來說並不總是成立,因為各個元素之間的失配可能會在輸入碼變大的時候輸出反而降低。
可能更重要的是,一個基於溫度計碼的D/A轉換器,相比二進位制的D/A轉換器可以極好的最小化毛刺,因為在輸出僅僅發生如1LSB的輕微變化時,各組的電阻不會發生交換。還需要注意的是,鎖存器可以被用在二進位制碼到溫度計碼轉換的數位電路中,使得數字溫度計碼中不出現毛刺,並且可以使用流水化可以用於保持高吞吐率。
此外一個有趣的點是使用溫度計碼相比二進位制權重碼,並不會增大類比電路的面積。在3-bit二進位制權重中,電阻值需要設定為R,2R和4R,總體的阻值為7R。這個總體值和上圖中的3-bit溫度計碼DAC是一致的,由於在積體電路中,電阻所消耗的面積正比例於其阻值,這兩種方式的面積是一致的(如果忽略互連線的話)。同樣的討論對於電晶體開關也成立,兩種方式的電晶體開關的尺寸也是一致的,在二進位制權重中,開關需要等比例的縮放來適應不同的電流密度。所有的溫度計碼DAC中的電晶體開關尺寸都是相同的,因為它們透過的電流相同。最後,需要注意的是二進位制碼DAC也可以透過電荷重分佈的方式來實現,如下圖所示: