ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

可编程振荡器选型实战:从相位噪声到保持模式的完整指南

可编程振荡器选型实战:从相位噪声到保持模式的完整指南 最近在给一个数据中心的核心交换板卡做时序方案升级碰到一个很有意思的选型问题传统固定频率晶振的方案在灵活性上越来越吃力而可编程振荡器Programmable Oscillator几乎是下一代网络设备的标配选择。如果你也在做交换机、核心路由器、5G前传承载设备或者工业网络控制器的硬件设计这篇文章值得花几分钟看完。可编程振荡器本质上就是把传统晶振的固定频率输出变成了按需配置输出一颗芯片通过寄存器配置就能覆盖从 kHz 到 GHz 的宽频范围替代多颗不同频率的晶振。这听起来很简单但在实际网络设备里落地时牵扯到的细节比想象中多环路带宽怎么设、保持模式holdover的性能怎么评估、上电时序怎么处理、I2C/SPI 配置失败会有什么后果、量产烧录怎么保证一致性……都有很多文档里不会写的经验。1. 网络设备升级逼迫振荡器换赛道为什么按时比高精度更关键先说一个反直觉的结论在下一代网络系统里振荡器的核心指标不是绝对频率精度而是短稳和相位噪声。很多工程师选型时还停留在频率偏多少 ppm的思维里这在传统以太网时代够用但到了 25G/100G/400G SerDes、IEEE 1588 PTP 授时、SyncE 同步以太网、FlexE 灵活以太网场景下这个维度已经远远不够了。为什么因为高速 SerDes 的参考时钟抖动会直接转化为数据眼图的闭合。你想想一个 112Gbps 的 PAM4 信号单位间隔只有大约 8.9ps接收端均衡器能容忍的随机抖动预算通常只有几百飞秒fs。如果参考时钟的相位噪声差抖动超标哪怕 PCB 走线再漂亮、连接器再好误码率也压不下去。这是物理层的硬约束靠后端 DSP 只能补救一部分。在这类场景里可编程振荡器入场不是因为它的相噪一定比固定频率晶振好事实上同价位下固定频点的专用晶振在某些频点可能更优而是因为它的灵活性可以让你在同一颗物料上搞定多种速率模式、多种协议标准、多种工作状态。拿 400G 交换芯片举例典型 SerDes 速率包括 53.125Gbps NRZ/PAM4、26.5625Gbps、10.3125Gbps 这些档位。按照 IEEE 802.3bs 规范不同速率需要的参考时钟频率并不相同常见的有 156.25MHz对应 100G 的 CAUI-4、161.1328125MHz对应 400G 的 53.125G PAM4 的 1/66 分频、318.75MHz 等。传统方案是板上放多颗不同频率的晶振或者一个大尺寸的时钟芯片做分频而可编程振荡器则可以在上电后由 CPU/CPLD 通过 I2C 快速切频省掉大量物料和 PCB 面积。除此之外还有一个更隐蔽的升级理由设备的智能化运维。现在的网络设备都在往 Telemetry 方向走系统要求电源、温度、时钟芯片的工作状态都能被监控和上报。可编程振荡器天然支持寄存器读写你可以在线读芯片温度、读输出状态、调整输出幅度、甚至动态微调频率DCO 模式。这些能力传统固定晶振给不了只有数字化的可编程器件才有。所以换赛道的真实原因很朴素不是老方案不能用了而是新系统对灵活性、可观测性、多速率适配能力的要求把方案的天花板抬高了。你如果只管一个简单的小交换机用固定晶振没什么问题但你一旦做面向 5G 回传、数据中心融合组网这种下一代会话型设备可编程振荡器就是绕不开的必选项。2. 可编程振荡器是怎么变出任意频率的核心原理与常见设计误区在谈选型之前底层原理必须先捋一遍否则后面配置参数时你只会对着寄存器表发呆。2.1 从模拟 VCO 到数字 DCO本质是 PLL 架构的数字化可编程振荡器的核心是一个PLL锁相环只是把传统 PLL 里的模拟压控振荡器VCO和分频链路做成可配置的分频器组合。你写入的目标频率值会通过一个频率合成公式转换为分频系数硬件上通过 Σ-Δ 调制器控制小数分频最终产生你需要的低频或者高频输出。其中值得关注的有两种主流架构整数分频 高参考频率这是早期方案实现简单杂散表现好但频率步进受限灵活度低。小数分频Fractional-N Σ-Δ 调制这是现在的主流能合成任意频率步进可以做到 1 Hz 甚至更低代价是 Σ-Δ 调制器会引入带内的小数杂散需要靠良好的环路滤波器设计来抑制。理解这一点很重要因为它直接影响你评估可编程带来的副作用小数分频本质上是用时间上的随机调制换取频率精度它必然带来额外的噪声贡献。这也解释了为什么专业厂商比如 Renesas、SiTime、Skyworks的 datasheet 里会给出相位噪声 vs 偏移频率曲线而且曲线形状与环路带宽设置强相关。2.2 环路带宽一个你真正需要调的参数很多初次使用可编程振荡器的工程师会默认用芯片的默认配置觉得 datasheet 上推荐的默认环路宽度没问题。这个坑我踩过。环路带宽直接决定了抖动传递特性。它相当于一个时域滤波器环路带宽窄对输入参考时钟或内部参考源的噪声过滤能力强输出更纯净但锁定时间变长对温度漂移的跟踪能力差。环路带宽宽锁定快、跟踪快但会把参考路径上的噪声更多地传递到输出端。在无外部参考、使用内部晶体作为基准的free-run模式下环路带宽决定了对内部晶体噪声的滤除程度在 SyncE 的锁定外部参考模式下环路带宽直接决定是否能通过 ITU-T G.8262 的漂移传递模板MTIE/TDEV测试。所以选型时不要只看能输出多少频率要问清楚该频率下的相位噪声曲线是否有数据环路带宽是否可以寄存器配置不少低端可编程振荡器把环路带宽固定死了这种在普通消费类产品上无所谓但在网络设备里遇到 G.8262 测试时就会翻车。2.3 常见的三个理解误区误区一可编程等于上电就有配置好的频率。不是的绝大多数可编程振荡器上电后要么输出默认频率出厂默认频点要么输出低频的空闲频率需要 CPU 通过 I2C/SPI 写入正确配置后才会输出设定频率。如果你的 CPU 启动代码里漏了这段初始化后级 PHY/交换芯片会因为没有参考时钟而反复 link down。误区二输出频率写对了就行。还要关注输出格式LVDS / LVPECL / HCSL、输出端接、电压域。LVPECL 需要偏置电路HCSL 需要 100Ω 差分端接LVDS 对共模电压有要求。这些做错了频率再准也没用信号完整性直接崩。误区三相噪指标只看 10kHz 偏置点。SerDes 参考时钟的抖动评估通常是积分 12kHz 到 20MHz 的相位噪声功率对应 RMS 抖动。不同厂商标的积分区间可能不一样有的是 10kHz-1MHz有的是 12kHz-20MHz对比时必须拉齐积分区间否则数字差距会误导你。3. 选型要看的硬指标从相位噪声到保持模式的一次性搞懂这块直接给你一张我自己项目里用的选型对照表再加上每个指标在实际网络设备里的意义避免你对着 datasheet 抓瞎。指标传统固定晶振可编程振荡器网络设备里的意义频率范围单个频点kHz~GHz 可配一颗料覆盖多速率 SerDesRMS 抖动12kHz-20MHz0.1-0.3ps0.2-0.5ps需实测100G/400G 误码率的硬门槛频率稳定度±10~50ppm±1~10ppm 可选影响 SyncE/1588 的长期精度保持模式holdover依赖外部时钟部分型号内置 TCXO/OCXO 参考参考丢失后频率保持能力温漂老化固定数字温度补偿DCO 微调长年运行的频率漂移补偿可观测性无寄存器读温度/状态智能运维的必要条件配置接口无I2C / SPI / 出厂烧录与 CPU/CPLD 协同3.1 相位噪声和抖动的真实门槛SerDes 接收端的参考时钟抖动预算通常在 0.3psRMS12kHz-20MHz以下才能保证足够的误码率裕量。注意是裕量不是刚好达标。芯片 datasheet 上的参数通常是典型值实际 PCB 上的电源噪声、走线耦合、远端串扰都会劣化最终到达 PHY 芯片引脚的时钟质量。所以选型时最好留有 30% 以上的余量。举个例子如果 PHY 手册要求参考时钟 RMS 抖动不超过 0.5ps那么振荡器本身的 RMS 抖动最好在 0.3ps 或更低这是多次量产验证后的经验值。我自己遇到过的情况是选用了一颗相噪数据看似漂亮的低价可编程振荡器但在整机测试时发现高温下85℃RMS 抖动从 0.25ps 劣化到 0.5ps直接导致 400G 端口误码率超标。后来查根因是这颗芯片内部的温度补偿让电源电流变大和旁边的开关电源噪声耦合了。这种问题在 datasheet 上是看不出来的。3.2 保持模式Holdover——比 SyncE 本身更值得关注如果你做的是 5G 前传或者电力授时设备保持模式就是核心指标。简单说当外部参考时钟比如上游的 SyncE 链路断开后设备要靠本地振荡器记住之前的频率继续输出一段时间可接受的时间误差。传统方案是外挂一个 OCXO恒温晶振做保持模式可编程振荡器内部如果集成了高稳定度的 TCXO/OCXO 参考就能单颗解决。但要看清两个参数保持精度holdover accuracy和保持时长。保持精度通常用 ppm/day 或者 ppb/day 表示和内部参考的老化率、温漂系数强相关。实际项目里有几个坑有的便宜芯片标注±4.6ppm 保持精度但那是指 25℃ 恒温条件下的短期数据。到了 -40℃~85℃ 循环变温环境保持精度可能劣化到 ±20ppm。对于需要满足 G.8273.2 Class B 时间误差限值的设备来说这绝对是不够的。保持模式的启动逻辑也要想清楚。推荐的做法是检测到参考丢失后系统不要立刻切保持模式而是先记录失效前的频率补偿值再利用本地参考维持输出。有的可编程振荡器芯片自带这组逻辑比如带自动 holdover 切换的型号有的需要 CPU 配合处理。选型时问清楚。3.3 输出格式和端接——决定信号完整性的另一半这部分经常被忽略。可编程振荡器的输出格式通常是寄存器可配的但不同输出格式的端接要求截然不同。LVDS差分 100Ω 端接输出摆幅小约 350mV适合短距离点到点传输。功耗低。LVPECL需要直流偏置通常到 VCC-1.3V端接电阻组合讲究功耗大但摆幅大、边沿陡峭适合高速长距离 PCB 传输很多古老的 PHY 还在用。HCSL需要差分 100Ω 端接并且每根线还要对地接 50Ω 下拉常见于 PCIe 时钟对布局要求高但超低抖动特性非常出色。如果你在 400G 交换板上用 HCSL 输出的可编程振荡器要特别注意串联电阻和并联电阻的取值。HCSL 不像 LVDS 那样接上就好它需要电流源到地形成回路电阻值不匹配会直接导致占空比失真。我见过一个项目工程师直接把 HCSL 输出当 LVDS 用结果 CLK 占空比跑到 45%/55%PHY 勉强能用但眼图裕量掉了 10%——这种隐性劣化在单板测试时很难定位。4. 在真实网络设备里落地从参考时钟到光模块的完整链路这个标题敲出来的时候我在想用什么角度最实用——与其空谈可编程振荡器的应用场景不如直接走一遍完整链路。假设你现在手头有一个带 8 个 100G QSFP28 光口、2 个管理网口的交换单板主交换芯片是一颗 51.2Tbps 的 ASIC给你配时钟。4.1 一颗主振荡器覆盖四种不同速率在这个单板上交换芯片不同模块对参考时钟的需求不一样SerDes 核心参考156.25MHz100G CAUI-4或 161.1328125MHz400GPCIe 参考100MHz如果 ASIC 内部集成 PCIe root complexCPU 参考需要 25MHz 或者 100MHz管理网口 PHY25MHz也可以让 PHY 自振如果全用固定频率晶振你需要至少 4 颗不同频点占 PCB 面积、增加 BOM 种类每次改版都要重新备料。如果用一颗可编程振荡器通过 I2C 切换输出频率搭配一颗小的 fanout buffer 分路就能覆盖所有需求。我实际用的方案是一颗主可编程振荡器输出 156.25MHz 给交换芯片 SerDes 作为默认频率上电后由 CPLD 通过 I2C 初始化如果检测到业务需要 400G 模式则切到 161.1328125MHz。与此同时另一路输出配成 100MHz 给 PCIe。这颗芯片有双路输出一个配置寄存器搞定比两颗晶振的方案省了将近 40mm² 的 PCB 面积。4.2 时钟树设计一颗振荡器 vs 多颗振荡器的边界时钟树设计时一个核心决策是用一颗多路输出可编程振荡器 扇出缓冲fanout buffer还是多颗单路可编程振荡器。用一颗 fanout 的场景优点是结构简洁、BOM 少、输出频率一致性高同源同相对同步以太网特别友好。缺点是单点故障风险。如果这颗振荡器挂了整个系统的时钟都断了。硬件上可以加冗余双振荡器热备或靠 CPLD 监测 LOSLoss of Signal后切备份源。用多颗单路振荡器的场景优点是隔离性好、故障域小、每颗可以独立微调频率。缺点是 BOM 多、面积大、每颗都要单独配置固件逻辑复杂。从可靠性角度通信设备的经典做法是主时钟链路用双冗余可编程振荡器 双路 fanout buffer 时钟监测电路两条路径热备切换。从成本角度小设备用单颗就好不用为了冗余而冗余。4.3 光模块和 MAC/PHY 的同步关系同步以太网SyncE的原理是物理层从接收的码流里提取时钟经过环路滤波后作为本端发送时钟的参考。这要求本地振荡器的工作模式必须是锁定外部参考而不是free-run。可编程振荡器在网络设备里的一个重要价值就是能通过寄存器选择参考源锁定外部参考比如从 PHY 芯片来的恢复时钟还是 free-run内部晶体。切换时要注意先切参考源再重新建锁不能热切否则输出相位会跳变对 PTP 授时设备来说 phase jump 是致命的。400G 光模块的 Gearbox速率转换芯片同样需要参考时钟。如果 Gearbox 芯片和交换芯片用的是同一颗振荡器的不同输出要注意两个输出之间的输出到输出 skew。多数可编程振荡器的多路输出 skew 在几十皮秒量级对 100G/400G 来说通常可接受但如果 Gearbox 和 MAC 之间要求严格的时序对齐可能需要用可编程的 route 延迟补偿。在 SiTime 和 Renesas 的高端型号里通常自带 per-output phase adjust 寄存器这就是纯数字可编程带来的优势。5. 样机调测阶段的常见坑配置、电源、PCB、烧录、软件对接这部分是最有价值的一节。按传统经验很多工程师第一次用可编程振荡器至少会踩以下五类问题里的三类。我按从硬件到软件的顺序一个个说。5.1 I2C配置失败上电时序和地址冲突很多可编程振荡器的 I2C 从机地址是引脚电平决定的有的芯片有两三个地址配置脚。在 PCB 布局时这些脚如果被走线拉错电平或者被设计成了不可调的默认状态后续调试时就会遇到怎么都寻址不到设备的问题。还有一个常常被忽视的芯片的 I2C 接口是 1.8V 域还是 3.3V 域如果你用 3.3V 的 MCU I2C 直接接 1.8V 的振荡器高电平不满足 VIL/VIH 要求通信不稳定时而成功时而失败。正确的做法是加电平转换或者用 1.8V 的 MCU/CPLD 的 I2C或者查清楚芯片是否支持开漏 I2C 带内部上拉到电源。很多网络设备主控板上有 1.8V 域和交换芯片共用这时尽量把振荡器放在 1.8V 域。此外I2C 配置一定要在上电后延迟一段时间再发通常 datasheet 会写 t_pup_pd 之类的时间等内部晶体起振稳定。你要是上电立刻配置芯片还没 ready天然失败。5.2 电源去耦比想象中更影响相噪可编程振荡器内部比固定晶振多了 PLL、LDO通常集成、数字控制逻辑导致电源电流消耗相对较高且对电源噪声敏感。电源纹波会直接调制到输出相位上劣化相噪。实测中我发现当电源纹波在 20kHz-100kHz 范围内超过 5mVpp 时RMS 抖动可能劣化 10%-20%。去耦设计建议每一颗可编程振荡器的电源脚至少放 100nF 和 1uF 两种去耦电容且 100nF 要放在离电源脚最近的焊盘侧小于 3mm。强烈建议在振荡器电源入口加一个小磁珠600Ω100MHz和 C 组成 π 型滤波。磁珠不用贵用村田或者TDK的贴片磁珠就行。不要和旁边的开关电源的反馈采样点共用电源平面否则会产生公共阻抗耦合。如果是多路输出的振荡器不同输出通道的电源脚独立去耦不要合用一颗电容。5.3 PCB布局靠近负载还是靠近连接器时钟源的布局原则是靠近使用它的负载但在可编程振荡器身上有个矛盾它既要做 CPU 的 I2C 管理又要输出高频时钟到 PHY/交换芯片。I2C 走线频率不高不是瓶颈关键是高频输出走线要短。对于差分输出LVDS/HCSL走线要做到差分阻抗 100ΩLVPECL 也是 100Ω 差分。对内等长控制在 ±5mil 以内对间等长按需求控制通常 ±50mil 足够。尽量走内层减少对外辐射。如果走表层确保参考地连续不要跨越分割槽。串联电阻如 22Ω/33Ω要靠近振荡器输出端放用来吸收反射。还有一个隐藏问题I2C 的上拉电阻如果太弱信号的上升沿会缓慢进而影响振荡器内部寄存器写入时序。我当时用的 CPLD 模拟 I2C 主模式上拉电阻选了 4.7kΩ总线电容稍大结果 400kHz 模式下部分寄存器写入偶发失败调了几天没头绪最后把上拉改成 2.2kΩ 就好了。这个经验分享给大家遇到 I2C 偶发失败先查上拉强度和时序不要先怀疑芯片。5.4 量产烧录的一致性出厂配置与 EEPROM可编程振荡器有两类配置存储方式寄存器配置型掉电后配置丢失每次上电需要 CPU 重新写入。片上非易失存储型OTP/NVM出厂烧录后上电即输出正确频率CPU 也可以在运行时改寄存器覆盖。对于量产我强烈建议如果芯片支持 OTN/NVM 烧录把默认配置同型号所有单板共用的频率、输出格式、端接写死在片内出厂后不需要 bootloader 干预就能工作。这能大大降低固件初始化的复杂度也能避免 CPU 上电时序不及时导致 PHY/交换芯片因为无时钟起不来。在量产环节可以通过程序员或者厂商的编程器统一烧录保证一致性。5.5 热切换和频率切换时的相位瞬态网络设备里有一个非常常见的需求运行中把参考频率从一个值切到另一个值比如从 156.25MHz 切到 161.1328125MHz。这个操作如果做得粗暴直接改分频系数输出频率会瞬间跳变产生巨大的相位跳变。下游 PHY 如果容忍不了就直接进入链路重训练。处理方式很多可编程振荡器支持 smooth frequency transition频率渐变你需要阅读对应的寄存器配置设置频率目标值、切换速率/步长然后触发切换。切换期间最好配合在系统层面先暂停业务在网设备有 hitless 切换需求通常由交换芯片的 holdover 机制兜底等频率稳定后恢复。我在一个 PTP 边界时钟项目里就遇到过用默认寄存器直接改频率导致下游设备时间跳变 200ns 的事故。后来查日志就是因为在切换时没有让振荡器进入 smooth 模式输出频率直接跳了一个台阶。改成渐变切换后同一操作的时间跳变控制在 5ns 以内效果立竿见影。6. 下一波网络设备对时序器件的新要求最后说点趋势性的东西这个不是空谈是我们在选下一代平台时真实考虑的点。6.1 AI/ML 网络里的相位对齐分布式 AI 训练集群用的无损网络RoCEv2/IB对端到端时延的抖动更加敏感。在集体通信AllReduce场景下如果不同交换机之间的 PTP 同步误差偏大会导致同步计算节点在等待数据时浪费大量时钟周期。AI 集群通常要求设备间的时间同步误差从亚微秒级压到几十纳秒级这对振荡器在锁定参考后的长稳和相位噪声都提出了更高要求。可编程振荡器凭借数字可调的环路带宽可以针对不同场景本地时钟保持、链路同步做动态优化这是固定晶振做不到的。6.2 从 AC 耦合到 DC 耦合时序PCIe 6.0/7.0 和 CXL 对参考时钟的规范更严格尤其是 PCIe Common Clock 架构下参考时钟的扩频SSC和传输线匹配都有严格要求。可编程振荡器如果可以配置扩频参数±0.5% down-spread 等就可以一套 BOM 适配多种 CPU/GPU 平台的时序需求。在异构计算越来越普遍的今天这个特性很值钱。6.3 片上遥测向着可观测性演进前面我提到新一代网络设备的智能运维要求时钟器件能自报状态。可编程振荡器逐步会加入更多遥测功能内部温度、工作电压、输出频率偏差、参考源失锁次数等。这些数据可以接入设备的管理面通过 Telemetry 上报到网管平台。这意味着时钟方案从被动器件变成了主动的被管理对象。选型时多看那些有成熟遥测库的厂商比如 SiTime 的 Digital Timers 方案能省不少软件对接的工作量。我个人的体会是可编程振荡器不是简单的晶振替代品它是在网络设备数字化、智能化大方向下时钟子系统演进的一个必然结果。它带来的不仅是一颗料而是一整套新的设计方法和调试思路。你如果正准备把新板卡的时序方案切换到可编程振荡器建议从小批量、单板验证开始重点测相噪、切换瞬态和保持模式三个维度跑通了再全面铺开。尤其是频率切换瞬态这个测试很多开发团队会漏掉等到客户现场出问题才追悔莫及。
返回列表