Các giá trị đặc biệt X và Z
Thuộc phần Kiến thức nền tảng trong hành trình Verilog của Coddy. Bài học 17 trên 90.
X và Z là các giá trị đặc biệt cung cấp cho chúng ta thông tin về trạng thái phần cứng trong quá trình mô phỏng.
X (chưa xác định), dùng để gỡ lỗi
X xuất hiện trong quá trình mô phỏng để báo hiệu thiết kế của bạn có vấn đề.
Khi bạn thấy X, điều đó thường có nghĩa là:
- Thanh ghi chưa được khởi tạo: bạn quên đặt giá trị trước khi sử dụng
- Nhiều bộ điều khiển: hai thứ khác nhau đang cố điều khiển cùng một dây dẫn cùng lúc
- Vi phạm thời gian: tín hiệu thay đổi không đúng thời điểm, tạo ra trạng thái không ổn định
X không tồn tại trong phần cứng thực tế. Đây là công cụ mô phỏng cho bạn biết thiết kế có vấn đề để bạn sửa trước khi chế tạo chip thật.
Nếu không có X, bạn có thể thấy các số 0 hoặc 1 ngẫu nhiên mà không nhận ra có vấn đề. X giúp hiển thị rõ các bug.
Nguyên nhân phổ biến:
reg a; // Ban đầu là X (chưa xác định)
wire b;
assign b = a; // b trở thành X vì a là XZ (trở kháng cao)
Z biểu thị trạng thái trở kháng cao hoặc ngắt kết nối.
- Tín hiệu có giá trị Z khi không có gì điều khiển nó
- Z có nghĩa là “dây này bị ngắt kết nối”
- Được dùng cho bộ đệm ba trạng thái và các bus dùng chung
Các nguyên nhân phổ biến:
wire c; // Ban đầu là Z (chưa kết nối)
assign c = 1'bZ; // Explicitly set to ZViết X và Z trong Verilog
Bạn có thể gán giá trị X và Z giống như 0 và 1:
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1; // Bit 1 ở trạng thái trở kháng cao
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // Tất cả các bit đều ở trạng thái trở kháng caoX và Z trong dạng sóng
Trong dạng sóng mô phỏng:
- X hiển thị dưới dạng một đường màu đỏ hoặc chữ "X"
- Z hiển thị dưới dạng một đường ở giữa hoặc chữ "Z"
Những công cụ này giúp bạn gỡ lỗi thiết kế bằng cách hiển thị vị trí tín hiệu chưa xác định hoặc bị ngắt kết nối.
Ghi chú quan trọng
- X lan truyền qua logic (X AND 0 = 0, nhưng X AND 1 = X)
- Z thường được dùng cho các bus ba trạng thái
- Trong quá trình tổng hợp, X và Z có thể được xử lý khác nhau
- Luôn khởi tạo các tín hiệu reg để tránh giá trị X trong mô phỏng
Thử thách
Hoàn thành code bằng cách viết các giá trị chính xác có chứa X và Z.
Cần làm:
- Đặt
athành giá trị 4 bit, trong đó bit 1 chưa xác định, các bit còn lại bằng 0 - Đặt
cđể tất cả các bit đều chưa xác định (4 bit) - Đặt
dđể tất cả các bit đều ở trạng thái trở kháng cao (4 bit)
Tự làm thử
module xz_challenge;
wire [3:0] a, c, d;
assign a = 4'b______; // Bit 1 is X (others 0)
assign c = 4'b______; // Tất cả các bit đều là X
assign d = 4'b______; // All bits Z
initial begin
$display("a = %b", a);
$display("c = %b", c);
$display("d = %b", d);
$finish;
end
endmoduleBài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức nền tảng
1Giới thiệu
Verilog là gìPhần cứng và phần mềmModule đầu tiênChú thíchCác mức trừu tượng hóa thiết kế4Toán tử phần 1
Toán tử số họcToán tử moduloToán tử so sánhÔn tập: phép tính đơn giảnToán tử thao tác bit7Gán và cổng logic
Gán liên tụcGán bằng toán tửCác cổng nguyên thủy tích hợp sẵnCổng AND, OR, NOTCổng XOR, XNORÔn tập: mạch cổng logic10Ra quyết định
Câu lệnh ifIf và elseÔn tập: Bộ so sánh đơn giảnCâu lệnh caseCasex và casezÔn tập: Thiết kế ALU5Các toán tử, phần 2
Toán tử logicToán tử rút gọnToán tử dịch bitToán tử nốiToán tử điều kiệnÔn tập: thử thách về toán tử11Vòng lặp
Vòng lặp forVòng lặp whileVòng lặp repeatVòng lặp vô hạnCâu lệnh vô hiệu hóaÔn tập: các mẫu vòng lặp3Hệ thống số
Biểu diễn nhị phânSố có kích thướcSố không có kích thướcSố âmCác giá trị đặc biệt X và ZÔn tập: định dạng số6Module
Cấu trúc moduleCổng đầu vào và đầu raCổng vào ra hai chiềuKhởi tạo moduleÁnh xạ cổng theo tênÁnh xạ cổng theo thứ tựÔn tập: xây dựng module9Khối thủ tục
Khối alwaysKhối initialDanh sách độ nhạyPhép gán chặnPhép gán không chặnÔn tập: always và initial12Dự án bộ ghép kênh
Thiết kế bộ ghép kênh 2 thành 1Thiết kế bộ ghép kênh 4 thành 115Bộ điều khiển đèn giao thông
Xác định các trạng tháiLogic máy trạng tháiTự luyện tập: Trình biên dịch Verilog online