Menu
CoddyTech

Bộ mã hóa ưu tiê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 2 trên 38.

Bộ mã hóa ánh xạ bit yêu cầu thành một chỉ số. Khi có nhiều yêu cầu cùng hoạt động, cần có quy tắc ưu tiên rõ ràng. Chuỗi if/else-if ưu tiên các nhánh đứng trước; tín hiệu valid riêng giúp phân biệt trường hợp không có yêu cầu với chỉ số 0.

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

if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;

Nhánh đúng đầu tiên sẽ được chọn, nên bit yêu cầu cao nhất được ưu tiên.

Nêu rõ thứ tự ưu tiên và định nghĩa cụ thể đầu ra khi không có yêu cầu.

challenge icon

Thử thách

Trung bình

Mã hóa bit được khẳng định cao nhất của req 4 bit thành code. Đặt valid bằng 1 nếu có bất kỳ yêu cầu nào; khi req bằng 0, code và valid đều bằng 0. Các cột đầu ra: code, 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 module cùng các cổng. testbench.v đã khóa 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ố 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 [3:0] req, output reg [1:0] code, output reg valid);
    // Thay phần giữ chỗ này bằng thiết kế của bạn.
    initial code = 0;
    initial valid = 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