半加算器の記述が完成したので,これを用いて全加算器の記述の方法を説明し ます.すなわち,構造モデルの設計です.その構造は,信号と,その信号に接 続するサブ・コンポーネントのポートを宣言することによって記述されます. 以下に示すVHDLは2つの半加算器と1つのORゲートによって全加算器を記述して います(これに対応する図を<図:全加算器>に示します).
図:全加算器
エンティティ宣言部は半加算器と同様にして記述します.一方, アーキテクチャ本体の記述に半加算器の記述では見られなかったものがあります. これは,構造モデルを表すための記述が追加されているからです.
-- -- 全加算器 ( 入力 : A,B,Cin 出力 : S,Cout ) -- -- ライブラリ宣言 library IEEE; use IEEE.std_logic_1164.all; -- エンティティ宣言 entity FullAdder is port ( A: in std_logic; B: in std_logic; Cin: in std_logic; S: out std_logic; Cout: out std_logic ); end FullAdder; -- アーキテクチャ本体 architecture FullAdder_Body of FullAdder is -- コンポーネント宣言 component HalfAdder port ( A: in std_logic; B: in std_logic; S: out std_logic; C: out std_logic ); end component; -- コンフィギュレーション定義 for HF1, HF2: HalfAdder use entity work.HalfAdder(HalfAdder_Body); signal Temp_S, Temp_C1, Temp_C2 : std_logic; begin -- コンポーネント・インスタンス文 HF1: HalfAdder port map(A, B, Temp_S, Temp_C1); HF2: HalfAdder port map(Temp_S, Cin, S, Temp_C2); Cout <= Temp_C1 or Temp_C2; end FullAdder_Body;
はじめに,このアーキテクチャ本体で用いるコンポーネントを宣言します(ロー カル・コンポーネント宣言).すなわち,半加算器を宣言するのです.そして, その直後のコンフィギュレーション定義で,このアーキテクチャ本体では半加 算器をHF1, HF2という名前で用いることを宣言しています.次に,アーキテク チャ本体で用いる信号線(参照: オブジェクトクラス)の名前を宣言します.ここでは,最初の半加算器 (HF1)の和をTemp_S,2つの半加算器から出力される桁上げ信号をそれぞれ Temp_C1, Temp_C2として用いるために宣言しています.
これで準備が整いました.begin文からは各コンポーネントの接続関係が記述 されています.各コンポーネントの接続を記述するには,コンポーネント・イ ンスタンス文を用います.すなわち,<図:全加算器(b)>に示す接続関係をVHDL で記述することになります.それぞれのコンポーネント・インスタンス文には, コロン(:)によって区切られた識別子(HF1,HF2)によってラベル(これは,use文 で名付けられた半加算器の名前です)が付けられています.さらに,port map によって必要な信号線の接続が記述されています(これを結合リストといいま す).例えば,HF1という名前でラベル付けされた半加算器のポート( A,B,S,C) には,それぞれ,A,B,Temp_S,Temp_C1の信号線が接続していることを示してい ます(図と比較してみてください).
次へ進む ( 構造化記述,コンポーネント宣言,コンフィギュレーション定義,
コンポーネントインスタンス文 )