4.8 KiB
SoC 集成与时钟复位技术说明
1. 模块定位
rtl/soc_top.v 是项目的系统集成顶层。该文件不重新实现 CPU、UART 或 SRAM 控制器,
而是将 OpenLA500 处理器、存储器、外设、DMA 和三个计算加速器组织为统一的 AXI 系统。
项目相关的集成工作包括扩展 Crossbar 从端口、增加 DMA 主端口、划分加速器地址窗口、
建立 CPU--SYS 和 SYS--ML-KEM 时钟边界,以及将完成状态接入中断系统。
系统采用 CPU 控制、DMA 搬运、加速器计算的职责划分。CPU 通过寄存器完成参数配置和 任务启动;DMA 作为第二个 AXI 主机访问存储器与外设;FFT、ML-KEM 和矩阵乘法器作为 被控计算单元。矩阵批处理序列器位于 DMA 控制窗口内,可脱离 CPU 的逐组调度执行长任务。
2. 地址空间与互连
系统 Crossbar 具有两个主端和八个从端。主端 0 接收经 Axi_CDC 转换后的 CPU AXI
事务,主端 1 接收 DMA 发起的 AXI 事务。与本项目直接相关的从端如下。
| 物理地址 | 模块 | 作用 |
|---|---|---|
0x1f30_0000 |
DMA 控制窗口 | 通道寄存器位于 0x000--0x1ff,矩阵序列器位于 0x200--0x21f |
0x1f40_0000 |
FFT/ML-KEM 共享窗口 | ML-KEM 使用低 0x0000--0x3fff,FFT 使用 0x8000--0xcfff |
0x1f50_0000 |
矩阵乘法器 | 控制状态、CRC32、双 Bank 输入和结果窗口 |
CPU 软件使用高位映射访问未缓存地址,例如物理地址 0x1f40_0000 对应
0xbf40_0000。DMA 始终使用物理地址,软件在提交描述符前需要去除 CPU 虚拟地址的
高位映射。该约定避免 DMA 错把虚拟地址送入 Crossbar。
DMA 控制从端原始接口为 AXI4,经 axi_axil_adapter 转换为 AXI-Lite。地址偏移
0x200 的访问在顶层被路由到 cdma_matmul_bridge,其余访问进入通用 DMA 通道寄存器。
写地址的目标选择在 AW 握手后保持到 B 响应返回,读地址选择保持到 R 响应返回,从而
避免响应阶段再次依赖变化中的地址信号。
3. 时钟结构
硬件实现使用 50 MHz 外部时钟驱动 PLL,产生三个逻辑时钟域。当前实现报告中的目标
频率为 CPU 33.333 MHz、系统总线 50 MHz 和 ML-KEM 76.923 MHz。CPU 核及其 AXI 侧
逻辑工作在 cpu_clk;Crossbar、DMA、FFT、矩阵乘法器和外设工作在 sys_clk;
ML-KEM 核心工作在 mlkem_clk。
CPU AXI 五个通道通过 Axi_CDC 跨入系统时钟域。ML-KEM 的配置、批量数据窗口和完成
响应通过第二个完整 AXI CDC 跨越 SYS--ML-KEM 边界;mlkem_axi_slave 内部的
toggle/ack 负责把寄存器动作转换为单次事件。FFT 与矩阵乘法器均位于系统时钟域,不需要
额外的计算域 CDC。
完整的时钟归属、异步时钟组约束、AXI 双时钟 FIFO 和中断边界见 时钟域、复位与跨时钟域设计说明。本文件只说明顶层集成关系。
行为仿真中 SIMULATION=1,PLL 被可控仿真时钟替代:sys_clk 使用 50 MHz testbench
时钟,cpu_clk 使用约 33.333 MHz 时钟,mlkem_clk 暂与 sys_clk 相同。该模式用于
功能验证,不用于推导硬件 PLL 的锁定时间或跨域相位关系。
4. 复位结构
硬件路径中,PLL 的 locked 信号首先送入系统域 rst_sync。sys_resetn 释放后,CPU
域和 ML-KEM 域的复位同步器再分别产生 cpu_resetn 和 mlkem_resetn。各同步器采用
异步断言、同步撤销原则,使复位可立即进入有效状态,而退出复位只能发生在本时钟域的
有效边沿。
复位约束不仅要求状态机回到初始状态,还要求复位释放前不产生外部可见事务。当前短时
XSIM 证据记录了 UART 写使能、CPU AXI AW/W/AR valid、DMA 读写请求、矩阵启动和
ML-KEM 启动。VCD 中 sys_resetn、mlkem_resetn 和 cpu_resetn 分别约在 2.030 us、
2.070 us 和 2.085 us 释放;第一个 CPU 读请求出现在约 2.205 us,晚于 CPU 复位释放。
5. 中断与完成状态
DMA 的通道完成标志归并为 cdma_dma_finish,矩阵序列器另有 cdma_matmul_seq_irq。
矩阵乘法器输出电平型 matmul_intr,ML-KEM 前端输出 mlkem_intr,FFT 完成状态接入
原有 confreg 中断路径。性能测试程序主要采用轮询,以减少短任务的中断现场开销;
中断信号仍保留给功能软件和后续异步调度使用。
6. 验证重点
顶层验证应覆盖地址译码互斥性、CPU 与 DMA 并发访问、AW/W 分离到达、复位前零事务、 各域复位释放顺序以及完成状态的置位和清除。板级功能通过 FFT、ML-KEM 和矩阵乘法 程序分别验证;时钟频率、时序裕量和资源使用以实现后报告为准。行为仿真不能替代 PLL 实现检查,单个应用通过也不能证明所有地址空洞和并发组合均已覆盖。