Was ist der Zweck des `std_logic` Aufzählungstyp in VHDL?
Was ist der Zweck der std_logic
Aufzählungstyp?
'U': uninitialized. This signal hasn't been set yet.
'X': unknown. Impossible to determine this value/result.
'0': logic 0
'1': logic 1
'Z': High Impedance
'W': Weak signal, can't tell if it should be 0 or 1.
'L': Weak signal that should probably go to 0
'H': Weak signal that should probably go to 1
'-': Don't care.
InformationsquelleAutor newprint | 2012-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
std_logic ist im Grunde nur ein Draht oder etwas. Sie können mit logischen Operatoren (und, oder, xor, etc.) auf Sie. Bei der Simulation eines design-ich glaube, ich habe nur gesehen, 'X', '0' oder '1'. Offensichtlich willst du '0' oder '1'. Ein 'X' zeigt an, dass der Wert unbekannt ist (evtl. mit nichts verbunden, oder es liegt eine Störung im signal). Auch std_logic_vector verwendet werden kann für Signale, die brauchen, um mehr als 1 bit Breite. Ich bin mir nicht sicher, ob deine Frage damit beantwortet ist...
InformationsquelleAutor Robert Harris
InformationsquelleAutor BennyBarns
Den
std_logic
geben, wurde durch die IEEE-1164-standard, da eine genaue Vertreter von einem einzigen Draht oder bit. Der VHDL-Sprache selbst nicht eine einzige-bit-Typ, der ist robust genug, um zu repräsentieren "echte" Logik. Das heißt, zur Darstellung aller möglichen Zustände modelable und synthetisierbare Logik in einer modernen programmable logic device.Früh in der Geschichte von VHDL, verschiedene Entwickler wurden im wesentlichen authoring Ihre eigenen Versionen von
std_logic
aus der Notwendigkeit zu stellen, die Reale Signale. IEEE-1164 eingeführt, die standardisierte Logik geben, in einer Anstrengung, Verbesserung der Interoperabilität von code von verschiedenen Entwicklern für die verschiedenen Architekturen.Den wikipedia-Artikel, für die der standard bietet eine prägnante Beschreibung:
http://en.wikipedia.org/wiki/IEEE_1164
InformationsquelleAutor Ryan
Zusätzlich zu den Antworten, die bereits geleistet wurde, ich denke, es ist erwähnenswert, dass STD_LOGIC ist, was man eine Art gelöst, das bedeutet, dass es eine Priorität des Signals. Zum Beispiel, 1 und 0 haben eine höhere Priorität auf H oder L, so wird ein signal Gefahren wurde mit einem L und 1 gleichzeitig würde der Ausgang high (logisch 1), weil 1 hat eine höhere Priorität als L.
Es ist einfach so passiert, dass die Bestellung, die Sie aufgelistet haben, die Werte, die in Ihrer Frage ist die Reihenfolge der Priorität, die einzige Einschränkung ist, dass einige Werte haben gleiche Priorität und so, wenn man Sie fahren mit beiden Signalen gibt es keinen klaren "Gewinner", so das Ergebnis der nächsten "unbekannten" - Zustand ('X' oder 'W') oben in der Hierarchie, ein einfaches Beispiel ist, wenn ein signal angetrieben wird, die mit einem 'H' und ein 'L', das Ergebnis wird mit 'W'.
Die auflösungstabelle für STD_LOGIC sieht ungefähr so aus:
InformationsquelleAutor Gipsy Danger
std_logic
hat eine Auflösung FunktionNicht nur
std_logic
mehr nützlich Staaten neben1
und0
es auch eine Auflösung Funktion definiert.Einer Auflösung Funktion ist eine VHDL-Sprache Konzept. Es ist eine Funktion, die zu einem Typ, und er bestimmt, was passiert, wenn mehrere Werte dieses Typs angewendet werden, um ein einzelnes signal. Die syntax ist:
wo
std_ulogic
ist die ungelöste (und daher viel weniger nützliche) version vonstd_logic
.Insbesondere bedeutet dies die schönen Dinge wie
0
und1
führt zuX
:Dies macht intuitiv Sinn, wie wir Sie verstehen
X
zu dem Zustand, wo mehrere inkompatible Werte angewendet werden, um einen einzelnen Draht.std_logic
weiß auch, wie es zu beheben, alle anderen möglichen paar-input-Signale gemäß einem Tisch vorhanden, auf dem LRM.bit
auf der anderen Seite, nicht haben eine Auflösung Funktion, und wenn wir es auf dem Beispiel oben, es würde dazu führen, dass ein simulationsfehler auf GHDL 0.34.Sind die möglichen Werte
std_logic
sind eine gute Wahl, denn Sie sind standardisiert durch IEEE 1164 und befassen sich mit viele gängige Anwendungsfälle.InformationsquelleAutor Ciro Santilli 新疆改造中心 六四事件 法轮功
Habe ich beobachtet dieses Verhalten in der Xilinx - simulator ISim:
Ist es nicht möglich, Variablen zu untersuchen, die in ISim, aber ich nehme an, die gleichen Regeln gelten.
guter Punkt, meine Erfahrung ist nur mit Xilinx FPGAs, wo diese nicht synthetisiert werden in einer sinnvollen Art und Weise.
InformationsquelleAutor Marcus10110