Menu
Coddy logo textTech

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 ist

Z (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 Z

X 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 hochohmig

X 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
challenge icon

Aufgabe

Vervollständige den Code, indem du die korrekten Werte schreibst, die X und Z enthalten.

Was zu tun ist:

  1. Setze a auf einen 4-bit-Wert, bei dem bit 1 unknown ist (others 0)
  2. Setze c auf all bits unknown (4 bits)
  3. Setze d auf 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
  
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen