使用FPGA实现逐级进位加法器

这篇具有很好参考价值的文章主要介绍了使用FPGA实现逐级进位加法器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

逐级进位加法器就是将上一位的输出作为下一位的进位输入,依次这样相加。下面以一个8位逐级进位加法器给大家展示。

我增加了电路结构,应该很容易理解吧。

下面我也列举了一位加法器,可以看下。


电路结构

使用FPGA实现逐级进位加法器,FPGA学习,fpga开发


设计文件

1位加法器

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity adder1 is
    port (a,b,cin : in std_logic;
            sum,s : out std_logic);
end adder1;
--architecture
architecture adder1 of adder1 is
begin
    sum <= a xor b xor cin;
    s <= (a and b) or (a and cin) or (b and cin);
end adder1;


8位逐级进位加法器

library ieee;
use ieee.std_logic_1164.all;
entity adder2 is 
    generic (length : integer := 8); 
    port (a,b : in std_logic_vector(length-1 downto 0);
            cin : in std_logic;
            s : out std_logic_vector(length-1 downto 0);
            output : out std_logic);
end entity;
architecture adder2 of adder2 is 
    begin
        process(cin,a,b)
            variable carry :std_logic_vector(length downto 0);
            begin
                carry(0):=cin;
                for i in 0 to length-1 loop
                    s(i) <= a(i) xor b(i) xor carry(i);
                    carry(i+1) := (a(i) and b(i)) or (a(i) and carry(i+1)) or (b(i) and carry(i+1));
                end loop;
            output <= carry(length);
        end process;
end architecture;


测试文件

1位加法器

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity tb_adder1 is

end tb_adder1;
architecture adder1 of tb_adder1 is
    component adder1 is
        port (a,b,cin : in std_logic;
            sum,s : out std_logic);
    end component;
    signal a,b,cin,sum,s :std_logic;
    begin 
        dut : adder1 
        port map (a,b,cin,sum,s);
        process
            begin
                a<='0';
                b<='1';
                cin<='1';
                wait for 10ns;
                cin<='0';
                wait for 10ns;
                a<='1';
                b<='1';
                wait for 10ns;
        end process;
end architecture adder1;


8位逐级进位加法器

library ieee;
use ieee.std_logic_1164.all;
entity tb_adder2 is 
    generic (length : integer := 8); 
end entity;
architecture adder2 of tb_adder2 is
    component adder2 is
        port (a,b : in std_logic_vector(length-1 downto 0);
                cin : in std_logic;
                s : out std_logic_vector(length-1 downto 0);
                output : out std_logic);
    end component adder2;
    signal a,b,s : std_logic_vector(length-1 downto 0):= "00000000";
    signal cin,output : std_logic := '0'; 
    begin
    dut : adder2
        port map(
                    a => a,
                    b => b,
                    cin => cin,
                    s => s,
                    output => output);
    process
        begin 
            a <= "01111000";
            b <= "10101100";
            cin <= '1';
            wait for 20ns;
            cin <= '0';
            a <= "10011000";
            b <= "10100010";
            wait for 20ns;
    end process;
end architecture;


仿真结果

1位加法器

使用FPGA实现逐级进位加法器,FPGA学习,fpga开发

8位逐级进位加法器

使用FPGA实现逐级进位加法器,FPGA学习,fpga开发


结语

这就是8位逐级进位加法器的全过程了,总体来说还是非常简单的。

有什么问题欢迎大家留言。文章来源地址https://www.toymoban.com/news/detail-856341.html

