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_inload
  • 支持左移/右移选择 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

🏃 操作步骤

  1. 阅读每个模块的接口定义和注释
  2. 画出状态机的状态转移图(针对 FSM)
  3. 按顺序补全 3 个模块
  4. make compilemake sim
  5. 确认 "ALL TESTS PASSED"

✅ 验收标准

  • 编译无错误
  • 仿真输出 "ALL TESTS PASSED"

📝 考核方式

考核项 分值 说明
counter 正确实现 25 分 计数、清零、进位全部正确
shift_register 正确实现 25 分 移位、加载、方向控制正确
FSM 正确实现 35 分 状态转移正确、重叠检测正确
提交状态转移图 15 分 FSM 状态转移图清晰完整
合计 100 分

通过标准:≥ 70 分