前回はテキストどおりにビット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を計算している。