最近调试一块FPGA数据采集板卡时,我把板卡上的参考时钟从3.3V CMOS单端振荡器换成了微型LVDS差分振荡器。这类器件在国外物料清单里很常见,标注为Miniature PECL and LVDS Oscillators,但在国内不少硬件工程师的第一反应是:这玩意儿和普通石英晶振有什么区别,为什么非要用它?这个问题很典型,也是我写这篇内容的原因。换上LVDS振荡器之后,之前一直困扰我的时钟边沿串扰、SerDes参考时钟抖动偏大的问题,都有了明显改善。
这篇内容适合正在做FPGA高速接口、ADC/DAC采样时钟、交换机或光模块参考时钟设计的硬件工程师、PCB Layout工程师,以及刚接触差分时钟信号的入门朋友。我会从电平标准选择、封装规格、PCB布局、FPGA实测调试到选型避坑,完整走一遍。
1. 为什么高性能时钟场景要选PECL/LVDS差分振荡器
1.1 单端CMOS时钟在高频场景的三个瓶颈
先说普通CMOS振荡器,也就是我们用得最多的那类:4脚有源晶振,输出0到3.3V方波。它方便、便宜、好买,但到了100MHz以上,问题一个接一个冒出来。
第一个问题是压摆率不够快。CMOS输出级的摆幅是满电源轨,从0到3.3V,上升时间通常要2到5ns。对于100MHz时钟,周期是10ns,上升沿就占了20%到50%,信号在门限附近停留的时间变长,对外界噪声和电源噪声的敏感度急剧上升。到了500MHz、1GHz,CMOS输出基本没法用——已经不是“方波”了,是正弦波和三角波之间的东西。
第二个问题是回流路径。单端时钟信号的回流电流走地平面,路径不可控,很容易耦合到模拟区域或其它敏感走线。时钟频率高、边沿陡,就是一块强噪声源。FPGA板卡上往往同时有ADC、DAC、DDR、SerDes,单端时钟带来的EMC问题非常头疼。
第三个问题是抖动累积。CMOS输出级的P管和N管导通电阻不同,上升沿和下降沿的转换速率不对称,导致占空比失真和周期抖动偏大。对于高速SerDes的参考时钟,哪怕几个皮秒的RMS抖动,都会直接吃掉高速串行链路的眼图裕量。
1.2 PECL和LVPECL:电流模逻辑的“快物理”
PECL全称Positive Emitter-Coupled Logic,正电源射极耦合逻辑,是ECL逻辑的正电源版本。核心思路和CMOS完全不同:它用一对差分晶体管构成电流开关,尾电流源恒定,通过电流在左右两管之间的切换来产生输出状态。因为晶体管不进入饱和区,开关速度极快,这是PECL的一大优势。
标准的PECL供电是5V,而LVPECL是低压版本,供电3.3V或2.5V。LVPECL输出电平的中心大约在VCC-1.3V附近,输出差分摆幅典型值800mV左右,输出阻抗很低,驱动能力强。但代价是功耗大,因为尾电流是常开的,静态功耗几十毫瓦到上百毫瓦。输出直流电平偏高,需要专门的偏置和终端网络,不能像LVDS那样直接在接收端放一个100欧电阻就完事。
在振荡器选型时,如果看到输出格式标的是LVPECL,就要做好功耗和终端设计的准备:通常需要用戴维南等效电阻网络做直流偏置,同时提供50欧匹配。
1.3 LVDS:低摆幅低功耗的板级互联赛道
LVDS全称Low-Voltage Differential Signaling,低压差分信号,它本身就是为板级高速互连设计的。典型原理是:驱动端有一个约3.5mA的恒流源,电流流过100欧姆差分终端电阻,产生约350mV的差分电压摆幅,共模电压约1.2V。
LVDS的摆幅只有标准CMOS的十分之一左右,功耗低、压摆率要求低、对外辐射小。更重要的是,它是差分信号,抗共模干扰能力强,回流电流走的是信号线对本身,而不是地平面,因此对地噪声不敏感。这个特性让它成为FPGA差分IO、ADC采样时钟、以太网PHY参考时钟等场景的主流选择。
上表里可以看到,PECL/LVPECL速度快但功耗大,LVDS在速度、功耗、易用性之间平衡得最好。这也是为什么实际项目里LVDS振荡器出镜率最高。
| 参数 | CMOS | LVPECL | LVDS |
|---|---|---|---|
| 输出摆幅 | 0~VCC | 差分约800mV | 差分约350mV |
| 共模/直流电平 | VCC/2附近 | VCC-1.3V左右 | 约1.2V |
| 开关速度 | 中低速 | 极快 | 快 |
| 功耗 | 低 | 高 | 低 |
| 终端方式 | 无需特殊匹配 | 戴维南偏置+50欧 | 100欧差分电阻 |
| 抗干扰能力 | 弱 | 强 | 强 |
| 典型频率范围 | ≤200MHz | ≤2GHz以上 | ≤1GHz以上 |
1.4 实际项目里怎么选
我的一般原则是三句话:频率超过100MHz,优先考虑差分振荡器;对抖动和EMC敏感的采样时钟,优先考虑LVDS或LVPECL;对功耗敏感的便携设备,优先考虑LVDS。
如果你的FPGA只有普通IO和DDR,用CMOS振荡器问题不大。一旦涉及GTX/GTH、SRIO、10G以太网、JESD204B这类高速串行接口,参考时钟的选型直接决定能不能锁定、眼图质量如何。这种情况下,CMOS振荡器能不用就不用,除非后端还有一个强大的时钟Cleaner芯片做兜底。
2. 微型封装的规格拆解与一颗器件的选型流程
2.1 微型化到底有多小
“Miniature”这个词在振荡器领域对应的是封装尺寸的演进。前些年主流是5032(5.0mm x 3.2mm)、7050(7.0mm x 5.0mm),现在差分振荡器已经全面进入3225和2520时代,甚至还有2016尺寸的产品。
以2520封装为例,2.5mm x 2.0mm,面积只有5mm²左右,比一颗0402电阻大不了多少。这样的小封装在FPGA核心板、光模块、手持设备上节省的PCB面积非常可观。尤其是多路时钟源同时存在的场景,布板压力立刻小很多。
微型化的背后是石英晶体的小型化和ASIC工艺的进步。石英晶片本身可以做到很小,配合CMOS驱动芯片封装在一起。另一条路线是MEMS谐振器,用半导体工艺在硅片上做出谐振结构,再封装成振荡器。MEMS方案在高频、抗振动方面有优势,微型化程度上也更激进。
但封装变小不是没有代价。热阻变大,振荡器自身功耗产生的温升会直接影响频率稳定度。LVPECL这种功耗大的输出格式在微型封装里要格外留意温升问题,LVDS就好很多。所以微型封装和LVDS的组合是现在最常见的搭配,这句结论后面选型时非常关键。
2.2 一颗差分振荡器数据手册该看哪些参数
拿到一颗标着Miniature PECL/LVDS Oscillators的器件,数据手册里真正要抠的参数,我认为有这么几项。
频率稳定度。通常以ppm为单位,表示在整个工作温度范围内的频率偏差。工业级一般有±20ppm、±50ppm、±100ppm几档。微型封装因为体积小,TCXO(温补晶振)结构很难塞进去,所以大多数微型振荡器是非温补的,稳定度靠基础晶体性能撑住。如果项目要求全温范围内±10ppm以内,就得考虑带温补功能的MEMS振荡器或TCXO了。
相位抖动。这个参数直接决定了时钟源对SerDes和ADC系统的影响。数据手册上通常会给出RMS phase jitter,比如某个LVDS振荡器在12kHz到20MHz积分频段是0.5ps量级。选型时要和SerDes收发器的参考时钟抖动容限做对比,一般要留出30%以上裕量。
输出格式。LVPECL、LVDS、HCSL这三种差分格式不能混用。有些器件标称“兼容LVDS”,但VOD和VCM参数与标准LVDS有差异,接上去可能能工作,但时序裕量不足。后面第五部分我会专门讲这个坑。
供电电压。微型振荡器常见3.3V和2.5V,少数1.8V。选择时要注意FPGA或处理器对应的IO Bank电压,以及电源轨噪声。LVDS输出用2.5V还是3.3V供电对接收端没什么影响,因为决定电平的是输出驱动电路,不是供电电压本身。
使能逻辑和Standby模式。很多微型振荡器有Enable/Disable引脚,用于降低系统待机功耗。要注意的是输出禁用时是输出高阻还是拉低,以及使能引脚的逻辑电平阈值,是和供电电压挂钩还是和VCC/2挂钩。这些细节很容易被忽略,等系统调试时才发现引脚冲突。
2.3 一个125MHz FPAG GTX参考时钟的选型实例
说一个具体案例。Xilinx 7系列FPGA的GTX参考时钟要求125MHz,LVDS差分输入,RMS抖动要求根据线速率不同而有差异,常规要求12kHz到20MHz积分段小于等于1ps。
第一步确定封装。板卡面积紧张,选2520封装。第二步确定频率稳定度:工作温度-40℃到85℃,全温范围±25ppm足够。第三步选输出格式:LVDS。第四步选抖动:数据手册标称RMS phase jitter典型0.4ps@125MHz,满足性能要求。第五步核对电源和使能逻辑:3.3V供电,使能高有效。
把这些条件整理成一个选型表,去供应商网站筛,就会发现可选型号其实不少。重点核对的是数据手册里LVDS输出共模电压VCM的范围,以及VOD差模摆幅,确保落入FPGA对应Bank的输入范围。这一步很多人会跳过,结果拿到板子上才发现信号质量差、抖动超标。
3. 信号完整性落地:终端匹配、电源滤波与差分布局
3.1 LVDS终端为什么必须是100欧
LVDS的驱动端是恒定电流源,大约3.5mA,它需要一个明确的电流回路来产生电压信号。这个回路就是接收端的100欧姆差分电阻。没有这个电阻,电流源没有回路,接收端什么都收不到。
更准确地说,这个100欧电阻要放在靠近接收端的位置,它的作用有两个:一是为驱动电流提供回路,二是吸收传输线上的反射。PCB上的差分走线阻抗要控制在100欧姆左右,当信号到达接收端时,被终端电阻吸收,没有反射。如果走线阻抗偏离太大,反射就会造成振铃,进而产生误码或时钟抖动。
在FPGA接收端,很多器件内部已经内置了一个可选的差分终端电阻,比如Xilinx 7系列的DIFF_TERM引脚。如果使用内部终端,外部就不用再放电阻了。但要注意,这个内部终端电阻的精度一般是±10%,而且频率响应和离散电阻有差异。对于非常讲究信号完整性的时钟信号,我倾向外部加精密电阻,把内部终端关掉。这是一个可以讨论的设计选择。
3.2 LVPECL终端的戴维南等效电阻网络
LVPECL的终端比LVDS复杂,原因在于它的输出直流电平太高,不能直接用一个电阻接地。以3.3V供电的LVPECL为例,输出共模电平大约2.0V,需要把直流偏置设定在这个电压附近,同时提供50欧的等价阻抗。
最常用的做法是戴维南等效电阻对。用两个电阻,一个从信号线到VCC,一个从信号线到GND,并联等效阻抗等于传输线阻抗,同时分压给输出合适的直流偏置。针对3.3V LVPECL,典型值是82.5欧到VCC、130欧到GND。并联后的等效阻抗约50.5欧,戴维南等效电压约2.0V,正好满足LVPECL输出需要。
这个85/130组合是LVPECL设计里最常见的,但也要提醒一点:对功耗有一定影响。每个输出引脚都会有直流电流流过这个电阻网络,两个引脚加起来功耗不小,设计时要保证电源轨能提供足够的电流。功耗每路大约几十毫瓦,和LVDS的毫瓦级相比差距明显。
另一种方式是交流耦合。在驱动器输出端和接收端之间串入电容,直流分量被隔离,接收端重新做偏置。这种方式可以解决驱动器和接收器共模电压不一致的问题,但代价是会增加设计复杂度,而且电容的截止频率要远低于信号基频,否则会吃掉信号的低频分量导致波形下垂。
3.3 电源滤波:时钟源对电源纹波很敏感
振荡器内部的输出驱动电路对电源电压的变化非常敏感。电源纹波会直接调制到输出边沿上,表现为边沿抖动(power supply induced jitter)。尤其是DC-DC开关电源,开关频率通常在几百kHz到几MHz,这个频段的纹波恰好落在SerDes抖动积分频段内,影响非常明显。
我实测过一组对比:同一颗LVDS振荡器,用低噪声LDO供电时,输出RMS抖动约0.35ps;改用伪随机噪声较大的DC-DC直接供电,抖动飙到0.7ps以上。对于GTX参考时钟来说,这个差异足以影响高速串行链路的高温裕量。
所以建议的做法是:振荡器电源单独走一个低噪声LDO,或者至少加一级LC滤波。去耦电容采用10uF+0.1uF+1nF的组合,靠近VDD引脚放置。微型封装的电源引脚往往只有一两个,地引脚也小,布局时要把过孔从焊盘下方直接打到电源平面和地平面,减少封装和平面之间的回路电感。
3.4 差分对走线:等长、阻抗、过孔
差分时钟走线的布局,有三个关键点:等长、阻抗连续、回流完整。
等长方面,LVDS时钟频率通常不高,LVDS的差分对内等长要求一般5到10mil以内。但为了保险起见,我习惯控制在3mil以内。要注意的是“等长”指的是物理长度差等价到时间延迟后的结果,如果一条走线过了多个过孔,另一条没有,要考虑过孔的延迟差异。
阻抗连续是重中之重。差分对要走完整的参考平面,避免跨分割。如果某段走线的参考平面被切断,回流电流被迫绕行,会产生严重的阻抗突变。微型振荡器输出引脚很密,走线从引脚出来后要迅速转入干净的布线区域。过孔换层时,在换层过孔旁边加一个接地过孔,为回流电流提供返回路径。
另外,时钟走线尽量短,多长算过长?没有绝对标准,但我一般控制在25mm以内。超过这个长度,就必须严格计算阻抗和反射,并考虑加缓冲器。还要避免在差分对上加测试点。很多工程师喜欢在时钟线上加一个测试焊盘方便示波器测量,这个焊盘就是一个stub,会破坏阻抗连续性。如果非要测,用靠近接收端的预留0欧电阻位,测完直接贴电阻。
4. FPGA差分时钟输入的实测、锁定失败排查与验证
4.1 差分时钟进入FPGA的通道配置
FPGA接收外部差分时钟,通常需要使用专用时钟引脚。以Xilinx 7系列为例,每个Bank里有MRCC和SRCC两类全局时钟引脚,其中MRCC可以驱动BUFG、MMCM、PLL等全局时钟资源,是接外部差分参考时钟的首选。普通IO虽然也能接进来,但延迟和抖动特性不如专用时钟引脚稳定,对于高速SerDes参考时钟来说,必须用MRCC/SRCC。
在Vivado里,引脚约束要指定IO标准为LVDS或LVDS_25,对应的Bank供电电压要匹配。如果FPGA内部检测到外部差分时钟但是没有使能DIFF_TERM终端,就需要在约束里排除内部终端,并在PCB上放置外部100欧电阻。我习惯的做法是:PCB上不论是否启用内部终端,都预留外部终端电阻的位置。这样调试时如果内部终端有问题,可以通过贴或不贴电阻来切换方案。
另外,Vivado里要正确配置时钟输入引脚所在Bank的MRCC对应的区域。GTX参考时钟一般有专门的REFCLK引脚对,这些引脚连接到专用的参考时钟网络,不要随便接到普通时钟引脚上,否则SerDes的参考时钟质量会受影响。
4.2 一个真实的锁定失败排查过程
说一个我踩过的坑。某次调试,把一颗新选的2520 LVDS振荡器接到Cyclone V FPGA的专用差分时钟引脚上,频率125MHz,用于片内PLL重建时钟。结果PLL怎么都锁不住,锁定信号周期性闪烁,输出时钟频率漂移。
我没有先怀疑振荡器,而是先怀疑电源。示波器测LVDS振荡器VDD脚,纹波不到15mV,正常。再用差分探头直接测振荡器输出端,波形幅度约350mV,共模1.2V,频率125MHz,看着都对。但测到FPGA引脚端时,波形幅度只有约200mV,且边沿明显变缓。
初步判断是PCB走线损耗和终端问题。查了线宽和层叠,差分线阻抗设计100欧,但实际算出来只有约85欧,原因是参考层被相邻走线挤占,地平面没有保持完整。信号在高频段反射回来,和入射波叠加,幅度被吃掉。
处理方法是把走线对应的参考层区域清理干净,走线避开了其它高速信号,同时把FPGA内部终端电阻改为外部精密100欧电阻。重新上电,PLL几毫秒内锁定,抖动测试结果也恢复正常。
这个案例的教训是:光学层面看振荡器输出是不够的,必须关注从振荡器到FPGA引脚整个通道的信号完整性。很多时候问题其实出在PCB设计,而不是振荡器本身。
4.3 用示波器和频谱仪验证差分时钟
调试差分时钟,测量是基本功。条件允许的话,用真正的差分探头直接测量差分对;没有差分探头时,可以用双通道示波器的两个探头分别测P和N端,再用数学通道做A-B运算。但要注意,普通探头的地线夹会引入很大的地回路电感,测量出来的波形往往带振铃,容易误导判断。
正确的做法是使用探头尖端的短针脚,尽量减少地线长度。测量点选在靠近接收端的位置,但又要避免因焊盘stub带来的影响。示波器带宽至少要1GHz,采样率至少5GSa/s,才能看到LVDS信号的细节。
测抖动时,要定义好测量频段。示波器测量的Period Jitter是周期抖动,和SerDes关心的相位噪声积分值不是一回事。更可靠的做法是测量频谱仪的相位噪声曲线,再积分到对应频段和Libero/Vivado报告里的值做对比。如果频谱仪上看不到近载波外的杂散,也能辅助定位电源耦合问题。
5. 选型避坑、命名陷阱与个人经验笔记
5.1 “LVDS兼容”可能不是标准LVDS
这是采购和选型时最常见的坑。有些器件数据手册上写着“LVDS compatible”或“LVDS output”,但实际输出的VOD(差分电压)只有250mV甚至更低,VCM也不是标准1.2V。这种器件一部分功耗很低,一部分驱动能力弱,放在1米以上的长走线或走线损耗较大的场景,接收端时序裕量会被严重压缩。
标准LVDS的VOD在250mV到450mV之间,VCM在1.125V到1.375V之间。如果器件标称范围偏离这个区间,又用在了长距离传输或高损耗背板上,就要特别谨慎。短距离(1-2cm)近距离连接也许能工作,但项目的量产裕量就不够了。
还有一种情况是“LVPECL vs LVDS”的直接替代。两者终端不同,直接替换会导致输出信号幅度异常。我曾经看到一个设计换了振荡器后ADC采到的频谱出现大量杂散,查到最后是新的LVPECL振荡器被当成LVDS用,输出直连了100欧电阻到地,直流工作点不对。
5.2 使能引脚和输出禁用状态
微型振荡器的使能/禁用引脚,逻辑电平要求和具体状态定义千差万别。有的器件使能时悬空有效,有的必须拉高,有的禁用后输出高阻,有的禁用后输出固定低电平。如果后级电路依赖时钟信号作为复位或者把时钟上电时序,输出禁用状态的低电平还是高阻会直接影响系统行为。
我之前在低功耗项目里遇到过:振荡器在Standby模式下输出高阻而不是低电平,导致FPGA的时钟引脚悬空,FPGA内部本来弱下拉,反而引入了半个周期的亚稳态。后来在使能引脚上增加了RC延时,确保FPGA配置完成后振荡器才启动,问题解决。设计时建议把使能引脚的控制逻辑和FPGA的配置过程时序放在一起审查。
5.3 微型振荡器的频率稳定度和老化的隐忧
微型封装因为石英晶片切割尺寸小,频率稳定度通常会比大封装略差。此外,晶体的老化率虽小,但微型封装晶体谐振器老化曲线可能更陡。这一点在批量产品里尤其重要:新机器测试全部通过,用了半年后频率漂移接近临界值。如果产品要求严格,建议选带有温度补偿或更高稳定度等级的器件。
还要关注焊接应力。微型振荡器在回流焊后,封装内部的晶体谐振频率可能因为PCB应力而偏移。我遇到过振荡器在回流焊后频率偏移了2ppm的情况,在±20ppm的规格内勉强合格,但如果系统本身有严格的同步要求,这种偏移也要考虑进去。
5.4 我个人的几条实战建议
给正在做选型和调试的朋友几条建议。第一,把振荡器的输出波形、终端匹配、走线阻抗当成一个整体设计,不要只关注振荡器本身。第二,尽量在原理图阶段把可选器件位号预留好:比如交流耦合电容预留0欧或10nF两种选择,终端电阻预留一脚连GND一脚空焊,这样调试时不用麻烦改版。第三,试产时多买几个不同品牌、批次的同规格振荡器,交叉测试一个批次里的参数差异,因为振荡器这类通用器件,供应商之间的VCXO、VOD、VCM参数容差区别往往比预期大。
第四,也是最重要的一条,如果你的系统里已经有JESD204B、PCIe、10G以太网这类高速串行接口,参考时钟的选型预算一定要放宽。时钟源参数差那么一点,后面眼图、误码率测试要花好几倍的精力去填坑。省下一颗振荡器几块钱的成本,可能换来的是整个项目调试进度的失控,这笔账怎么算都不划算。