std_logic
ha una funzione di risoluzione
Non solo std_logic
avere stati più utili oltre 1
e 0
, ha anche una funzione di risoluzione definita.
Una funzione di risoluzione è un concetto di linguaggio VHDL. È una funzione associata a un tipo e determina cosa succede quando più valori di quel tipo vengono applicati a un singolo segnale. La sintassi è:
SUBTYPE std_logic IS resolved std_ulogic;
dov'è std_ulogic
la versione irrisolta (e quindi molto meno utile) di std_logic
.
In particolare, ciò implica cose piacevoli 0
e 1
porta a 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;
Ciò ha un senso intuitivo, poiché comprendiamo X
lo stato in cui più valori incompatibili vengono applicati a un singolo filo.
std_logic
sa anche come risolvere ogni altra possibile coppia di segnali di ingresso secondo una tabella presente sull'LRM.
bit
d'altra parte, non ha una funzione di risoluzione, e se lo avessimo usato nell'esempio sopra, porterebbe a un errore di simulazione su GHDL 0.34.
I possibili valori di std_logic
sono una buona scelta perché sono standardizzati da IEEE 1164 e trattano molti casi d'uso comuni.