• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真

07/16 11:12
316
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240202093I5V3.doc

共1个文件

名称:基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

Verilog HDL设计64bits算术乘法器

基本功能:

1.用 Veriloghdl设计实现64bit二进制整数乘法器,底层乘法器使用16*168*88*328*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?)
);

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=662

  • 2-240202093I5V3.doc
    下载

相关推荐