Nilai Khusus X dan Z
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 17 dari 90.
X dan Z adalah nilai khusus yang memberi kita informasi tentang keadaan perangkat keras selama simulasi.
X (Tidak Diketahui), untuk Debug
X muncul dalam simulasi untuk menunjukkan masalah pada desainmu.
Saat kamu melihat X, biasanya artinya:
- Register yang belum diinisialisasi: kamu lupa menetapkan nilai sebelum menggunakannya
- Beberapa driver: dua hal berbeda mencoba mengendalikan kabel yang sama pada saat yang sama
- Pelanggaran timing: sinyal berubah pada waktu yang salah sehingga menciptakan keadaan yang tidak stabil
X tidak ada di perangkat keras nyata. X adalah alat simulasi yang memberi tahu kamu jika ada yang salah dengan desainmu, sehingga kamu bisa memperbaikinya sebelum membuat chip yang sebenarnya.
Tanpa X, kamu mungkin melihat angka 0 atau 1 acak dan tidak menyadari ada masalah. X membuat bug terlihat.
Penyebab umum:
reg a; // Awalnya X (tidak diketahui)
reg b;
assign b = a; // b menjadi X karena a bernilai XZ (Impedansi Tinggi)
Z mewakili keadaan impedansi tinggi atau terputus.
- Sinyal bernilai Z saat tidak ada yang menggerakkannya
- Z berarti "kabel ini terputus"
- Digunakan untuk buffer tri-state dan bus bersama
Penyebab umum:
wire c; // Awalnya Z (tidak terhubung)
assign c = 1'bZ; // Explicitly set to ZMenulis X dan Z di Verilog
Kamu dapat menetapkan nilai X dan Z seperti 0 dan 1:
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1; // Bit 1 berimpedansi tinggi
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // Semua bit berimpedansi tinggiX dan Z pada Bentuk Gelombang
Pada bentuk gelombang simulasi:
- X muncul sebagai garis merah atau "X"
- Z muncul sebagai garis di tengah atau "Z"
Fitur-fitur ini membantumu debug desainmu dengan menunjukkan bagian tempat sinyal tidak diketahui atau terputus.
Catatan Penting
- X menyebar melalui logika (X AND 0 = 0, tetapi X AND 1 = X)
- Z biasanya digunakan untuk bus tri-state
- Dalam sintesis, X dan Z dapat diperlakukan secara berbeda
- Selalu inisialisasi sinyal reg agar tidak muncul X dalam simulasi
Tantangan
Lengkapi kode dengan menuliskan nilai yang benar yang berisi X dan Z.
Yang harus dilakukan:
- Tetapkan
ake nilai 4-bit dengan bit 1 tidak diketahui (bit lainnya 0) - Tetapkan
cagar semua bit tidak diketahui (4 bit) - Tetapkan
dagar semua bit berimpedansi tinggi (4 bit)
Coba sendiri
module xz_challenge;
wire [3:0] a, c, d;
assign a = 4'b______; // Bit 1 is X (others 0)
assign c = 4'b______; // Semua bit bernilai X
assign d = 4'b______; // All bits Z
initial begin
$display("a = %b", a);
$display("c = %b", c);
$display("d = %b", d);
$finish;
end
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online