扫码加入

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

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

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

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
    下载

相关推荐