信号代入文


signalで宣言された信号に対する値の代入は信号代入文で行います.信号代入文の基本系は 以下のようになります.

ターゲット < = 波形  ;

また,出力したい信号をある条件に従って切替えて代入する方法として,条件 付き信号代入文と選択信号代入文があります.以下は,7セグメントデコーダ の例です.

条件付き信号代入文の例
        tmp <= "11111100" when din = "0000" else
               "01100000" when din = "0001" else
               "11011010" when din = "0010" else
		...
               "10011110" when din = "1110" else
               "10001110" when din = "1111" else
               "00000000";                        -- 残り全部 

選択信号代入文の例
    with din select
       	tmp <= "11111100" when "0000",
               "01100000" when "0001",
               "11011010" when "0010",
		...
               "10011110" when "1110",
               "10001110" when "1111",
               "00000000" when others;	-- 残り全部 
std_logicタイプでは '0' や '1' の他に'X','U','Z'等が存在するので,これらのパターンに対して全て記述 する必要があります.さもないと,不必要なラッチが合成される可能性があり ます.CADによっては'-'(don't care)や' X'(不定)を使用して回路を小さくす ることが可能です.
さて,信号代入文では信号の遅延を表現することも可能です.遅延指定を含む 信号代入文の基本系は以下のようになります.
ターゲット < =           波形  after 時間を表す式; -- 慣性遅延
ターゲット < = transport 波形  after 時間を表す式; -- 伝播遅延

記述例:100ns 毎に'0'と'1'が変化する例
B <=  '0' after 100ns,
      '1' after 200ns,
      '0' after 300ns,
      '1' after 400ns;

記述例:20nsの慣性遅延を持つ論理積の例
C <=  A and B  after 20ns;

では,慣性遅延と伝播遅延とはどう違うのでしょうか?慣性遅延の場合,遅延 値よりも短いパルスが入力された時は出力に変化が現れません.一方伝播遅 延では,どんなに短いパルスでも出力に伝播されます.例を以下に示します.


出典:長谷川裕恭:VHDLによるハードウェア設計入門,CQ出版社,1995.

関連項目 process文を使用した組合せ回路の記述
信号代入文と変数代入文の違い

つぎは構造化記述について

ホーム もどる 辞書

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