1. Kria平台与多时钟系统概览
AMD Kria SOM(System-on-Module)把 Zynq UltraScale+ MPSoC 的 PS(Processing System)与 PL(Programmable Logic)集成在一个紧凑模块上,再通过载板(Carrier Card)引出外设接口。对做逻辑设计的人来说,Kria 的关键特征是:PS 侧和 PL 侧各自拥有独立的时钟树,二者之间又必须通过 AXI、DMA 或 PL-to-PS 中断等通路交换数据。只要数据跨过这条边界,就必然涉及跨时钟域(CDC)问题。本节先建立整体时钟版图,为后续的 CDC 验证打基础。
一、Kria SOM 的时钟资源分布
以常见的 Kria KV260 / KR260 为例,模块内部和载板上可用的时钟源大致分为四类:
- PS 参考时钟:由载板上的固定晶振提供,典型为 33.333 MHz,送入 PS 的 PLL 后生成 CPU、DDR、AXI 等时钟。
- PL 参考时钟:载板提供 27 MHz 或 100 MHz 差分/单端时钟,进入 PL 的 BUFG/MMCM/PLL。
- 收发器参考时钟:GTH/GTY 需要独立的 125 MHz、156.25 MHz 等参考时钟,用于高速串行链路。
- 外部器件时钟:以太网 PHY、DisplayPort、MIPI、SD 卡等外设各自带回或需要独立时钟。
这些时钟在频率、相位、抖动特性上互不相关。例如 PS 的 AXI HP 接口可能跑 250 MHz,而 PL 侧视频流水线跑 148.5 MHz(1080p60 像素时钟),两者之间没有固定整数倍关系,属于典型的异步时钟域。
二、PS-PL 时钟域划分
PS 与 PL 之间的接口可以按“谁驱动时钟”来划分:
| 接口 | 时钟来源 | 典型频率 | CDC 风险 |
|---|---|---|---|
| AXI GP(M_AXI_HPM) | PS 提供 ACLK | 100–250 MHz | PL 逻辑若用本地时钟采样,需同步 |
| AXI HP(S_AXI_HP) | PL 提供 ACLK | 150–300 MHz | PS 侧 DMA 与 PL 时钟异步 |
| PL-to-PS 中断 | PL 时钟 | — | 脉冲需展宽或握手 |
| GPIO / EMIO | PS 或 PL | — | 单比特电平需两级同步 |
需要特别注意的是:AXI 接口本身并不自动解决 CDC。AXI 协议要求同一事务内所有信号在同一时钟域,但 PL 内部逻辑如果使用另一个时钟去读写 AXI 寄存器,仍然要在用户逻辑里插入同步器或异步 FIFO。很多初学者误以为“用了 AXI 就安全了”,这是 CDC 验证中最常见的误区之一。
三、典型多时钟应用场景
Kria 上常见的多时钟场景包括:
- 视频采集与显示:MIPI 输入像素时钟(如 297 MHz)→ PL 图像处理(300 MHz)→ DisplayPort 输出像素时钟(148.5 MHz),三级时钟域串联。
- 工业以太网:PS 的 GEM 控制器时钟与 PL 侧 TSN 逻辑时钟异步,时间戳需要跨域传递。
- AI 推理加速:DPU 运行在 PL 的 300–400 MHz,PS 通过 AXI 下发指令并读取结果,控制路径与数据路径时钟不同。
- 多传感器融合:不同传感器各自带回 10–100 MHz 不等的采样时钟,汇聚到 PL 后统一处理。
这些场景的共同点是:数据流跨越至少两个异步时钟域,且往往同时存在控制路径和数据路径。控制路径上的单比特信号(如 start、done、valid)如果处理不当,会出现亚稳态传播;数据路径上的多比特总线如果直接跨域,会出现数据错位或采样到中间值。
四、CDC 验证的必要性
CDC 问题在仿真中往往“看起来正常”,因为仿真器默认没有亚稳态建模,信号要么 0 要么 1。但在实际硅片上,当触发器的建立/保持时间被违反时,输出可能在一段时间内处于中间电平,并随机稳定到 0 或 1。这种亚稳态会沿逻辑链传播,导致:
- 状态机跳转到非法状态;
- 多比特总线各位到达时间不一致,采样到错误组合;
- 握手信号丢失,系统死锁;
- 偶发、难以复现的数据错误。
对 Kria 平台而言,CDC 验证的目标可以归纳为三点:识别所有跨时钟域信号、确认每个跨域路径都有正确的同步结构、验证同步结构在极端条件下不会丢失或重复数据。后续章节将围绕这三项目标,分别介绍同步器设计、异步 FIFO、握手协议以及对应的验证方法。
上图把 PS 与 PL 各自的时钟域、内部主要模块以及三条典型跨域路径画在一起。可以看到,AXI GP、AXI HP 和中断路径都跨越了 CDC 边界,而 PL 内部的异步 FIFO 和同步器链正是处理这些跨域信号的关键结构。理解这张图,就理解了 Kria 多时钟系统的基本骨架,也就能明白为什么 CDC 验证必须从接口识别开始,而不是直接从写测试激励开始。