移位累加乘法器

本文介绍了移位累加乘法器的工作原理,以4位无符号数乘法为例,详细阐述了计算过程,并提供了Verilog代码实现。通过Modelsim仿真展示了4位乘法需要4个时钟周期,同时给出了Spartan xc3s400综合后的最小时钟周期和资源占用情况。
摘要由CSDN通过智能技术生成

     移位累加乘法器的计算过程类似手算十进制乘法的过程。具体细节可参见中文版《数字设计---原理与实践(第3版)》P316 组合乘法器一节。

     现以4位无符号数乘法为例加以说明。

     两个无符号的4位数相乘结果为8位数。因此先定义两个8位的变量 a,c, 用来缓存被加数和输出结果,定义一个4位变量 b 来缓存加数。

     常规的计算过程是:将4位被加数赋值给 a 的低四位,然后与 b 的最低位相乘,接着a 左移一位后与b的第2位相乘,再与之前的结果相加,依次进行下去,直到计算完成为止。4位数据相乘需要做3次移位和3次加法。

     这里需要用到verilog的移位运算符,当将一个数移位后再赋值给一个相同位宽的变量时(比如这里的a移位后再赋值给a),如果使用左移<<运算,则移出的最高位被截掉,最低位补0;若使用右移>>运算,则移出的最低位被截掉,最高位补0 。

     因为这里的移位相加没有严格的顺序要求,因此既可以使用左移,也可以使用右移,当然左移位更符合我们的思维。

     Verilog代码:

module multi44(dina,dinb,dout,clk,rst);
input clk, rst;
input [3:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值