В VHDL, почему:VHDL: почему НЕ 'Z' = 'X'
NOT 'Z' = 'X'
, где Z представляет высокоимпедансное состояние, а Х неизвестна (см 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
Хорошо, как насчет того, чтобы сделать ваш вопрос менее неясным. 'NOT 'Z' = 'X'' является выражением, возвращающим значение BOOLEAN TRUE. Что ты спрашиваешь? Почему это ИСТИНА? Потому что литералы перечисления не совпадают. (5.2.2.1 * Каждый литерал перечисления дает другое значение перечисления. *, 9.2.3 Реляционные операторы * Оператор равенства возвращает значение TRUE, если оба операнда равны и в противном случае возвращает значение FALSE. *). Добавьте контекст для тех, кто мог ответить. – user1155120
Вы, кажется, не понимаете. Это применимо только к VHDL. Мне был задан вопрос об экзамене, когда сигнал «Z» был отправлен на инвертор и дал «X», который я не понимаю, почему. Я добавил это разъяснение в свой вопрос - спасибо за ваш совет. – Psi
Вы правы, я не понял, ваш вопрос непонятен. Если вы добавите контекст из своего последнего комментария в вопрос и посмотрите в not_table в вышеупомянутом файле std_logic_1164-body.vhdl, вы увидите, что не «Z» действительно «X». Обратите внимание, что только «0», «1», «L» и «H», которые представляют двоичные значения, не преобразуются в «X» при инвертировании. Что такое унарный логический оператор, не имеющий * эффективного вклада * или * форсирующего * или * слабого * металогического значения? Вы можете предположить, что выход инвертора принудительно, «X» *, для которого модель не может различать логические уровни * (16.8.2.2). – user1155120