基于FPGA的任意位宽乘法器VHDL代码Quartus仿真

这篇具有很好参考价值的文章主要介绍了基于FPGA的任意位宽乘法器VHDL代码Quartus仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

名称:基于FPGA的任意位宽乘法器VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

任意位宽乘法器

设计一个任意位宽乘法器,通过可调参数N,可以配置为任意位宽,N可以自由修改

可调参数N定义如下:

N : INTEGER := 16--N位乘法器,N可以自由修改,默认为16位

1. 工程文件

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

2. 程序文件

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

3. 程序编译

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

4. RTL图

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

5. Testbench

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

6. 仿真图

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

基于FPGA的任意位宽乘法器VHDL代码Quartus仿真,fpga开发

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
ENTITY Multiplier_nbit IS
   GENERIC (
      N             : INTEGER := 16--N位乘法器,N可以自由修改,默认为16位
   );
   PORT (
      mult_A        : IN STD_LOGIC_VECTOR(N - 1 DOWNTO 0);--mult_A是乘数,mult_B是被乘数
      mult_B        : IN STD_LOGIC_VECTOR(N - 1 DOWNTO 0);--mult_A是乘数,mult_B是被乘数
      clk           : IN STD_LOGIC;--时钟
      start         : IN STD_LOGIC;--start高电平时输入乘数
      Done          : OUT STD_LOGIC;--乘积计算完成
      mult_product  : OUT STD_LOGIC_VECTOR(2 * N - 1 DOWNTO 0)--乘积
   );
END Multiplier_nbit;
ARCHITECTURE behave OF Multiplier_nbit IS
   
   SIGNAL mult_product_buf : STD_LOGIC_VECTOR(2 * N - 1 DOWNTO 0) := "00000000000000000000000000000000";
   TYPE State_type IS (INIT, ADD, SHIFT);  -- 定义状态
   SIGNAL state : State_Type:=INIT;    -- 创建信号--初始状态为INIT
   SIGNAL mult_B_buf       : STD_LOGIC_VECTOR(2 * N - 1 DOWNTO 0) := "00000000000000000000000000000000"; --临时变量
   SIGNAL Count            : INTEGER := 0;
BEGIN
   
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         CASE state IS
            WHEN INIT =>
               IF (start = '1') THEN
                  state <= ADD;--start有效跳转到下一个状态ADD
                  mult_B_buf(N - 1 DOWNTO 0) <= mult_B;--取乘数
                  mult_B_buf(2 * N - 1 DOWNTO N) <= "0000000000000000";--临时变量的高16位置0
               ELSE
                  mult_product_buf <= "00000000000000000000000000000000";
                  Count <= 0;
                  Done <= '0'; --运算未完成
                  state <= INIT;--初始状态
               END IF;
源代码

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

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

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

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

相关文章

  • FPGA中除法器IP核乘法器IP核使用

    1.除法器IP核有两种,3.0是最大支持32bit的被除数除数;4.0是最大支持64bit的被除数除数;研究电机时需要计算步数,都仅仅需要32bit因此选择3.0; 2.有两种类型 (1)remainder 余数 (2)fractional:小数 (3)dividend:被除数 (4)divisior: 除数 (5)quotient : 商 选择无符号数据,余

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

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

    2024年02月10日
    浏览(31)
  • 基2-booth乘法器原理及verilog代码

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

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

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

    2024年02月06日
    浏览(44)
  • 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日
    浏览(29)
  • verilog编程之乘法器的实现

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

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

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

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

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

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

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

    2024年01月17日
    浏览(32)
  • 基于FPGA的通用电子密码锁VHDL代码Quartus仿真

    名称:基于FPGA的通用电子密码锁VHDL代码Quartus仿真(文末获取) 软件:Quartus 语言:VHDL 代码功能: 电子密码锁要求 (1)如果按下数字键,第-个数字会从显示器的最右端开始显示,此后每新按一个数字时,显示器上的数字必须左移一格,以便将新的数字显示出来。 (2)假如要更

    2024年03月22日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包