Menu
Coddy logo textTech

Özel Değerler X ve Z

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 17 / 90.

X ve Z, simülasyon sırasında bize donanım durumu hakkında bilgi veren özel değerlerdir.

X (Bilinmeyen) — Hata Ayıklama İçin

X, tasarımınızdaki sorunları belirtmek için simülasyonda görünür.

X gördüğünüzde, bu genellikle şu anlama gelir:

  • Başlatılmamış kaydedici (Uninitialized register) — kullanmadan önce bir değer atamayı unuttunuz
  • Birden fazla sürücü (Multiple drivers) — iki farklı şey aynı anda aynı kabloyu kontrol etmeye çalışıyor
  • Zamanlama ihlali (Timing violation) — bir sinyal yanlış zamanda değişerek kararsız bir durum oluşturdu

X gerçek donanımda mevcut değildir. Tasarımınızda bir sorun olduğunu size bildiren bir simülasyon aracıdır, böylece gerçek çipi üretmeden önce sorunu düzeltebilirsiniz.

X olmadan, rastgele 0'lar veya 1'ler görebilirsiniz ve bir sorun olduğunu fark etmeyebilirsiniz. X, hataları görünür kılar.

Yaygın nedenler:

reg a;           // Başlangıçta X (bilinmiyor)
reg b;
assign b = a;    // a, X olduğu için b de X olur

Z (Yüksek Empedans)

Z, yüksek empedans veya bağlantısız bir durumu temsil eder.

  • Bir sinyal, herhangi bir şey tarafından sürülmediğinde Z'dir
  • Z, "bu kablo bağlı değil" anlamına gelir
  • Üç durumlu (tri-state) tamponlar ve paylaşımlı veri yolları için kullanılır

Yaygın nedenler:

wire c;          // Başlangıçta Z (bağlı değil)
assign c = 1'bZ; // Açıkça Z olarak ayarlandı

Verilog'da X ve Z Yazımı

X ve Z değerlerini tıpkı 0 ve 1 gibi atayabilirsiniz:

reg [3:0] data;

data = 4'b10X0;    // 1. bit bilinmiyor (sağdan 0-indeksli)
data = 4'b01Z1;    // 1. bit yüksek empedans
data = 4'bXXXX;    // Tüm bitler bilinmiyor
data = 4'bZZZZ;    // Tüm bitler yüksek empedans

Dalga Formlarında X ve Z

Simülasyon dalga formlarında:

  • X kırmızı bir çizgi veya "X" olarak görünür
  • Z ortada bir çizgi veya "Z" olarak görünür

Bunlar, sinyallerin nerede bilinmediğini veya bağlantısının kesildiğini göstererek tasarımınızdaki hataları ayıklamanıza yardımcı olur.

Önemli Notlar

  • X mantık yoluyla yayılır (X AND 0 = 0, ancak X AND 1 = X)
  • Z genellikle üç durumlu (tri-state) veri yolları için kullanılır
  • Sentezde, X ve Z farklı şekilde ele alınabilir
  • Simülasyonda X'ten kaçınmak için reg sinyallerini her zaman ilklendirin
challenge icon

Görev

X ve Z içeren doğru değerleri yazarak kodu tamamlayın.

Yapılması gerekenler:

  1. a değişkenini, 1. bitin bilinmeyen (diğerlerinin 0) olduğu 4 bitlik bir değere ayarlayın
  2. c değişkenini tüm bitleri bilinmeyen (4 bit) olacak şekilde ayarlayın
  3. d değişkenini tüm bitleri yüksek empedans (4 bit) olacak şekilde ayarlayın

Kopya kağıdı

X (Bilinmeyen) ve Z (Yüksek Empedans), Verilog'daki özel simülasyon değerleridir.

X — Bilinmeyen durum (sadece simülasyon içindir, gerçek donanımda bulunmaz):

  • Başlatılmamış (uninitialized) reg, X olarak başlar
  • Nedenleri: başlatılmamış kaydediciler, birden fazla sürücü (multiple drivers), zamanlama ihlalleri
  • Mantık boyunca yayılır (X AND 1 = X, ancak X AND 0 = 0)
  • Dalga formlarında (waveforms) kırmızı çizgi olarak görünür

Z — Yüksek empedans / bağlantısız durum:

  • Sürülmeyen (undriven) wire, Z olarak başlar
  • Üç durumlu tamponlar (tri-state buffers) ve paylaşılan veri yolları (shared buses) için kullanılır
  • Dalga formlarında orta çizgi olarak görünür

Verilog'da X ve Z yazımı:

reg [3:0] data;

data = 4'b10X0;    // Bit 1 bilinmiyor
data = 4'b01Z1;    // Bit 1 yüksek empedans
data = 4'bXXXX;    // Tüm bitler bilinmiyor
data = 4'bZZZZ;    // Tüm bitler yüksek empedans

assign c = 1'bZ;   // wire'ı açıkça Z'ye ayarla

Kendin dene

module xz_challenge;
  wire [3:0] a, c, d;
  
  assign a = 4'b______;   // Bit 1 is X (others 0)
  assign c = 4'b______;   // Tüm bitler 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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler