記述方法
architecture アーキテクチャ名 of エンティティ名 is -- コンポーネント宣言 component コンポーネント名 ポート文 ... end component; ... -- コンフィギュレーション定義 for ラベル : コンポーネント名 use entity ライブラリ名.エンティティ名(アーキテクチャ名); ... begin -- コンポーネントインスタンス文 ラベル : コンポーネント名 port map( 信号リスト ); ... end アーキテクチャ名 ;
コンポーネント宣言はこの階層から呼出す階層のコンポーネントが使用する信 号ポートを明示します.ちょうど,entity 宣言の entity キーワードを component に置換えたような記述となります.
コンフィギュレーション定義では,コンポーネント宣言で指定したコンポーネ ントが,何のライブラリに何というエンティティ名とアーキテクチャ名で定義 してあるかを関連付けます.
そして,コンポーネントインスタンス文により下位階層の部品を呼出します.
以下に半加算器を使用した全加算器の構造化記述例を示します.
-- -- 全加算器 ( 入力 : 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_C1,Temp_C2,Temp_S : 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;