Vừa

FSM Moore phát hiện chuỗi 1011 (chồng lấn)

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

fsmmooresequential

Viết FSM Moore phát hiện chuỗi 1011 trên ngõ vào nối tiếp din, cho phép chồng lấn:

module seq1011 (
  input  logic clk,
  input  logic rst_n,   // reset BẤT ĐỒNG BỘ, tích cực mức thấp
  input  logic din,
  output logic hit
);
  • Mỗi sườn lên clk lấy mẫu một bit din.
  • hit = 1 trong đúng một chu kỳ ngay sau sườn clock mà 4 bit vừa lấy mẫu (cũ → mới) là 1, 0, 1, 1.
  • Moore: hit chỉ phụ thuộc trạng thái, nên chỉ đổi ngay sau sườn lên clk. Testbench đổi din giữa hai sườn clock và kiểm rằng hit không nhảy theo.
  • Chồng lấn: 1011011 cho hai lần hit, vì 1 cuối của lần khớp đầu được dùng lại.
  • rst_n = 0 xoá mọi lịch sử ngay lập tức.
bit thứ 1 2 3 4 5 6 7
din 1 0 1 1 0 1 1
hit sau sườn clock 0 0 0 1 0 0 1

Các case

  1. Chuỗi 101100: đúng một lần hitmẫu
  2. Chồng lấn 1011011: hai lần hitmẫ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ó: Vừa. Điểm gốc 40.