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