参考时钟的概念与重要性
好,咱们来聊聊参考时钟。刚接触 GTY 收发器时,我总觉得这玩意儿不就是给个时钟吗?随便找个晶振怼上去不就行了?后来有一次调试 25G 链路,眼图死活打不开,折腾了两周才发现是参考时钟抖动超标。嗯,从那之后我再也不敢小看这个“看似简单”的信号了。
说白了,参考时钟是 GTY 收发器内部所有高速逻辑的“心跳”。它决定了 PLL 的输出频率、数据的采样时机、以及 CDR 能否锁定。你不把参考时钟当回事,它就会给你脸色看——要么链路跑不上去,要么误码率高得离谱。
什么是参考时钟?
参考时钟是供给 GTY 收发器内部锁相环(PLL)的一个基准频率信号。PLL 会把它倍频到串行数据所需的高频,比如 25.78125 GHz(对应 25G SR)。也可以简单理解为:你给 PLL 一个干净的“种子”,PLL 负责把它变成数据速率要求的载波频率。
在我参与的一个项目中,客户要求用 156.25 MHz 作为参考时钟。但板子上走线太长,导致信号到了 FPGA 引脚时已经严重畸变。我当时建议他们换成差分 LVDS 输入,并加了一级时钟缓冲器,问题才解决。所以,参考时钟不光要看频率,还要看信号质量。
核心要点: 参考时钟的频率 = 数据速率 ÷(PLL 倍频系数 × 内部分频比)。例如 25G SR(25.78125 Gbps)常用 156.25 MHz 或 322.265625 MHz 作为参考。
参考时钟的关键参数
影响收发器性能的,主要是下面几个指标:
- 频率精度: 必须满足协议规定的 ±100 ppm 甚至 ±50 ppm。差多了 CDR 就锁不住。
- 抖动(Jitter): 参考时钟的抖动会直接传递给 PLL 输出,造成数据眼图闭合。重点看 RMS 抖动和峰峰值抖动。
- 占空比: DDR 或某些协议对占空比敏感,要求 45% ~ 55%。
- 上升/下降时间: 太慢会导致 PLL 鉴相器工作不稳定。
| 参数 | 典型要求 | 凭经验说 |
|---|---|---|
| 频率精度 | ±50 ppm(CPRI)/ ±100 ppm(Ethernet) | 选温补晶振(TCXO)比较稳 |
| RMS 抖动 | < 1 ps(集成在 12 kHz ~ 20 MHz) | 别用普通晶振,试试低抖动晶振 |
| 占空比 | 45% ~ 55% | 差分差分,别偷懒用单端 |
| 上升/下降时间 | < 1 ns(典型 0.5 ns 以内) | PCB 走线尽量短、直 |
参考时钟如何影响收发器性能?
来,画张图你就明白了。
从上图可以看到,参考时钟源的质量会通过缓冲、PLL、分频器层层传递,最终直接影响数据恢复单元和眼图。举个例子:如果参考时钟上有 2 ps 的抖动,经过 PLL 后可能被放大到 5~6 ps(取决于 PLL 带宽),那么数据眼图的高就只剩一半了。你说这还能用吗?
避坑指南:我遇到的三种典型问题
- 参考时钟跟数据线靠太近。 曾经有一版 PCB,参考时钟走线跟高速串行线平行了 3 英寸。结果串扰严重,PLL 输出带上了差模噪声。之后我强制规定:参考时钟走线必须跟高速差分线间距 ≥ 5 倍线宽。
- 用了单端晶振当参考。 老实说,单端晶振在 1 GHz 以下也能工作,但共模噪声抑制差。有个项目就是因为单端输入导致 CDR 频繁失锁,换差分晶振后一切正常。我建议所有 GTY 设计都用差分参考时钟(LVDS 或 LVPECL)。
- 参考时钟频率选了“非标”值。 某次一个 10G 链路,我随手选了 125 MHz。结果 PLL 倍频系数非整数,输出频率偏差超出协议范围。查了 UG 手册才发现 GTY 的参考时钟频率有推荐列表,不是随便选的。现在我会先查
ug576的参考时钟章节。
小技巧: 如果在板上调试时发现眼图闭合,先用频谱仪看参考时钟的相位噪声。通常 100 Hz 偏移处的噪声密度超过 -90 dBc/Hz 时,就得换晶振了。
参考时钟配置的实用流程
我自己在项目中总结了一套步骤,分享给你:
- 确定数据速率 —— 比如 25.78125 Gbps。
- 查推荐参考时钟频率表 —— 来自
ug576或pgxxx。 - 选晶振 —— 优先差分输出,RMS 抖动 <0.5 ps。
- PCB 布局 —— 参考时钟走线距其他信号 ≥ 20 mil,内外层包地。
- 配置 PLL 分频比 —— 在 Vivado 中通过 REFCLK 和 PLL 属性设置。
- 仿真验证 —— 用眼图仿真工具看余量。
注意: 不要在 GTY 参考时钟输入端接交流耦合电容(AC coupling)!GTY 内部已有内部偏置,外部再加电容会破坏共模电平,导致 PLL 无法锁定。我第一次这样干时查了两天原理图……
好了,关于参考时钟的概念和重要性,就说这么多。其实核心一句话:你把参考时钟当宝贝伺候,它就让你的眼图又大又亮;你敷衍它,它就让你链路跑不起来。嗯,重视它,没错的。