名称: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
阅读全文