尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

FPGA高速时钟设计:LVDS差分振荡器选型与信号完整性实践

FPGA高速时钟设计:LVDS差分振荡器选型与信号完整性实践 最近调试一块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、1GHzCMOS输出基本没法用——已经不是“方波”了是正弦波和三角波之间的东西。第二个问题是回流路径。单端时钟信号的回流电流走地平面路径不可控很容易耦合到模拟区域或其它敏感走线。时钟频率高、边沿陡就是一块强噪声源。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振荡器出镜率最高。参数CMOSLVPECLLVDS输出摆幅0VCC差分约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”这个词在振荡器领域对应的是封装尺寸的演进。前些年主流是50325.0mm x 3.2mm、70507.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参考时钟要求125MHzLVDS差分输入RMS抖动要求根据线速率不同而有差异常规要求12kHz到20MHz积分段小于等于1ps。第一步确定封装。板卡面积紧张选2520封装。第二步确定频率稳定度工作温度-40℃到85℃全温范围±25ppm足够。第三步选输出格式LVDS。第四步选抖动数据手册标称RMS phase jitter典型0.4ps125MHz满足性能要求。第五步核对电源和使能逻辑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滤波。去耦电容采用10uF0.1uF1nF的组合靠近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以太网这类高速串行接口参考时钟的选型预算一定要放宽。时钟源参数差那么一点后面眼图、误码率测试要花好几倍的精力去填坑。省下一颗振荡器几块钱的成本可能换来的是整个项目调试进度的失控这笔账怎么算都不划算。
返回列表