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

这篇具有很好参考价值的文章主要介绍了基于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。    后仿真,芯片型号不限;

报告要求    

1.撰写设计方案,方案清晰合理;

2.提交 Veriloghdl设计代码,代码具有可综合性;

3.分别给出综合前后的仿真结果,并对比分析

4.给出综合后电路的硬件资源及性能(如工作速度)等相关数据,简要分析资源和性能之间的关联性    作答

1. 工程文件

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

2. 程序文件

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

3. 程序编译

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

4. RTL图

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

5. Testbench

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

6. 仿真图

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

可以看到,乘积正确

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

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

综合后仿真

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

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

资源消耗

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

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

部分代码展示:

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 )
);

源代码

 扫描文章末尾的公众号二维码文章来源地址https://www.toymoban.com/news/detail-826790.html

到了这里,关于基于FPGA的64bit算术乘法器设计Verilog代码Quartus仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • xilinx FPGA 乘法器ip核(multipler)的使用(VHDL&Vivado)

    一、创建除法ip核  可以选择两个变量数相乘,也可以选择一个变量输入数据和一个常数相乘 可以选择mult(dsp资源)或者lut(fpga资源) 可以选择速度优先或者面积优先 可以自己选择输出位宽 还有时钟使能和复位功能  二、编写VHDL程序:声明和例化乘法器ip核 三、编写仿真程

    2024年02月11日
    浏览(62)
  • 数字IC经典电路(2)——经典乘法器的实现(乘法器简介及Verilog实现)

    数字电路中乘法器是一种常见的电子元件,其基本含义是将两个数字相乘,并输出其乘积。与加法器不同,乘法器可以实现更复杂的运算,因此在数字电路系统中有着广泛的应用。 乘法器的主要用途是在数字信号处理、计算机科学以及其他数字电路应用中进行精确的数字乘法

    2024年02月06日
    浏览(62)
  • 计算机组成原理3个实验-logisim实现“七段数码管”、“有限状态机控制的8*8位乘法器”、“单周期MIPS CPU设计”。

    目录 标题1.首先是七段数码管   标题二:有限状态机控制的8*8位乘法器 标题三:单周期MIPS CPU设计 1看一下实验要求:    2.接下来就是详细设计: 1. 组合逻辑设计        由于7段数码管由7个发光的数码管构成,因为我们想用二进制将0-9这几个数字表示出来。所以他需要

    2024年01月17日
    浏览(48)
  • verilog编程之乘法器的实现

    知识储备 首先来回顾一下乘法是如何在计算机中实现的。 假设现在有两个32位带符号定点整数x和y,我们现在要让x和y相乘,然后把乘积存放在z中,大家知道,两个32位数相乘,结果不会超过64位,因此z的长度应该为64位。 z = x * y中,x是被乘数,在Verilog代码中 multiplicand表示

    2024年04月12日
    浏览(36)
  • 定点乘法器----基4booth算法

    本篇文章将介绍如何使用 基4 booth算法( 赛题中介绍了 )来生成部分积,在开始之前,简要介绍一下定点乘法器的计算流程: 对 乘数 进行booth编码 — 利用得到的 编码值 和 被乘数 生成 部分积 ---- 对 部分积 进行压缩求和。 基4 booth(后面简称为 booth2 )算法用来完成前面的两步。

    2024年02月06日
    浏览(56)
  • Verilog | 基4 booth乘法器

    上接乘法器介绍 跟基2的算法一样,假设A和B是乘数和被乘数,且有: A = ( a 2 n + 1 a 2 n ) a 2 n − 1 a 2 n − 2 … a 1 a 0 ( a − 1 ) B = b 2 n − 1 b 2 n − 2 … b 1 b 0 begin{align}A=(a_{2n+1}a_{2n})a_{2n−1}a_{2n−2}…a_1a_0(a_{−1})\\\\ B=b_{2n−1}b_{2n−2}…b_1b_0end{align} A = B = ​ ( a 2 n + 1 ​ a 2 n ​ )

    2024年02月10日
    浏览(39)
  • Logism · 原码一位乘法器 实验

    8位无符号的原码一位乘法器的实现 通过时钟驱动右移,模拟运算过程 实现脉冲控制,位移指定次数后要及时停止 结果输出给到乘积隧道         A.掌握寄存器、分离器、比较器等一系列新的逻辑元件使用方法         B.学习并运用计算机原码乘法原理,在硬件电路中

    2023年04月25日
    浏览(41)
  • 基2-booth乘法器原理及verilog代码

    对于一个n位的有符号二进制数B,首位是0则B可以表示为: 首位是1,B[n-2:0]是实际数字的补码,所以可以得到 。 可以得到合并的公式如下所示: 将公式展开: 除了n-1项外的每一项乘2之后再减去本身: 根据2^i重构公式: 为了统一形式,添加一项B[-1],初始值为0.注意这里的B

    2024年02月03日
    浏览(40)
  • 流水线乘法器的原理及verilog代码

    二进制数乘法的显著特点就是可以将乘法转换为移位,乘2就是左移一位,乘2^n就是左移n位。而一个二进制数又可以看成是由若干个2的i次方的和。 设被乘数和乘数分别为M、N,且都是32位的二进制数,乘积结果为64位 的向量CO则 。 所以乘法可以由移位电路和加法器完成。计算

    2024年02月10日
    浏览(42)
  • 【FPGA】Verilog:BCD 加法器的实现 | BCD 运算 | Single-level 16 bit 超前进位加法器 | 2-level 16-bit 超前进位加法器

    0x00 BCD 运算 在 BCD 中,使用4位值作为操作数,但由于只表示 0 到 9 的数字,因此只使用 0000 到 1001 的二进制数,而不使用 1010 到 1111 的二进制数(don\\\'t care)。 因此,不能使用常规的 2\\\'complement 运算来计算,需要额外的处理:如果 4 位二进制数的运算结果在 1010 到 1111 的范围

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包