std_logic ha una funzione di risoluzione
Non solo std_logicavere stati più utili oltre 1e 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_ulogicla versione irrisolta (e quindi molto meno utile) di std_logic.
In particolare, ciò implica cose piacevoli 0e 1porta 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 Xlo 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_logicsono una buona scelta perché sono standardizzati da IEEE 1164 e trattano molti casi d'uso comuni.