乘法器设计(一):基于移位相加的乘法器设计

本文介绍了二进制乘法器的设计原理,包括无符号数和有符号数的乘法。无符号数乘法通过移位和相加完成,有符号数则需要使用补码并进行符号扩展。文中通过举例详细解释了计算过程,并展示了硬件结构。作者还分享了自己的Verilog代码实现,希望得到优化建议。
摘要由CSDN通过智能技术生成

 

在硬件电路中,常采用二进制乘法器,因此只讲二进制乘法器的原理。二进制乘法原理与十进制乘法原理类似,都是将乘数的每一位和被乘数相乘,除此之外,二进制乘法还有其自身的特点,这对于硬件设计极为关键。

二进制乘法器可以分为有符号数乘法和无符号数乘法。无符号数乘法较为简单,不需要对乘数和被乘数扩展符号位,直接使用乘数和被乘数相乘相加即可。举例:比如两个无符号数3(011)和6(110)相乘,那结果应该是一个6位的二进制数。过程如下:

 

                     0   1    1  (3)

              x     1    1    0   (6)

                     0    0    0

                0    1     1

          0     1    1             

          1     0     0    1   0   (18)

可以看到,整个过程是将被乘数进行移位然后再进行相加。乘数的最低为对应移位0位,最高位移位2位,但是应该注意到的是,如果乘数的对应位位0,则可以理解位移位结果为0;所以最终的结果是:000000+000110+001100 = 010010(18)

 

但是对于有符号数就比较麻烦一些。对于有符号数乘法,乘数和被乘数都是使用补码表示。假定被乘数和乘数的位宽分别为M1M2 有如下结论:

(1)乘积的位宽是(M1+M2)

(2)乘数和被乘数在相乘前需要进行有符号扩展,将被乘数和乘数扩展至(M1+M2)位

举例:(-3)x(6)

(-3)的补码&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值