1. 为什么原理图看懂了,板子还是点不亮
画过LVDS接口的硬件工程师大概都有过这种体验:原理图翻来覆去检查了七八遍,差分对走线等长、阻抗控制、端接电阻一个不差,PCB也按3W原则拉开了间距,结果上电之后屏幕就是不出图。这时候如果还抱着原理图死磕,基本等于缘木求鱼——问题大概率出在信号完整性上,而信号完整性的问题,只有示波器能告诉你答案。
LVDS,全称Low-Voltage Differential Signaling,低电压差分信号,是当前液晶屏、摄像头、工业相机、FPGA高速互联里最常见的一种物理层接口。它的核心思路很简单:用一对线传一个信号,一条走正相,一条走反相,接收端取两者的差值来判断逻辑0和1。理论上差分传输对共模噪声有天然的抑制能力,所以能跑得很快、传得很远。但“理论上”这三个字,恰恰是坑最多的地方。
我写这篇东西的目的很直接:把用示波器实测LVDS差分信号这件事,从探头怎么选、示波器怎么设、波形怎么读、异常怎么判断,一步步讲清楚。适合已经能看懂LVDS原理图、但一上示波器就发懵的硬件工程师,也适合做FPGA的LVDS收发调试、或者用RK3566这类主控点屏时遇到问题的朋友。看完之后你至少能做到:拿起探头就知道该测哪里,看到波形就知道问题出在发送端、传输线还是接收端。
2. 测LVDS之前,先把这几件事想明白
2.1 LVDS差分信号到底长什么样
很多人第一次测LVDS,看到示波器上两条线各自在0.3V到1.4V之间跳,差值大概350mV,第一反应是“这信号怎么这么小”。没错,LVDS的摆幅就是这么小。标准LVDS的差分电压Vod典型值是350mV,共模电压Vcm典型值是1.2V。也就是说,正相线在1.2V上下摆动±175mV,反相线反着摆,两条线的交叉点就在1.2V附近。
这个特性决定了你测LVDS时最关心的不是单根线的绝对电压,而是两条线之间的差值。单端探头一根一根测,你只能看到两条各自跳动的波形,还得自己脑补差值;差分探头直接给你差值波形,一眼就能看出眼图质量。所以如果条件允许,优先用差分探头。
但现实情况是,差分探头贵,很多实验室不一定有。那用两个单端探头做数学运算行不行?可以,但有前提:两个探头的延迟必须匹配,地线要尽量短,否则算出来的差值波形会失真。我试过用两个普通无源探头测LVDS,结果算出来的差分波形上升沿明显变缓,后来换成两个同型号的有源探头才勉强能用。所以如果只能用单端探头,尽量选同品牌同型号的,并且把探头的地线弹簧换掉鳄鱼夹,减少环路面积。
2.2 示波器带宽和采样率怎么选
LVDS的速率范围很宽,从几十Mbps到几Gbps都有。液晶屏常用的LVDS一般是7倍时钟的数据速率,比如时钟频率50MHz,数据速率就是350Mbps。FPGA的LVDS收发可能跑到800Mbps甚至更高。
选示波器带宽有个经验公式:带宽 ≥ 信号基频的3到5倍。注意这里说的是基频,不是数据速率。对于350Mbps的LVDS,基频大概是175MHz,所以带宽至少要有525MHz,保险起见选1GHz。如果示波器带宽不够,你看到的上升沿会被严重平滑,眼图闭合,误判成信号质量问题。
采样率方面,至少要满足奈奎斯特采样定理的5倍以上。350Mbps的信号,采样率建议2GSa/s以上。很多入门级示波器标称1GSa/s,测低速LVDS勉强够用,但测高速信号就力不从心了。我手头一台老款DSO138,带宽只有200kHz,测LVDS完全是开玩笑,连时钟都看不到。所以别拿玩具示波器测LVDS,至少得是主流品牌的入门级数字示波器,比如Rigol DS1000系列或者Siglent SDS1000系列起步。
2.3 探头怎么选、怎么接
测LVDS的探头选择,直接决定了你看到的是真实波形还是“艺术创作”。差分探头当然最好,但价格摆在那里。如果只能用单端探头,记住三个原则:
第一,用有源探头,不用无源探头。无源探头的输入电容通常在10pF以上,接上去之后对LVDS这种高速信号就是加载效应,波形会变差。有源探头输入电容可以做到1pF以下,对信号影响小得多。
第二,地线要短。探头的地线鳄鱼夹大概有10cm长,这个长度在几百MHz的频率下就是一个天线,会引入大量噪声。换成地线弹簧,长度控制在1cm以内,波形会干净很多。
第三,两个探头要校准。用示波器的探头校准功能,把两个单端探头的延迟对齐,否则算出来的差分波形会有相位误差。
注意:测LVDS时千万不要把探头地线夹到差分对的任意一根线上,那样会短路掉一半的信号。地线必须接到板子的GND。
3. 手把手实操:从接线到出波形
3.1 找到测试点
LVDS的测试点通常有三个位置可选:发送端芯片输出引脚、传输线中间、接收端芯片输入引脚。这三个位置测出来的波形含义完全不同。
发送端测的是驱动器输出,反映的是芯片本身的驱动能力。如果这里波形就不好,那问题在发送端,可能是芯片配置不对、供电不稳、或者驱动器本身有问题。
接收端测的是经过传输线之后的信号,反映的是信号完整性的最终结果。如果发送端好、接收端差,那问题在传输线上,可能是阻抗不匹配、走线太长、或者端接电阻不对。
传输线中间一般不测,因为探头接上去会破坏传输线的阻抗连续性,测出来的波形没有参考价值。
我的习惯是先测发送端,确认芯片输出正常,再测接收端,对比两者差异。如果发送端和接收端波形差不多,说明传输线没问题;如果差异明显,就往传输线上找原因。
3.2 示波器设置
以Rigol DS1000系列为例,设置步骤如下:
第一步,通道设置。如果用的是差分探头,直接接一个通道,探头衰减比设成10:1或者100:1,根据探头型号来。如果用两个单端探头,接CH1和CH2,两个通道的衰减比要一致。
第二步,垂直档位。LVDS差分摆幅只有350mV,单端摆幅大概±175mV,所以垂直档位设成100mV/div或者200mV/div比较合适。如果设成1V/div,波形只有一点点,看不清细节。
第三步,时基设置。根据LVDS的时钟频率来定。比如时钟50MHz,周期20ns,时基设成5ns/div,屏幕上大概显示4个周期。如果想看眼图细节,时基可以再快一点,设成2ns/div。
第四步,触发设置。LVDS是差分信号,触发源选差分通道或者其中一个单端通道都行。触发类型选边沿触发,触发电平设在共模电压附近,也就是1.2V左右。如果波形不稳定,可以试试触发释抑(Holdoff)功能,把释抑时间设成时钟周期的整数倍。
第五步,如果用的是两个单端探头,打开示波器的数学运算功能,选CH1-CH2,得到差分波形。有些示波器直接有差分运算选项,选上就行。
3.3 实测波形分析
接好线、设好示波器,按一下Single键,抓一帧波形下来。正常的LVDS差分波形应该长这样:
差分电压在+350mV和-350mV之间跳变,上升沿和下降沿对称,交叉点在0V附近。单端波形则是两条线各自在1.2V上下摆动,交叉点在1.2V。如果波形满足这几个条件,说明信号质量基本OK。
但实际测出来的波形往往没那么完美。下面几种异常波形,是我在调试中经常遇到的:
第一种,上升沿变缓。正常的LVDS上升沿应该在几百皮秒量级,如果测出来上升沿有2ns甚至更长,说明传输线的寄生电容太大,或者驱动器驱动能力不足。这时候要检查走线是否太长、是否有过孔太多、端接电阻是否匹配。
第二种,过冲和下冲。波形在跳变之后出现明显的过冲,说明阻抗不匹配,能量反射回来了。这时候要检查传输线阻抗是否控制在100Ω,端接电阻是否是100Ω。
第三种,共模电压偏移。正常的共模电压是1.2V,如果测出来是1.5V或者0.9V,说明发送端和接收端的共模电压不匹配,可能是接收端没有正确偏置,或者地电位不一致。
第四种,眼图闭合。如果抓很多帧波形叠加起来,发现眼图的张开度很小,说明抖动很大,可能是时钟质量不好,或者电源噪声太大。
3.4 参数计算实例
假设你测到一个LVDS时钟频率是65MHz,数据速率是455Mbps。示波器带宽至少需要455Mbps对应的基频227.5MHz的3倍,也就是682.5MHz,所以选1GHz带宽的示波器。采样率至少需要455Mbps的5倍,也就是2.275GSa/s,所以选2.5GSa/s以上的示波器。
垂直档位方面,差分摆幅350mV,如果想让波形占屏幕的3格,每格大概117mV,所以设成100mV/div。时基方面,时钟周期是1/65MHz≈15.4ns,如果想看4个周期,屏幕宽度是61.5ns,10格的话每格6.15ns,所以设成5ns/div。
触发电平设在共模电压1.2V,触发类型选上升沿。如果波形不稳定,把释抑时间设成15.4ns的整数倍,比如30.8ns。
4. 那些年我踩过的坑和排查技巧
4.1 探头接地不良导致的假波形
有一次测一个RK3566点LVDS屏的项目,发送端波形怎么看怎么不对,上升沿特别缓,还有振铃。换了三个探头、调了半天示波器设置都没用。后来发现是探头地线夹没夹紧,接触电阻太大,导致地环路噪声串进来了。重新夹紧地线之后,波形立刻干净了。
这个坑的教训是:测LVDS之前,先用示波器自带的校准信号确认探头和地线没问题。如果校准信号都不干净,那测什么都是白搭。
4.2 差分对走线不等长导致的时序偏差
还有一次,FPGA的LVDS接收端一直报错,但发送端波形看着挺好。后来用两个单端探头同时测差分对的两根线,发现正相和反相的交叉点偏离了0V,说明两根线到达接收端的时间不一致。查PCB发现差分对走线差了大概5mm,对应的时间偏差大概是30ps,虽然不大,但在高速LVDS里已经足够导致接收端采样错误了。
解决办法很简单:在PCB上把差分对走线补等长。但如果是已经打样的板子,就只能降速使用,或者换用容错能力更强的接收芯片。
4.3 电源噪声耦合到LVDS信号上
LVDS的摆幅只有350mV,电源上哪怕只有50mV的噪声,耦合到信号上就是14%的误差。我遇到过好几次LVDS波形上叠加了周期性的纹波,查来查去发现是开关电源的开关频率耦合进来的。解决办法是在LVDS驱动器的供电引脚旁边加一个1uF和0.1uF的退耦电容,尽量靠近引脚放置。
4.4 常见问题速查表
| 现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 差分波形上升沿缓 | 传输线寄生电容大 | 测发送端和接收端波形对比 | 缩短走线、减少过孔、换低电容探头 |
| 波形过冲/下冲 | 阻抗不匹配 | 检查端接电阻 | 端接100Ω电阻、控制走线阻抗 |
| 共模电压偏移 | 收发端地电位不一致 | 测两端GND之间的电压差 | 加共模扼流圈、统一地平面 |
| 眼图闭合 | 抖动大 | 测时钟质量和电源噪声 | 优化时钟源、加退耦电容 |
| 波形有周期性纹波 | 电源噪声耦合 | 测电源纹波 | 加退耦电容、换LDO供电 |
| 接收端报错但发送端正常 | 差分对不等长 | 测两根线的延迟差 | 补等长、降速使用 |
4.5 几个容易被忽略的细节
第一个细节,示波器的输入阻抗。大多数示波器的输入阻抗是1MΩ,但LVDS传输线的阻抗是100Ω。探头接上去之后,相当于在100Ω的传输线上并联了一个1MΩ的负载,影响不大。但如果用的是50Ω输入阻抗的示波器,那就相当于并联了一个50Ω的负载,会严重拉低信号幅度。所以测LVDS时,示波器输入阻抗要设成1MΩ。
第二个细节,探头的带宽。探头带宽必须大于示波器带宽,否则探头会成为瓶颈。比如示波器是1GHz带宽,探头至少也要1GHz。我见过有人用100MHz的无源探头测500Mbps的LVDS,测出来的波形完全不能用。
第三个细节,触发模式。测LVDS时建议用Normal触发模式,不用Auto。Auto模式下示波器会不断自动调整触发电平,波形会跳来跳去,看不清细节。Normal模式下触发电平固定,波形稳定。
第四个细节,如果测的是多路LVDS,比如3路RGB接口转LVDS,要注意各路之间的 skew。用多通道示波器同时抓多路波形,对比各路之间的延迟差。如果skew太大,接收端可能会采样错误。
5. 从波形到结论:怎么判断信号能不能用
测到波形之后,怎么判断这个LVDS信号能不能用?我的经验是看三个指标:眼高、眼宽、抖动。
眼高就是眼图张开的高度,对应的是差分电压的裕量。如果眼高小于200mV,说明噪声裕量不足,接收端可能会误判。眼宽就是眼图张开的宽度,对应的是时序裕量。如果眼宽小于时钟周期的50%,说明时序裕量不足。
抖动分为随机抖动和确定性抖动。随机抖动是热噪声引起的,服从高斯分布,理论上无界,但实际上可以用BER(误码率)来衡量。确定性抖动是周期性噪声、占空比失真等引起的,有界。如果总抖动超过眼宽的20%,说明信号质量堪忧。
具体怎么测眼图?很多中高端示波器自带眼图模板测试功能,直接选LVDS模板,示波器会自动统计眼高、眼宽、抖动,并给出通过/不通过的结果。如果没有眼图功能,可以手动抓多帧波形叠加,目测眼图的张开度。
我个人的经验是:如果眼高大于250mV、眼宽大于时钟周期的60%、抖动小于眼宽的15%,这个LVDS信号基本可以放心用。如果达不到这个标准,就要找原因优化。
6. 进阶:FPGA的LVDS收发调试要点
如果你是用FPGA做LVDS收发,除了上面说的信号完整性问题,还有几个FPGA特有的坑。
第一个坑,IO标准配置。FPGA的LVDS收发需要正确的IO标准配置,比如Xilinx的LVDS_25、LVDS_33,Altera的LVDS。如果IO标准配错了,要么不工作,要么波形异常。配置的时候要注意Bank电压和VREF电压是否匹配。
第二个坑,内部端接。很多FPGA的LVDS接收器内置100Ω端接电阻,但需要手动使能。如果忘了使能,接收端就没有端接,信号会反射。在约束文件里加上端接使能的配置就行。
第三个坑,时钟约束。LVDS的时钟和数据之间有时序关系,需要在FPGA的约束文件里正确设置input delay和output delay。如果约束不对,时序分析会报错,实际跑起来也不稳定。
第四个坑,如果MCU没有USB差分信号数据引脚怎么办。这个问题其实和LVDS无关,但热词里出现了,顺便说一句:USB差分信号需要专用的USB PHY,如果MCU没有,可以用外置的USB转串口芯片,或者用GPIO模拟低速USB,但高速USB基本不可能用GPIO模拟。
7. 工具和耗材清单
最后列一下我测LVDS常用的工具和耗材,供参考:
- 示波器:Rigol DS1000系列或Siglent SDS1000系列起步,带宽至少500MHz,采样率至少2GSa/s
- 差分探头:如果预算允许,买一个差分探头,比如Micsig DP10013,性价比不错
- 有源单端探头:如果只能用单端探头,选输入电容小于2pF的有源探头
- 地线弹簧:替换鳄鱼夹,减少地环路
- 校准件:示波器自带的校准信号就行
- 端接电阻:100Ω,用于验证传输线端接
- 退耦电容:1uF和0.1uF,用于电源退耦
这套配置下来,入门级大概几千块,专业级几万块。如果只是偶尔测一下LVDS,可以找实验室借用,没必要自己买。
我在实际调试中发现,很多LVDS的问题其实不是信号本身的问题,而是测量方法的问题。探头没接好、示波器没设对、测试点选错了,都会导致误判。所以每次测LVDS之前,先花五分钟检查探头和示波器设置,比事后花五小时排查问题划算得多。