VHDL 何时解释

问题描述 投票:0回答:1

这样的代码是否正确,其中输出取决于三个输入信号,但信号 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';
vhdl
1个回答
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 的要点是以最易读的形式编写代码,并让综合工具对方程进行简化 - 如果这是您的第一个方程,那么就这样吧。

© www.soinside.com 2019 - 2024. All rights reserved.