• 建立 SoC 外设集成的统一框架
  • 规范 MMIO 地址映射、寄存器语义和时序接口
  • 保证外设访问在流水线与总线系统中可验证

12.1 外设集成三件事

  1. 地址映射:每个外设分配不重叠地址区间。
  2. 总线适配:AXI/AHB/APB 或自定义桥接。
  3. 语义定义:寄存器读写 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

要求:

  1. 译码互斥或明确优先级。
  2. 未命中地址返回可诊断错误码。

12.3 寄存器设计规范

  1. RWROW1C 等属性明确。
  2. 复位值明确。
  3. 写入副作用(触发发送/清中断)明确。

12.4 与流水线交互

  1. 访问外设通常是高延迟路径,应支持 backpressure。
  2. 有些寄存器读可能具 side effect,不能重复发起。
  3. 异常/flush 时要避免重复提交 MMIO 写。

12.5 最小验证

  1. 地址边界测试:首地址、末地址、越界地址。
  2. 读写一致性:写后读回。
  3. side effect 测试:一次写仅触发一次行为。

更新时间: