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 Informationen über den Hardwarezustand während der Simulation geben.

X (Unbekannt) — 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 zu setzen, bevor Sie ihn verwenden
  • Mehrere Treiber — zwei verschiedene Dinge versuchen, denselben Draht gleichzeitig zu steuern
  • Timing-Verletzung — ein Signal hat sich zum falschen Zeitpunkt geändert, was einen instabilen Zustand erzeugt hat

X existiert in realer Hardware nicht. Es ist ein Simulationswerkzeug, das Ihnen mitteilt, dass etwas mit Ihrem Design nicht stimmt, damit Sie es beheben können, bevor der eigentliche Chip gefertigt wird.

Ohne X sehen Sie möglicherweise zufällige Nullen oder Einsen und bemerken nicht, dass ein Problem vorliegt. X macht Fehler sichtbar.

Häufige Ursachen:

reg a;           // Anfänglich X (unbekannt)
reg b;
assign b = a;    // b wird zu X, da a X ist

Z (Hochohmigkeit)

Z repräsentiert einen hochimpedanten oder getrennten Zustand.

  • Ein Signal ist Z, wenn es von nichts angesteuert wird
  • Z bedeutet „dieser Draht ist getrennt“
  • Wird für Tri-State-Puffer und gemeinsam genutzte Busse verwendet

Häufige Ursachen:

wire c;          // Ursprünglich Z (nicht verbunden)
assign c = 1'bZ; // Explizit auf Z gesetzt

Schreiben von X und Z in Verilog

Sie können X- und Z-Werte genau wie 0 und 1 zuweisen:

reg [3:0] data;

data = 4'b10X0;    // Bit 1 ist unbekannt (0-indiziert von rechts)
data = 4'b01Z1;    // Bit 1 ist hochohmig (High-Impedance)
data = 4'bXXXX;    // Alle Bits unbekannt
data = 4'bZZZZ;    // Alle Bits hochohmig

X und Z in Wellenformen

In Simulationswellenformen:

  • X erscheint als rote Linie oder "X"
  • Z erscheint als Linie in der Mitte oder "Z"

Diese helfen Ihnen beim Debuggen Ihres Designs, indem sie anzeigen, wo Signale unbekannt oder nicht verbunden sind.

Wichtige Hinweise

  • X breitet sich durch die 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ändigen Sie den Code, indem Sie die korrekten Werte schreiben, die X und Z enthalten.

Was zu tun ist:

  1. Setzen Sie a auf einen 4-Bit-Wert, bei dem Bit 1 unbekannt ist (andere 0)
  2. Setzen Sie c auf alle Bits unbekannt (4 Bits)
  3. Setzen Sie d auf alle Bits hochohmig (4 Bits)

Spickzettel

X (Unbekannt) und Z (Hochohmig) sind spezielle Simulationswerte in Verilog.

X — Unbekannter Zustand (nur Simulation, keine echte Hardware):

  • Ein nicht initialisiertes reg beginnt als X
  • Verursacht durch: nicht initialisierte Register, mehrere Treiber, Timing-Verletzungen
  • Verbreitet sich durch die Logik (X AND 1 = X, aber X AND 0 = 0)
  • Erscheint als rote Linie in Wellenformen

Z — Hochohmiger / getrennter Zustand:

  • Ein nicht angesteuertes wire beginnt als Z
  • Wird für Tri-State-Puffer und gemeinsam genutzte Busse verwendet
  • Erscheint als mittlere Linie in Wellenformen

Schreiben von X und Z in Verilog:

reg [3:0] data;

data = 4'b10X0;    // Bit 1 ist unbekannt
data = 4'b01Z1;    // Bit 1 ist hochohmig
data = 4'bXXXX;    // Alle Bits unbekannt
data = 4'bZZZZ;    // Alle Bits hochohmig

assign c = 1'bZ;   // Wire explizit auf Z setzen

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