在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
我会对此发表评论,但我不能) 在你所说的上下文中,如果逆变器(或任何组件)的输入是"Z"(驱动高障碍),你期望输出是什么?结果必须在std_logic信号的定义值集范围内。
如果逆变器的输入端没有驱动任何值(即只有一个信号驱动输入,它是"Z"),则模拟器将无法解析输入值,从而导致未知输出("X")。
编辑:
正如user1155120在链接的文档中指出的那样,该行为是由于std_logic_1164正文中声明的"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');