名称:基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
Verilog HDL设计64bits算术乘法器
基本功能
1.用 Veriloghdl设计实现64bit二进制整数乘法器,底层乘法器使用16*16\8*8\8*32\8*16小位宽乘法器来实现底层乘法器可以使用FPGA内部P实现;
2.基于 mode sim仿真软件对电路进行功能验证
3.基于 Quartus平台对代码进行综合及综合4.电路综合后的工作频率不低于50MHz。 后仿真,芯片型号不限;
报告要求
1.撰写设计方案,方案清晰合理;
2.提交 Veriloghdl设计代码,代码具有可综合性;
3.分别给出综合前后的仿真结果,并对比分析
4.给出综合后电路的硬件资源及性能(如工作速度)等相关数据,简要分析资源和性能之间的关联性 作答
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
可以看到,乘积正确
综合后仿真
资源消耗
部分代码展示:文章来源:https://www.toymoban.com/news/detail-826790.html
reg [31:0] mult_1_high=32'd0; reg [31:0] mult_1_low=32'd0; reg [7:0] mult_2_1=8'd0; reg [7:0] mult_2_2=8'd0; reg [7:0] mult_2_3=8'd0; reg [7:0] mult_2_4=8'd0; reg [7:0] mult_2_5=8'd0; reg [7:0] mult_2_6=8'd0; reg [7:0] mult_2_7=8'd0; reg [7:0] mult_2_8=8'd0; //乘数1拆分为2个32位 always@(posedge clk) begin mult_1_high<=mult_1[63:32];//高32位 mult_1_low<=mult_1[31:0];//低32位 end //乘数2拆分为8个8位 always@(posedge clk) begin//由低位到高位 mult_2_1<=mult_2[7:0]; mult_2_2<=mult_2[15:8]; mult_2_3<=mult_2[23:16]; mult_2_4<=mult_2[31:24]; mult_2_5<=mult_2[39:32]; mult_2_6<=mult_2[47:40]; mult_2_7<=mult_2[55:48]; mult_2_8<=mult_2[63:56]; end wire [39:0] result_1; wire [39:0] result_2; wire [39:0] result_3; wire [39:0] result_4; wire [39:0] result_5; wire [39:0] result_6; wire [39:0] result_7; wire [39:0] result_8; //调用32*8的IP核1 IP32x8IP32x8_1 ( .dataa ( mult_1_low ), .datab ( mult_2_1 ), .result ( result_1 ) ); //调用32*8的IP核2 IP32x8IP32x8_2 ( .dataa ( mult_1_low ), .datab ( mult_2_2 ), .result ( result_2 ) ); //调用32*8的IP核3 IP32x8IP32x8_3 ( .dataa ( mult_1_low ), .datab ( mult_2_3 ), .result ( result_3 ) ); //调用32*8的IP核4 IP32x8IP32x8_4 ( .dataa ( mult_1_low ), .datab ( mult_2_4 ), .result ( result_4 ) ); //调用32*8的IP核5 IP32x8IP32x8_5 ( .dataa ( mult_1_low ), .datab ( mult_2_5 ), .result ( result_5 ) ); //调用32*8的IP核6 IP32x8IP32x8_6 ( .dataa ( mult_1_low ), .datab ( mult_2_6 ), .result ( result_6 ) ); //调用32*8的IP核7 IP32x8IP32x8_7 ( .dataa ( mult_1_low ), .datab ( mult_2_7 ), .result ( result_7 ) ); //调用32*8的IP核8 IP32x8IP32x8_8 ( .dataa ( mult_1_low ), .datab ( mult_2_8 ), .result ( result_8 ) ); //调用32*8的IP核9 IP32x8IP32x8_9 ( .dataa ( mult_1_high ), .datab ( mult_2_1 ), .result ( result_9 ) ); //调用32*8的IP核10 IP32x8IP32x8_10 ( .dataa ( mult_1_high ), .datab ( mult_2_2 ), .result ( result_10 ) ); //调用32*8的IP核11 IP32x8IP32x8_11 ( .dataa ( mult_1_high ), .datab ( mult_2_3 ), .result ( result_11 ) );
源代码
扫描文章末尾的公众号二维码文章来源地址https://www.toymoban.com/news/detail-826790.html
到了这里,关于基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!