ARTICLE DETAIL

资讯详情

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

PECL、LVPECL与LVDS高速差分互连设计实战指南

PECL、LVPECL与LVDS高速差分互连设计实战指南 做高速电路设计LVPECL、PECL、LVDS这几个词基本绕不开尤其是做FPGA、时钟分配、SerDes参考时钟和显示接口的工程师几乎天天要和它们打交道。我最早是在一块高速采集卡上被这个组合狠狠教育过一次当时觉得反正是差分信号拉一对线、接个端接电阻总不至于出大问题结果因为LVPECL和LVDS互连的共模电压没处理好板子上电就发热跑起来又误码前后折腾了一个多星期才定位到根因。这篇就把PECL、LVPECL和LVDS这三种高速接口电平标准的互连设计讲透包括各自的电气特性、为什么必须按规范端接、哪些互连拓扑可以直接抄以及PCB布线和调试过程中那些容易踩的坑。1. 先认识一下PECL、LVPECL、LVDS到底是谁1.1 从ECL走来的PECL与LVPECLPECL全称是Positive Emitter-Coupled Logic也就是正电源版本的ECL。老的ECL最早用负电源供电比如标准的ECL电平是VCC0V、VEE-5.2V后来为了配合TTL系统把供电翻过来做成PECL用5V单电源再后来为了降低功耗、匹配3.3V系统又出现了LVPECL典型供电3.3V也有一部分芯片支持2.5V。这类电平标准的输出级是射极跟随器结构速度极快上升沿能做到几百皮秒级别所以长期霸占高速时钟分配、SerDes参考时钟、抖动要求高的触发信号等场景。你去翻时钟Buffer、CDR芯片、光模块Host Board的参考电路十有八九能看到LVPECL或者LVPECL转LVDS的拓扑。但射极跟随器有个特点管子本身只能主动提供电流也就是拉高容易拉低要靠外部负载电阻把电平拉下去。这就是为什么LVPECL必须有一套严格的端接网络而不是像CMOS那样直接拉一根线就能跑。1.2 电流模式出身的LVDSLVDS全称Low-Voltage Differential Signaling是上世纪90年代由NS现在并入TI推出来的。它的输出级不是电压型射极跟随器而是一个约3.5mA的恒流源电流方向由数据控制经过终端电阻后在接收端形成压差。因为它用电流驱动摆幅天然被限制在350mV左右功耗远低于LVPECLEMI也更小所以在LCD屏、FPGA通用IO、摄像头接口、短距离板间传输这些场景里成了事实标准。现在市面上很多“LVDS”产品严格说可能是Bus LVDS、LVCMOS转差分或者Mini-LVDS摆幅和共模各不相同设计前一定要看数据手册不能只看接口名字就下手。1.3 三个标准的关键参数速览项目PECLLVPECLLVDS典型供电5V3.3V / 2.5V3.3V / 2.5V输出结构射极跟随器射极跟随器3.5mA电流源典型差分摆幅约±0.4V级别约±0.4V级别约±0.175V典型共模点VCC - 1.3VVCC - 1.3V1.2V功耗大较大小标准端接50Ω到VCC-2V50Ω到VCC-2V100Ω跨接常见场景早期高速时钟时钟分配、SerDes显示、FPGA、板间数传先把表记住后面对比互连方案就有了一根很清晰的主线LVPECL靠电压和端接电流工作LVDS靠恒流源和终端电阻工作两者的“世界观”不一样接线自然不能想当然。2. 电平标准背后的电气逻辑2.1 LVDS的“恒流源加100欧”模型很多人看LVDS只看差分摆幅350mV却不理解这350mV是哪里来的结果遇到“为什么我测不到波形”就懵了。LVDS发射端本质是一个3.5mA恒流源电流从发射端流出后必须在接收端经过一个100Ω电阻回到回流路径电流乘以电阻才是电压。如果接收端没有那个100Ω终端电阻高速信号就会在传输线末端发生反射波形严重振铃甚至信号幅度根本建立不起来。我见过不少刚入门的同学把LVDS接收芯片的输入当成高阻认为“接收端是电压比较器接上就行了”结果板子上既没有100Ω端接又没有使能内部端接的寄存器配置示波器上看到的就是一片乱波形。记住这个模型LVDS是一个需要闭合电流回路的差模系统100Ω终端电阻不只是匹配它本身就是把电流转换成电压的核心器件。实际测量时用差分探头在接收端看差分摆幅大约为350mV单端对地电压会在1.2V共模附近摆动高电平大约1.4V低电平大约1.0V。很多文章里说的“LVDS差分线高值和低值”指的就是这两个单端电平。但接收端真正判断的不是单端对地电压而是两根线之间的差值所以布线时两根线的正负极性一定不能反极性问题在显示类接口上表现尤其典型。2.2 LVPECL的“射极跟随器加戴维南偏置”LVPECL输出级是射极跟随器这种结构可以快速拉高输出但拉低能力弱必须依靠外部负载电阻把输出端的直流工作点拉到一个合适的电压上这个目标电压在数据手册里通常写成“50Ω到VCC-2V”。以3.3V供电为例VCC-2V就是1.3V。问题来了实际电路板上不一定有这个1.3V电源。最常用也最经济的办法是用两个电阻做一个戴维南等效网络用电源轨分压出近似目标电压同时把等效电阻接近50Ω。如果目标是1.3V、等效电阻50Ω计算出大概是一边130Ω接到VCC另一边82Ω接到GND。这样每根线的对地负载约为50Ω两根线合起来对差模信号就是100Ω匹配。但在很多LVPECL接收端参考电路里你看到的是“82Ω到VCC130Ω到GND”这其实是为了把接收端直流偏置建立在VCC-1.3V附近也就是3.3V供电时的2.0V左右。同一个电阻数值放在不同位置语义完全不同一个是发射端的工作点下拉一个是接收端的输入共模偏置。这是LVPECL设计里最容易弄混的一点也是我当年踩坑的根源。如果供电是5V的PECL端接目标就变成VCC-2V3V电阻也要重新计算不能把3.3V常用的130/82直接照搬。我习惯把每个项目的供电电压和端接目标写在原理图页注释里方便自己也方便后续调试的人。2.3 为什么LVPECL和LVDS不能随便直连常有朋友问两边都是差分信号LVPECL输出能不能直接接LVDS接收端答案一般是不建议直连核心原因有两个。第一是共模不匹配。LVPECL输出在3.3V供电时共模大约在2.0V附近而LVDS接收端的共模标准是1.2V差了将近0.8V。直接把LVPECL接到LVDS接收端接收端会离开线性工作区甚至可能触发输入保护结构。反过来LVDS输出共模1.2VLVPECL接收端共模却在2.0V也需要中间做电平转换。第二是驱动结构不同。LVPECL输出需要外部提供直流电流路径LVDS输出则要求接收端必须有100Ω终端电阻。如果把LVDS驱动接到LVPECL接收端却不加交流耦合和偏置网络LVDS恒流源可能找不到正常的工作点摆幅被压缩误码率直线上升。所以不是说“波形像差分”就能直连必须同时考虑共模、摆幅、端接类型这三个因素。2.4 交流耦合和直流耦合怎么选互连设计里另一个绕不开的选择题是交流耦合还是直流耦合。没有标准答案但有几个判断依据。如果发送端和接收端的共模电压不一样或者板卡之间地电位存在明显差异优先用交流耦合用串联电容把直流分量隔掉再由接收端偏置网络重新建立共模。如果链路速率很低或者信号里含直流分量、脉宽非常宽那么交流耦合电容会因为时间常数太大导致平顶下垂这时候就要考虑直流耦合或者把电容加大。实际工程里LVDS和LVPECL混接时交流耦合是主流。耦合电容通常选0.1μF陶瓷电容时钟频率极低的场合要按RC时间常数重新估算。要注意的是交流耦合电容一般放在接收端附近放错位置或者一颗电容焊反都会让眼图严重恶化这是排查问题时的重点怀疑对象。3. 实战互连方案3.1 LVPECL驱动LVDS先抬共模再上100欧LVPECL输出接到LVDS接收端我实践中用得最多的是交流耦合加接收端偏置网络。在LVPECL输出到LVDS输入之间串联0.1μF电容LVDS接收端每根线用一组分压电阻把直流偏置抬到1.2V同时让每根线等效对地阻抗接近50Ω。也就是说两根线的等效网络既提供了100Ω差模终端又把共模电压正确建立在1.2V一举两得。具体分压电阻计算可以用戴维南等效思路。比如供电3.3V要求等效电压约1.2V、等效电阻约50Ω可以算出一组约137Ω接VCC、78Ω接GND每根线按这个配置组成的直流偏置点就是1.2V差模负载约100Ω。实际取标准阻值后会有偏差但只要误差控制在5%以内对LVDS链路完全够用。驱动侧还要检查LVPECL芯片有没有内部端接。很多LVPECL时钟Buffer芯片要求外部提供50Ω到VCC-2V的下拉电流路径如果没有内部端接必须在驱动侧也补上否则射极跟随器没有直流工作点。驱动侧用130Ω接VCC、82Ω接GND做50Ω等效下拉再接耦合电容到LVDS端整个链路就完整了。3.2 LVDS驱动LVPECL共模要拉到2伏LVDS输出驱动LVPECL接收端方向反过来但要解决的问题类似。LVDS共模1.2V太低LVPECL接收端通常希望输入共模在VCC-1.3V附近所以中间仍然建议交流耦合然后由接收端偏置网络把共模抬高到2.0V左右。经典做法是每根线用82Ω接VCC、130Ω接GND。这个网络对每根线来说等效于一节50Ω内阻、2.0V电压源两根线合起来看差模阻抗约100Ω刚好满足LVDS驱动端对终端电阻的要求。LVDS输出的350mV摆幅虽然比LVPECL自身典型摆幅小但由于LVPECL接收端的差分阈值通常很低一般仍能可靠接收短距离板内互连尤其没问题。需要注意LVDS的输出电流是3.5mA如果链路走线很长、衰减很大350mV摆幅到了接收端可能只剩200mV以下这时候必须做信号完整性评估预留点位换用更高速率的专用转换芯片或者干脆改用CML这类摆幅更抗衰减的标准。别为了省一个芯片硬抗长走线高速设计里留裕量才是降本。3.3 PECL与LVPECL直接互连的前提PECL和LVPECL本质上是一家人唯一显著区别是供电电压。如果两边都用同一路电源比如3.3V的LVPECL输出接到3.3V的LVPECL接收端电气参数基本一致可以按LVPECL对LVPECL处理直接连接收端放好端接网络就OK。但如果一边是5V PECL、另一边是3.3V LVPECL差别就大了。5V PECL输出的高电平和低电平均高于3.3V系统允许的共模范围直接连接极可能打坏3.3V一侧的输入结构。这时候要么用一颗PECL到LVPECL的转换Buffer要么在交流耦合后重新设计接收端偏置电阻把5V系统的高摆幅先隔掉再由3.3V侧的偏置网络建立合规电平。我见过有人图省事PECL输出直接串个电阻进LVPECL结果输入端过压、发热、连锁烧电源。电压域不同的时候别想当然“串个电阻分压就行”一定要先把共模范围算清楚。3.4 FPGA里怎么处理LVPECL和LVDS输入现代FPGA的高速IO大多原生支持LVDS甚至许多中高端FPGA带内置100Ω差分端接可以在软件里把引脚配置成LVDS模式开启DIFF_TERM。但真让你接收一个LVPECL信号时FPGA侧不一定有LVPECL IO标准可用更稳妥的路子是外部做好交流耦合和电阻偏置网络把LVPECL电平转换成FPGA可以接受的LVDS电平然后FPGA内部用LVDS接收模式采样。外接偏置电阻时FPGA端如果同时开启了内部100Ω端接相当于与外部等效端接并联等效阻抗变成50Ω这会破坏匹配。通常做法是二选一要么用外部电阻网络端接关闭FPGA内部端接要么用FPGA内部端接外部只做共模偏置不自带50Ω级低阻网络。不同FPGA的IO Bank电压要求也不同LVPECL电平共模2.0V是否落在Bank允许范围内必须查该FPGA系列的IO手册再决定要不要加衰减网络。4. 高速互连布线与测试的PCB实战4.1 差分阻抗和叠层的算盘要提前打电平标准选好、端接网络定了后面就是布线。LVPECL和LVDS都要求传输线阻抗受控差模目标100Ω单端对地目标约50Ω。你在布局前就应该把叠层确定下来用阻抗计算工具按板厂提供的板材参数反推线宽和线距而不是等布完线再让板厂“调阻抗”那样可调空间非常小。FR4板材、常规1oz铜、4层板的情况下表层微带线做100Ω差分组大致路径是线宽0.15mm到0.2mm、线距0.15mm左右具体以板厂叠层为准。内层带状线线宽和间距略有差异。别只看软件默认值要把板材介电常数、铜厚、阻焊厚度这些参数一并代入不同厂家结果能差出5Ω以上。差分对之间要保持一致性两根线尽量在同一层走线避免一根走表层、一根走内层。高速链路对参考平面的连续性非常敏感跨越分割地平面会造成阻抗突变和共模噪声轻则眼图闭合重则直接误码。对时钟这类重复性信号宁可绕一点也要保证回流路径完整。4.2 等长、过孔和回流路径差分对内等长是基本功但很多新手只盯着总长度差忘了过孔带来的影响。过孔在100Ω差分对里是一个明显的阻抗不连续点会产生寄生电容和反射。建议关键高速信号尽量少打过孔必须换层时在过孔旁边加地孔伴行给回流电流提供低阻抗路径。对内等长的目标是控制时间偏差比如FR4上信号速度大约每毫米6到7皮秒100MHz时钟一个周期10ns看起来等长很宽松但如果这是1Gbps数据线0.5mm的偏差就是几皮秒的skew直接影响眼图预算。我的习惯是差分对内做到5mil以内差分对之间控制在20mil以内这是一条务实且安全的经验值。4.3 耦合电容和焊盘stub的处理交流耦合电容在高速链路上的影响经常被忽略。电容本身高频特性有好有坏先选C0G或者X7R材质0402封装比0603寄生更小但0603更稳定具体看空间。电容焊盘的尺寸和间距会造成阻抗突变所以耦合电容尽量靠近接收端且焊盘下的参考平面不要被掏空必要时用GDS文件模拟一下。还有一种常见问题是从主线上引出的测试点焊盘过长形成一个明显的stub高频能量在stub末端反射回来。做调试用的测试点我建议用0402的测试焊盘直接贴在线路上不用的时候不影响量的时候直接点千万别从差分线上拉出一根“小脚”再接焊盘那等于给高速信号装了个天线。4.4 眼图和探头的正确姿势调试高速接口示波器是最直接的检查手段。量LVPECL或LVDS最好用差分探头因为普通单端探头两路分别接线的地回路会引入共模噪声测出来的眼图可能比真实情况差很多。如果没有差分探头用示波器两个通道做A减B运算配合两根参数一致的低损耗同轴线也能应付大多数场景但要注意探头地线尽量短避免形成大环。眼图判断注意几个点上下沿是否对称交叉点是否在幅度中点附近抖动是否明显发散。LVPECL链路里如果眼图的交叉点上移或下移多半是偏置网络电阻不对称或者信号已经畸变LVDS链路里如果眼图幅度远低于350mV优先检查100Ω端接有没有失效。4.5 万用表也能做“信号健康检查”很多人一提高速调试就觉得必须上几十万的设备其实万用表也能做一半的故障筛查。上电后先用万用表量LVPECL输出端直流电平正常情况下应该在VCC-1.3V附近量LVDS接收端如果没有任何端接直流电平可能是悬浮的加了偏置后电压应该落在设计共模附近。再量一下端接电阻两端电压如果测到几十毫伏且随数据变化比较稳定说明链路基本通着。这个方法不能看出波形质量但能快速区分“完全没信号”和“信号异常”省得一上来就搬示波器满板子找。5. 从芯片到屏RGB转LVDS、MIPI转LVDS和SoC点屏场景5.1 3路RGB接口转LVDS是怎么回事网上搜“3路RGB接口转LVDS”的人不少这类项目一般是主控SoC只有并行RGB输出而屏幕是LVDS接口需要一颗RGB到LVDS的桥接芯片比如SN65LVDS83、THC63LVDM83这类经典方案。输入侧是并行LVCMOS信号输出侧是3对数据加1对时钟的LVDS差分信号。这种设计里电平标准不再是LVPECL那种高压大摆幅差分而是LVCMOS到LVDS的转换。最容易出错的是两件事一是输入数据位宽和时序RGB888、RGB666、RGB565映射关系完全不同二是输出LVDS的数据映射标准SPWG还是JEIDA映射不一致屏幕会花。别以为桥接芯片是“万能翻译”先搞清楚屏端定义和主控时序才能把代换来当帮手而不是添乱。硬件上还有一个注意点LVDS输出侧的100Ω端接一般在屏模组内部已经集成板子上不需要重复跨接100Ω。如果你在桥接芯片输出侧自己又加了一个100Ω相当于把输出负载变成50ΩLVDS驱动电流会匹配异常。先看屏规格书再决定加不加终端电阻。5.2 MIPI DSI转LVDS要注意时钟和数据映射MIPI DSI转LVDS在车载、工控、平板市场都很常见典型芯片包括SN65DSI83、LT8912B等。输入侧是MIPI D-PHY输出侧是LVDS两条链路都是差分但电气参数不同MIPI是1.2V共模、高速状态摆幅约200mV到250mVLVDS是350mV摆幅靠桥接芯片内部完成电平转换。软件层面Linux内核里适配这一类“MIPI转LVDS”方案通常需要修改设备树中的桥接芯片节点、LVDS屏时序参数、数据映射格式。很多人调不出屏不是桥接芯片没驱动而是时序参数写错或者数据映射格式选错。硬件上还要检查复位脚、使能脚、I2C地址的上下拉配置这些脚位状态不对芯片可能根本不工作。从高速互连设计的角度看MIPI和LVDS都要求差分对等长、阻抗受控走线分开远离干扰源但真正决定能不能点亮屏的往往是“映射”和“时序”这些看不见的信息。5.3 RK3566点LVDS的软硬件协同RK3566被不少个人开发者拿来点LVDS屏这也是很多嵌入式项目的常见任务。RK3566本身支持多种显示接口LVDS通常需要通过桥接或者平台原生的LVDS接口输出。硬件上关键点是电平匹配、引脚极性、电源时序。如果你用的是RGB转LVDS桥接方案RGB端的信号极性、时钟极性错了就是花屏或者黑屏如果用的是MIPI转LVDS重点则是MIPI lane极性、lane数和屏参。软件侧设备树里要配置好显示时序和LVDS格式。比如SPWG和JEIDA两种LVDS映射是点屏最常见的一个隐藏坑两者对RGBbit的摆放完全不同选错后屏幕有背光但画面是雪花或杂色。另一个坑是上电时序屏的供电顺序和背光使能延迟必须按屏厂要求来否则即使信号都正确屏幕也可能开机闪一下就不亮了或者出现抖动。这类问题不能只靠硬件工程师或软件工程师单干我的经验是把屏规格书里几个关键参数拉出来开会确认供电时序、LVDS格式、像素时钟范围、极性要求。四个参数全部对齐开发效率能提升一大截。5.4 FPGA收LVDS屏或者高速相机FPGA做LVDS接收是另一个高频场景常见于视频采集、医疗超声、工业视觉。FPGA内部把引脚配成LVDS模式开启片上端接再通过IO时钟管理单元做数据采样的延时对齐。LVDS接收端本身对偏置不太敏感但实际项目中经常因为走线等长不够、时钟通道和数据的skew太大导致FPGA采出来的数据全是乱的。这时候我一般会先在FPGA里写一个简单的测试pattern让发送端发已知数据接收端对比接收结果。如果第一对数据通道就错多半是极性接反或者差分对交换了把P和N调一下测试一下比看波形查寄存器快得多。这个习惯帮我排掉了至少一半的显示类故障。6. 常见问题排查速查表与独家避坑经验6.1 故障速查表现象可能原因排查方法完全测不到LVPECL信号驱动侧缺少50Ω到VCC-2V的下拉路径检查130Ω到VCC、82Ω到GND网络LVDS输出测不到波形接收端没有100Ω终端电阻在接收端跨接100Ω或开启内部端接有波形但花屏/乱码差分极性反、通道顺序错、数据映射错误用测试pattern逐通道对比检查P/N眼图幅度偏小端接负载不对、耦合电容失效、走线过长测量100Ω端接阻值换差分探头重测LVPECL链路发热端接电阻错误导致输出电流过大计算直流电流核对端接目标电压交流耦合后低频掉底耦合电容太小时间常数不够换成0.1μF以上低速场合考虑直流耦合FPGA接收数据不稳定差分对不等长、时钟数据skew过大检查等长FPGA里用IODELAY调整采样窗口屏有背光无画面电源时序、LVDS映射或时钟极性错误对照屏规格书逐项核对时序参数6.2 从设计源头避免返工这类高速互连问题返工成本最高的是在PCB已经打样后才发现端接网络画错。我的建议是原理图阶段就把三种类型的参数写成固定模板端接目标电压、等效电阻、实际电阻取值每接一组差分信号就在图纸旁边标注清楚。画完之后让另一个工程师做“纸上评审”专门查每一对差分信号的电平标准来源和去向。PCB布局之前把所有AC耦合电容放在接收端附近和接收芯片的输入引脚尽量靠近。把调试用的测试点做成0402小焊盘直接放在走线上不要伸出stub。同时预留0Ω电阻位方便信号通路断开测试量产时如果不需要就不贴免得增加寄生。6.3 最后的调试技巧说到这分享一个我一直在用的土办法。拿到一块新板上电后先别急着接示波器先用万用表量每一组差分信号的直流工作点和设计期望值做对比重点看有没有输出悬空、电源没供上、端接电阻漏贴。这步能把一半的装配问题在几分钟内筛出来再上示波器看波形时就轻松多了。另一个技巧是给每对差分信号预留一组“安全地孔”也就是在差分线旁边留两个相邻的地过孔调试时直接把探头地线扣在过孔上既稳定又不会破坏链路。这个习惯救了我好多次特别是调LVPECL这种直流偏置特别敏感的电路时每次用探头都能稳定获得真实波形。我用过一句话总结这套东西高速差分互连第一步是搞清楚对方要什么共模第二步是给对方想要的终端第三步才是看波形漂亮不漂亮。把前两步做好了LVPECL、PECL和LVDS之间不管怎么混接都不会再让人通宵加班。
返回列表