use*_*465 5 hardware if-statement vhdl
有人可以解释为什么编写VHDL时的黄金法则是if-then-else语句必须在一个进程中.是因为在流程中,语句是按顺序执行的,而在外部则不是.
Mar*_*son 10
简单的答案是"因为这就是语言的语法"!
如果您想从某些选项中选择代码不在进程中,您可以执行以下操作:
sig <= a when sel = 1 else
b when sel = 2 else
default_value;
Run Code Online (Sandbox Code Playgroud)
要么
with sel select
sig <= a when 1,
b when 2,
default_value when others;
Run Code Online (Sandbox Code Playgroud)
我可能是错的,但我认为 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;
Run Code Online (Sandbox Code Playgroud)
进程外部的等效条件信号分配为:
F <= A when C0 = '1' else B when C1 = '1' else C;
G <= C when C0 = '1' else B when C1 = '1' else A;
Run Code Online (Sandbox Code Playgroud)