• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

32 位带符号、无符号乘法器设计Verilog代码VIVADO仿真

09/02 08:04
482
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240920142Z1J1.doc

共1个文件

名称:32 位带符号、无符号乘法器设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

32 位带符号、无符号乘法器

了解 32 位带符号、无符号乘法器的实现原理

使用 Verilog 实现 32 位无符号乘法器和带符号乘法器

无符号乘法器功能为:将两个 32 位无符号数相乘,得到一个 64 位无符号数。

带符号乘法器功能为:将两个 32 带无符号数相乘,得到一个 64 位带符号数。将低 32 位存放在

专用寄存器 LO 中,高 32 位存放在寄存器 HI 中。执行乘法指令过程中不产生异常。本实验不允许使用行为级实现。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

有符号乘法器.doc

1. 设计代码

2. Testbench

3. 仿真图

1. 设计代码

2. Testbench

3. 仿真图

部分代码展示:

//无符号乘法器
module?Multiplier_unsigned(
input?clk,//乘法器时钟信号
input?reset,//复位信号,低电平有效
input?[31:0]?a,//输入数?a(被乘数)
input?[31:0]?b,//输入数?b(乘数)
output?[63:0]?z//乘积
);
reg?[63:0]?mult_product=64'd0;
reg?[63:0]?mult_product_buf=64'd0;
parameter?INIT=2'd0;
parameter?ADD=2'd1;
parameter?SHIFT=2'd2;
reg[1:0]?state=INIT;//初始状态为INIT
reg[63:0]?b_buf=64'd0;//临时变量
integer?Count=0;
always@(posedge?clk?or?negedge?reset)
if(reset==0)//复位
begin
mult_product_buf<=0;
Count<=0;
state<=INIT;//初始状态
end
else
??begin
?case(state)
INIT://初始化状态
????begin
????mult_product_buf<=0;
????Count<=0;
state<=ADD;???//start有效跳转到下一个状态ADD
b_buf[31:0]<=b;???//取乘数
b_buf[63:32]<=32'd0;???//临时变量的高32位置0
end
ADD://相加状态
?begin

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1112

  • 2-240920142Z1J1.doc
    下载

相关推荐