Menu
Coddy logo textTech

Wartości specjalne X i Z

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 17 z 90.

X i Z to specjalne wartości, które dostarczają nam informacji o stanie sprzętu podczas symulacji.

X (nieznana wartość), do debugowania

X pojawia się w symulacji, aby wskazać problemy z projektem.

Gdy widzisz X, często oznacza to:

  • Niezainicjalizowany rejestr: nie ustawiono wartości przed użyciem
  • Wielu sterowników: dwie różne rzeczy próbują jednocześnie sterować tym samym przewodem
  • Naruszenie czasowe: sygnał zmienił się w niewłaściwym momencie, powodując niestabilny stan

X nie istnieje w rzeczywistym sprzęcie. To narzędzie symulacyjne, które informuje, że coś jest nie tak z Twoim projektem, dzięki czemu możesz to naprawić przed zbudowaniem prawdziwego układu scalonego.

Bez X możesz widzieć losowe 0 lub 1 i nie zdawać sobie sprawy, że jest problem. X sprawia, że błędy stają się widoczne.

Częste przyczyny:

reg a;           // Początkowo X (nieznane)
reg b;
assign b = a;    // b przyjmuje wartość X, ponieważ a ma wartość X

Z (wysoka impedancja)

Z oznacza stan wysokiej impedancji lub odłączenia.

  • Sygnał ma wartość Z, gdy nic nim nie steruje
  • Z oznacza „ten przewód jest odłączony”
  • Używane w buforach trójstanowych i współdzielonych magistralach

Częste przyczyny:

wire c;          // Początkowo Z (niepodłączony)
assign c = 1'bZ; // Explicitly set to Z

Zapisywanie X i Z w Verilogu

Możesz przypisywać wartości X i Z tak samo jak 0 i 1:

reg [3:0] data;

data = 4'b10X0;    // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1;    // Bit 1 ma stan wysokiej impedancji
data = 4'bXXXX;    // All bits unknown
data = 4'bZZZZ;    // Wszystkie bity mają stan wysokiej impedancji

X i Z na przebiegach czasowych

Na przebiegach czasowych symulacji:

  • X pojawia się jako czerwona linia lub „X”
  • Z pojawia się jako linia pośrodku lub „Z”

Pomagają debugować projekt, pokazując, gdzie sygnały są nieznane lub niepodłączone.

Ważne uwagi

  • X propaguje się przez operacje logiczne (X AND 0 = 0, ale X AND 1 = X)
  • Z jest zwykle używane w magistralach trójstanowych
  • Podczas syntezy X i Z mogą być traktowane inaczej
  • Zawsze inicjalizuj sygnały reg, aby uniknąć X w symulacji
challenge icon

Wyzwanie

Uzupełnij kod, wpisując prawidłowe wartości zawierające X i Z.

Co zrobić:

  1. Ustaw a na 4-bitową wartość, w której bit 1 jest nieznany (pozostałe to 0)
  2. Ustaw c tak, aby wszystkie bity były nieznane (4 bity)
  3. Ustaw d tak, aby wszystkie bity miały wysoką impedancję (4 bity)

Spróbuj swoich sił

module xz_challenge;
  wire [3:0] a, c, d;
  
  assign a = 4'b______;   // Bit 1 is X (others 0)
  assign c = 4'b______;   // Wszystkie bity to 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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online