博主最近在看乘法器相關的知識,發現如今用的比較多的是booth編碼的乘法器和Wallace樹型乘法器,固然二者並非互斥的關係,他們也能夠結合使用。在這裏給你們介紹一下Wallace樹型乘法器,但願能對你們有所幫助。算法
首先咱們以兩個無符號8位二進制數相乘爲例來講明Wallace樹的算法。由圖1所示,圖中8位二進制數a和8位二進制數b相乘,產生64個乘積項,記作a[i]*b[j],i,j=0、一、二、三、四、五、六、7,在本文中,乘號用*來表示,在圖中也將a[i]*b[j]用*表示。處在同一列的全部乘積項與從右邊過來的進位相加,獲得乘積的一位結果,因爲64個乘積項能夠用64個與門同時獲得,即a*b=a&b,咱們能夠用多個全加器對處在同一列的乘積項同時相加。
編碼
一個全加器有三位輸入和兩位輸出,其中一個輸出爲加法結果(sum),另外一個輸出爲進位(cout)。圖中一個長方形表明一個全加器,內部有兩個*的長方形能夠用半加器實現,圓圈中的單個乘積暫時不作處理,送入下一級參與運算。這樣即實現了3-2壓縮,由於全加器是3輸入2輸出的。spa
圖1 8*8Wallace樹型乘法器乘積項blog
圖2表示了第07位的運算狀況,07位有8個乘積項,他們分別是a[7]*b[0]、a[6]*b[1]、a[5]*b[2]、a[4]*b[3]、a[3]*b[4]、a[2]*b[5]、a[1]*b[6]、a[0]*b[7],每一項a和b的[]中的數字之和爲7。原理
圖2 8*8Wallace樹型乘法器第07位二進制
在第一級,咱們使用3個全加器,產生3位相加結果與3位進位。3位進位送到左邊的第08位。第二級有5位相加,其中3位來自第一級,兩位是來自右邊06位的進位,第二級使用了兩個全加器。第三級和第四級都使用了1個全加器,因爲每一級各自的全加器是並行的,故每一級的延遲只至關於一個全加器的延遲,咱們把第四級的輸出分紅sum和cout兩組,再把它們用進位傳播加法器相加,獲得最後的結果,即乘積。
並行
圖三所示爲8*8Wallace樹型乘法器整體電路圖,圖中第一行數字是乘積位的編號,第二行數字是相應位的乘積項數量。加法器的數字是該加法器名稱的右半部分,左半部分在圖中的最左側給出。如左下角最後一個加法器的名稱爲fal_14_0。im
圖3 8*8Wallace樹型乘法器整體電路圖d3
以上就是Wallace樹型加法器的基本原理。margin