2. Agilex FPGA PCIe硬核架构:Agilex PCIe HIP内部框图、PCS与PMA层功能划分、PHY时钟域与复位架构

Agilex FPGA的PCIe硬核(HIP)并非简单的协议栈堆叠,而是将数字逻辑层(PCS)与模拟混合信号层(PMA)深度耦合的专用硬宏单元。理解其内部框图、层间划分以及时钟/复位架构,是定位链路训练失败的基础。

2.1 Agilex PCIe HIP 内部框图

下图展示了Agilex PCIe HIP的顶层架构,包含从应用层接口到高速SerDes的全路径。

Agilex PCIe HIP 内部架构框图 Agilex PCIe HIP 内部架构框图 应用层接口(AXI4-Stream / Avalon-ST) 事务层(TLP 生成/解析、流量控制、虚通道管理) 数据链路层(DLLP、ACK/NAK、重放缓冲区) 物理层逻辑子层(MAC / PCS:加扰、8b/10b或128b/130b编码、弹性缓冲、SKP OS) PMA 子层(串行器/解串器、时钟数据恢复CDR、TX/RX均衡、阻抗校准) SerDes 通道(GXB 收发器) 说明:Agilex HIP 将事务层、数据链路层、物理层逻辑子层(PCS)和 PMA 全部集成在硬宏中,仅 SerDes 通道部分涉及模拟电路。
关键洞察:Agilex HIP 的物理层被明确拆分为 PCS(数字逻辑)和 PMA(模拟混合信号)两个子层。链路训练失败时,必须首先定位故障发生在 PCS 侧(如弹性缓冲溢出、加扰器失锁)还是 PMA 侧(如 CDR 失锁、信号完整性不足)。

2.2 PCS 与 PMA 层功能划分

物理层是链路训练的直接参与者。PCS 和 PMA 的功能边界清晰,但相互依赖性强。

功能域 PCS(物理编码子层) PMA(物理介质附加子层)
核心职责 数字编码/解码、加扰/解扰、弹性缓冲、符号对齐 串行/解串、时钟数据恢复(CDR)、TX/RX 均衡、阻抗校准
Gen1/Gen2 编码 8b/10b 编码器/解码器、逗号字符检测 不参与编码,仅处理串行比特流
Gen3/Gen4 编码 128b/130b 编码器/解码器、加扰器(LFSR)、块对齐 不参与编码,仅处理串行比特流
时钟域 核心时钟域(core_clk)与 PMA 时钟域(pma_clk)之间的弹性缓冲 高速串行时钟域(由 CDR 恢复或参考时钟倍频产生)
链路训练角色 发送/接收 TS1/TS2 有序集、训练序列状态机(LTSSM) 提供 CDR 锁定状态、信号检测(RxDetect)、电气空闲退出检测
常见故障模式 弹性缓冲上溢/下溢、加扰器失锁、SKP OS 插入错误 CDR 无法锁定、RX 均衡器收敛失败、阻抗校准超差
实战要点:在 Agilex 调试套件中,PCS 状态可以通过 hip_pcs_status 寄存器组读取,PMA 状态则通过 hip_pma_status 寄存器组读取。当链路训练卡在 Polling.Active 或 Configuration.Linkwidth 状态时,优先检查 PMA 的 CDR 锁定标志;当卡在 Recovery 状态时,优先检查 PCS 的弹性缓冲错误计数。

2.3 PHY 时钟域架构

Agilex PCIe HIP 的时钟架构是典型的多时钟域设计,涉及三个主要时钟域。时钟域之间的同步和相位关系直接影响链路训练的稳定性。

Agilex PCIe PHY 时钟域架构 Agilex PCIe PHY 时钟域架构 REFCLK 域 100MHz / 125MHz 差分参考时钟 来源:主板 PCIe 插槽或板载振荡器 PMA 时钟域 PLL 倍频产生高速串行时钟 CDR 恢复时钟(RX 侧) PCS 时钟域 pma_clk(与 PMA 同步) core_clk(与核心逻辑同步) 弹性缓冲(Elastic Buffer) 位于 PMA 与 PCS 之间,补偿两个时钟域之间的频率偏差(ppm 级) 核心时钟域(Core Clock Domain) 由 FPGA 核心 PLL 产生,驱动事务层、数据链路层及用户逻辑;与 PCS 时钟域通过异步 FIFO 桥接
常见陷阱:许多工程师误以为 PCIe 只有一个时钟域。实际上,REFCLK 域、PMA 域和核心域是三个独立的时钟域。链路训练失败的一个常见原因是 REFCLK 抖动超标(超过 PCIe 规范规定的 86 ps 峰峰值),导致 PMA 的 PLL 无法锁定或 CDR 失锁。务必使用频谱分析仪或示波器测量 REFCLK 的相位噪声。

2.4 复位架构与复位序列

Agilex PCIe HIP 的复位架构分为全局复位、PERST# 复位和功能级复位(FLR)三个层次。链路训练失败往往与复位时序不满足要求有关。

复位类型 触发源 影响范围 对链路训练的影响
全局复位(Global Reset) FPGA 配置完成(nSTATUS 释放) 整个 HIP 包括所有寄存器 HIP 完全初始化,LTSSM 从 Detect 状态开始
PERST# 复位 主板 PCIe 复位信号 物理层、数据链路层、事务层 LTSSM 回到 Detect 状态,重新开始链路训练
功能级复位(FLR) 软件通过配置空间发起 仅事务层及用户逻辑 物理层保持链接,不重新训练
复位时序检查清单:
  • PERST# 有效宽度:PCIe 规范要求至少 100 µs,Agilex 建议至少 1 ms 以确保 PMA 模拟电路完全放电。
  • REFCLK 稳定时间:PERST# 释放前,REFCLK 必须稳定至少 100 µs。
  • HIP 初始化完成:PERST# 释放后,HIP 内部初始化需要约 20 µs,之后 LTSSM 才会进入 Detect 状态。
  • 核心逻辑复位:用户逻辑必须在 HIP 初始化完成后才能开始访问 HIP 寄存器,否则可能导致配置错误。

在 Agilex 设计中,可以通过 hip_ctl 接口的 hip_ready 信号判断 HIP 初始化是否完成。建议在用户逻辑中使用该信号作为复位释放的条件,而不是简单地使用 PERST# 的上升沿。