名称:基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
Verilog HDL设计64bits算术乘法器
基本功能:
1.用 Veriloghdl设计实现64bit二进制整数乘法器,底层乘法器使用16*168*88*328*16小位宽乘法器来实现底层乘法器可以使用FPGA内部P实现;
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 ) );
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=662
795