基于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


演示视频:

设计文档:

设计文档.doc

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仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员