名称:16位乘法器设计Verilog代码VIVADO仿真(文末获取)
软件:VIVADO
语言:Verilog
代码功能:
1)用 verilog写一个乘法器(数据位宽16位), 并进行仿真验证
2)手工画一个SRAM单元及阵列的框图
1. 工程文件
2. 程序文件
3. 程序编译
4. Testbench
5. 仿真图
图中仿真了5组乘法,可看到:
0*0=0
255*38=9690
65530*4287=280927110
31136*3548=110470528
257*268=68876
部分代码展示:
//16bit乘法器 module Multiplier_16bit(mult_A,mult_B,clk,start,Done,mult_product); input [15:0] mult_A,mult_B; //mult_A是乘数,mult_B是被乘数 input clk,start;//start高电平时输入乘数 output Done;//乘积计算完成 output [31:0] mult_product;//乘积 reg Done; reg [31:0] mult_product=32'd0; reg [31:0] mult_product_buf=32'd0; parameter INIT=2'd0; parameter ADD=2'd1; parameter SHIFT=2'd2; reg[1:0] state=INIT;//初始状态为INIT reg[31:0] mult_B_buf=32'd0; //临时变量 integer Count=0; always@(posedge clk) begin case(state) INIT://初始状态 if(start)begin state=ADD; //start有效跳转到下一个状态ADD mult_B_buf[15:0]=mult_B; //取被乘数 mult_B_buf[31:16]=16'd0; //临时变量的高16位置0 end else begin mult_product_buf=0; Count=0; Done=0; //运算未完成 state=INIT; //初始状态 end
源代码
点击下方的公众号卡片获取