Khó

Arbiter round-robin 4 requester

Module cần viết: rr_arb4 · 7 case (2 mẫu) · giới hạn 4 s/case · ~35 phút

sequentialarbiterround-robinfairnessinterview

Nhiều master cùng muốn dùng một tài nguyên (bus, bộ nhớ, cổng ghi FIFO), nhưng mỗi lúc chỉ một master được dùng. Arbiter round-robin cấp quyền luân phiên: ai vừa được cấp thì xếp cuối hàng. Nhờ vậy không master nào bị "bỏ đói". Đây là câu phỏng vấn thiết kế RTL rất phổ biến.

module rr_arb4 (
  input  logic       clk,
  input  logic       rst_n,   // reset BẤT ĐỒNG BỘ, tích cực mức thấp
  input  logic [3:0] req,     // req[i] = 1: requester i muốn dùng tài nguyên
  output logic [3:0] gnt      // one-hot (hoặc 0): requester được cấp trong chu kỳ này
);

Tại mỗi sườn lên clk:

  • Nếu req != 0: xét lần lượt các requester bắt đầu từ ngay sau requester được cấp gần nhất, theo vòng 0 → 1 → 2 → 3 → 0. Requester đầu tiên có req = 1 được cấp: gnt = one-hot của nó, và nó trở thành "được cấp gần nhất".
  • Nếu req == 0: gnt = 0, giữ nguyên "được cấp gần nhất".

gnt là ngõ ra thanh ghi. rst_n = 0 đưa gnt về 0 ngay lập tức và đặt "được cấp gần nhất" là requester 3, nên lần đầu requester 0 được xét trước.

chu kỳ 1 2 3 4 5 6 7
req 1111 1111 1111 0000 1111 0101 0101
gnt 0001 0010 0100 0000 1000 0001 0100

Testbench đổi req ở sườn xuống clk và đọc gnt ở sườn xuống kế tiếp.

Các case

  1. Cả 4 cùng yêu cầu suốt 8 chu kỳmẫu
  2. Chỉ requester 0 và 2 yêu cầumẫu

Cùng 5 case ẩn kiểm các yêu cầu còn lại của đề. Case ẩn chỉ báo đúng/sai, không nói chi tiết: tự tìm chỗ sai từ đề, hoặc mở gợi ý.

Testbench có mô hình tham chiếu riêng, độc lập với lời giải mẫu. Lời giải mẫu đã chạy qua mọi case trên simulator thật, và 3 bản lỗi mẫu đều bị ít nhất một case bắt. Case mẫu sai sẽ cho biết chỗ sai đầu tiên (giá trị mong đợi so với giá trị nhận được); case ẩn chỉ báo đúng/sai.

Đang kết nối máy chấm…
Đang nạp bản nháp…

Tab để thụt lề. Nhấn Esc rồi Tab để rời trình soạn. Bản nháp tự lưu trong trình duyệt.

Gợi ý

Mỗi gợi ý mở trước khi AC giảm 10% điểm của đề.

Lời giải và phân tích

Lịch sử nộp bài

Chưa có lượt nào.

Độ khó: Khó. Điểm gốc 80.