std_logic hat eine Auflösungsfunktion
Außerdem gibt es nicht nur std_logicnützlichere Zustände 1und 0auch eine definierte Auflösungsfunktion.
Eine Auflösungsfunktion ist ein VHDL-Sprachkonzept. Es ist eine Funktion, die einem Typ zugeordnet ist und bestimmt, was passiert, wenn mehrere Werte dieses Typs auf ein einzelnes Signal angewendet werden. Die Syntax lautet:
SUBTYPE std_logic IS resolved std_ulogic;
Wo std_ulogicist die ungelöste (und damit viel weniger nützliche) Version von std_logic.
Dies impliziert insbesondere schöne Dinge wie 0und 1führt zu 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;
Dies ist intuitiv sinnvoll, da wir verstehen X, dass mehrere inkompatible Werte auf einen einzelnen Draht angewendet werden.
std_logic weiß auch, wie jedes andere mögliche Paar von Eingangssignalen gemäß einer auf dem LRM vorhandenen Tabelle aufgelöst wird.
bit Auf der anderen Seite gibt es keine Auflösungsfunktion, und wenn wir sie im obigen Beispiel verwendet hätten, würde dies zu einem Simulationsfehler bei GHDL 0.34 führen.
Die möglichen Werte von std_logicsind eine gute Wahl, da sie durch IEEE 1164 standardisiert sind und viele gängige Anwendungsfälle behandeln.