Khó

Bộ nhân tuần tự dịch-cộng 8×8 với bắt tay start/done

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

sequentialmultiplierdatapathhandshakefsm

Bộ nhân tổ hợp 8×8 tốn nhiều diện tích. Bộ nhân tuần tự chỉ dùng một bộ cộng, đổi lại mất nhiều chu kỳ: mỗi chu kỳ xử lý một bit của số nhân. Bài này luyện cách ghép datapath với điều khiển và giao thức bắt tay start/done, một khuôn mẫu gặp ở mọi khối tính toán nhiều chu kỳ.

module seq_mult (
  input  logic        clk,
  input  logic        rst,     // reset ĐỒNG BỘ, tích cực mức cao: busy = 0, done = 0, p = 0
  input  logic        start,   // yêu cầu nhân a × b (chỉ được nhận khi không busy)
  input  logic [7:0]  a, b,    // không dấu; chỉ cần đúng tại chu kỳ start được nhận
  output logic        busy,
  output logic        done,    // xung 1 chu kỳ khi có kết quả
  output logic [15:0] p        // a × b; giữ nguyên cho tới khi phép nhân kế tiếp được nhận
);

Thời gian (mọi tín hiệu đổi ngay sau sườn lên):

  • Sườn lên E₀ thấy start = 1 và busy = 0: nhận phép nhân, busy = 1.
  • busy = 1 đúng 8 chu kỳ. Tại sườn E₈: busy = 0, done = 1, p = a × b.
  • done chỉ cao 1 chu kỳ. p giữ giá trị cho tới khi phép nhân kế tiếp được nhận.
  • start khi busy = 1 bị bỏ qua.
sườn E₀ (start) E₁ … E₇ E₈ E₉
busy sau sườn 1 1 0 0
done sau sườn 0 0 1 0

Testbench đổi đầu vào ở sườn xuống clk và đọc ngõ ra ở sườn xuống kế tiếp. Trong lúc busy, testbench có thể đổi a, b bất kỳ.

Các case

  1. 3 × 5mẫu
  2. 255 × 255 và 0 × 77mẫ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.