Giá trị mặc định ngăn chốt
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 1 trên 38.
Phải gán đầu ra tổ hợp cho mọi đường đi của đầu vào. Nếu khối always bỏ qua việc gán đầu ra, đầu ra đó giữ nguyên giá trị cũ, dẫn đến việc suy ra một chốt. Gán giá trị default rồi ghi đè giúp bạn thấy rõ độ bao phủ.
Đ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;
if (en) y = data;
enddefault xử lý nhánh bị vô hiệu hóa, vì vậy đầu ra (output) chỉ phụ thuộc vào các đầu vào hiện tại.
Gán giá trị cho mọi đầu ra tổ hợp trên mọi nhánh; đặt giá trị mặc định trước khi ghi đè bằng điều kiện.
Thử thách
Trung bìnhTriển khai đầu ra 8 bit có điều khiển: khi en bằng một, y bằng a; nếu không, y bằng không. Gán y trên mọi đường đi tổ hợp. Cột đầu ra: y. 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. 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 chọn một kịch bản bằng một đối số của 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ột hàng giá trị thập phân cho mỗi lần quan sát, các giá trị 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 en, input [7:0] a, output reg [7:0] y);
// Thay phần giữ chỗ này bằng thiết kế của bạn.
initial y = 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