practice_templates/basic_01/verilog_seq/README.md
基础实践 1-2: Verilog 时序逻辑设计
📚 知识点
| 知识点 | 说明 |
|---|---|
| always @(posedge clk) | 时序逻辑的标准写法 |
| 异步复位 | always @(posedge clk or negedge rst_n) |
| 计数器设计 | 基本的可配置计数器 |
| 移位寄存器 | 数据的串行/并行转换 |
| 有限状态机 (FSM) | Moore 型 / Mealy 型状态机 |
🎯 任务目标
你需要补全 3 个 RTL 模块:
1. rtl/counter.sv — 可配置计数器
- 参数化位宽
WIDTH - 支持使能
en、清零clr - 到达最大值后自动翻转,输出进位
carry
2. rtl/shift_register.sv — 8-bit 移位寄存器
- 支持串行输入
serial_in - 支持并行加载
parallel_in、load - 支持左移/右移选择
shift_dir - 输出并行数据
data_out和串行输出serial_out
3. rtl/fsm_sequence_detector.sv — 序列检测器 FSM
- 检测输入序列 "1011"
- 检测到后输出
detected拉高一个周期 - 支持重叠检测(如 1011011 也能检测)
📁 文件结构
├── rtl/
│ ├── counter.sv ← ⭐ TODO: 补全计数器
│ ├── shift_register.sv ← ⭐ TODO: 补全移位寄存器
│ └── fsm_sequence_detector.sv ← ⭐ TODO: 补全状态机
├── tb/
│ └── tb_seq.sv ← 测试平台(完整)
├── Makefile
└── README.md
🏃 操作步骤
- 阅读每个模块的接口定义和注释
- 画出状态机的状态转移图(针对 FSM)
- 按顺序补全 3 个模块
make compile→make sim- 确认 "ALL TESTS PASSED"
✅ 验收标准
- 编译无错误
- 仿真输出 "ALL TESTS PASSED"
📝 考核方式
| 考核项 | 分值 | 说明 |
|---|---|---|
| counter 正确实现 | 25 分 | 计数、清零、进位全部正确 |
| shift_register 正确实现 | 25 分 | 移位、加载、方向控制正确 |
| FSM 正确实现 | 35 分 | 状态转移正确、重叠检测正确 |
| 提交状态转移图 | 15 分 | FSM 状态转移图清晰完整 |
| 合计 | 100 分 |
通过标准:≥ 70 分