第三章 提出之應用於電容陣列的校正演算法
3.1. 提出之演算法架構選擇
根據第二章之介紹,我們知道校正演算法之兩篇經典,雖然都有尚待改 善與其不足之處,但是發展至今二十餘年,仍然不失其作為經典之特性。往 後數年間,發展出各式各類的具有校正能力之 SA ADC,其校正之方法都是 引用兩篇經典而來;相異之處僅是變更數位電路以及類比電路的實現方式,
於是一篇不同的論文就誕生了。
二進位加權電容式數位類比轉換器(Binary weighted capacitor array Digital-to-Analog Converter)中,每個電容之間互相保持著公比為 2 的比例 關係,分別代表二進位編碼中的權重。對於一個 N 位元的二進位加權電容 式數位類比轉換器而言,其最重要位元電容(Most Significant Bit, MSB)之 大小為2N 1−
C
;最低位元電容(Least Significant Bit, LSB)之大小為C
。在二進位加權電容式數位類比轉換器中實行誤差計算時,大致可以分成 兩大類:一種是由最大電容(MSB capacitor)開始,依序向下校正至最小電 容(LSB capacitor)結束,簡稱「由高至低(Top-down)」式。另一種是由 最小電容(LSB capacitor)開始,依序向上校正至最大電容(MSB capacitor)
結束,簡稱「由低至高(Bottom-up)」式。
因為 SA ADC 是以「二分搜尋(Binary search)」的方式動作,而二分搜 尋的基本精神就是「排序」,所以即使實行任何校正方式,我們也必須秉持
「排序」這原則,不論是使用由高至低或是由低至高式。故在思考該用什麼 方式校正之前,我們必須先考慮該以何種「順序」為基礎,當作整體演算法 的基本架構。
挑選校正演算法架構之順序只有兩種選擇,由高至低或是由低至高。原 因有二:DAC 陣列中,各個電容之間的誤差量是「相對於整體電容總和之 誤差」,並非「絕對於理想值之誤差」;加上 SA ADC 動作原理本身就有排序 性,所以依序校正才是最簡單又最容易實現的方式。
至於要選擇由高至低,或是由低至高來完成校正呢?
由高至低校正演算法,從第二章可以發現,其後端的數位電路要經過一 些運算,才能得到待校正電容真正的誤差量,所以它的數位電路略嫌複雜,
至少需要一個右移電路(除二)、一個加法器與減法器、一個累加器才能完 成計算。
由低至高演算法中,其數位電路就僅只有一個右移動作(除二),所以 它的數位電路架構是比較簡單的。
但是由低至高演算法中,每次執行誤差計算時,得透過 Error capacitor array 之設定,於比較器負端,以「類比方式」扣除已校正電容對該次誤差 計算的影響。當待校正之電容陣列位元數較少時,可能還看不出這有哪些缺 點,但是當待校正之電容陣列位元數太多的時候,其缺點便會相當明顯。
第一,當待校正電容陣列之位元數較高的時候,Error capacitor array 所 佔之面積便會過大。以計算一個 N 位元的待校正電容陣列之各電容誤差量 為例,其 MSB 電容定義為 CN,其 LSB 電容定義成 C0。
計算電容 C1之誤差時,利用 Error capacitor array 排除已完成誤差計算 的電容 C0之影響,故設定 Error capacitor array 為已完成誤差計算的電容 C0 之誤差量。
計算電容 C2之誤差時,利用 Error capacitor array 排除已完成誤差計算 的電容 C0與 C1之影響,故設定 Error capacitor array 為已完成誤差計算的電
容 C0與 C1之誤差量之和。
計算電容 C3之誤差時,利用 Error capacitor array 排除已完成誤差計算 的電容 C0、C1、C2之影響,故設定 Error capacitor array 為已完成誤差計算 的電容 C0、C1、C2之誤差量之和。
計算電容 CN之誤差時,利用 Error capacitor array 排除已完成誤差計算 的電容 C0至 CN-1之影響,故設定 Error capacitor array 為已完成誤差計算的 電容 C0至 CN-1之誤差量總和。
如此當欲計算誤差的電容數量很多的時候,Error capacitor array 之位元 數就要更多,才能存放每個已完成誤差計算的電容誤差量總和。而在晶片中 最佔面積的元件就是 DAC 的電容陣列,加大 Error capacitor array 同時也直 接使電容與晶片面積增加,雖省下了數位運算的面積,卻增加了電容的面 積,此為缺點之一。
第二,由低至高演算法中,「每次」進行誤差計算時,都要透過 Error capacitor array 之設定,於比較器負端「扣除」已完成誤差計算的電容對該 次誤差計算的影響。
將上述段落重新翻譯文句意義,可以寫成:「每次」進行誤差計算時,
我們都必須以「精準度有限」的 Error capacitor array,在比較器負端,用「類 比方式扣除」已完成誤差計算的電容對該次誤差計算的影響。
顯而易見的,當欲計算誤差的電容數目一多,誤差計算步驟進行數量就 越多,精準度有限的 Error capacitor array 本身的誤差便會持續累積,類比減 法器的非理想性也是隨電容數量上升而累積,此為缺點之二。
從以上缺點可以發現,當欲計算誤差的電容數量不多的時候,由低至高 的方式是比較簡單的;但是欲計算誤差的電容數量一多,即使是小小的非理
想性誤差,也會如滾雪球般累積,故在高解析度下應用時,此方法較由高至 低的方式為差。
由高至低的方式,其在排除已完成誤差計算的電容之誤差量時,是以數 位方式完成,雖然數位計算略嫌複雜,但是卻不會使 Error capacitor array 面 積增加。每次執行誤差計算時,也不會使 Error capacitor array 之誤差、與類 比減法器之非理想性持續累加,比較適合應用在高解析度的架構上。
故我們在此挑選「由高至低(Top-down)」的方式當作我們演算法的基 本架構,在由高至低的基礎上去完成校正。