目錄
在超前進位加法器中,其進位可以並行計算出,打破了進位鏈傳播中當前的進位依賴於前一級的進位的關係,使得第n位進位只與輸入有關。
但是,對於大位寬加法器,其每一個進位生成的邏輯面積耗費大,芯片造價成本上升,在前幾期中已有介紹。很多研究者致力於在時間延遲與邏輯門數之間尋找平衡點,卻極少數關注如何使用簡潔與規則的方式最小化芯片面積和設計成本。本文將介紹的Brent-Kung加法器,由Richard P.Brent和H.T.Kung教授於上世紀80年代提出,Brent-Kung加法器是一種樹形加法器,採用了樹形結構,達到了N比特加法器延遲正比於log N, 面積正比於N的效果。本文介紹並行加法器基本方法,Brent-Kung加法器基本原理與Verilog設計。
一、並行加法器基本方法
對於N比特的A和B兩數,結果爲N比特S和1比特進位Cout,超前進位加法器的進位鏈與和公式的計算公式如下(爲了統一,此處序號從1開始到N):
如對於C4的生成,其算式如下:
每個進位的生成依賴於G和P,對於每一位進位,如何做到更加節省邏輯面積與減少計算時間呢?正是利用了一種樹形結構,通過以下基本方法生成進位與和達到。
圖中輸入爲N比特A和B,輸出N比特S和1比特Cn即Cout,已用紅色標出。這種並行加法器的基本方法即將輸入數A和B通過一部分邏輯轉化爲G和P,P由A和B異或,G由AB相與即可,其中的G和P通過樹形門級結構用於生成進位Cn與和Sn。
二、進位鏈計算重構原理
Brent-Kung加法器定義了以下運算“o”:
其中的p,g,g’,p’均是二進制數。
上式這麼看容易糊塗,運算“o”想表達的意思是以下兩個式子:
(1)輸入p,g,g’,p’,輸出g+p.g’
(2)輸入p,g,g’,p’,輸出p.p’
特別提醒:此部分的實質爲對超前進位加法器的進位鏈計算進行了重構,如果對超前進位加法器的進位計算熟稔於心,可忽略以下定理,並只要記住定理後(Gi,Pi)的生成式子。
定理一、
Ci = Gi, i=1,2,…N
因爲C0=0,所以C1 = G1 + P1*C0 = G1
爲什麼Ci=Gi,此處證明忽略,可以從假定Ci-1=Gi-1開始。
定理二、
同時,
基於以上兩式子可以看出,“o”操作符合交換律,(gi,pi)操作可以使用任意順序。根據以上定理一和定理二可以得出,此式子將用於樹形進位鏈生成:
三、Brent-Kung加法器
由以上方法可知,pi由AB異或生成,gi由AB相與生成。
而新的進位由下式生成,即Ci=Gi,只要計算出以下式子就可以得到所有的進位Gi即可。
如何計算呢?
先看一個例子,當n=8時,(G8,P8)的計算方法如下圖。
其中白色圈表示數據傳遞,數據前後沒有變化;黑色圈表示上文中定義的“o”操作,其計算示意圖如下。
在T=3時刻G8和P8的計算如下:
(G8,P8)= (g8,p8)o(g7,p7)o(g6,p6)o(g5,p5)o(g4,p4)o(g3,p3)o(g2,p2)o(g1,p1)
對於一般問題(Gi,Pi),i=1,2,3,…N的計算,其結構圖如下:
如其中C9=G9,(G9,P9)=(G8,P8)o(g9,p9),所以在生成C9前還進行了一次“o”操作。
從邏輯層數,扇入扇出和佈線擁塞度三個方面看該樹形加法器,Brent-Kung加法器的拓撲結構經歷邏輯層數較多,需要(2logN – 1)級,扇入扇出和佈線擁塞度較低。
四、Verilog設計
設計一個N比特的Brent-Kung加法器,重點在於從門級去展開各路進位的生成邏輯,生成該進位鏈的樹形結構。
以下是16比特的Brent-Kung加法器,分三部分:
(1)生成p,g信號,由半加器模塊組成;
(2)“o”操作單元實現,由p,g信號生成進位鏈邏輯,一部分可規律性地通過verilog generate語句生成,其餘部分通過模塊化或者assign單獨實現;
(3)生成輸出進位Cout和S信號。
注:如果不假定C0=0,則可以將(gc,pc)=(C0,0)參與到(G1,P1)的計算中去。
歡迎批評指正,更多閱讀,關注“紙上談芯”,不定期更新,共同學習: