4-bit加法器示例
先看一下上一節得到的加法器實現,可以看出改進的地方。
不難發現整個過程是從右至左依次執行,每一個進位需要等前面的運算全完成,可以在一開始得到所有的進位嗎?
行波進位加法器(Ripple-Carry Adder,RCA)
像上面4-bit加法器這樣實現的加法器被稱作行波進位加法器,所有的進位像波浪一樣向左推進。
- 結構特點:低位全加器的Cout連接到高一位全加器Cin
- 優點:電路布局簡單,設計方便
- 缺點:高位的運算必須等待低位的運算完成
4-bit RCA的門電路實現
我們考察其中的關鍵路徑(延遲最長的路徑)
總延遲時間:(T + T)*4 + T = 9T,推廣到n位,總時間為(2n + 1)*T。降低總延遲時間就是我們優化的方向。
加法器的優化思路
主要思路:提前計算出“進位信號”。對進位信號進行分析:
$C_{i+1} = (A_i · B_i) + (A_i · C_i) + (B_i · C_i) = (A_i · B_i) + (A_i + B_i) · C_i$
設:生成信號(Genarate):$G_i = A_i · B_i$,傳播信號(Propagate):$P_i = A_i + B_i$,則:$C_{i+1} = G_i + P_i · C_i$
如果把這看作一個遞推公式,這是一個等差函數,通項可直接求出來,且只與$A_i$和$B_i$有關。這樣就可以提前計算出每個“進位信號”,如圖:
分析一下電路實現
超前進位加法器(Carry-Lookahead Adder,CLA)
像上面那樣通過一個電路提前計算進位的加法器叫做超前進位加法器,具體如圖:
其中,C1、C2、C3、C4都由下面的電路計算好,需要3級門延遲,然后在全加器中關鍵路徑上還有1級延遲,如圖
所以,總共有4級門延遲。
- 如果采用這種完全的超前進位,理論上的門延遲都是4級門延遲
- 實際電路過於復雜,難以實現(C31需要32位的與門和或門?hh)
- 通常的方法:采用多個小規模的超前進位加法器拼接而成,例如,用4個8-bit的超前進位加法器連接成32-bit加法器
參考鏈接:https://www.coursera.org/learn/jisuanji-zucheng/lecture/Y1Q3C/306-jia-fa-qi-de-you-hua