4、硬件层面:时钟问题导致协商失败
时钟,是PHY芯片的心跳。
这话一点不夸张。我遇到过不少项目,Link灯死活不亮,翻来覆去查配置、查变压器、查PCB走线,最后发现——时钟偏了那么一点点。说白了,PHY内部的PLL和CDR电路全指着这个参考时钟来同步数据。时钟不准,自动协商根本走不到最后一步。
4.1 PHY需要什么样的时钟
大多数千兆PHY需要25MHz或125MHz的参考时钟。为什么是这个频率?因为125MHz是1000BASE-T的符号率,内部PLL可以直接倍频。25MHz则是外部晶振常见值,靠PLL升到125MHz。
| 速率标准 | 符号率 | 常用参考时钟 | 频率精度要求 |
|---|---|---|---|
| 1000BASE-T | 125 MHz | 25 MHz / 125 MHz | ≤ ±50 ppm |
| 100BASE-TX | 125 MBaud | 25 MHz | ≤ ±50 ppm |
| 10BASE-Te | 10 MHz | 25 MHz | ≤ ±50 ppm |
±50 ppm是什么概念?25 MHz时钟偏差不超过1250 Hz。但实际调试中,我这个要求往往会更严。
4.2 常见的时钟故障模式
举个例子,假设你用示波器看时钟波形。频率对了,幅度也够,但自动协商就是不过。
为什么会这样?
我总结过几个常见坑:
- 频率偏差:晶振本身频率偏了,或者负载电容匹配不对,实际频率跑了50 ppm以上。
- 抖动过大:时钟边沿在时间轴上晃来晃去。PHY内部CDR容忍度有限,抖动大了锁不住。
- 占空比不对称:PHY内部PLL一般靠双边沿同步,占空比偏差大,PLL调节范围不够用。
- 时钟路径噪声:时钟线跟开关电源走太近,或者地层有缺口,串入了共模噪声。
4.3 抖动——那个看不见的杀手
抖动分两种:随机抖动(RJ)和确定性抖动(DJ)。RJ来自热噪声,不好消除;DJ来自电源噪声、串扰、反射。对于PHY来说,DJ更要命。
我记得有一次,一台设备接隔离变压器后Link直接断了。查了两天,最后发现是隔离变压器的共模扼流圈饱和了,耦合出的噪声把时钟抖得一团糟。
| 抖动类型 | 典型来源 | 对PHY的影响 | 典型容忍限值 |
|---|---|---|---|
| 周期抖动 | 电源纹波、串扰 | 增加符号间干扰,降低SNR | < 40 ps (rms) |
| 相位抖动 | PLL噪声、参考时钟噪声 | 导致CDR失锁 | < 0.01 UI (rms) |
| 占空比失真 | 时钟缓冲器不对称驱动 | 等效增加低频抖动分量 | 45% ~ 55% |
4.4 时钟源的选择与布局
时钟源一般有两种:石英晶振和MEMS振荡器。成本上晶振便宜,但精度和抗振性不如MEMS。我一般在原型阶段用晶振,量产看情况切换到MEMS。
布局上,有几点要注意:
- 尽量靠近PHY,走线不超过10mm。长了就是天线。
- 下方挖空时钟区域顶层和底层不要走其他信号,避免串扰。
- 并联小电容靠近PHY时钟输入引脚,滤高频噪声。
- 独立LDO供电不要跟IO或核心供电混在一起。
4.5 时钟问题排查步骤(实战流程)
下面是我在项目里常用的一套排查流程,你可以参考:
上面这张图是我自己一直在用的排查逻辑。核心就是:先确认时钟质量,再往前查电源和源端设备。
4.6 几个实战案例
我挑两个典型的说说:
案例1:负载电容选错
一块板子,用了24 MHz晶振,PHY内部倍频后需要125 MHz。示波器一看,频率24.03 MHz,偏了1250 ppm。换晶振不行,后来发现是负载电容贴错了,从18 pF换到12 pF,频率回归正常。
案例2:时钟缓冲器坏了一半
另一块板子,时钟波形看起来正弦波,但幅度只有1.2 Vpp。PHY手册要求1.8 Vpp最小值。查下去发现时钟缓冲器的供电退耦电容虚焊了,导致驱动能力不足。
4.7 总结:时钟调试的“三板斧”
归纳起来,时钟问题调试我主要看三样:
- 频率准不准——用频率计或者示波器测,偏差在±25 ppm以内才放心。
- 抖动大不大——示波器打开抖动分析,RMS抖动控制在30 ps以内。
- 路径干不干净——时钟走线附近有没有大电流、开关电源、高速数字线。
嗯,说来说去,时钟是整个PHY系统的根基。根基不稳,后面再怎么调协议、调寄存器都是白费力气。希望这篇笔记能帮你少走点弯路。