全加算器(コンポーネント使用)

掲載ページ:60、リスト番号:4.2

【VHDL記述】


library IEEE;

use IEEE.std_logic_1164.all;


entity FULL_ADDER is

port ( A, B, CIN : in std_logic;

SUM, COUT : out std_logic );

end FULL_ADDER;


architecture STRUCTURE of FULL_ADDER is


-- HALF_ADDERのコンポーネント宣言

component HALF_ADDER

port ( A, B : in std_logic;

S, C : out std_logic );

end component;


signal C1_C, C1_S, C2_C : std_logic;


begin

-- コンポーネント・インスタンス文

COMP1 : HALF_ADDER port map ( A, B, C1_S, C1_C );

COMP2 : HALF_ADDER port map ( C1_S, CIN, SUM, C2_C );

COUT <= C1_C or C2_C;

end STRUCTURE;

【Verilog-HDL記述】


module FULL_ADDER (

A, B, CIN,

SUM, COUT

);


input A, B, CIN;

output SUM, COUT;


wire C1_C, C1_S, C2_C;


// モジュール呼び出し

HALF_ADDER COMP1 ( A, B, C1_S, C1_C );

HALF_ADDER COMP2 ( C1_S, CIN, SUM, C2_C );

assign COUT = C1_C | C2_C;

endmodule

【合成結果(コンポーネントをそのまま表示した結果)】

【合成結果(コンポーネントの中身を表示した結果)】

【合成結果(コンポーネントを展開して最適化をした結果)】