practice_templates/basic_01/verilog_combo/README.md

基础实践 1-1: Verilog 组合逻辑设计

📚 知识点

知识点 说明
assign 连续赋值 组合逻辑的基本描述方式
always @(*) 组合逻辑的过程块写法
case/casez 语句 多路选择、优先编码器
条件运算符 ?: 三目运算符实现 MUX
位拼接 {} 数据位的拼接和重复操作

🎯 任务目标

你需要补全 3 个 RTL 模块:

1. rtl/mux4to1.sv — 4 选 1 多路选择器

  • 4 个 8-bit 输入 in0~in3,2-bit 选择信号 sel
  • 根据 sel 值选择输出

2. rtl/decoder3to8.sv — 3-8 译码器

  • 3-bit 输入 in,使能信号 en
  • 输出 8-bit out,独热码

3. rtl/priority_encoder.sv — 优先编码器

  • 8-bit 输入 req(请求信号)
  • 输出 3-bit grant_idx(最高优先级的请求编号)
  • 输出 1-bit valid(是否有请求)

📁 文件结构

├── rtl/
│   ├── mux4to1.sv           ← ⭐ TODO: 补全多路选择器
│   ├── decoder3to8.sv       ← ⭐ TODO: 补全译码器
│   └── priority_encoder.sv  ← ⭐ TODO: 补全优先编码器
├── tb/
│   └── tb_combo.sv          ← 测试平台(完整)
├── Makefile
└── README.md

🏃 操作步骤

  1. 阅读每个模块的接口定义和注释
  2. 按顺序补全 3 个模块
  3. make compile — 编译
  4. make sim — 运行仿真
  5. 查看输出,确认 "ALL TESTS PASSED"

✅ 验收标准

  • 编译无错误、无警告
  • 仿真输出 "ALL TESTS PASSED"
  • 所有测试向量通过

📝 考核方式

考核项 分值 说明
mux4to1 正确实现 30 分 4 个通道选择全部正确
decoder3to8 正确实现 30 分 独热码输出正确,使能控制正确
priority_encoder 正确实现 30 分 优先级逻辑正确,valid 信号正确
代码风格 10 分 缩进规范、注释清晰
合计 100 分

通过标准:≥ 70 分