4、PLL与时钟生成:收发器内部PLL的工作原理、整数PLL与分数PLL的区别、环路带宽对抖动的影响、我在项目中遇到的PLL锁定失败问题
4.1 收发器内部PLL到底在干什么?
做高速收发器设计,PLL是绕不开的核心模块。说白了,PLL就是用来生成高质量时钟的。收发器需要高速串行时钟,这个时钟不能直接从板子上拿来用——板级时钟通常太脏,抖动大,频率也不一定对。
PLL的作用,就是把一个参考时钟(比如100MHz)倍频到收发器需要的线速率时钟(比如10.3125GHz)。同时,它还要把抖动滤掉,输出一个干净的时钟。
我个人习惯把PLL理解成一个「自动校准的振荡器」。它通过反馈环路,不断调整自己的输出频率,直到和输入参考时钟的频率、相位对齐。对齐之后,它就锁定了。
核心要点:PLL锁定后,输出频率 = 参考频率 × (N/M)。N是反馈分频比,M是参考分频比。
4.2 整数PLL vs 分数PLL——到底选哪个?
这个问题我在项目里被问过无数次。先看一张图,帮你快速理解两者的结构差异。
整数PLL,分频比N是整数。输出频率只能是参考频率的整数倍。比如参考100MHz,N=100,输出就是10GHz。想输出10.3125GHz?抱歉,做不到。除非你换参考频率。
分数PLL就不一样了。它的分频比可以带小数,比如N.F = 103.125。这样参考100MHz,输出就是10.3125GHz。你想想看,这对高速收发器有多重要?很多协议的标准频率都不是整数倍关系。
我的经验:如果协议频率刚好是参考时钟的整数倍,优先用整数PLL。相位噪声更好,设计也简单。但像PCIe Gen4、25G Ethernet这些,基本都得用分数PLL。
4.3 环路带宽——抖动的双刃剑
环路带宽是PLL设计里最容易被忽略的参数。我见过不少工程师,上来就调带宽,结果越调越糟。
环路带宽决定了PLL对抖动的过滤能力。简单说:
- 带宽窄:滤除参考时钟抖动的能力强,但锁定慢,对VCO自身的噪声抑制差
- 带宽宽:锁定快,能抑制VCO噪声,但参考时钟的抖动会直接传到输出
为什么会这样?因为PLL本质上是一个低通滤波器。参考时钟的抖动是低频成分,VCO的抖动是高频成分。环路带宽就是那个分界线。
| 参数 | 窄带宽 | 宽带宽 |
|---|---|---|
| 参考时钟抖动抑制 | 好 | 差 |
| VCO噪声抑制 | 差 | 好 |
| 锁定时间 | 慢 | 快 |
| 对电源噪声敏感度 | 低 | 高 |
我在项目中遇到过这样一个情况:某次调试25G收发器,眼图一直打不开。查了半天,发现是PLL环路带宽设得太宽了。板上的参考时钟本身抖动就大,带宽一宽,这些抖动全跑到输出上了。后来把带宽从2MHz降到500kHz,眼图立马就干净了。
注意:环路带宽不能设得太靠近参考频率。一般建议带宽 ≤ 参考频率的1/10。否则会有稳定性问题。
4.4 我踩过的坑——PLL锁定失败问题
说到PLL锁定失败,我真是有一肚子话想说。这问题在项目中出现的频率,比你想象的高得多。
有一次,板子调好了,上电后PLL死活锁不住。示波器一看,LOCK信号一直在跳。我排查了整整两天,最后发现是参考时钟的幅度不够。收发器内部的PLL对参考时钟的摆幅有要求,低于某个阈值,PFD(鉴频鉴相器)就工作不正常。
还有一次更坑。PLL能锁定,但锁定后过几分钟就失锁了。热了?冷了?后来发现是电源纹波太大。VCO对电源噪声极其敏感,纹波一上来,VCO频率就飘了,环路追不上,直接失锁。
总结一下我遇到的PLL锁定失败常见原因:
- 参考时钟质量差——幅度不够、抖动太大、频率不准
- 电源噪声——VCO的电源必须干净,建议用LDO单独供电
- 环路带宽设置不当——太窄锁定慢,太宽不稳定
- 分频比配置错误——N/M算错了,输出频率超出VCO范围
- 温度漂移——有些PLL的温度补偿做得不好,温度一变就失锁
避坑指南:我曾经在调试时发现,PLL锁定失败后,先别急着改代码。用示波器看参考时钟的波形,用频谱仪看电源的纹波。硬件问题排除了,再动软件配置。这个顺序能省你至少半天时间。
4.5 小结
PLL是收发器的心脏。整数PLL适合频率刚好是整数倍的场景,分数PLL灵活但噪声大。环路带宽要选对,不能太宽也不能太窄。锁定失败的问题,多半出在参考时钟、电源或者配置上。
嗯,这些经验都是真金白银换来的。希望你能少走一些弯路。