高速SERDES系统时钟抖动分析与PLL环路滤波器设计实战

📅 2026/7/25 6:46:25
高速SERDES系统时钟抖动分析与PLL环路滤波器设计实战
1. 项目概述为什么时钟抖动是高速设计的“命门”在高速串行通信的世界里比如我们常见的10G、100G甚至更高速率的以太网、PCIe或者光纤通道工程师们最常挂在嘴边的一个词就是“信号完整性”。而信号完整性的核心挑战之一就是“时钟抖动”。你可以把它想象成一位指挥家如果他的拍子时快时慢、飘忽不定整个乐团的演奏就会乱套。在SERDES串行器/解串器系统中时钟信号就是这个指挥家它的任何“不稳定”——也就是抖动——都会直接导致数据采样出错进而引发比特错误最终表现为系统丢包、卡顿甚至完全失效。我最近在为一个数据中心交换机的项目选型和设计时钟树时就深度使用了德州仪器TI的LMK61E2这款超低抖动可编程振荡器。这个项目对时钟的要求极其苛刻需要为多个100G以太网PHY提供156.25MHz的LVPECL参考时钟并且要求上电即用无需软件配置。更重要的是整个系统的抖动预算非常紧张必须满足IEEE 802.3ba等标准对发射端总抖动的严苛限制。经过一番折腾我发现仅仅会配置寄存器是远远不够的必须深入理解抖动在系统中的传递机制、如何分配预算以及最关键的一环——如何设计PLL的环路滤波器来“驯服”这些抖动。这篇文章我就结合LMK61E2的实际应用把SERDES系统中的抖动分析、预算分解以及PLL环路滤波器设计的那些门道掰开揉碎了讲清楚。无论你是正在设计高速板卡的硬件工程师还是负责系统集成的FPGA逻辑工程师理解这些内容都能帮你避开很多坑从“能用”走向“稳定可靠”。2. SERDES系统抖动传递模型与预算分解要控制抖动首先得知道它从哪来到哪去以及系统能容忍多少。这不是拍脑袋决定的而是有一套基于标准的工程计算方法。2.1 抖动在SERDES链路中的“旅程”在一个典型的SERDES链路中例如一个ASIC或FPGA中的SerDes模块发射端TX有一个锁相环PLL它接收来自外部时钟发生器如LMK61E2的参考时钟并产生用于串行化数据的高速时钟。接收端RX则有一个时钟数据恢复CDR电路从数据流中提取出时钟。这里的关键在于参考时钟的抖动并不会被全盘接收。TX PLL和RX CDR各自相当于一个滤波器TX PLL表现为一个低通滤波器。它的带宽通常称为TX_PLL_BW决定了哪些频率的抖动能“通过”并调制到发射的数据流上。低于此带宽的抖动基本无衰减通过高于此带宽的抖动会被显著抑制。RX CDR表现为一个高通滤波器。它的带宽RX_CDR_BW决定了接收端能跟踪和抑制哪些频率的抖动。高于此带宽的抖动能被CDR跟踪并抑制低于此带宽的抖动主要是低频漂移即Wander则无法被抑制会传递到恢复的时钟上。因此参考时钟的抖动对系统的影响主要发生在这两个带宽之间的“通带”区域。如下图所示概念图在RX_CDR_BW到TX_PLL_BW这个频段内参考时钟抖动会几乎无衰减地添加到链路的总体抖动预算中。在这个频段之外抖动会被TX PLL或RX CDR以20dB/十倍频程或更陡的滚降率衰减。频率响应示意图概念 ^ | 通过区域抖动无衰减 |------------------- | | | | | | ---------|-----------------|--------- 频率 RX_CDR_BW TX_PLL_BW现代ASIC/FPGA设计允许我们在一定范围内调整这两个带宽需要在工艺限制、设计复杂度和满足抖动容限规范之间取得平衡。2.2 从标准到芯片抖动预算的逐级分解我们以最常用的10G以太网标准IEEE 802.3ba为例。它规定发射端的总抖动TJTotal Jitter峰值不得超过0.28 UI单位间隔。对于10.3125 Gbps的速率1 UI 96.9ps所以允许的总抖动为27.15 ps (峰峰值)。这27.15 ps的“总盘子”要分给链路上的所有噪声源参考时钟、发射器驱动器、传输介质、连接器等。参考时钟只是其中之一。通常系统设计会给参考时钟分配总抖动预算的10% 到 20%。我们按较宽松的20%计算那么允许的参考时钟总抖动就是5.43 ps (峰峰值)。这还没完。这5.43 ps的时钟抖动发生在时钟分配网络的末端也就是扇出缓冲器Fanout Buffer的输出端。现代的扇出缓冲器本身添加的随机抖动非常小通常100 fs RMS且几乎不贡献确定性抖动。因此我们可以近似认为时钟发生器如LMK61E2需要满足这5.43 ps的要求。接下来要把这5.43 ps的总抖动进一步分解为确定性抖动DJ和随机抖动RJ。确定性抖动DJ由可识别的干扰引起如电源噪声、串扰、信号反射等。它有界通常用峰峰值衡量。随机抖动RJ由热噪声、散粒噪声等随机过程引起。它无界服从高斯分布通常用均方根值RMS衡量但在预算中需要转换为峰峰值。一个常见的经验法则是将时钟抖动预算的25% 分配给DJ75% 分配给RJ。因此允许的确定性抖动 DJ 5.43 ps × 25% 1.36 ps (峰峰值)允许的随机抖动 RJ 5.43 ps × 75% 4.07 ps (峰峰值)对于需要满足10⁻¹² 误码率BER的系统随机抖动的峰峰值到均方根值的转换系数约为14对应高斯分布的高尾部概率。因此允许的随机抖动均方根值为RJ_RMS (在扇出缓冲器输出端) 4.07 ps / 14 ≈0.29 ps RMS假设扇出缓冲器自身贡献了 0.1 ps RMS 的随机抖动那么时钟发生器需要贡献的随机抖动必须更小。通过均方根减法计算RJ_RMS_ClockGen sqrt( (0.29 ps)² - (0.1 ps)² ) ≈0.27 ps RMS 注意这个预算分解过程是设计的起点至关重要。它告诉你你选的时钟芯片其输出抖动的DJ必须优于1.36 ps p-pRJ必须优于0.27 ps RMS才能为系统其他部分留出足够的裕量。LMK61E2标称DJ 1 ps p-pRJ 0.2 ps RMS正好满足并留有裕量这就是它适用于高速系统的底气。3. LMK61E2关键功能解析与配置策略LMK61E2不仅仅是一个简单的晶振它是一个高度集成的可编程振荡器内部包含PLL、VCO、输出分频器以及非易失性存储器EEPROM。理解其关键寄存器和工作模式是发挥其性能的基础。3.1 核心寄存器精讲数据手册中寄存器很多我挑几个在系统设计和调试中最关键的来说。1. NVMUNLK (R56) 与 NVMCTLEEPROM编程的“钥匙”这是确保配置不掉电保存的关键。LMK61E2的配置在通电时从EEPROM加载。如果你想修改配置并永久保存必须遵循一个解锁序列先向NVMUNLK寄存器写入特定值0xBE。这就像一把钥匙告诉芯片“接下来我要操作EEPROM了”。然后才能设置NVMCTL寄存器中的NVMPROG位触发擦除/编程周期。 如果顺序错了或者解锁码不对编程操作会被忽略。这个机制防止了因程序跑飞而误擦写EEPROM。2. INT_LIVE (R66)实时中断状态这是一个只读寄存器让你能实时监控PLL的状态对于系统健康诊断非常有用。Bit [1] LOL (Loss of Lock)这是最重要的标志之一。如果PLL失锁该位会置1。在系统启动或参考时钟发生变化时必须监控此位确保PLL已锁定并稳定才能开始使用其时钟。失锁状态下的时钟输出频率和相位都是不可靠的。Bit [0] CAL (Calibration Active)当PLL内部的校准电路如VCO校准正在运行时此位置1。在校准期间输出时钟可能不稳定应避免使用。3. SWRST (R72)软件复位这个寄存器提供对片上模块的软件复位控制每个位在写操作后会自动清零RWSC类型。Bit [1] SWR2PLL写1会复位PLL校准器和时钟分频器。当你动态改变了PLL的某些关键配置如N分频器导致PLL需要重新锁定时可以通过此位发起一个软复位让PLL重新开始锁定过程。这比断电重启要方便得多。3.2 频率规划与分频器配置LMK61E2的核心是产生一个高频、低抖动的VCO信号然后通过分频得到我们需要的输出频率。频率规划的目标是在满足输出频率的前提下优化相位噪声和杂散。VCO频率计算对于我们的例子需要156.25MHz输出。LMK61E2的VCO频率范围很宽假设我们选择5 GHz的VCO。那么输出分频器OUTDIV VCO_Freq / Output_Freq 5000 MHz / 156.25 MHz 32。PLL分频比配置这决定了相位检测频率PFD频率是影响环路带宽和噪声的关键。R分频器对输入参考时钟进行分频。N分频器对VCO反馈路径进行分频。N VCO_Freq / PFD_Freq。PFD频率 输入参考频率 / R。配置黄金法则来自TI WEBENCH工具和我的经验最大化PFD频率在VCO频率固定的情况下更高的PFD频率意味着更小的N值。PLL的带内相位噪声与N²成正比因此更小的N值能显著降低带内相位噪声。这是降低随机抖动的关键。最大化电荷泵电流在合理范围内使用更大的电荷泵电流ICP可以降低环路滤波器电阻的热噪声贡献进一步优化带内噪声。通常手册推荐的最大或次大档位是不错的选择。PFD频率与环路带宽的关系一个经验法则是PFD频率应设置为目标环路带宽的10到100倍。如果PFD频率低于环路带宽的5倍PLL可能变得不稳定。例如如果你的目标环路带宽是100 kHz那么PFD频率最好在1 MHz到10 MHz之间。分数分频的注意事项如果需要分数分频例如产生非整数关系频率分母DEN应尽可能大并使用更高阶的Σ-Δ调制器这有助于将分数杂散的能量推到更低的偏移频率使其更容易被环路滤波器滤除。在我们的例子中如果使用100 MHz的输入参考为了得到5 GHz的VCO需要N50。若R1则PFD频率为100 MHz。这个PFD频率对于设计一个几百kHz到1-2 MHz的环路带宽来说是非常合适的。4. PLL环路滤波器设计理论与实战环路滤波器是PLL的“大脑”它决定了PLL如何响应误差、跟踪输入变化以及抑制噪声。设计不当轻则抖动恶化重则PLL失锁振荡。4.1 环路滤波器的作用与类型环路滤波器位于相位频率检测器PFD和电荷泵CP的输出之后VCO的控制电压输入端之前。它是一个低通滤波器主要完成两个任务将电荷泵输出的电流脉冲转换为平滑的VCO控制电压。设定PLL的环路动态特性包括环路带宽ωcPLL的“速度”。带宽越宽跟踪输入变化和抑制VCO自身噪声的能力越强但对参考噪声和电荷泵噪声的抑制越差。相位裕度PM系统稳定性的度量。通常设计在45°到60°之间过小会振荡过大会响应迟钝。阻尼因子影响锁定过程的超调量和建立时间。LMK61E2内部集成了一个三阶无源环路滤波器通常结构为R1, C1, C2, R3, C3我们需要通过配置来选择外部元件的值。4.2 使用WEBENCH Clock Architect进行设计手动计算环路滤波器参数非常繁琐强烈建议使用TI的WEBENCH Clock Architect工具。以下是实战步骤输入需求在工具中输入目标输出频率156.25MHz、格式LVPECL、输入参考频率如100MHz。选择器件从解决方案列表中选择LMK61E2。生成配置工具会自动计算出一组优化的分频器配置R, N并最大化PFD频率和电荷泵电流。进入环路滤波器设计在工具的仿真页面点击“PLL Loop Filter Design”然后选择“Recommend Design”。工具会根据你选择的PFD频率、电荷泵电流、VCO增益等参数计算出一组推荐的R1, C1, C2, R3, C3值并显示环路的波特图幅频/相频特性。仿真与微调工具会给出环路带宽和相位裕度的预估值。你可以拖动滑块调整带宽观察相位裕度和元件值的变化。关键权衡更宽的带宽可以更好地抑制VCO的带内噪声改善近端相位噪声但会让更多参考噪声和电荷泵噪声通过可能恶化远端相位噪声和杂散。你需要根据系统对抖动频谱的具体要求来权衡。元件值考量工具推荐的C1, C2值可能较大如nF级。如果PCB空间紧张可以尝试适当降低电荷泵电流或增大N值这通常会减小电容值但可能会轻微牺牲相位噪声性能。同时要注意电容的封装和材质推荐使用NP0/C0G材质的陶瓷电容以获得稳定的温度和电压特性。4.3 杂散抑制与环路滤波器的关系环路滤波器的另一个核心任务是抑制PLL产生的各种杂散Spur。LMK61E2的数据手册详细分类了几种杂散及其抑制方法这与环路滤波器设计直接相关相位检测杂散出现在偏移频率等于PFD频率f_PD处。抑制方法降低PFD频率但会牺牲相位噪声或者降低环路带宽使环路滤波器在f_PD处有足够的衰减。如果环路带宽已经很低可以尝试启用或调整R3/C3这个额外的极点来增加高频滚降。整数边界杂散当VCO频率非常接近某个整数倍PFD频率时产生。例如f_VCO5003MHz f_PD100MHz则杂散在3MHz处。如果杂散由PLL主导降低环路带宽通常有效。如果杂散由VCO主导降低环路带宽效果不大。此时应尝试降低PFD频率或者优化参考输入信号的完整性如边沿速率、过冲避免VCO被参考信号调制。主分数杂散出现在f_PD/DEN的整数倍偏移处。抑制方法降低环路带宽、使用更高阶的Σ-Δ调制器、或者使用“不等效大分数”即用一个分子分母更大的等价分数来表示所需的小分数将杂散能量推到更低的频偏。子分数杂散出现在f_PD/(DEN*k)处k2,3,6与调制器阶数有关。抑制方法使用**抖动Dithering**技术、使用更大等效分数、降低调制器阶数或者确保分母不含2或3的因子。 实操心得杂散优化往往是一个迭代和权衡的过程。我的经验是先用WEBENCH工具给出一个带宽和相位裕度合理的初始设计。然后在实验室用相位噪声分析仪或频谱仪实际测量输出频谱。如果发现某个特定频偏的杂散超标再根据上表判断其类型有针对性地调整环路带宽或滤波器极点R3/C3或者回到频率规划阶段调整分频比。记住任何调整都可能影响环路稳定性和整体相位噪声每次改动后最好重新仿真并测量。5. 板级设计与布局从原理图到可靠产品的最后一步再好的芯片糟糕的PCB设计也能让它性能尽失。对于LMK61E2这样的高频、高精度器件布局布线尤为关键。5.1 电源去耦噪声的第一道防线电源噪声是确定性抖动的主要来源之一。LMK61E2要求使用组合去耦方案大容量储能在电源入口处放置一个10µF的陶瓷电容如X5R/X7R用于应对低频电流波动。中频去耦在器件每个电源引脚附近放置一个1µF和至少一个0.1µF的陶瓷电容。1µF负责中频段0.1µF负责更高频段。布局要点最短路径0.1µF电容必须尽可能靠近芯片的电源引脚via孔到引脚的距离要最短。小封装推荐使用0201或0402封装的电容以减少寄生电感。接地良好去耦电容的接地端必须通过低阻抗路径多个过孔连接到完整的地平面。5.2 热设计与接地LMK61E2在最高性能模式下功耗可达0.68W必须考虑散热。散热过孔芯片底部的裸露焊盘GND Pad是主要散热路径。必须用至少3个越多越好导热过孔将其连接到PCB内部或底层的地平面。这些过孔要填锡或塞铜以增强导热能力。温度计算根据数据手册公式T_J T_B Ψ_JB × P其中Ψ_JB约为36.7°C/W无风。假设环境温度T_B为85°C功耗P为0.68W则结温T_J ≈ 85 36.7*0.68 ≈ 110°C低于125°C的最大结温但裕量不大。在高温环境下或密闭机箱内需要评估是否需要加强散热。5.3 信号完整性布局时钟输出走线输出时钟线应作为受控阻抗传输线来对待。使用合适的线宽和间距以匹配LVPECL或LVDS等输出的阻抗要求通常差分100Ω。避免在时钟线下方走其他高速信号线防止串扰。参考时钟输入如果使用外部参考其输入信号的完整性同样重要。确保边沿干净过冲小因为差的参考信号会通过PLL调制VCO产生整数边界杂散。层叠与回流确保为高速信号和电源提供完整、连续的参考地平面。所有高速信号的回流路径应清晰、最短。6. 系统集成调试与常见问题排查硬件设计完成并贴片后真正的挑战才刚刚开始。以下是我在调试LMK61E2时钟系统时遇到的一些典型问题及解决方法。6.1 上电与初始化问题现象芯片无输出或输出频率完全不对。排查步骤检查电源和使能确认所有电源电压VDD, VDDO等均在容差范围内且使能引脚如果使用电平正确。检查I2C通信使用逻辑分析仪或示波器抓取I2C总线波形确认设备地址由ADD引脚决定正确读写时序正常无ACK错误。读取设备ID首先尝试读取一个只读寄存器如设备ID寄存器验证通信链路和芯片是否正常响应。检查EEPROM加载LMK61E2上电后会从内部EEPROM加载配置。如果你之前从未编程过EEPROM或者EEPROM为空芯片可能处于默认状态输出可能不是你要的频率。此时需要通过I2C进行实时配置或首次编程EEPROM。6.2 PLL失锁问题现象输出时钟存在但频率不稳定相位噪声极差或INT_LIVE寄存器的LOL位为1。排查步骤确认参考时钟测量输入到OSCin引脚的参考时钟频率、幅度和波形质量。确保其稳定且满足数据手册要求。检查环路滤波器元件用万用表或LCR表确认环路滤波器电阻、电容的值和焊接没有错误。一个开路的电容或电阻可能导致环路不稳定。检查VCO调谐电压用高阻抗探头避免负载效应测量环路滤波器输出到VCO调谐电压引脚VTUNE的电压。在锁定时它应该是一个相对稳定的直流电压。如果电压在剧烈跳动或饱和到电源/地说明PLL无法锁定。调整环路带宽如果怀疑环路不稳定可以尝试通过WEBENCH工具减小环路带宽或增加相位裕度例如微调R1/C2的比例重新计算元件值并更新配置。过宽的带宽或过低的相位裕度会导致振荡。软件复位PLL在更改了N分频器等关键配置后记得通过写SWRST.SWR2PLL位为1来复位PLL使其重新开始锁定过程。6.3 抖动或相位噪声不达标现象用相位噪声分析仪或示波器高带宽、带抖动分析软件测量发现抖动值超出预算或相位噪声曲线有异常凸起。排查步骤区分噪声类型近端10kHz偏移噪声差通常是参考时钟噪声或PLL带内噪声。检查参考时钟源的质量。尝试提高PFD频率、降低N值、或增加电荷泵电流来优化。远端1MHz偏移噪声差或出现杂散通常是VCO噪声或电源噪声。检查电源去耦是否充分。观察噪声凸起的频点判断杂散类型见第4.3节。针对性抑制杂散在PFD频率处的杂散尝试降低PFD频率权衡相位噪声或降低环路带宽增加R3/C3极点。在分数偏移处的杂散在配置工具中尝试启用Σ-Δ调制器抖动Dither或调整分数分频的分子分母使用“不等效大分数”。检查测量环境确保测量设备的接地良好使用高质量的探头和电缆测试夹具的阻抗匹配。有时糟糕的测量设置本身就会引入噪声。6.4 EEPROM编程失败现象通过I2C可以实时配置并输出正确时钟但无法保存到EEPROM断电后配置丢失。排查步骤严格遵循解锁序列确保编程流程是写NVMUNLK0xBE - 写NVMCTL设置NVMPROG等位。顺序不能错中间不能插入其他无关的写操作。等待编程完成EEPROM写入需要时间通常几毫秒到几十毫秒。在启动编程后应延迟足够时间或轮询某个状态位如果提供确保编程完成后再断电。检查电源稳定性在EEPROM编程期间必须保证电源电压稳定。电压跌落可能导致编程失败或数据错误。 避坑指南最让我头疼的一次调试是相位噪声在某个频段总是有一个“鼓包”。排查了所有电源和布局最后发现是给LMK61E2供电的LDO的输出端用了同一个磁珠同时给另一个数字芯片供电。当那个数字芯片周期性工作时电流变化通过磁珠的阻抗耦合到了时钟芯片的电源上。解决方法很简单为时钟芯片提供独立的、干净的电源路径即使来自同一个LDO也要在靠近时钟芯片处再做一次滤波隔离。记住对于时钟这种模拟敏感电路电源的“干净”比“稳定”更重要要极力避免数字噪声的耦合。