7

VHDLを書くときの黄金律が、if-then-elseステートメントがプロセス内になければならないということである理由を誰かが説明できますか?プロセスの内部ではステートメントが順番に実行され、外部では実行されないためです。

4

3 に答える 3

12

簡単な答えは、「それが言語の構文だからです」です!

プロセスにないコードでいくつかのオプションから選択したい場合は、次のことができます。

sig <= a when sel = 1 else
       b when sel = 2 else 
       default_value;

また

with sel select
   sig <= a when 1,
          b when 2,
          default_value when others;

マルチプレクサの多くの例については、こちらを参照してください

于 2012-09-17T10:19:47.113 に答える
0

私は間違っているかもしれませんが、if ステートメントがプロセス内にある必要がある主な理由は、if ステートメントが複数のシグナルに割り当てられる可能性があるためだと思います。プロセスの外で同じことをしたい場合は、複数の条件信号割り当てを使用します。

例えば:

process(C0, C1, A, B, C) is
begin
  if C0 = '1' then
    F <= A;
    G <= C;
  elsif C1 = '1' then
    F <= B;
    G <= B;
  else
    F <= C;
    G <= A;
  end if;
end process;

プロセス外の同等の条件信号割り当ては次のようになります。

F <= A when C0 = '1' else B when C1 = '1' else C;
G <= C when C0 = '1' else B when C1 = '1' else A;
于 2012-09-17T08:52:07.733 に答える
-1

if else ステートメント :-

Syntax:
if then
statements
...
[
elsif then
statements
...
else
statements
...
]
endif;

詳細については、これを確認してください

于 2013-02-18T07:26:16.220 に答える