プロセス文


プロセス文は以下に示すように記述します.
process( センシティビティリスト )
begin
	順次処理文
end;
センシティビティリストに記述された信号が変化するたびにbeginとendで囲ま れた順次処理文を最初から順番に実行し,次にセンシティビティリストの信号 が変化するまで動作を停止します.順次処理文としては,信号代入文,変数代 入文の他にも,``if ... then ... elsif ... else ... end if'' や ``case ... is when ...'' を使用することもできます.

順次処理において同一信号へ別々の値 が2回以上代入される場合

順次処理文は実際には評価と実行のタイミングが異なっているため,以下のよ うに記述されている場合には,最終的に式2で代入される値が残ります.
process( A )
begin
	...
  tmp <= A and "0101"; -- 式1
	...
  tmp <= A and "1010"; -- 式2
	...
end process;

プロセス文による組合せ回路の例 ( caseを使用した例 )
    process(din)
    begin
      case din is
        when "0000" => tmp <= "11111100";
        when "0001" => tmp <= "01100000";
		...
        when "1110" => tmp <= "10011110";
        when "1111" => tmp <= "10001110";
        when others => tmp <= "00000000";	-- 残り全部 
      end case;
    end process;

プロセス文による組合せ回路の例 ( if then elsif end if を使用した例 )

    process(din)
    begin
      if din = "0000" then
	tmp <= "11111100";
      elsif din = "0001" then
	tmp <= "01100000";
		...
      elsif din = "1111" then
	tmp <= "10001110";
      else
        tmp <= "00000000";		-- 残り全部 
      end if;
    end process;

プロセス文による順序回路の例 ( 立上りエッジのD-FlipFlop )

    process( clock )
    begin
      if clock'event clock = '1' then
	Q <= D;
      end if;
    end process;



ホーム もどる 辞書

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