構造化記述


階層的に設計された回路では,上位階層から下位階層の回路を呼出すように記 述します.このような記述を構造化記述と呼び,コンポーネント宣言,コンフィギュ レーション定義,コンポーネントインスタンス文を用いて記述します.

記述方法

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;

次は,signal 等の宣言を行うための記述法について説明します.

次へ進む (オブジェクトクラス )



ホーム もどる 辞書

This is my e-mail address:
arch_www < www@cs.kumamoto-u.ac.jp >
Copyright (C) KITE Microprocessor Project, 1996