基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真
名称:基于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。 后仿真,芯片型号不限;
提交 Veriloghdl设计代码,代码具有可综合性;
分别给出综合前后的仿真结果,并对比分析
给出综合后电路的硬件资源及性能(如工作速度)等相关数据,简要分析资源和性能之间的关联性 作答
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

可以看到,乘积正确


综合后仿真


资源消耗


部分代码展示:
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 ) );
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真