VHDL:为什么不是"Z"="X"



在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');

相关内容

  • 没有找到相关文章

最新更新