std_logic ist die sogenanne "resolved" version von std_ulogic.
(u steht für unresolved).
Unresolved signale kann man nur in einem einzigen Prozess zuweisen.
Wenn man unresolved Signale aus mehreren Prozessen zuweist, dann gibt es
einen Konflikt, der bei nicht aufgelöst werden kann -> eben
"unresolved".
Bei resolved Signalen wie std_logic wird der resultierende Wert anhand
einer Tabelle bestimmt. Dies wird bei der Simulation von Bus-signalen
benötigt.
Ein Gerät will z.B. '1' auf den Bus schreiben, das andere Gerät '0' ->
die Tabelle ergibt ein 'X', damit man sieht, hier stimmt etwas nicht.
Resolved signale werden im Prinzip nur für die Simulation benötigt.
Innerhalb eines synthetisierbaren Designs sollte man niemals aus
mehreren Prozessen das selbe Signal setzen. Beim Compiler gibt es meist
eine Einstellung, ob er in diesem Fall überhaupt einen Fehler generieren
soll, oder ob mittels einer ODER oder UND Funktion das resultierende
Signal berechnet wird.
Grüße
Klaus