Kiểm tra one-hot
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 3 trên 38.
Dữ liệu one-hot có chính xác một bit được bật. Bộ giải mã tạo ra loại dữ liệu này, còn bước xác thực kiểm tra dữ liệu đầu vào trước khi sử dụng. Với các giá trị nhị phân đã biết, một giá trị khác 0 là one-hot khi bits & (bits - 1) bằng 0. Phần này không dùng cách rút gọn đó để phân loại X hoặc Z.
Đoạn trích liên quan; các khai báo và kết nối xung quanh có trong thử thách.
assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);Kiểm tra khác 0 để loại trừ trạng thái nhàn rỗi; thủ thuật bit loại trừ trường hợp có nhiều bit được đặt.
Phân biệt số 0, đúng một bit được bật và nhiều bit được bật khi xác thực các yêu cầu.
Thử thách
Trung bìnhVới đầu vào 4 bit đã biết, chỉ đặt valid khi có đúng một bit ở mức cao. Kết hợp kiểm tra khác không với bits & (bits - 1). Cột đầu ra: valid. 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 mô-đun cùng các cổng của mô-đun. testbench.v đã 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 dự kiến 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 [3:0] bits, output valid);
// Thay phần giữ chỗ này bằng thiết kế của bạn.
assign valid = 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