VHDLで4ビット加算器を作る / 全ビットを全加算器にしてみる

前回はテキストどおりにビット0だけを半加算器にしたが、今度は全ビットを全加算器にしてみる。

8LEを消費した。

library IEEE;
use IEEE.std_logic_1164.all;

-- 4ビット加算器の入出力を宣言する。
entity adder_4bit is
    port(
        AIN : in  std_logic_vector(3 downto 0);
        BIN : in  std_logic_vector(3 downto 0);
        CIN : in  std_logic;
        SUM : out std_logic_vector(4 downto 0)
    );
end adder_4bit;


-- 4ビット加算器の回路を記述する。
architecture RTL of adder_4bit is

-- 全加算器をコンポーネントとして宣言する。
component full_adder
    port(
        A, B, CI : in  std_logic;
        S, CO    : out std_logic
    );
end component;

-- 内部信号を定義する。
signal CO_TMP0 : std_logic;
signal CO_TMP1 : std_logic;
signal CO_TMP2 : std_logic;

begin
    C1 : full_adder port map(AIN(0), BIN(0), CIN    , SUM(0), CO_TMP0);
    C2 : full_adder port map(AIN(1), BIN(1), CO_TMP0, SUM(1), CO_TMP1);
    C3 : full_adder port map(AIN(2), BIN(2), CO_TMP1, SUM(2), CO_TMP2);
    C4 : full_adder port map(AIN(3), BIN(3), CO_TMP2, SUM(3), SUM(4) );

end RTL;

今、0xC + 0xA = 0b1 0110を計算している。
f:id:ti-nspire:20201220105211j:plain:h300 f:id:ti-nspire:20201220105255p:plain:h300
f:id:ti-nspire:20201220105409p:plain:w655