【每日一题】PCIe 里的 RefClk (Reference Clock) 到底是干什么的?

我们经常看到很多设备,包括示波器,PCIe协议分析仪可以监控sideband信号,包括RefClk信号,参看下图为SerialTek PCIe 5.0和6.0协议分析仪监控RefClk以及PERST#信号的情况,实际上该SerialTek PCIe分析仪可以监控所有的sideband信号,包括图片上显示的12V/3.3V功耗(电压、电流)。

那么我们今天来看一下pcie插卡上面的reference clock的信号,电压,频率,差分信号等等,如何来测试这个信号?如果该信号不完全符合标准的电压等要求,对于下游downstream pcie device有什么影响等。

一、PCIe 里的 reference clock 到底干什么?

PCIe 链路本身是高速差分串行,每条 Lane 自己嵌入时钟 (8b/10b 或 128b/130b 编码后由 CDR 恢复),传输数据时并不依赖外部 refclk

但 refclk 主要给两类东西用:

  1. 给 SerDes PLL 提供基准频率(大多数实现是这样):

    • 100 MHz 差分时钟进 PHY,

    • PHY 内部分频/倍频 → 2.5/5/8/16/32 GT/s 等 Line Rate。

  2. 给控制逻辑 / LTSSM / 计时器等数字部分提供主时钟(或用于生成这些时钟)。

早期 PCIe 1.0/2.0 基本都是系统级共享时钟 (Common Refclk, SRIS=0)

  • RC(Root Complex)和所有 Endpoints 共享一套 100 MHz refclk;

  • 插槽上的 CLK+/- 就是 root 端 clock buffer 扇出的一路。

后来 PCIe 3.0+ 之后多了 SRIS/SRNS(独立时钟) 模式:

  • 每个端点可以用自己的 100 MHz 或其他频率本振(通过 SSC 等保持频偏在规范内);

  • 对 refclk 的布线拓扑要求就不一样了。

你问的是"插卡上的 reference clock 信号、电压、差分信号,以及如何连接到对端",主要就是指 Common Refclk 模式下 slot 上那对 100 MHz 差分时钟 CLK+ / CLK-


二、典型电气参数:频率、电压、差分特性

1. 频率

  • 名义频率:100 MHz

  • 允许偏差:±300 ppm(具体看 PCIe Base Spec 和 CEM Spec,带 SSC 时会有额外的调制范围要求)。

  • 很多系统会加 SSC(Spread Spectrum Clocking)

    • 一般是 −0.5% 左右下展宽调制

    • 减少 EMI,但会让接收端的 CDR / PLL 设计稍微复杂一点。

2. 信号制式

常见几种:

  • HCSL(High-Speed Current Steering Logic)

    • 这是最典型的 PCIe refclk 格式。

    • 端接通常是每根线对地 50 Ω(或等效)+ 电流源驱动。

    • 差分摆幅大约 0.7--1.0 Vpp-diff 量级(不同 clock buffer 会有略微差异)。

  • LVDS / LVPECL / CML 等

    • 某些板级会把 HCSL 转换为 LVDS/LVPECL 等再送往芯片。

    • CEM 规范更多针对 HCSL;板内可以做电平转换,但要保证接收端 sees 一个满足规范的差分时钟。

在插槽层面,你可以简单理解为:

PCIe slot 上的 CLK+ / CLK- 是一对 100 MHz 差分 clock,逻辑上类似 HCSL/LVDS 差分时钟,摆幅在几百 mV 到 1 Vpp-diff 之间。

3. 差分信号的关键参数

对 refclk 这种 低数据率(100 MHz)但对抖动敏感的信号,主要关心:

  • 差分摆幅 Vpp-diff(太小会导致接收器接收门限不够,太大则可能导致过冲 / EMI 问题);

  • 共模范围(RC/EP PHY 输入的 common-mode 范围,一般几百 mV 到 1.x V 左右);

  • 上升/下降时间(slew rate,需要足够快以保证有效时钟边沿,但不能过快以免产生过多 EMI 和反射);

  • 周期抖动 / 周期--周期抖动 / 积分抖动(RMS、peak-to-peak 等)

    • 抖动直接决定 PLL 能否锁定,以及 SerDes CDR 的容差 margin;
  • 对称性 / 占空比(一般 50% ± 5--10%)。


