2. Versal器件与PCIe子系统总览
Versal ACAP 是 AMD 面向自适应计算推出的异构平台,它把标量处理、可编程逻辑、AI 引擎和专用硬核集成在同一芯片上。对 PCIe 高速互连设计而言,真正决定链路能力的是其中与 PCIe 直接相关的硬核资源:PCIe 控制器硬核、GTY/GTYP 收发器、参考时钟网络以及复位域。理解这些资源在芯片中的位置和归属,是后续做管脚分配、时钟约束和复位设计的前提。
一、Versal ACAP 的整体架构层次
从互连设计的视角看,Versal 可以划分为四个层次。最上层是处理系统(PS),包含 Arm Cortex-A72 应用核、Cortex-R5F 实时核、DDR 控制器和平台管理单元(PMU/PMC)。第二层是可编程逻辑(PL),由 CLB、DSP58、Block RAM 和 UltraRAM 构成,承担用户逻辑和软核互连。第三层是 AI Engine(AIE)阵列,主要用于矢量计算,与 PCIe 数据通路通常通过 PL 或 NoC 交互。第四层是专用硬核,包括 PCIe 控制器、DDRMC、GTY/GTYP 收发器、100G 以太网 MAC 等。
连接这些层次的关键是片上网络 NoC 和 AXI 互连。NoC 提供从 PL、PS、DDR 到硬核的高带宽通路,PCIe 控制器的 AXI 主/从接口通常挂接在 NoC 或 PL 的 AXI SmartConnect 上。设计时需要明确:PCIe 的 DMA 数据流走 NoC 还是走 PL 内部 AXI,这直接决定带宽和延迟。
二、PCIe 控制器硬核的位置与接口
Versal 的 PCIe 控制器是集成在芯片中的硬核,不占用 PL 逻辑资源。以 Versal Premium 和部分 AI Core 系列为例,器件内通常集成多个 PCIe 控制器,每个控制器支持 PCIe Gen4 x16 或 Gen5 x8 等配置。控制器硬核位于芯片的 PCIe/GT 象限(quad)附近,与 GTY/GTYP 收发器成对出现:一个 PCIe 控制器对应一组收发器通道。
控制器对外提供三类接口。第一类是 PCIe 差分信号,经 GTY/GTYP 收发器引出到封装管脚。第二类是 AXI 接口,包括 AXI Master(用于 DMA 读写主机内存)和 AXI Slave(用于主机访问用户寄存器)。第三类是配置与管理接口,如 PCIe 配置空间访问、MSI/MSI-X 中断、复位和时钟控制。实际设计中,AXI Master 通常接到 NoC 或 DDR,AXI Slave 接到 PL 中的寄存器文件。
三、GTY/GTYP 收发器资源
GTY 和 GTYP 是 Versal 中的高速串行收发器,二者在速率和功能上略有差异:GTYP 主要面向 PCIe Gen4/Gen5 和以太网,GTY 支持更高线速率和更多协议。每个收发器 quad 包含四个通道(lane),共享两路参考时钟输入和一组 quad 级 PLL。PCIe 链路使用其中连续的若干 lane,例如 x8 链路占用两个 quad 的八个通道。
收发器内部包含 PMA(串并转换、均衡、时钟恢复)和 PCS(编码、弹性缓冲)。对 PCIe 而言,PCS 需要配置为 PCIe 模式,使能 128b/130b 编码和 SKP 有序集处理。参考时钟通常由外部差分晶振提供 100 MHz,经 IBUFDS-GTE 进入 quad 的 REFCLK 管脚。若使用 SRNS(Separate Reference No Spread)或 SRIS(Separate Reference with Independent Spread),时钟架构会不同,需要在约束中明确。
四、时钟与复位域划分
PCIe 子系统的时钟分为三个域。第一是参考时钟域:100 MHz 差分参考时钟进入 GT quad,驱动 PMA 的 PLL,产生串行时钟和恢复时钟。第二是 AXI 时钟域:PCIe 控制器的 AXI 接口运行在用户提供的时钟上,常见为 250 MHz 或 300 MHz,需与 NoC 或 PL 逻辑同域或做跨时钟处理。第三是配置时钟域:PCIe 配置空间和中断逻辑通常运行在较慢的时钟上,如 50 MHz 或 100 MHz。
复位域同样需要划分。PCIe 规范定义了 PERST# 信号,用于复位整个链路和设备。在 Versal 内部,复位分为:GT 复位(收发器初始化)、控制器复位(PCIe 控制器逻辑)、AXI 复位(用户接口逻辑)和系统复位(PS/PL 全局复位)。这些复位有严格的先后顺序:PERST# 释放后,先完成 GT 初始化和 PLL 锁定,再释放控制器复位,最后释放 AXI 复位。顺序错误会导致链路训练失败或 AXI 接口挂死。
五、设计中的关键判断
在具体项目中,拿到器件型号后应先确认三件事。第一,PCIe 控制器数量与位置:查阅器件数据手册的“PCIe 控制器”章节,确认可用控制器编号及其对应的 GT quad。第二,GTY/GTYP 通道分配:确认目标 quad 是否被其他高速接口占用,避免 lane 冲突。第三,时钟与复位资源:确认参考时钟管脚是否与目标 quad 的 REFCLK 对应,以及 PERST# 的管脚位置和极性。
一个常见的教学示例是:使用 Versal Premium VP1902,配置一个 PCIe Gen5 x8 端点。此时需要占用两个 GTYP quad 的八个通道,参考时钟选择 quad 0 的 REFCLK0,AXI 接口运行在 300 MHz,DMA 数据经 NoC 写入 DDR4。复位顺序为:外部 PERST# 拉低 → GT 复位 → 等待 PLL 锁定 → 释放控制器复位 → 释放 AXI 复位。若顺序颠倒,链路训练会停在 Detect 状态,LTSSM 无法进入 L0。
总结来看,Versal 的 PCIe 子系统是“控制器硬核 + GT 收发器 + NoC/AXI + 时钟复位”的组合。控制器决定协议能力,GT 决定物理链路,NoC/AXI 决定数据通路,时钟复位决定链路能否正常建立。四者缺一不可,且必须在设计初期就统一规划。