Menu
Coddy logo textTech

Special Values X And 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 Hardwarezustand geben.

X (Unknown), zur Fehlersuche

X erscheint in der Simulation, um auf Probleme in deinem Design hinzuweisen.

Wenn du X siehst, bedeutet das oft:

  • Nicht initialisiertes reg: Du hast vergessen, einen Wert festzulegen, bevor du es verwendest
  • Mehrere Treiber: Zwei verschiedene Dinge versuchen gleichzeitig, dasselbe wire zu steuern
  • Timing-Verletzung: Ein Signal hat sich zum falschen Zeitpunkt geändert und dadurch einen instabilen Zustand erzeugt

X existiert in echter Hardware nicht. Es ist ein Simulationswerkzeug, das dir mitteilt, dass etwas mit deinem Design nicht stimmt, damit du es vor dem Bau des tatsächlichen Chips beheben kannst.

Ohne X könntest du zufällige 0en oder 1en sehen und nicht erkennen, dass ein Problem vorliegt. X macht Fehler sichtbar.

Häufige Ursachen:

reg a;           // Anfangs X (unbekannt)
reg b;
assign b = a;    // b wird X, weil a X ist

Z (hochohmig)

Z stellt einen Zustand mit hoher Impedanz oder getrennten Zustand dar.

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

Häufige Ursachen:

wire c;          // Anfangs Z (nicht verbunden)
assign c = 1'bZ; // Explicitly set to Z

X und Z in Verilog schreiben

Du kannst X- und Z-Werte genauso 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 Wellenformen

In Simulationswellenformen:

  • X erscheint als rote Linie oder als „X“
  • Z erscheint als Linie in der Mitte oder als „Z“

Diese helfen dir beim Debuggen deines Designs, indem sie zeigen, 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
  • Bei der Synthese können X und Z unterschiedlich behandelt werden
  • Initialisiere reg-Signale immer, um X in der Simulation zu vermeiden
challenge icon

Aufgabe

Vervollständige den Code, indem du die richtigen Werte mit X und Z schreibst.

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 Bit).
  3. Setze d auf all bits high-impedance (4 Bit).

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

Übe selbstständig: Online-Verilog-Compiler