三、拓扑:refclk 是怎么"从 upstream 传到 downstream 的"?

这里容易被概念混淆。简单区分:

  • 数据链路方向 (upstream/downstream)

    • Downstream Port:在 RC、Switch 侧(比如 Root Port、Switch Downstream Port);

    • Upstream Port:在 Endpoint / Switch Upstream 侧。

  • Refclk 拓扑

    • 通常是 RC → 多路 clock buffer → 各个下游 slot / Endpoint

也就是说:

refclk 从"更高层级"的 clock 源经过 buffer 扇出到每个 slot / 芯片, 并不是沿着 PCIe data lane 方向"上/下游传递"的信号。

典型几种情况:

  1. 主板 Common Clock

    • CPU RC、PCH、PCIe Switch、插槽(x16/x8/x4 等)。
    • 主板上有一个或多个 100 MHz clock generator;

    • 经 buffer / fanout 芯片分成 N 路;

    • 分别走差分线到各个:

  2. 独立时钟(SRIS/SRNS)

    • 插卡自己有一个晶振/PLL 产生 100 MHz;

    • 主板给自己的 RC/Root 另一个本振;

    • 双方只要求频偏在规范允许范围内,链路仍能训练成功。

    • 这种模式下,slot 上的 refclk 引脚可能空着,或定义为 SRIS。

  3. Slot 级:

    • 主板通过 slot 的 CLK+ / CLK- 把 refclk"送给"插卡

    • 插卡上 PHY/桥片再用这个 clock 做 PLL。

    • 对于标准 CEM 插卡,如果是 Common Refclk 模式:

    • 方向是:"主板 → 插卡",而不是"上游数据端口 → 下游数据端口"。

所以你可以记住一句话:

refclk 是 系统时钟拓扑 的一部分,不是 PCIe 上下行方向里的一员; 它的"方向"更多是 从 clock 发生器 → 各元件/插卡 的扇出,而不是从 upstream 端口到 downstream 端口。


四、工程上如何测试这对 refclk 差分信号?

1. 测什么?

通常至少要看:

  1. 波形与摆幅

    • 差分 Vpp、单端振幅、共模电平;

    • 上升/下降时间。

  2. 抖动

    • 周期抖动 (Tj)、周期--周期抖动 (C--C jitter)、RMS Jitter;

    • 积分抖动在指定带宽内(比如 12 kHz--20 MHz)。

  3. 频率与 SSC

    • 实际频率(含 ppb / ppm 偏差);

    • 是否存在 Spread Spectrum,折线/三角波形态、调制深度等。

  4. 信号完整性

    • 眼图、过冲、下冲、反射;

    • 拐角、阻抗不连续导致的 ringing;

    • 差分对 skew(时序偏移)。

2. 用什么仪器?

  • 示波器(带差分探头)

    • 带宽 1 GHz 以上基本够看 100 MHz refclk 的波形和抖动;

    • 使用 高阻抗差分探头,避免过多 load。

  • 频谱仪 + 相位噪声分析(更严谨的 jitter / phase noise 测试)。

  • 时钟/抖动分析仪(专用 clock jitter analyzer)。

在实践里,大多数板级 bring-up:

高带宽示波器 + 差分探头 就足够判断"是不是明显不对劲"。

3. 在什么地方测?

  • 如果想看主板输出质量:

    • 在 slot 就近的 test pad / 0 Ω 电阻位置测量;

    • 或在 refclk buffer 的输出脚附近测。

  • 想看插卡上"看到的 clock":

    • 插卡上如果有 refclk input net,可以在其 series 终端电阻 / 预留测试点处测。

注意:

不要直接撬开芯片脚焊盘测,一是危险,二是探头电容太大,可能改变信号形态。


五、refclk 不满足规范时,对 downstream PCIe 设备有什么影响?

