Ö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 olurZ (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 empedansDalga 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
Görev
X ve Z içeren doğru değerleri yazarak kodu tamamlayın.
Yapılması gerekenler:
adeğişkenini, 1. bitin bilinmeyen (diğerlerinin 0) olduğu 4 bitlik bir değere ayarlayıncdeğişkenini tüm bitleri bilinmeyen (4 bit) olacak şekilde ayarlayınddeğ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 ayarlaKendin 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
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı