VHDL加法器

什么是加法器:

在电子学中,加法器(英语:adder)是一种用于执行加法运算的数字电路部件,是构成电子计算机核心微处理器中算术逻辑单元的基础。在这些电子系统中,加法器主要负责计算地址、索引等数据。除此之外,加法器也是其他一些硬件,例如:二进制数乘法器的重要组成部分。
尽管可以为不同计数系统设计专门的加法器,但是由于数字电路通常以二进制为基础,因此二进制加法器在实际应用中最为普遍。在数字电路中,二进制数的减法可以通过加一个负数来间接完成。为了使负数的计算能够直接用加法器来完成,计算中的负数可以使用二补数(补码)来表示,具体的细节可以参考数字电路相关的书籍。
来自搜狗百科
来自搜狗百科

VHDL代码:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity adder is
	port(
		A,B,Cin:in std_logic;
		S,Cout:out std_logic
		);
end adder;
architecture Behavioral of adder is	
	begin
		S <= ((A xor B) xor Cin);
		Cout <=((A xor B) AND Cin) OR (A AND B);
	end Behavioral;

生成对应原理图:
在这里插入图片描述

testbench:


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
 
ENTITY tb_adder IS
END tb_adder;
 
ARCHITECTURE behavior OF tb_adder IS 
  
    COMPONENT adder
    PORT(
         A : IN  std_logic;
         B : IN  std_logic;
         Cin : IN  std_logic;
         S : OUT  std_logic;
         Cout : OUT  std_logic
        );
    END COMPONENT;
    
   --Inputs
   signal A : std_logic := '1';
   signal B : std_logic := '0';
   signal Cin : std_logic := '1';

 	--Outputs
   signal S : std_logic;
   signal Cout : std_logic;

 signal clk,rst:std_logic;
 constant clk_period : time := 10 ns;
 
BEGIN

   uut: adder PORT MAP (
          A => A,
          B => B,
          Cin => Cin,
          S => S,
          Cout => Cout
        );

   clk_process :process
   begin
		clk <= '0';
		wait for clk_period/2;
		clk <= '1';
		wait for clk_period/2;
   end process;
 
   stim_proc: process
   begin		
		rst<='0';
  		wait for 10 ns;
   		 rst<='1';
     	 wait;
   end process;

END;

使用modelsim进行仿真,波形如下:
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值