std_logic
имеет функцию разрешения
Мало того, что std_logic
есть более полезные состояния , кроме 1
и 0
, он также имеет функцию разрешения определена.
Функция разрешения - это концепция языка VHDL. Это функция, которая связана с типом, и она определяет, что происходит, когда несколько значений этого типа применяются к одному сигналу. Синтаксис:
SUBTYPE std_logic IS resolved std_ulogic;
где std_ulogic
неразрешенная (и, следовательно, гораздо менее полезная) версия std_logic
.
В частности, это подразумевает такие приятные вещи, как 0
и 1
приводит к X
:
library ieee;
use ieee.std_logic_1164.all;
entity std_logic_tb is
end std_logic_tb;
architecture behav of std_logic_tb is
signal s0 : std_logic;
begin
s0 <= '0';
s0 <= '1';
process
begin
wait for 1 ns;
assert s0 = 'X';
wait;
end process;
end behav;
Это имеет интуитивный смысл, так как мы понимаем, X
что это состояние, когда несколько несовместимых значений применяются к одному проводу.
std_logic
также знает, как разрешить каждую другую возможную пару входных сигналов в соответствии с таблицей, присутствующей в LRM.
bit
с другой стороны, не имеет функции разрешения, и если бы мы использовали ее в приведенном выше примере, это привело бы к ошибке симуляции на GHDL 0.34.
Возможные значения std_logic
являются хорошим выбором, потому что они стандартизированы IEEE 1164 и имеют дело со многими распространенными случаями использования.