从"轻微问题"到"致命问题",大致是这一串:

1. 轻微超差:频偏 / 抖动稍大

  • 可能表现为:

    • 上电偶尔训练时间变长

    • 链路可以 up,但在高温/低温或电压边界条件下不稳定

    • 用协议分析仪看,error counter / replay 增多。

  • 对下游 Endpoint 来说:

    • PLL 锁定 margin 变小;

    • CDR 层面的 jitter budget 被压缩,导致对数据抖动不够"宽容"。

2. 摆幅太小 / 共模不对 / 边沿太缓慢

  • 接收端可能:

    • PLL 根本锁不上 refclk → LTSSM 停留在 Detect/ Polling 反复;

    • 上电时序极不稳定,有时上,有时不上。

  • 在 BIOS 或 OS 里可能看到:

    • 根本枚举不到这条 PCIe 设备;

    • 或者频繁 link training failed / surprise down。

3. 抖动太大 / SSC 异常 / 时钟形态畸变

  • 即使能锁定,也会:

    • Link Training 失败率提高

    • 训练出错,降速 / 降宽;

    • high BER(高 bit error rate),触发大量重传,性能严重下滑。

你可以把 refclk 看成:

SerDes PLL/PHY 稳定性的"地基" 地基不稳 → 上面的 2.5G/5G/8G/16G/32G 数据链路,迟早会出问题。

4. 系统级奇怪 Bug

在一些大系统上,你会看到这种现象:

  • 单板测试没问题,多板安装在大型 backplane 后,某些槽位的设备:

    • 偶尔不上电;

    • 仅在某个插槽不稳定;

    • 只要换到另一个槽位就好。

很多时候,问题根源就是某些槽位的 refclk 布线更长 / 负载更重 / 反射更严重,边缘槽位的 refclk 质量最差 → 某些 Endpoint PHY 对 refclk 质量更敏感,表现为"与型号相关的插槽问题"。


六、工程角度的小建议

  1. 设计/调试阶段:把 refclk 当成 high-priority 信号

    • 差分走线等长、阻抗控制、尽量少换层;

    • 远离强干扰源(电源 FET、DC-DC 开关节点等)。

  2. 确认 Clock Tree 设计

    • Clock generator → buffer → fanout → slot / chip 的拓扑是否清晰;

    • Buffer 输出电平模式(HCSL / LVDS)与接收端输入匹配。

  3. 多板 / 不同长度 slot

    • 对最差路径(最长那条 refclk 差分线)做 SI 仿真 & 实际测量;

    • 看 worst case 抖动、摆幅、边沿。

  4. 如果你在做测试工具 / 协议分析仪 / 插卡类产品

    • 允许更大的摆幅区间和共模范围;

    • 对抖动的容差留更大 margin;

    • 必要时考虑板上 re-clock / jitter cleaner 芯片。

    • 你的卡往往会插在"各种非常糟糕的主板"上 →

    • 自己板上的 refclk 接收要尽量"robust":

相关推荐
测试专家1 小时前
FPGA在TSN板卡应用
fpga开发
Darken031 小时前
基于 STM32 ——GPIO输入
stm32·单片机·嵌入式硬件·gpio
影阴1 小时前
stm32 硬件i2c + hal库
stm32·单片机·嵌入式硬件
阿拉斯攀登1 小时前
在STM32上使用FreeRTOS
stm32·单片机·嵌入式硬件
ZeroNews内网穿透1 小时前
公网访问本地搭建开源在线流程图工具Draw.io
服务器·数据库·网络协议·安全·http·流程图·draw.io
DARLING Zero two♡1 小时前
【Linux操作系统】简学深悟启示录:线程同步与互斥
linux·运维·服务器
2501_915921431 小时前
Fiddler抓包工具详解,HTTPHTTPS调试、代理配置与接口分析实战教程
服务器·ios·小程序·fiddler·uni-app·php·webview
hhwyqwqhhwy1 小时前
linux 驱动iic
linux·运维·服务器
满天星83035772 小时前
【Linux】【进程间通信】管道
linux·运维·服务器