5位无符号阵列乘法器设计_【HDL系列】乘法器(3)——Baugh-Wooley乘法器

v2-eb058f10034b07805dc0eada57025ef8_1440w.jpg?source=172ae18b

一、Baugh-Wooley算法

Baugh-Wooley算法是由Baugh和Wooley于1973年提出的二进制补码并行阵列相乘算法。该算法转化为等效并行阵列相加,其中每个部分和为乘数和被乘数比特相与,并且所有的部分和符号位为“+”。将n比特X,Y,乘法结果2n比特的P表示如下:

v2-a061f2d4fe771cc007c7a0bfc793ebb8_b.jpg

v2-4291062322428f42dc1b11974d7d630f_b.jpg

从上式看出,XY相乘,结果P=XY相当于前两项减去后两项正数,设为A和B.

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

将最后两项A和B,补0扩展表示成2n位,以便在阵列中相加:

v2-bec844bc43fa89ded64833fc8abc0745_b.png

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

A的二进制表示如下:

v2-877f27aa25bcec4137666437cf10f30b_b.png

-A,即A的二进制补码,对A“取反加一”,表示如下:

取反:

v2-40e7d4be8f07809ad93887d696e08123_b.png

加一:

v2-467b8565762316817e85651a389759ea_b.png

B的补码表示与A同理。

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

v2-76ab9777ed4edb45bad8dec60b6c391f_b.jpg

将-A-B代入P的表达式,所以P的结果如下:

v2-f696339a8d7f5071207fdc29c240c785_b.jpg

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

v2-6c5179cd27c0ddfdd9a57c1edb51ac74_b.jpg

该4*4 乘法器结构如下:

v2-f429d38cc4c78a8d0788598eb206f9e8_b.jpg
4*4 Baugh-Wooley乘法器结构

以上结果中每个框均为全加器,有微小差距。

蓝色框,其中某个输入为xiyi相与;

绿色框,其中某个输入为xiyi相与后取反;

右下斜对角为P的传播路径,上下为进位传播路径,最长的进位传播链为P0的进位至P7的进位传播。

v2-caddab86f6da754fc6a831d0863001f0_b.jpg
绿色框与蓝色框模块

二、Verilog设计

设计一个16比特或者32比特的Baugh-Wooley乘法器,位宽N可自定义,默认为16比特。

几个要点:

(1)蓝色框与绿色框全加器;

(2)橙色框模块,最后一级加法器,作为示例,此处采用RCA加法器;

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

(4)Baugh-Wooley结构连接;

(5)乘法结果输出P选择。

根据以上结构拓展成16比特的结构如下:

v2-657a3be7adb30e03774ebaade952bfc1_b.jpg
16*16 Baugh-Wooley乘法器结构

在Verilog中,可罗列出每个模块,并连接。为了便于参数化,根据如上结构划分为5部分,每一部分使用generate…endgenerate生成。

v2-69dc8c2af7c3534a8a086377038d930b_b.jpg
生成xi & yi

v2-b78ac941902f7e7a34d8b33ef45594e1_b.jpg
生成si和ci

v2-6aaf579c7c247d822f047883b66e9136_b.jpg
全加器例化

v2-02ebe6cea6c3c49da34c9274ee8b787c_b.jpg
最后一级加法器

v2-7dc595692195be0ec39c941956eef628_b.jpg
最后一级乘法输出

v2-c0a008372eb8399c3abedb3d74bbe6c9_b.jpg
32比特Baugh-Wooley乘法器测试部分打印信息

Baugh-Wooley乘法器,Verilog源码公众号回复“00e”。

参考资料:

《A Two's Complement Parallel Array Multiplication Algorithm》

《Baugh-Wooley Multiplier》

欢迎批评指正,更多阅读,关注“纸上谈芯”,不定期更新,共同学习:

v2-5f62185ff9e8ffa46f3fb9ea3eb90cba_b.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值