Khó

Đồng bộ xung qua hai miền clock (toggle synchronizer)

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

cdcsynchronizermulti-clockinterview

Một xung rộng một chu kỳ ở miền clock A (ví dụ "có lệnh mới") cần được báo sang miền clock B, chạy clock khác, không cùng pha, có thể nhanh hơn hoặc chậm hơn. Đồng bộ thẳng xung qua 2 flip-flop sẽ mất xung khi clk_b chậm hơn clk_a. Đây là câu phỏng vấn CDC (clock domain crossing) kinh điển.

module psync (
  input  logic clk_a, rst_a_n,   // miền A; reset bất đồng bộ tích cực mức thấp
  input  logic pulse_a,          // xung 1 chu kỳ clk_a
  input  logic clk_b, rst_b_n,   // miền B; reset bất đồng bộ tích cực mức thấp
  output logic pulse_b           // xung 1 chu kỳ clk_b cho MỖI xung pulse_a
);

Yêu cầu (testbench kiểm):

  • Mỗi pulse_a (lấy mẫu ở sườn lên clk_a) sinh đúng một xung pulse_b rộng đúng 1 chu kỳ clk_b.
  • pulse_b xuất hiện sau ít nhất 2 và không quá 4 sườn lên clk_b kể từ sườn clk_a đã lấy mẫu pulse_a. Ít nhất 2 sườn là vì tín hiệu phải qua 2 tầng flip-flop đồng bộ.
  • Không có pulse_b thừa.
  • Hai xung pulse_a liên tiếp cách nhau ít nhất 6 chu kỳ của clock chậm hơn (testbench bảo đảm).
  • Reset: sau khi thả reset hai miền, không có pulse_b nào cho tới khi có pulse_a mới.

Testbench đọc pulse_b ở sườn xuống clk_b.

Các case

  1. clk_a 10 ns → clk_b 14 ns, 5 xungmẫu
  2. clk_a chậm (30 ns) → clk_b nhanh (8 ns)mẫu

Cùng 4 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.