名称:基于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