这样的代码是否正确,其中输出取决于三个输入信号,但信号 C 在每种情况下都不相关?所以我不会在每种情况下都指定这个 C。
我的意思是,例如,当 A 和 B = 0 时满足第一种情况,然后 Y 上将有 X1,或者这是否被视为最后一个
else
并且输出将是 '0'
。
Y <= X1 when (A = '0' and B = '0') else
X1 when (A = '0' and B = '1') else
X2 when (A = '1' and B = '1' and C = '0') else
X1 when (A = '1' and B = '1' and C = '1') else
X1 when (A = '1' and B = '0') else
'0';
是的。
你也可以将其重写为:
Y <= X1 when (A = '0' or B = '0' or C = '1') else
X2 when C = '0' else
'0';
我可能会忽略将“X”条件映射到“0”并简单地写:
Y <= X1 when (A = '0' or B = '0' or C = '1') else X2 ;
如果您担心 RTL 中的 X,您可以这样做:
assert not (is_X(A) or is_X(B) or is_X(C)) report "found an X on an input" severity warning ;
也就是说,VHDL 的要点是以最易读的形式编写代码,并让综合工具对方程进行简化 - 如果这是您的第一个方程,那么就这样吧。