到了这里,关于使用FPGA实现逐级进位加法器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • FPGA学习笔记(1):使用Verilog实现常见的加法器

    本文使用VerilogHDL实现一些简单的加法器,本人水平有限,希望大佬能够多指证 Quartus Prime(18.0) Modelsim 半加器可以用于计算两个单比特二进制数的和,C表征进位输出,S表述计算的结果。 半加器的真值表 化简以后的逻辑表达式可以表达为: s = a’b+ab’ c = ab Verilog 代码块 全加

    2024年02月09日
    浏览(33)
  • 加法器、半加器、全加器、超前进位加法器

    简单来讲,半加器不考虑低位进位来的 进位值 ,只有两个输入,两个输出。由一个与门和异或门构成. 真值表: 输入 输出 A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 半加器不考虑低位向本位的[进位],因此它不属于[时序逻辑电路],有两个输入端和两个输出。 设加数(输入端)为A、B

    2024年02月02日
    浏览(43)
  • Verilog数字系统设计——带进位的8位加法器

    试分别使用门级原语和always 语句设计带进位的8位加法器,要求编制测试模块对实现的逻辑功能进行完整的测试; 使用门级原语设计时注意先在草稿上做出该加法器的门级设计; 如有余力可以进一步使用门级原语设计出带超前进位链的8位加法器(期末有加分); 实验提交

    2024年02月15日
    浏览(34)
  • Verilog快速入门(8)—— 4bit超前进位加法器电路

    (1) 四选一多路器 (2)异步复位的串联T触发器 (3)奇偶校验 (4)移位运算与乘法 (5)位拆分与运算 (6)使用子模块实现三输入数的大小比较 (7)4位数值比较器电路 (8)4bit超前进位加法器电路 (9)优先编码器电路① (10)用优先编码器①实现键盘编码电路 (11)8线-3线优先编码器 (12)使用8线-3线

    2024年02月04日
    浏览(35)
  • FPGA加法器实现与资源消耗-四位数加法器

    测试在实现半加器和全加器的基础上开始实现多位数的加法器 可以按照一位全加器,然后循环实现多位加法器。 相加正确,功能正确。 可能看不太清,但是基本就是按照与、或、异或进行连接,而且是串行实现的。 分析可知,工具使用两个查找表(SUM[0]_INST_0,SUM[1]_INST_0)实

    2024年02月03日
    浏览(37)
  • FPGA实验一:层次法设计组合电路(加法器)

    目录 一、实验目的 二、实验要求 三、实验代码 四、实验结果及分析

    2024年02月12日
    浏览(32)
  • [FPGA]用Verilog写一个简单三位二进制加法器和减法器

    加法器和减法器是数字电路中的基本组件,它们可以对二进制数进行算术运算。加法器可以将两个或多个二进制数相加,得到一个和和一个进位。减法器可以将两个二进制数相减,得到一个差和一个借位。加法器和减法器可以用来实现更高级的运算,例如乘法、除法、移位等

    2024年02月04日
    浏览(36)
  • 【FPGA & Verilog】4bitBCD码加法器+7段数码管

    顶层文件: module add_bcd( input [9:0]I_1, input [9:0]I_0, input clk, input rst_n, output [7:0]seg, output [7:0]value, output select, output  [3:0]encode_1, output  [3:0]encode_0, output  [3:0]high_bit, output  [3:0]low_bit ); assign value ={high_bit,low_bit}; encoder encoder_inst2( .in(I_1), .out(encode_1) ); encoder encoder_inst1( .in(I_0), .out(e

    2024年01月18日
    浏览(30)
  • 数字IC经典电路(1)——经典加法器的实现(加法器简介及Verilog实现)

    加法器是数字系统最基础的计算单元,用来产生两个数的和,加法器是以二进制作运算。负数可用二的补数来表示,减法器也是加法器,乘法器可以由加法器和移位器实现。加法器和乘法器由于会频繁使用,因此加法器的速度也影响着整个系统的计算速度。对加法器的设计也

    2024年02月14日
    浏览(38)
  • 【FPGA】Verilog:模块化组合逻辑电路设计 | 半加器 | 全加器 | 串行加法器 | 子模块 | 主模块

    前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载 示例:加法器   ​ 功能特性: 采用 Xilinx Artix-7 XC7A35T芯片  配置方式:USB-JTAG/SPI Flash 高达100MHz 的内部时钟速度  存储器:2Mbit SRAM   N25Q064A SPI Flash(样图旧款为N25Q032A) 通用IO:Switch :

    2024年02月15日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包