記述方法
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;
ホーム
もどる
辞書