std_logic
ma funkcję rozdzielczości
Nie tylko std_logic
mają więcej użytecznych stanów oprócz 1
a 0
, ma też funkcję zdefiniowaną rozdzielczości.
Funkcja rozdzielczości to koncepcja języka VHDL. Jest to funkcja powiązana z typem, która określa, co się stanie, gdy wiele wartości tego typu zostanie zastosowanych do pojedynczego sygnału. Składnia jest następująca:
SUBTYPE std_logic IS resolved std_ulogic;
gdzie std_ulogic
jest nierozwiązana (a przez to znacznie mniej przydatna) wersja std_logic
.
W szczególności oznacza to miłe rzeczy 0
i 1
prowadzi do 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;
Ma to intuicyjny sens, ponieważ rozumiemy X
stan, w którym wiele niezgodnych wartości jest stosowanych do jednego drutu.
std_logic
wie także, jak rozwiązać każdą inną możliwą parę sygnałów wejściowych zgodnie z tabelą znajdującą się na LRM.
bit
z drugiej strony nie ma funkcji rozdzielczości, a gdybyśmy użyli jej w powyższym przykładzie, doprowadziłoby to do błędu symulacji na GHDL 0.34.
Możliwe wartości std_logic
są dobrym wyborem, ponieważ są znormalizowane przez IEEE 1164 i dotyczą wielu typowych przypadków użycia.