Phát hiện mẫu 4 bit cấu hình được, chế độ chồng lấn / không chồng lấn
Module cần viết: pat_det · 6 case (2 mẫu) · giới hạn 4 s/case · ~25 phút
"Phát hiện chuỗi bit" là bài FSM phỏng vấn kinh điển. Phiên bản này có thêm hai yêu cầu của bài thật: mẫu là đầu vào (cấu hình lúc chạy, nên không vẽ FSM cố định được), và có hai chế độ chồng lấn / không chồng lấn.
module pat_det (
input logic clk,
input logic rst_n, // reset bất đồng bộ
input logic valid, // có bit dữ liệu ở nhịp này
input logic din,
input logic [3:0] pattern, // pattern[3] là bit đến TRƯỚC, pattern[0] là bit đến sau cùng
input logic overlap, // 1: chồng lấn; 0: không chồng lấn
output logic hit // tổ hợp (Mealy)
);
hit = 1trong nhịp màvalid = 1và 4 bit hợp lệ gần nhất, tính cảdinhiện tại, bằngpattern. Các bit chỉ tính khivalid = 1; nhịpvalid = 0bị bỏ qua và không xoá gì.- Chưa đủ 4 bit hợp lệ kể từ reset thì không bao giờ có hit.
- Không chồng lấn: sau một hit, 4 bit vừa khớp không được dùng lại. Mẫu kế tiếp phải gồm 4 bit hoàn toàn mới.
patternvàoverlapđược giữ ổn định trong lúc có dữ liệu, nhưng có thể đổi giữa các đoạn dữ liệu.
Ví dụ với pattern = 4'b1011, luồng 1 0 1 1 0 1 1: chồng lấn thì hit ở bit thứ 4 và thứ 7 (bit 1 thứ 4 được dùng lại); không chồng lấn thì chỉ hit ở bit thứ 4.
Testbench đặt đầu vào ở sườn xuống và đọc hit 1 ns sau đó.
Các case
- 1011 trên luồng 1011011, chồng lấnmẫu
- Cùng luồng, không chồng lấnmẫ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à 4 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.