Menu
CoddyTech

Kiểm tra bốn trạng thái

Thuộc phần Thiết kế và xác minh RTL trong hành trình Verilog của Coddy. Bài học 26 trên 38.

Testbench phải xử lý các giá trị chưa xác định một cách có chủ đích. Phép so sánh bằng thông thường có thể trả về X, khiến lỗi trong điều kiện if bị che khuất. Phép so sánh bằng và không bằng theo từng trường hợp, === và !==, so sánh trực tiếp cả bốn giá trị và trả về một giá trị Boolean xác định. Phép XOR rút gọn, sau đó so sánh bằng case với X, có thể phát hiện các bit chưa xác định. Hãy dùng những cách này để kiểm tra mô phỏng, không dùng chúng làm mô hình phần cứng phát hiện các giá trị X vật lý.

Đoạn trích liên quan; các khai báo và kết nối xung quanh được cung cấp trong thử thách.

if(actual !== expected) errors = errors + 1;

Một khác biệt liên quan đến X hoặc Z sẽ được tính, thay vì biến mất trong một điều kiện không xác định.

Dùng phép so sánh tường minh bốn trạng thái trong bộ kiểm tra mô phỏng và xác định cách xử lý các giá trị không xác định.

challenge icon

Thử thách

Trung bình

Đây chỉ là bộ kiểm tra mô phỏng, không phải logic đường dữ liệu có thể tổng hợp. Đặt mismatch khi actual và expected khác nhau theo phép so sánh bốn trạng thái. Nếu cả hai có cùng X hoặc Z ở cùng vị trí, chúng được xem là bằng nhau. Kết quả phải luôn là 0 hoặc 1 đã xác định. Các cột đầu ra: mismatch. Tất cả giá trị kích thích đều là giá trị nhị phân đã xác định.

Hoàn thiện design.v và giữ nguyên tên module cùng các cổng. testbench.v bị khóa sẽ cung cấp các thay đổi đầu vào và in ra các đầu ra sau khi chúng ổn định. Tệp này chọn một kịch bản bằng đối số trình mô phỏng như +CASE=1; không cần đầu vào tiêu chuẩn. Không thêm lệnh in, độ trễ hoặc lệnh kết thúc mô phỏng vào thiết kế. Đầu ra mong đợi gồm mỗi hàng là các giá trị thập phân của một lần quan sát, cách nhau bằng một dấu cách và kết thúc bằng ký tự xuống dòng.

Tự làm thử

module dut (input [3:0] actual, input [3:0] expected, output mismatch);
    // Thay phần giữ chỗ này bằng thiết kế của bạn.
    assign mismatch = 0;
endmodule
quiz iconTự kiểm tra

Bà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 Thiết kế và xác minh RTL

Tự luyện tập: Trình biên dịch Verilog online