序列加法器 並行加法器 超前進製加法器

2021-08-17 16:47:59 字數 3344 閱讀 6313

1.序列加法器

序列加法器即加法器執行位序列行操作,利用多個時鐘週期完成一次加法運算,即輸入運算元和輸出結果方式為隨時鐘序列輸入/輸出。位並行加法器速度高,但是占用資源多。在許多實際應用中並不需要這樣高的速度,而是希望減少硬體資源佔用率,這時就可以使用位序列加法器。

在序列加法器中,只有乙個全加器,資料逐位序列送入加法器進行運算,如圖所示。圖中fa是全加器,a、b是兩個具有右移功能的暫存器,c為進製觸發器。由移位暫存器從低位到高位逐位序列提供運算元相加。如果運算元長n位,加法就要分n次進行,每次產生一位和,並序列地送回a暫存器。進製觸發器用來寄存進製訊號,以便參與下一次的運算。

2.序列進製的並行加法器

並行加法器由多個全加器組成,其全加器個數的多少取決於機器的字長,由於並行加法器可同時對資料的各位相加,讀者可能會認為資料的各位能同時運算,其實並不是這樣的。這是因為雖然運算元的各位是同時提供的,但低位運算所產生的進製會影響高位的運算結果。例如:11…11和00…01相加,最低位產生的進製將逐位影響至最高位,因此,序列進製的並行加法器需要乙個最長運算時間,它主要是由進製訊號的傳遞時間決定的,而每個全加器本身的求和延遲只是次要因素。很明顯,提高並行加法器速度的關鍵是盡量加快進製產生和傳遞的速度。 

並行加法器中的每乙個全加器都有乙個從低位送來的進製輸入和乙個傳送給高位的進製輸出。通常將傳遞進製訊號的邏輯線路連線起來構成的進製網路稱為進製鏈。每一位的進製表示式為:

ci=aibi+(ai⊕bi)ci-1

其中,「aibi」取決於本位參加運算的兩個數,而與低位進製無關,因此稱aibi為進製產生函式(本次進製產生),用gi表示,其含義是:若本位的兩個輸入均為1,必然要向高位產生進製。「(ai⊕bi)ci-1」則不但與本位的兩個數有關,還依賴於低位送來的進製,因此稱ai⊕bi為進製傳遞函式(低位進製傳遞),用pi表示,其含義是:當兩個輸入中有乙個為1,低位傳來的進製ci-1將向更高位傳送,所以進製表示式又可以寫成:

ci=gi+pici-1

把n個全加器串接起來,就可進行兩個n位數的相加。這種加法器稱為序列進製的並行加法器,如圖2-16所示。序列進製又稱行波進製,每一級進製直接依賴於前一級的進製,即進製訊號是逐級形成的。

其中:c1=g

1+p1c0 c2

=g2+p2

c1 … c

n=gn+p

ncn-1序列進製的並行加法器的總延遲時間與字長成正比,字長越長,總延遲時間就越長。假設將一級與門、或門的延遲時間定為

ty,從上述公式中可以看出,每一級全加器的進製延遲時間為2

ty。在字長為n位的情況下,若不考慮gi、p

i的形成時間,從c0→c

n的最長延遲時間為2nty(設c

0為加法器最低位的進製輸入,c

n為加法器最高位的進製輸出)。 

顯然,序列進製方式的進製延遲時間太長了,要提高加法運算的速度,就要盡可能地減少進製延遲時間,也就是要改進進製方式,這就產生了並行進製方式和分組並行進製方式

3.超前進製加法器

可以想象最簡單的加法計算就是每一位都進行一次全加器計算,然後產生乙個進行c,下乙個全加器在取得進製以後再進行他的位的計算,迴圈下去直到最後一位。這樣的問題是進行一次32位的加法計算就需要至少序列的經過32個全加器,如果cpu的頻率是3ghz,那麼乙個時鐘週期,大約333皮秒內,是無法完成一次簡單的加法運算的。

那麼超前進製加法器是如何做到高速計算的,可以想象肯定是把計算平行化了,而且是用數量來換了速度。但是具體是怎麼做的呢。我們來一起分析下。

首先考慮所有的加法情況

rowx

ycin

couts0

0000

0100

1012

0100

1301

1104

1000

1510

1106

1101

0711111

ci+1 = xiyi + xici + yici

這裡c表示的是進製,舉個列子來說就是第一位的進製c1他是由第零位的x0*y0+x0*c0+y0*c0, 這裡很明顯c0是始終為0的。那麼c1=x0*y0

然後這個提取公因子公式就變成了

ci+1 = xiyi + ci(xi + yi)
然後是不是發現,這樣一來只有ci是不確定的。其他的xi和yi都是直接輸入。
但是ci其實呢通過迴圈inline的乙個替換,其實會變成類似

ci+1 = xiyi + (xi + yi)(xi-1y

i-1+ ci-1(xi-1

+ yi-1))

然後可以一直這樣替換下去,直到c0這一層。或者是最右端的輸入。

一般的通常會把這幾個變數成為g,p變數

gi = xiyi 

pi = xi + yi

這樣理論上可以實現任何位數都在有限次內完成,但是這樣的代價是位數越多需要的電路也就越多。
以四位超前加法器為例:
第一步,所有的4個全加器對每一位計算出自身的和si, gi和pi
然後第二步,超前進製器計算出c1,c2,c3,c4,當然這裡的c1,c2,c3,c4計算需要的邏輯門數量是逐步遞增的。
然後c1,c2,c3對s1,s2,s3進行進製,c4會傳遞給更上面的位。
但是由於成本的問題一般都會把32位或者64位的切割成多個16位的超前進製來進行計算,能保證在乙個時鐘週期內完成基本就可以了。
取得乙個成本和效能上得平衡。

四位超前進製加法器

十六位超前進製加法器

三十二位超前進製加法器

超前進製加法器

在實時訊號處理中,常常要用到多位數字量的加法運算,但序列加法器速度較慢,超前進製加法器則能滿足要求,且結構並不複雜。現在普遍使用的並行加法器是超前進製加法器,只是在幾個全加器的基礎上增加了乙個超前進製形成邏輯,以減少由於逐步進製訊號的傳遞所造成的時延。具體的演算法為 s i x i y i c i ...

超前進製加法器實驗報告 超前進製加法器

首先畫出2位全加器的真值表與卡諾圖 根據真值表可知二進位制加法與十進位制加法一樣,進製值是逢二進一.而和值則是上級進製值跟被加數跟加數總和模二的餘數.根據卡諾圖化簡得到s與ci 1的全加器電路為 多位加法器可以用行波進製加法器實現,也就是第一位的ci為0,第二位開始,ci就連線著上一級的ci 1,這...

46 超前進製加法器

module add ahead sum,cout,a,b,cin output 7 0 sum output cout input 7 0 a,b input cin wire 7 0 g,p wire 7 0 c,sum assign g 0 a 0 b 0 產生第 0位本位值和進製值 assi...