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 回答