【HDL系列】乘法器(3)——Baugh-Wooley乘法器

目錄

一、Baugh-Wooley算法

二、Verilog設計


一、Baugh-Wooley算法

Baugh-Wooley算法是由Baugh和Wooley於1973年提出的二進制補碼並行陣列相乘算法。該算法轉化爲等效並行陣列相加,其中每個部分和爲乘數和被乘數比特相與,並且所有的部分和符號位爲“+”。將n比特X,Y,乘法結果2n比特的P表示如下:

從上式看出,XY相乘,結果P=XY相當於前兩項減去後兩項正數,設爲A和B.

按順序用字母表示以上項,即P = C+D-(A+B)。

將最後兩項A和B,補0擴展表示成2n位,以便在陣列中相加:

其中ai=y(n-1)*xi

A的二進制表示如下:

-A,即A的二進制補碼,對A“取反加一”,表示如下:

取反:

加一:

B的補碼錶示與A同理。

所以,-(A+B)的結果如下,即-A-B:

將-A-B代入P的表達式,所以P的結果如下:

以n=4比特X,Y相乘爲例,P=XY爲8比特:

該4*4 乘法器結構如下:

4*4 Baugh-Wooley乘法器結構

以上結果中每個框均爲全加器,有微小差距。

藍色框,其中某個輸入爲xiyi相與;

綠色框,其中某個輸入爲xiyi相與後取反;

右下斜對角爲P的傳播路徑,上下爲進位傳播路徑,最長的進位傳播鏈爲P0的進位至P7的進位傳播。

綠色框與藍色框模塊

 

二、Verilog設計

設計一個16比特或者32比特的Baugh-Wooley乘法器,位寬N可自定義,默認爲16比特。

幾個要點:

(1)藍色框與綠色框全加器;

(2)橙色框模塊,最後一級加法器,作爲示例,此處採用RCA加法器;

(3)xiyi, ci, si, co, so信號生成;

(4)Baugh-Wooley結構連接;

(5)乘法結果輸出P選擇。

根據以上結構拓展成16比特的結構如下:

16*16 Baugh-Wooley乘法器結構

在Verilog中,可羅列出每個模塊,並連接。爲了便於參數化,根據如上結構劃分爲5部分,每一部分使用generate…endgenerate生成。

生成xi & yi

 

生成si和ci

 

全加器例化

 

最後一級加法器

 

最後一級乘法輸出

 

32比特Baugh-Wooley乘法器測試部分打印信息

 

Baugh-Wooley乘法器,Verilog源碼公衆號回覆“00e”。

 

參考資料:

《A Two's Complement Parallel Array Multiplication Algorithm》

《Baugh-Wooley Multiplier》

歡迎批評指正,更多閱讀,關注“紙上談芯”,不定期更新,共同學習:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章