第三章 應用於前瞻串列式連結之超高速資料轉換器對之設計
3.2.3 泡沫錯誤更正電路(Bubble Errors Correction)
在 Flash ADC 的架構中,輸入訊號經由比較器與各個參考電壓比較之
後的輸出,由上而下應該是一連串的0,然後接者一連串的 1(以正邏輯的 觀點來看),此類型的數位碼稱之為溫度計碼(Thermometer code)。然而實 際的比較結果卻可能發生一連串的1 之中突然出現一個 0,且此 0 通常會出 現在靠近一連串 1 頂端的位置,造成之後的編碼電路輸出錯誤的結果,如 圖3.21 所示。此種現象稱為泡沫錯誤(Bubble error,有時也稱為 Sparkle),
就像是裝水的試管中,靠近水面的位置下產生一個氣泡或泡沫。
Encoder ROM−based
1 0 1 0 0
Bubble 0
0 0 0
1
圖3. 21 泡沫錯誤示意圖以及 ROM 編碼形式消除泡沫錯誤的邏輯電路
此現象的成因可能是由於製程變異使得每個比較器電路產生不同程度 的偏移(offset)量,結果各個比較器比較的參考電壓也因此可能會有所偏 移,如圖 3.22(a)所示,第二個比較器的參考電壓 Vref2 往上偏移到 Vref2’
的位置,且三個比較器的參考電壓Vref3 往下偏移到 Vref3’的位置,使得在 時間 T 的時候得到的比較結果產生泡沫錯誤,此種情形特別容易發生在處 理輸入訊號與參考電壓很靠近的比較器(一連串 1 最頂端所對應的比較 器),因為對該比較器而言,輸入與參考電壓的差值不明顯,進而使得原本 應為 1 的輸出變成 0 的輸出,產生泡沫錯誤;此外電路雜訊(noise)和高 速取樣時脈的抖動量(clock jitter)造成的取樣時序偏移(timing mismatch)
也會導致泡沫錯誤,如圖 3.22(b)中因為每個比較器取樣訊號的延遲時間不
一,使得比較器1~3 分別在不同的時間 T1、T2 及 T3 的時間點取樣,導致 取樣比較後的結果產生泡沫錯誤,此種情形導致的泡沫錯誤會因越高速的 輸入訊號而變得更加容易發生[49]。
due to offsets Bubble error
1
Vref2’ 1 0 1
Outputs of comparactors T
Outputs of comparactors
Bubble error due to timing mismatch
(a) Bubble error due to offsets (b) Bubble error due to timing mismatch 圖3. 22 因 offset 和 timing mismatch 發生的泡沫錯誤(Bubble error)[49]
另外圖3.21 也顯示了 Flash ADC 中數位編碼電路使用常見的 ROM 編 碼方式來設計的例子。ROM 的編碼機制是必須先將比較器輸出的溫度計碼 轉成一連串0 中只有一個 1 的“1-of-N code",且 1 的位置會落在原本溫 度計碼 0 與 1 交界的轉態點中,最上面 1 的位置,如果只是要作如此數碼 的轉換,使用兩輸入的邏輯閘便可達成,而同時為了要消除較為可能發生 的一階泡沫錯誤(the 1st-order Bubble error)時,就必須再多使用一個輸入 來作邏輯上的操作,也就是使用三輸入的邏輯閘,故可知以ROM 編碼形式
消除n 個泡沫錯誤的功能,就必須使用(n+1)個輸入的邏輯閘。對於我們 設計的4-bit ADC 來說,在電路佈局時做到對稱匹配的情況下,發生兩個以 上泡沫錯誤的機率比一階的泡沫錯誤發生機率還低得許多,因此我們使用 一連串兩個輸入的CML OR gate(CML OR Array)消除一階可能的泡沫錯 誤,如圖3.23 所示。
OR Array CML
1 1
0 1
1 1
0 0
0 0
0
Encoder
Bubble
圖3. 23 使用 CML OR Array 消除可能發生的一階泡沫錯誤