第 12 章:外设集成
- 建立 SoC 外设集成的统一框架
- 规范 MMIO 地址映射、寄存器语义和时序接口
- 保证外设访问在流水线与总线系统中可验证
12.1 外设集成三件事
- 地址映射:每个外设分配不重叠地址区间。
- 总线适配:AXI/AHB/APB 或自定义桥接。
- 语义定义:寄存器读写 side effect 清晰可文档化。
12.2 MMIO 译码模板
always @(*) begin
sel_uart = (addr[31:16] == 16'h1fe0);
sel_plic = (addr[31:20] == 12'h0c0);
sel_clint= (addr[31:16] == 16'h0200);
end
要求:
- 译码互斥或明确优先级。
- 未命中地址返回可诊断错误码。
12.3 寄存器设计规范
RW、RO、W1C等属性明确。- 复位值明确。
- 写入副作用(触发发送/清中断)明确。
12.4 与流水线交互
- 访问外设通常是高延迟路径,应支持 backpressure。
- 有些寄存器读可能具 side effect,不能重复发起。
- 异常/flush 时要避免重复提交 MMIO 写。
12.5 最小验证
- 地址边界测试:首地址、末地址、越界地址。
- 读写一致性:写后读回。
- side effect 测试:一次写仅触发一次行为。