オブジェクトクラス


VHDLには以下に示す3つのオブジェクトクラスがあります.


信号宣言(signal)
signal 信号名 {, 信号名} : データタイプ 信号種別 { := 初期値 } ;
回路の配線イメージに相当します.architecture, package, entity 内で宣言 でき,その内部でグローバルです.信号代入文 `< =' で代入します.代入され た値は同時処理を行うために直ちに代入されません.代入の評価と実際の代入 は別々に行われます.

信号種別には,``bus'' か ``register'' を指定することができます.このキー ワードを記述することにより,その信号の値を決定する出力ドライバを切断す ることができます.なお,``register'' ではドライバの出力が切断したとき 切断まえの値をキープします.一方``bus''ではキープしません.


宣言例
signal TMP1 : std_logic := '0';
signal TMP2 : std_logic_vector( 7 downto 0 ) := "00000000";
signal TMP3 : std_logic_vector( 0 to 7 );
signal TMP4 : std_logic bus;

変数宣言(variable)
variable 変数名 {, 変数名} : データタイプ { := 初期値 } ;
回路の配線等に直接関るものではなく,ハードウェアの動作を高いレベルでモ デル化するような場合に使用します.変数は process, function, procedure 内で宣言でき,その内部でしか参照できないローカルなものです.変数代入文 `:=' で代入します.代入された値は直ちに変数へ代入され次の行では変更後 の値を使用できます.
宣言例
variable TMP1 : std_logic := '0';
variable TMP2 : std_logic_vector( 7 downto 0 ) := "00000000";
variable TMP3 : std_logic_vector( 0 to 7 );

定数宣言(constant)
constant 定数名  : データタイプ { := 初期値 } ;
architecture, package, entity, process, function, procedure 内で宣言で きるグローバルな定数です.値は宣言時に一度しか定義できません.
宣言例
constant ZERO  : std_logic := '0';
constant ZERO8 : std_logic_vector( 7 downto 0 ) := "00000000";

信号代入文と変数代入文の違い 信号代入文と変数代入文とでは,以下のように振る舞いが異なります.
例(1)                     例(2)
process(A, B, C, D)          process(A, B, C)
begin                        variable D : std_logic_vector( 3 downto 0 );
  D < = A;                    begin
  X < = B + D;                  D := A;
  D < = C;                      X < = B + D;
  Y < = B + D;                  D := C;
end process;                   Y < = B + D;
                             end process;

結果                         結果
  X < = B + C;                  X < = B + A;
  Y < = B + C;                  Y < = B + C;
出典:長谷川裕恭:VHDLによるハードウェア設計入門,CQ出版社,1995.

関連項目
以上が,VHDLによる記述法の基礎となります. 簡単にまとめてみましょう.

次へ進む ( まとめ−基本的なVHDLの記述法− )



ホーム もどる 辞書

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