1. 从一个让人头疼的误码率问题说起
搞过5G光模块硬件设计的人大概都有过这种经历:链路预算明明算得绰绰有余,眼图看着也还行,可一上系统跑流量,误码率就是压不下去,偶尔还冒出一两个莫名其妙的突发错误。你换光器件、调均衡、改驱动幅度,折腾一圈下来发现收效甚微。最后把频谱仪接上参考时钟一看,相位噪声底噪高得离谱——问题出在那颗不起眼的晶振上。
晶振相位噪声对通信系统的影响,尤其是对5G光模块信号误码率的影响,是一个典型的“小器件引发大问题”的案例。5G前传、中传对光模块的速率要求已经从10G、25G一路推到100G、200G甚至400G,SerDes通道的符号率越来越高,留给时钟抖动的裕量越来越窄。参考时钟的相位噪声会通过SerDes的CDR电路、PLL倍频链路逐级放大,最终体现在采样时刻的偏移上,直接吃掉时序裕量,误码率自然就上去了。
这篇内容适合几类人看:一是正在做5G光模块硬件设计的工程师,尤其是负责时钟树和电源完整性的;二是做SerDes信号完整性分析的,想搞清楚参考时钟抖动到底怎么折算到误码率上;三是选型阶段纠结晶振参数的,想知道哪些指标真正关键、哪些是厂商宣传噱头。我会从相位噪声的物理本质讲起,拆解它到误码率的传递路径,然后给出可落地的晶振选型、电路设计和布局方案,最后分享几个实际调试中踩过的坑。
2. 相位噪声与误码率之间的传递链条
2.1 相位噪声到底是什么,为什么它比频率精度更致命
很多人选晶振第一眼看的是频率精度,比如±10ppm、±20ppm,觉得精度够了就行。但在高速SerDes场景下,频率精度只决定了你和对方能不能对上频率,真正决定链路能不能稳定工作的是相位噪声,也就是短期频率稳定度。
打个比方:频率精度好比你的手表一天下来总共差了几秒,而相位噪声好比你的手表每一秒走得是不是均匀——是匀速走,还是忽快忽慢地抖。对于SerDes来说,它每个UI(单位间隔)都要在正确的位置采样,如果参考时钟在短时间内抖动很大,采样点就会偏离最佳位置,眼图张开度变小,误码率上升。
相位噪声在频域上的定义是偏离载波频率f处1Hz带宽内的单边带功率与载波功率之比,单位是dBc/Hz。它描述的是载波频谱的“裙摆”有多宽。这个裙摆越宽,说明时钟的短期抖动越大。在时域上,相位噪声积分后对应的是相位抖动,通常用RMS飞秒(fs)或皮秒(ps)来表示。
关键点在于:不同频段的相位噪声对误码率的贡献是不一样的。低频偏(比如1kHz到100kHz)的相位噪声主要影响CDR的跟踪能力,高频偏(比如1MHz到10MHz)的相位噪声则直接恶化采样时刻的确定性抖动。所以你不能只看一个点的相位噪声值,要看整个频段的分布。
2.2 从晶振到SerDes采样点:相位噪声的传递路径
一颗晶振的相位噪声要影响到最终的误码率,中间要经过好几级电路。以典型的5G光模块架构为例,参考晶振输出给SerDes芯片内部的PLL,PLL倍频到高速时钟后驱动发送端和接收端的CDR。这条链路上每一级都会对相位噪声进行“整形”。
PLL本身是一个闭环系统,它有一个环路带宽。在环路带宽以内,PLL会跟踪参考时钟的相位,参考晶振的相位噪声会按比例传递到输出;在环路带宽以外,PLL的VCO自由振荡,参考时钟的相位噪声被抑制,但VCO自身的相位噪声开始主导。所以晶振相位噪声对输出的影响主要集中在PLL环路带宽以内的频段。
这里有一个容易被忽略的细节:PLL对参考时钟相位噪声的传递函数是20log(N)的关系,N是倍频比。比如你用一个100MHz的晶振倍频到10GHz,N=100,那么参考时钟在环路带宽内的相位噪声会被放大40dB。这意味着晶振在100kHz频偏处的相位噪声如果是-140dBc/Hz,到了PLL输出端就变成了-100dBc/Hz。这个数值已经相当可观了。
再往后,CDR电路会进一步处理。CDR的环路带宽通常比PLL窄,它主要跟踪低频抖动,对高频抖动进行抑制。但CDR的抑制能力有限,而且CDR自身的抖动容限是固定的。如果参考时钟引入的抖动超过了CDR的容限,误码率就会急剧恶化。
2.3 相位噪声到误码率的折算方法
把相位噪声折算成误码率,工程上有几种常用的方法。最直接的是通过抖动预算:先算出SerDes接收端的总抖动容限,然后减去器件抖动、通道抖动、电源噪声等各项,剩下的就是参考时钟允许的抖动。再把这个抖动折算成相位噪声积分值,反推晶振的指标要求。
具体折算时,RMS相位抖动(单位弧度)和相位噪声的关系是:
σ_φ² = 2 × ∫ L(f) df
其中L(f)是单边带相位噪声,积分范围从CDR环路带宽到奈奎斯特频率。得到σ_φ后,再乘以UI/2π,就得到以秒为单位的RMS抖动。
举个例子:假设CDR环路带宽是2MHz,SerDes速率是25Gbps,UI=40ps。如果晶振在2MHz到12.5GHz积分范围内的RMS相位抖动是0.5ps,那么它占UI的比例是0.5/40=1.25%。对于典型的SerDes,总抖动预算可能是0.3UI左右,参考时钟占1.25%看起来不大,但别忘了还有其他抖动源,而且这0.5ps是RMS值,峰峰值要乘以一个系数(通常按14倍RMS估算),实际峰峰值可能到7ps,占UI的17.5%,这就很危险了。
所以选晶振的时候,不能只看厂商给的“典型相位噪声”曲线,要自己根据系统抖动预算反推要求,并且留足裕量。
3. 晶振选型:哪些参数真正决定误码率
3.1 有源晶振还是无源晶振,选错方向全盘皆输
在5G光模块里,参考时钟通常用有源晶振(OSC),而不是无源晶体。原因很简单:无源晶体需要芯片内部或外部搭建振荡电路,这个振荡电路的起振条件、负载电容匹配、驱动能力都会影响最终相位噪声。而且无源晶体的相位噪声对PCB布局和电源噪声极其敏感,调试起来非常痛苦。
有源晶振内部集成了振荡电路和输出缓冲,出厂时相位噪声已经调好了,你只需要给它干净的电源和良好的接地,就能得到稳定的输出。对于25G、100G光模块这种对时钟要求苛刻的场景,有源晶振是更稳妥的选择。
但也不是所有有源晶振都一样。市面上有普通XO、TCXO、OCXO,还有专门针对低抖动优化的差分输出晶振。普通XO的相位噪声在100kHz频偏处可能在-130dBc/Hz左右,而低抖动晶振能做到-150dBc/Hz以下。价格差好几倍,但为了误码率达标,这笔钱不能省。
3.2 相位噪声指标怎么看,哪些频段最关键
拿到一颗晶振的相位噪声曲线,不要只看某一个点。要关注三个频段:
- 10Hz到1kHz:这个频段主要影响CDR的长期跟踪,如果这里相位噪声太高,CDR可能会失锁或者产生低频漂移。对于5G光模块,这个频段通常不是主要矛盾,因为CDR环路带宽一般不会低到这个程度。
- 1kHz到1MHz:这是最关键的频段。PLL环路带宽通常在这个范围内,参考时钟的相位噪声会直接传递到输出。特别是100kHz到1MHz这一段,对采样抖动的影响最大。
- 1MHz以上:这个频段PLL已经开始抑制参考时钟噪声,但如果你用的PLL环路带宽比较宽,或者CDR带宽也比较宽,这个频段仍然会有贡献。
实际选型时,我一般要求晶振在100kHz频偏处相位噪声优于-145dBc/Hz,在1MHz处优于-155dBc/Hz。对于400G光模块,要求还要再严3到5dB。
另外要注意,厂商数据手册上的相位噪声通常是在特定电源电压、特定负载、25℃条件下测的。实际工作时电源噪声、温度变化都会让相位噪声恶化。所以选型时要留至少6dB的裕量。
3.3 电源噪声对晶振相位噪声的调制效应
晶振的相位噪声对电源噪声非常敏感。电源上的纹波会通过晶振内部的振荡电路调制到输出频率上,产生杂散和相位噪声恶化。这个效应在低频段尤其明显,因为电源纹波频率通常比较低,正好落在PLL环路带宽以内。
我实测过一颗晶振,在干净电源下100kHz频偏相位噪声是-148dBc/Hz,换成有50mV纹波的电源后,恶化到了-138dBc/Hz。10dB的恶化足以让误码率从1E-12掉到1E-6。
所以给晶振供电的LDO要选PSRR高的,而且在晶振电源引脚旁边要放足够的高频去耦电容。通常我会放一个10uF的钽电容加一个0.1uF的陶瓷电容,再并一个1nF的,覆盖不同频段。如果空间允许,再加一个铁氧体磁珠做二级滤波。
3.4 负载电容和输出匹配的坑
有源晶振的输出通常是方波,但输出阻抗和负载匹配会影响边沿速率和过冲。如果输出走线太长或者负载电容太大,边沿变缓,等效于增加了时钟的确定性抖动。更糟糕的是,如果输出端有反射,会在时钟沿上产生振铃,CDR可能会误判。
我的经验是:晶振输出到SerDes参考时钟输入的走线尽量短,最好在10mm以内。如果必须走长线,要用差分输出晶振,并且做好端接。单端输出的话,串联一个22Ω到33Ω的电阻做源端匹配,能有效抑制反射。
负载电容方面,有源晶振的输出驱动能力通常足够,不需要额外加负载电容。但如果你用的是无源晶体,负载电容的匹配就至关重要了。负载电容偏差会导致频率偏移,虽然不直接恶化相位噪声,但会让PLL的工作点偏离最佳状态。
4. 电路设计与布局:把相位噪声摁在源头
4.1 晶振电路原理与关键元件选择
有源晶振的电路看起来很简单:电源、地、输出。但每个环节都有讲究。
电源部分,我通常用两级滤波:第一级是LDO,选PSRR在100kHz处大于60dB的型号;第二级是RC或LC滤波,截止频率设在100kHz左右,把LDO输出的高频噪声再压一压。注意LDO的负载调整率要好,因为晶振的电流虽然不大,但如果有突发变化,LDO响应慢会导致电源波动。
去耦电容的布局比选型更重要。电容要尽量靠近晶振电源引脚,回流路径要短。我见过很多设计把去耦电容放在晶振背面,过孔绕了一大圈,效果大打折扣。正确的做法是电容和晶振在同一层,引脚直接连到晶振的电源和地焊盘。
输出端如果走差分,要注意差分对的对称性。两条走线要等长、等宽、间距一致,否则差分信号会转换成共模信号,增加EMI和抖动。如果走单端,要保证参考地平面完整,不要跨分割。
4.2 PCB布局中的晶振隔离与屏蔽
晶振是敏感器件,也是干扰源。它对外界的电磁干扰敏感,同时它的输出谐波也会干扰其他电路。所以在PCB布局时,晶振要远离DC-DC电源、高速SerDes走线、射频电路。
我的做法是在晶振周围画一个禁布区,至少2mm内不放其他元件和走线。晶振下方要挖空,不要走任何信号线,地平面可以保留但要用过孔阵列围起来,形成一个屏蔽腔。如果空间允许,在晶振上方加一个金属屏蔽罩,能进一步降低外部干扰。
晶振的输出走线也要包地处理,两侧加地线并打过孔,减少串扰。如果晶振和SerDes芯片距离较远,中间不要经过任何连接器或过孔,直接走PCB内层,参考完整地平面。
4.3 电源完整性与地回流路径设计
电源完整性对晶振相位噪声的影响,前面已经讲了。这里补充一点:地回流路径同样重要。晶振的接地点要直接连到主地平面,不要经过细长的地线。如果晶振的地引脚和SerDes的地引脚之间有地平面分割,回流会绕远路,引入额外电感,恶化高频相位噪声。
我通常会在晶振地引脚旁边打至少4个过孔,直接连到主地平面。如果PCB层数多,可以在晶振下方专门设一层地平面,通过多个过孔连接到主地。
另外,晶振的电源和地要走成一对,尽量靠近,减少电源回路的面积。回路面积越小,对外部磁场的敏感度越低,电源噪声耦合越小。
4.4 实测验证:相位噪声测试与误码率关联
设计完成后,一定要实测验证。相位噪声测试用频谱分析仪加相位噪声选件,或者专用的相位噪声分析仪。测试时要注意:
- 探头要靠近晶振输出,但不要加载过大电容,否则会影响振荡器工作。
- 测试环境要屏蔽好,避免外部干扰。
- 分别测试常温、高温、低温下的相位噪声,温度变化对晶振影响很大。
误码率测试用误码仪,配合光模块和光纤。测试时先不加光衰减,测背靠背误码率,然后逐步加衰减,看误码率曲线。如果发现误码率在某个衰减点突然恶化,很可能是时钟抖动导致的。
我一般会把相位噪声测试结果和误码率测试结果对照,看相位噪声积分得到的RMS抖动是否和误码率恶化趋势一致。如果一致,说明问题确实在时钟上;如果不一致,要排查其他因素。
5. 常见问题与排查技巧实录
5.1 误码率压不下去,怎么判断是不是晶振的问题
这是最常被问到的问题。我的排查思路是:
- 先换一颗已知低相位噪声的晶振,看误码率有没有改善。如果有明显改善,说明原晶振有问题。
- 用频谱仪测晶振输出的相位噪声,和手册对比。如果实测比手册差很多,检查电源和布局。
- 在晶振电源上叠加不同频率的干扰,看误码率是否敏感。如果敏感,说明电源滤波不够。
- 用示波器测时钟的峰峰值抖动和周期抖动,和SerDes的抖动容限对比。
如果换晶振后误码率没变化,那问题可能不在时钟上,要查光器件、通道、均衡设置等。
5.2 晶振相位噪声测试中的常见陷阱
测相位噪声时,有几个坑我踩过:
- 探头接地不良:探头地线太长,引入了额外电感,测出来的高频相位噪声偏高。要用短地线弹簧,或者直接焊接同轴电缆。
- 频谱仪设置不当:RBW设得太大,相位噪声曲线被平滑掉了,看起来很好,实际很差。RBW要设得足够小,至少比频偏小两个数量级。
- 忽略测试电缆的损耗:长电缆对高频信号衰减大,测出来的相位噪声偏低。要校准电缆损耗。
- 环境温度变化:测试过程中温度变化会导致晶振频率漂移,相位噪声曲线跟着变。要在恒温环境下测,或者快速测完。
5.3 晶振布局中的典型错误与修正
我见过很多晶振布局的错误,这里列几个典型的:
| 错误做法 | 后果 | 修正方法 |
|---|---|---|
| 晶振放在DC-DC旁边 | 电源噪声耦合,相位噪声恶化 | 至少远离10mm,加屏蔽 |
| 去耦电容放在背面 | 过孔电感大,高频去耦失效 | 电容和晶振同层,直接连接 |
| 输出走线跨分割 | 回流路径断裂,抖动增加 | 参考完整地平面,不跨分割 |
| 晶振下方走信号线 | 耦合噪声,相位噪声恶化 | 晶振下方挖空,不走线 |
| 地引脚只打一个过孔 | 地电感大,高频性能差 | 至少4个过孔,直接连主地 |
5.4 晶振参数选型速查表
最后给一个选型速查表,方便快速对比:
| 参数 | 普通XO | 低抖动XO | 差分低抖动XO | 选型建议 |
|---|---|---|---|---|
| 100kHz相位噪声 | -130dBc/Hz | -145dBc/Hz | -150dBc/Hz | 25G以上选低抖动 |
| 1MHz相位噪声 | -145dBc/Hz | -155dBc/Hz | -160dBc/Hz | 400G选差分 |
| RMS抖动(12kHz-20MHz) | 1ps | 0.3ps | 0.15ps | 按UI的1%以内选 |
| 电源抑制比 | 差 | 中 | 好 | 电源噪声大选高PSRR |
| 输出类型 | 单端 | 单端/差分 | 差分 | 长走线选差分 |
| 价格 | 低 | 中 | 高 | 按误码率要求权衡 |
实际选型时,我一般先根据SerDes的抖动容限算出允许的RMS抖动,然后反推相位噪声要求,再在满足要求的晶振里选价格合适的。不要盲目追求最低相位噪声,够用就好,省下的成本可以花在电源滤波和PCB布局上,整体效果可能更好。
6. 几个实战中总结的硬核经验
做5G光模块这几年,我在晶振和误码率这个问题上踩了不少坑,有几个经验值得分享。
第一,不要迷信厂商的相位噪声曲线。厂商测试条件通常是理想电源、常温、特定负载。实际系统中电源噪声、温度变化、负载变化都会让相位噪声恶化。我一般会在厂商指标基础上留6到10dB裕量,尤其是工业级温度范围的应用。
第二,电源滤波比晶振选型更重要。我遇到过好几次,换了更贵的晶振误码率没改善,结果在电源上加了一级LC滤波,误码率直接达标。晶振的相位噪声对电源噪声的敏感度远超一般人想象,尤其是100kHz到1MHz这个频段,正好是DC-DC开关噪声的谐波范围。
第三,PCB布局要舍得花面积。晶振周围留禁布区、下方挖空、加屏蔽罩,这些都会增加PCB面积和成本,但比起误码率不达标导致的反复改板,这点代价微不足道。我现在的设计里,晶振区域至少留5mm×5mm的净空,下方两层不走线。
第四,测试要覆盖全温度范围。常温下误码率达标不代表高低温下也达标。晶振的频率温度特性会导致PLL工作点偏移,相位噪声跟着变。我一般会在-40℃、25℃、85℃三个点分别测误码率,确保都有足够裕量。
第五,SerDes的配置也很关键。同样的硬件,CDR环路带宽设得不一样,对参考时钟抖动的抑制能力差别很大。如果晶振相位噪声偏高,可以适当调窄CDR带宽,但要注意窄带宽会降低对低频抖动的跟踪能力。这个需要根据实际链路情况权衡。
最后再分享一个小技巧:如果误码率问题一时找不到原因,可以先用一个外部的高性能信号源代替晶振,给SerDes提供参考时钟。如果误码率明显改善,说明问题在晶振或电源上;如果没改善,问题在SerDes配置或光链路上。这个方法能快速定位问题方向,省去很多盲目排查的时间。