std_logic tiene una función de resolución
No solo std_logic tiene estados más útiles además de 1 y 0 , también tiene una función de resolución definida.
Una función de resolución es un concepto de lenguaje VHDL. Es una función que está asociada a un tipo y determina lo que sucede cuando se aplican varios valores de ese tipo a una sola señal. La sintaxis es:
SUBTYPE std_logic IS resolved std_ulogic;
donde std_ulogic es la versión no resuelta (y por lo tanto mucho menos útil) de std_logic .
En particular, esto implica cosas agradables como 0 y 1 lleva 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;
Esto tiene un sentido intuitivo, ya que entendemos que X es el estado donde se aplican múltiples valores incompatibles a un solo cable.
std_logic también sabe cómo resolver cada otro par posible de señales de entrada según una tabla presente en el LRM.
bit por otro lado, no tiene una función de resolución, y si lo hubiéramos usado en el ejemplo anterior, daría lugar a un error de simulación en GHDL 0.34.
Los valores posibles de std_logic son una buena opción porque están estandarizados por IEEE 1164 y tratan con muchos casos de uso.