【发布时间】:2012-09-17 02:58:02
【问题描述】:
有人可以解释为什么编写 VHDL 时的黄金法则是 if-then-else 语句必须在一个进程中。是不是因为在进程内部,语句是按顺序执行的,而在外部则不是。
【问题讨论】:
标签: hardware vhdl if-statement
有人可以解释为什么编写 VHDL 时的黄金法则是 if-then-else 语句必须在一个进程中。是不是因为在进程内部,语句是按顺序执行的,而在外部则不是。
【问题讨论】:
标签: hardware vhdl if-statement
简单的答案是“因为这就是语言的语法”!
如果您想在流程中选择代码不的某些选项,您可以这样做:
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;
【讨论】:
when - else 并且在 when 之后仍然使用多个信号。如sig <= a when (OPCODE = "000" and EN = "1"
我可能是错的,但我认为 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;
【讨论】:
if else 语句:-
Syntax:
if then
statements
...
[
elsif then
statements
...
else
statements
...
]
endif;
更多信息请查看this
【讨论】: