Common Refclock 架构:共享参考时钟,到底怎么玩?
Common Refclock,说白了就是多个高速接口共用一颗参考时钟源。嗯,听起来很简单?实际项目里坑不少。
我记得早年做一款 25G 交换机,板子上 32 个 SerDes 通道全从一颗 156.25MHz 的 VCXO 分路出去。结果某些通道的眼图死活睁不开——后来发现是分配网络上的走线阻抗不连续导致的抖动放大。
今天我们就把它拆开了讲讲。
核心思想:一颗时钟喂饱所有接口
Common Refclock 架构还有一个更直白的名字——shared reference clock topology。它的思路是这样的:系统中所有 SerDes 通道(比如 PCIe、以太网、SATA)都从同一个参考时钟源获取基准频率。
你想想看,如果每颗 SerDes 芯片都自带独立晶振,它们之间没有频率锁定关系。做同步应用时,跨芯片的数据传输就会出现帧对齐问题。共同时钟就解决了这个痛点。
具体来说,架构包含三个要素:
- 参考时钟源——通常是高精度压控振荡器(VCXO)或温补晶振(TCXO),频率常见 100MHz、125MHz、156.25MHz。
- 扇出/分配网络——用时钟缓冲器(Fanout Buffer)或电阻电容分路,把一路信号等相(skew controlled)送到多个终端。
- 终端 SerDes PHY——接收参考时钟并恢复出内部 PLL 所需的 VCO 频率。注意,每个 PHY 内部都有自己的 PLL,但参考源是同一个。
关键理解点:Common Refclock 不等于同频同相。不同 PHY 之间的输出数据相位可以不同,但频率严格同源。你需要的是频率同步,不是相位同步。
拓扑有哪些样式?
我在项目中见过三种主流做法。它们各有优劣,选型时得看具体场景。
| 拓扑类型 | 拓扑描述 | 典型应用 | 我踩过的坑 |
|---|---|---|---|
| 星型分配 | 时钟源经一个缓冲器扇出多路,每路独立走线到 PHY | PCIe 多 lane 互联、交换芯片内部 SerDes | 曾经有一路走线长了 300mil,skew 超出 PLL 锁定范围 |
| 菊花链 | 时钟从第一颗 PHY 入、再出到下一颗 | 低端控制面板、背板 | 链尾信号过冲严重,必须加 RC 端接 |
| 混合型 | 主时钟缓冲器扇出到几个子缓冲器,再由子缓冲器继续扇出 | 大型机框、多板系统 | 级联抖动累加,需要严格预算 |
你看,星型最干净,但 PCB 走线多。菊花链省线但信号质量最差。混合型折中,但级联噪声控制要算清楚。
信号完整性的三个硬约束
Common Refclock 要想跑稳,你需要死磕三个参数:
- 抖动(Jitter)——参考时钟上的随机抖动和确定性抖动直接传递到恢复时钟。我习惯把参考时钟的峰峰值抖动控制在 SerDes 标准要求值的 1/3 以内。例如 PCIe Gen5 要求参考时钟 RMS 抖动 < 0.5ps rms,我的目标就是 < 0.15ps rms。
- 相位噪声(Phase Noise)——PLL 的带内相位噪声主要来自参考源。选择 VCXO 时,我会看 10kHz 偏移处的相噪值,一般需要低于 -140dBc/Hz。
- 时钟偏斜(Skew)——不同 PHY 接收到的参考时钟之间的时间偏差。如果偏差太大,PLL 可能无法锁定或者锁定后输出频率偏移过大。设计时通过等长走线控制,通常要求所有支路 skew < 50ps。
我曾经犯过的错:在一款 100G 交换板卡上,用了 3 个扇出缓冲器,每个缓冲器输出经不同层过孔到达 PHY。结果有一条路径的过孔数量多 2 个,导致 skew 达到 90ps——整个板卡在高温测试时随机丢包。后来把所有路径的过孔数统一,并在较短的路径上添加蛇形走线补偿,问题解决。
PLL 带宽与参考时钟的配合
SerDes 内部的 PLL 有一个衡量指标:环路带宽。它决定了参考时钟和 VCO 之间的相互作用。
- 如果 PLL 环路带宽很窄(比如 < 1MHz),参考时钟的远端(> 1MHz)相位噪声可以被抑制,但近端抖动无法被衰减。
- 如果 PLL 环路带宽很宽(比如 > 10MHz),参考时钟的抖动会被放大,但锁定时间会缩短。
所以,选择参考时钟源时,要对着 SerDes Datasheet 里的 PLL 带宽参数来匹配。一个实用的经验是:参考时钟的相位噪声拐点要落在 PLL 带宽的 1/10 以下,这样噪声能被环路有效抑制。
小技巧:当你有两种参考时钟源可选时,优先选相噪拐点更低的那一个。如果你的 PLL 带宽是 2MHz,拐点在 100kHz 的晶振比拐点在 1MHz 的晶振好得多。
一张图看懂 Common Refclock 的核心逻辑
下面这个 SVG 图把整个架构的流向画出来了。注意看时钟源、扇出、到各 PHY 的路径,以及最终 PLL 恢复出数据时钟的关系。
设计检查清单
每次画一块 Common Refclock 的板子,我都会过一遍这个清单,省得后期改版麻烦。
- ☐ 时钟源相位噪声曲线是否和目标 PHY 的 PLL 带宽匹配?
- ☐ 扇出缓冲器的附加抖动(additive jitter)是否够低?一般选 < 50fs rms。
- ☐ 所有 PHY 的参考时钟走线是否等长?我用 Allegro 的 Tcl 脚本直接输出长度报告。
- ☐ 时钟网络是否使用了 AC 耦合电容?如果需要隔直,电容位置靠近接收端。
- ☐ 终端端接是否匹配?差分时钟常用 100Ω 跨接,单端时钟按源端阻抗匹配。
- ☐ 板上其他高频信号(如数据线、电源开关噪声)是否对参考时钟形成了串扰?注意参考时钟走线周围 3 倍线宽以内不要走高频开关信号。
我的个人习惯:在原理图阶段就把参考时钟的抖动预算表格画好,每个节点填入抖动值,最后累积一算,如果超出标准就提前换更好的缓冲器或者调整拓扑。这是最省时间的办法。
看到这里,你大概明白 Common Refclock 核心是“同源不同相”,依赖分配网络的低抖动、低偏斜。实际项目里,星型分配最安全,但多板系统里混合型也常见。关键是把三个硬约束(抖动、相噪、偏斜)在原理阶段就算清楚,别等到 PCB 回来再哭。