Spezialwerte X und Z
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 17 von 90.
X und Z sind spezielle Werte, die uns während der Simulation Informationen über den Hardware-Zustand liefern.
X (Unknown) — Für das Debugging
X erscheint in der Simulation, um Probleme mit Ihrem Design anzuzeigen.
Wenn Sie X sehen, bedeutet das oft:
- Nicht initialisiertes Register — Sie haben vergessen, einen Wert vor der Verwendung zu setzen
- Mehrere Treiber — zwei verschiedene Dinge versuchen gleichzeitig, denselben Wire zu steuern
- Timing-Verletzung — ein Signal hat sich zum falschen Zeitpunkt geändert, was zu einem instabilen Zustand führt
X existiert nicht in realer Hardware. Es ist ein Simulationswerkzeug, das Ihnen mitteilt, dass etwas mit Ihrem Entwurf nicht stimmt, damit Sie es beheben können, bevor der eigentliche Chip gefertigt wird.
Ohne X sehen Sie möglicherweise zufällige 0en oder 1en und merken nicht, dass ein Problem vorliegt. X macht Bugs sichtbar.
Häufige Ursachen:
reg a; // Anfangs X (unbekannt)
reg b;
assign b = a; // b wird X, weil a X istZ (High Impedance)
Z repräsentiert einen Zustand mit hoher Impedanz (high-impedance) oder einen getrennten (disconnected) Zustand.
- Ein Signal ist Z, wenn es von nichts getrieben wird
- Z bedeutet „dieser Draht ist getrennt“
- Wird für Tri-State-Puffer und gemeinsame Busse verwendet
Häufige Ursachen:
wire c; // Anfänglich Z (nicht verbunden)
assign c = 1'bZ; // Explicitly set to ZX und Z in Verilog schreiben
Sie können X- und Z-Werte genau wie 0 und 1 zuweisen:
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1; // Bit 1 ist hochohmig
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // Alle Bits hochohmigX und Z in Signalverläufen
In Simulations-Signalverläufen:
- X wird als rote Linie oder "X" dargestellt
- Z wird als Linie in der Mitte oder "Z" dargestellt
Diese helfen Ihnen bei der Fehlersuche in Ihrem Entwurf, indem sie anzeigen, wo Signale `unknown` oder nicht verbunden sind.
Wichtige Hinweise
- X breitet sich durch Logik aus (X AND 0 = 0, aber X AND 1 = X)
- Z wird normalerweise für Tri-State-Busse verwendet
- In der Synthese können X und Z unterschiedlich behandelt werden
- Initialisieren Sie reg-Signale immer, um X in der Simulation zu vermeiden
Aufgabe
Vervollständige den Code, indem du die korrekten Werte schreibst, die X und Z enthalten.
Was zu tun ist:
- Setze
aauf einen 4-bit-Wert, bei dem bit 1 unknown ist (others 0) - Setze
cauf all bits unknown (4 bits) - Setze
dauf all bits high-impedance (4 bits)
Probier es selbst
module xz_challenge;
wire [3:0] a, c, d;
assign a = 4'b______; // Bit 1 is X (others 0)
assign c = 4'b______; // Alle Bits X
assign d = 4'b______; // All bits Z
initial begin
$display("a = %b", a);
$display("c = %b", c);
$display("d = %b", d);
$finish;
end
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen