在VHDL中,为什么:
NOT 'Z' = 'X'
其中Z为高阻抗且X未知(参见下面的std_logic信号类型)。
上下文:这仅适用于VHDL。我得到了一个考试问题,其中一个'Z'信号是通过一个逆变器发出的,这就产生了'X'。我不明白为什么会这样,为什么答案根本就不是'Z'。
'U': uninitialized. (signal hasn't been set yet)
'X': unknown (impossible to determine this value/result)
'0': logic 0
'1': logic 1
'Z': High Impedance (signal source when that source makes no effective contribution to the resolved value of the signal)
'W': Weak unknown signal (can't tell if it should be 0 or 1)
'L': Weak signal that should probably go to 0
'H': Weak signal that should probably go to 1
'-': Don't care
答案 0 :(得分:3)
(我本来是这个评论,但我不能)在你所说的内容中,如果逆变器(或任何组件)的输入是'Z'(驱动高阻抗),您对输出的期望是什么?结果必须属于std_logic信号的定义值集。
如果没有对变频器的输入驱动值(即,只有一个信号驱动输入,并且它是'Z'),模拟器将无法解析输入值,从而导致未知输出('X')。
修改强>:
正如user1155120在链接的文档中指出的那样,行为是由于std_logic_1164-body中声明的“not_table”而发生的,该状态指出了以下映射:
-- truth table for "not" function
constant not_table : stdlogic_1d :=
-- -------------------------------------------------
-- | U X 0 1 Z W L H - |
-- -------------------------------------------------
('U', 'X', '1', '0', 'X', 'X', '1', '0', 'X');