Giải mã case an toàn
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 4 trên 38.
Dùng câu lệnh case thông thường để xử lý chính xác các mã điều khiển. Cung cấp hành vi default cho các mã không được hỗ trợ và dùng assign để gán tất cả đầu ra. Giải mã ký tự đại diện bằng casex có thể che giấu các bit điều khiển chưa biết trong quá trình mô phỏng, nên không phù hợp khi bạn cần thấy rõ các giá trị chưa biết trong lúc gỡ lỗi.
Đ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.
always @* begin
y = 0;
invalid = 0;
case (op)
0: y = a & b;
1: y = a | b;
default: invalid = 1;
endcase
endCác mã không được hỗ trợ sẽ tạo ra trạng thái rõ ràng thay vì giữ lại đầu ra trước đó.
Hãy định nghĩa rõ ràng các mã điều khiển không được hỗ trợ và tránh dùng casex để che giấu các mã điều khiển không xác định.
Thử thách
Trung bìnhTriển khai một khối logic 8 bit: op 0 tính a AND b, op 1 tính a OR b, op 2 tính a XOR b, còn op 3 trả về giá trị không với invalid được đặt thành một. invalid bằng không với các phép toán được hỗ trợ. Các cột đầu ra: y, invalid. Tất cả giá trị kích thích đều là giá trị nhị phân đã biết.
Hoàn thiện design.v và giữ nguyên tên module cùng các cổng của nó. testbench.v bị khóa sẽ cung cấp các thay đổi đầu vào và in đầu ra sau khi chúng ổn định. Tệp này chọn một kịch bản bằng đối số của trình mô phỏng, chẳng hạn 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 lần quan sát một hàng giá trị thập phân, các giá trị được phân cách 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 [1:0] op, input [7:0] a, input [7:0] b, output reg [7:0] y, output reg invalid);
// Thay phần giữ chỗ này bằng thiết kế của bạn.
initial y = 0;
initial invalid = 0;
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 Thiết kế và xác minh RTL
1RTL tổ hợp đáng tin cậy
Giá trị mặc định ngăn chốtBộ mã hóa ưu tiênKiểm tra one-hotGiải mã case an toànÔn tập: Bộ định tuyến yêu cầuTự luyện tập: Trình biên dịch Verilog online