2017-01-17 3 views
1

In VHDL, warum:VHDL: Warum nicht 'Z' = 'X'

NOT 'Z' = 'X' 

wo Z hohe Impedanz ist und X ist nicht bekannt (std_logic Signaltypen siehe unten).

Kontext: Dies gilt nur für VHDL. Ich bekam eine Prüfungsfrage, wo ein "Z" -Signal durch einen Inverter gesendet wurde, und dies ergab "X". Ich verstehe nicht, warum das passiert und warum die Antwort einfach nicht 'Z' ist.

'U': uninitialized. (signal hasn't been set yet) 
'X': unknown (impossible to determine this value/result) 
'0': logic 0 
'1': logic 1 
'Z': High Impedance (signal source when that source makes no effective contribution to the resolved value of the signal) 
'W': Weak unknown 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 
+0

Okay, Wie wäre es, wenn Ihre Frage weniger unklar wäre? 'NOT 'Z' = 'X'' ist ein Ausdruck, der den BOOLEAN-Wert TRUE zurückgibt. Was fragst du? Warum ist es wahr? Weil die Aufzählungsliterale nicht identisch sind. (5.2.2.1 * Jedes Aufzählungsliteral liefert einen anderen Aufzählungswert. *, 9.2.3 Relationale Operatoren * Der Gleichheitsoperator gibt den Wert TRUE zurück, wenn die beiden Operanden gleich sind und andernfalls den Wert FALSE. *). Fügen Sie einen Kontext für diejenigen hinzu, die antworten können. – user1155120

+0

Sie scheinen nicht zu verstehen. Dies gilt nur für VHDL. Ich erhielt eine Prüfungsfrage, bei der ein "Z" -Signal an einen Wechselrichter gesendet wurde und "X" ergab, was ich nicht verstehe. Ich habe diese Klarstellung in meiner Frage hinzugefügt - danke für Ihren Rat. – Psi

+0

Sie haben Recht Ich habe nicht verstanden, Ihre Frage ist unklar. Wenn Sie der Frage den Kontext Ihres letzten Kommentars hinzufügen und in der not_table in der oben erwähnten Datei std_logic_1164-body.vhdl nachsehen, werden Sie sehen, dass das Nicht von 'Z' tatsächlich 'X' ist. Beachten Sie, dass nur '0', '1', 'L' und 'H', die binäre Werte darstellen, beim Invertieren nicht 'X' zugeordnet werden. Was ist der unäre logische Operator nicht von * keinem effektiven Beitrag * oder * forcing * oder * schwachen * metalogischen Werten? Sie können davon ausgehen, dass der Ausgang eines Inverters gezwungen wird, 'X' *, für das das Modell nicht in der Lage ist, zwischen Logikpegeln * (16.8.2.2) zu unterscheiden. – user1155120

Antwort

3

(Ich würde dies ein Kommentar gemacht haben, aber ich kann nicht) Im Rahmen dessen, was Sie gesagt haben, wenn der Eingang mit einem Inverter (oder jede Komponente für diese Angelegenheit) ist ‚Z‘ (Antriebs hohe Impedanz), was erwarten Sie von der Ausgabe? Das Ergebnis muss in die Menge definierter Werte für ein Signal std_logic fallen.

Wenn am Eingang des Frequenzumrichters kein Wert anliegt (dh es gibt nur ein Signal, das den Eingang steuert, und es ist "Z"), kann der Simulator den Eingangswert nicht auflösen, was zur Folge hat in einer unbekannten Ausgabe ('X').

EDIT:

Als user1155120 in den Dokumenten verknüpfen darauf hingewiesen, tritt das Verhalten aufgrund des erklärten "not_table" in std_logic_1164-Körper, der die folgende Abbildung heißt es:

-- truth table for "not" function 
    constant not_table : stdlogic_1d := 
    -- ------------------------------------------------- 
    -- | U X 0 1 Z W L H - | 
    -- ------------------------------------------------- 
      ('U', 'X', '1', '0', 'X', 'X', '1', '0', 'X'); 
+0

Auflösung funktioniert für einen Treiber (IEEE Std 1076-2008 14.7.2), die Auflösungstabelle für Std_logic wird den einzelnen Wert zurückgeben (siehe std_logic_1164-body.vhdl wie oben, Funktion aufgelöst - vorausgesetzt, wir sprechen std_logic und den Kontext dafür wurde in der Frage nicht angegeben). Worum geht es in der Funktionsdeklaration "not" [std_logic return std_logic] und der not_table? Sie können davon ausgehen, dass der Ausgang eines Inverters gezwungen wird, 'X' *, für das das Modell nicht in der Lage ist, zwischen Logikpegeln * (16.8.2.2) zu unterscheiden. – user1155120

+0

Ich würde erwarten, dass die Ausgabe hohe Impedanz 'Z' bleiben ... Wenn Sie erklären können, warum es nicht 'Z' ist, wird meine Frage vollständig beantwortet. Vielen Dank! – Psi

+0

Ja, ich habe deinen Kommentar gelesen, nachdem ich gepostet habe; Ich lese gerade die Dokumente durch, die du jetzt verlinkt hast. – gsm