1. 从一次信号联调失败说起:为什么电平标准不是“能通就行”
前两年帮一个做数据采集的朋友调一块板子,FPGA和一颗高速ADC之间用LVDS对接,原理图看着没问题,线也等长了,结果眼图一测,眼高只剩不到80mV,误码率怎么都下不去。折腾了两天,最后发现问题出在FPGA侧bank的VCCO供电给的是3.3V,而LVDS的共模电平要求大约1.2V,接收端根本没法正常判决。把bank电压改成2.5V、重新配置IO标准之后,眼图立刻张开。这件事让我印象很深——高速接口电平标准从来不是“接上就能通”的事,它是一整套关于电压、阻抗、参考、端接和时序的约定。
所谓高速接口电平标准,说白了就是两句话:发送端用什么电压摆幅和共模去表达0和1,接收端用什么门限和端接去正确识别它。低速时代我们不太在意这些,3.3V的CMOS推挽输出,几MHz的信号,随便连都能跑。可一旦速率上到几百Mbps甚至Gbps,上升沿变成几百皮秒,走线变成传输线,这时候电平标准选错、端接做错、参考电平给错,任何一个环节都能让链路直接趴窝。
这篇文章想聊的,就是围绕高速接口电平标准这一主题,把常见标准(LVDS、LVPECL、CML、HSTL、SSTL、TMDS等)的电气本质、选型逻辑、端接计算、实测踩坑完整地梳理一遍。适合正在做高速数字设计、FPGA互联、SerDes外围电路、或者单纯被眼图和误码率折磨过的硬件工程师和逻辑工程师看。不管你是刚接触差分信号的新手,还是已经画过几版高速板的老手,我都尽量把“为什么这么设计”讲透,而不是只丢一张参数表给你。
我个人的习惯是:先看速率和拓扑,再定标准,最后算端接。顺序反了,后面全是返工。下面就从最容易被忽略的电气本质开始拆。
2. 差分电平标准的电气本质:共模、差模与门限判决
2.1 差模摆幅决定抗噪,共模决定能否被“看见”
任何差分标准都可以用两个参数描述清楚:差模电压Vod(也叫差分摆幅)和共模电压Vocm。差模是两根线之间的电压差,接收端真正关心的是它;共模是两根线相对地的平均电压,决定了这个差分对“浮”在多高的电位上。
接收端的输入级通常是一个差分放大器,它有一个共模输入范围。只要Vocm落在这个范围内,放大器就能正常工作,把差模放大并判决成逻辑电平。一旦Vocm超出范围,哪怕差模摆幅再大,输出也是错的。前面那个案例就是典型:LVDS的Vocm典型值1.2V,而3.3V bank的输入级共模范围根本覆盖不到,直接失效。
这里有个很实用的类比:差模像两个人说话的音量差,共模像他们站在多高的舞台上。舞台太高或太低,台下的人(接收器)根本听不清谁声音大。
2.2 常见标准的电气参数横向对比
把主流标准的关键参数摆在一起看,选型时心里就有数了。下面这张表是我自己整理后常用的速查版,参数取的是典型值,具体设计一定要以器件手册为准。
| 标准 | 典型差模摆幅 | 典型共模 | 端接方式 | 典型速率 | 典型场景 |
|---|---|---|---|---|---|
| LVDS | 350mV | 1.2V | 100Ω差分 | 数百Mbps~3Gbps | FPGA互联、ADC接口 |
| LVPECL | 800mV | VCC-1.3V | 50Ω到VCC-2V | 数百Mbps~数Gbps | 时钟分配、高速背板 |
| CML | 400~800mV | VCC-0.2V | 50Ω到VCC | 数Gbps~数十Gbps | SerDes、光模块 |
| TMDS | 约500mV | 3.3V/2.5V | 50Ω到3.3V | 数百Mbps~数Gbps | HDMI类视频接口 |
| HSTL | 可配置 | 0.75V/1.5V | 50Ω到VTT | 数百Mbps | 高速存储器接口 |
| SSTL | 可配置 | 随VDDQ | 50Ω到VTT | 数百Mbps | DDR类存储器接口 |
看这张表要抓住一个规律:速率越高,摆幅越小、共模越靠近电源轨、端接越趋向于50Ω到某个固定电位。原因是高速下功耗和边沿速率是矛盾体,摆幅小才能快,而端接是为了吸收反射、维持阻抗连续。
2.3 为什么端接电阻不是随便选的
很多人知道差分对要接100Ω,但不知道为什么。差分走线的差分阻抗通常设计成100Ω(USB、LVDS、以太网都是这个值),如果接收端不端接,信号到达末端会发生反射,反射波叠加在原信号上,眼图就糊了。端接电阻等于差分阻抗时,能量被完全吸收,反射最小。
LVPECL和CML则不同,它们是电流型输出,输出级本质是一个恒流源加开关。LVPECL需要把电流“拉”到某个电位,所以端接是50Ω到VCC-2V(等效于戴维南端接);CML是50Ω到VCC,因为它的输出电流方向是往电源灌的。这些端接方式如果搞反,要么没有摆幅,要么烧输出级。
提示:端接电阻的功耗一定要算。LVPECL的50Ω到VCC-2V端接,单端电流约14mA,一个差分对就是28mA,多路时钟分配时功耗很可观,PCB上要留足散热。
3. 选型决策链:从速率、拓扑到供电约束的完整推演
3.1 第一步永远是速率和距离
选电平标准,第一个要问的是:信号速率多高,走线多长。这两点直接决定了你是在“普通互连”还是“传输线互连”的范畴。
经验上,当信号上升时间小于走线往返延迟的1/6时,就必须按传输线处理。举个具体例子:FR4上信号传播速度约6英寸/ns,如果上升时间是200ps,那么临界长度大约是 200ps × 6in/ns / 6 ≈ 0.2英寸,也就是5mm左右。也就是说,只要你的走线超过5mm,200ps边沿的信号就已经是传输线问题了。这时候电平标准必须选差分、必须端接。
速率和标准的对应关系大致是:低于100Mbps,CMOS/LVTTL还能凑合;100Mbps到1Gbps,LVDS是性价比之王;1Gbps以上,CML和SerDes是主流;时钟分配场景,LVPECL因为抖动低而常被选用。
3.2 第二步看收发两端的供电和IO bank约束
FPGA的IO bank是分组的,每个bank有自己的VCCO。一个bank里所有IO标准必须兼容同一个VCCO,这是硬约束。比如你想在同一个bank里混用LVDS(要2.5V)和3.3V的LVCMOS,基本是做不到的,只能分bank。
选标准时要先翻器件手册的IO标准支持表,确认目标bank在目标VCCO下支持哪些标准。很多新手栽在这里:原理图画完才发现某个bank不支持想要的差分标准,只能改板或者换bank,代价很大。
另外要注意参考电压VREF。HSTL、SSTL这类单端标准需要外部提供VREF,通常是VDDQ的一半。VREF的噪声直接决定接收门限的稳定性,所以VREF走线要加去耦、要远离开关噪声源。
3.3 第三步才是端接和匹配的具体计算
确定标准之后,端接计算才有意义。以LVDS为例,接收端并一个100Ω电阻是最常见的做法,但要注意这个电阻要尽量靠近接收端,否则端接点之前的走线仍会产生反射。
如果是点到多点(一个发送端驱动多个接收端)的LVDS,就不能简单并100Ω了,因为多个端接并联会拉低等效阻抗。这时候要么用菊花链加末端端接,要么用专门的差分分配器。我见过有人在一个LVDS时钟上挂了4个接收端,每个都并100Ω,结果等效25Ω,摆幅直接掉到100mV以下,完全没法用。
LVPECL的端接计算稍微复杂一点。假设VCC=3.3V,要端接到VCC-2V=1.3V,用两个电阻分压实现:上电阻R1接VCC,下电阻R2接GND,并联等效50Ω,分压得到1.3V。解方程:R1∥R2=50,R2/(R1+R2)×3.3=1.3。算下来R1≈127Ω,R2≈82Ω。这两个值就是经典的LVPECL戴维南端接参数。
3.4 一个真实的选型推演案例
假设有个场景:FPGA要驱动一颗高速ADC,采样率200MSPS,数据用DDR输出,等效数据率400Mbps,走线长度约3cm。怎么选?
第一步,400Mbps、3cm,明显是传输线范畴,必须差分端接。第二步,看FPGA bank,假设该bank VCCO可配2.5V,支持LVDS。第三步,ADC的LVDS接收端共模要求1.2V,和FPGA的LVDS输出匹配。结论:选LVDS,接收端并100Ω,走线做100Ω差分阻抗控制。
如果ADC要求的是CML呢?那就得在FPGA和ADC之间加AC耦合电容,因为CML共模和LVDS共模不一致,AC耦合可以隔离共模,让两端各自工作在舒适的共模点上。这个细节后面还会展开。
4. 端接与匹配的实操细节:从原理图到PCB的落地
4.1 AC耦合电容:什么时候必须加,加多大
AC耦合是高速接口里非常常用的手段,作用是隔离两端的共模电压,让发送端和接收端各自设定自己的共模工作点。什么时候必须加?当两端标准的共模不匹配时,比如LVDS驱动CML、CML驱动LVDS、或者两端供电域不同时。
电容值怎么选?它和走线的等效阻抗构成一个高通滤波器,截止频率 f = 1/(2πRC)。要保证信号的最低频率成分能通过。对于8b/10b编码的信号,最低频率成分大约在数据率的1/1000量级。假设数据率1Gbps,最低频率约1MHz,R=50Ω,则 C ≥ 1/(2π×1e6×50) ≈ 3.2nF。工程上常用0.1μF,留足余量。
注意:AC耦合电容要放在发送端还是接收端?一般放在发送端附近,这样电容到接收端的走线是纯差分、共模稳定的,有利于阻抗连续。电容封装用0402或0201,减小寄生电感。
4.2 差分对的PCB走线规则
差分对的走线质量直接决定眼图。几条我踩过坑之后总结的硬规则:
- 等长优先于等距。差分对内部两根线的长度差要控制在5mil以内,否则差模会转化成共模,产生EMI。等距是次要的,因为间距变化对阻抗影响相对小。
- 差分阻抗要连续。换层、过孔、连接器处阻抗最容易突变。过孔要做阻抗匹配,必要时加回流地孔。
- 远离单端信号和电源。差分对旁边如果有高速单端线,会通过容性耦合注入共模噪声。间距至少3倍线宽。
- 参考平面要完整。差分对下方的地平面不能有裂缝,否则回流路径被切断,阻抗突变。
我见过一个案例:差分对跨过了地平面的分割缝,结果眼图完全闭合。把缝补上之后立刻恢复。这个坑非常隐蔽,因为原理图上看不出任何问题。
4.3 端接电阻的布局与选型
端接电阻的位置比阻值更容易出错。LVDS的100Ω端接必须放在接收端最近处,最好紧贴接收芯片引脚。如果放在发送端,那接收端就是开路,反射照样发生。
电阻选型上,高速差分端接要用薄膜电阻,寄生电感小,温度系数好。0402封装是主流,0201用于更高速率。不要用厚膜电阻,它的寄生电感和噪声都偏大。
对于LVPECL的戴维南端接,两个分压电阻要靠近接收端,且要保证两个电阻的走线对称,否则共模会偏。我一般会把这两个电阻和去耦电容放在同一片小区域内,形成一个紧凑的端接网络。
4.4 共模偏置与失效保护
有些接收器在输入悬空时会振荡,因为差分输入没有确定的共模。这时候需要加失效保护偏置:在差分对的一端通过大电阻(如1kΩ)拉到VCC,另一端拉到GND,给一个微弱的共模偏置。这样即使发送端不工作,接收端输出也是确定的。
这个技巧在热插拔场景特别有用。板卡没插好时,接收端不会因为悬空而产生误触发。偏置电阻要大,避免影响正常信号的端接阻抗。
5. 实测中的典型故障:眼图闭合、误码与共模漂移的排查链路
5.1 眼图闭合的第一反应:先看端接,再看共模
眼图是高速接口最直观的体检报告。眼高小、眼宽窄,先别急着怀疑芯片,按这个顺序查:
- 端接电阻在不在、对不对。用万用表量接收端差分阻抗,应该是100Ω左右(断电测)。如果量出来是50Ω或200Ω,端接肯定有问题。
- 共模电压对不对。用示波器差分探头量Vocm,对照手册。偏了就先查供电和偏置。
- 走线阻抗连不连续。用TDR(时域反射)测,看有没有明显的阻抗突变点。
- 参考平面完不完整。检查差分对下方地平面有没有被分割。
这个顺序是从“最容易查”到“最难查”排的。端接和共模用万用表和示波器几分钟就能确认,走线和平面问题往往要动板子。
5.2 误码率的间歇性问题:往往是共模漂移
有一种故障特别折磨人:链路大部分时间正常,偶尔误码,重启又好。这种间歇性问题十有八九是共模漂移。原因可能是:
- 相邻高速信号通过电源或地耦合,抬高了局部共模。
- 温度变化导致器件共模输出漂移。
- 电源纹波通过输出级调制到共模上。
排查方法是长时间监测Vocm,看它是否随某个信号或温度变化。我遇到过一次,是旁边一组DDR的开关噪声通过共享电源耦合过来,把LVDS共模抬高了200mV,刚好超出接收范围。后来给LVDS的供电加了独立的LDO和去耦,问题消失。
5.3 一个完整的排查实例复盘
回到开头那个FPGA-ADC的案例,完整排查链路是这样的:
- 现象:眼图眼高80mV,误码率1e-6,远高于要求的1e-12。
- 第一步量端接:接收端100Ω正常。
- 第二步量共模:Vocm约1.2V,看似正常,但用高带宽探头细看,发现共模上有约150mV的开关噪声。
- 第三步查噪声来源:发现FPGA的3.3V bank和ADC的模拟供电共用了一段电源平面。
- 第四步验证:临时给LVDS供电飞线独立LDO,共模噪声降到30mV,眼图张开,误码率达标。
- 最终方案:改板时把LVDS供电独立出来,加π型滤波。
这个案例说明,共模噪声是高速差分链路最隐蔽的杀手。差模抗噪能力强,但共模一旦被污染,接收器直接失效。
5.4 测试测量本身的坑
测高速差分信号,探头和夹具本身就会引入误差。几个经验:
- 用差分探头,不要用两个单端探头相减,后者共模抑制比差,测出来的眼图是假的。
- 探头带宽要至少是信号带宽的3倍。1Gbps信号,基频500MHz,三次谐波1.5GHz,探头带宽至少4.5GHz。
- 焊接式探头前端比插座式好,寄生参数小。
- 测试点要靠近接收端,测发送端没意义,因为接收端才是判决的地方。
我见过有人用200MHz带宽的探头测1Gbps信号,测出来眼图一塌糊涂,然后拼命改板,其实问题在探头。先确认测量系统本身可信,再怀疑设计。
6. 进阶话题:从电平标准到SerDes均衡的演进逻辑
6.1 为什么高速SerDes不再“裸奔”电平标准
当速率上到5Gbps、10Gbps以上,信道损耗变得不可忽略。FR4在5GHz处的损耗可能达到1dB/inch,走10英寸就是10dB,信号到达接收端时高频成分被严重衰减,眼图完全闭合。这时候光靠电平标准已经救不了了,必须引入均衡。
均衡的本质是:发送端预加重(Pre-emphasis)提升高频,接收端均衡(CTLE/DFE)补偿信道损耗。这时候电平标准退化成“物理层电气接口”,真正决定链路能否工作的是均衡算法和信道特性。CML之所以在SerDes里通用,就是因为它摆幅适中、端接简单、适合做电流型驱动,方便叠加预加重。
6.2 电平标准与协议层的关系
很多人把电平标准和协议混为一谈。其实电平标准只定义物理层的电气特性,协议层(如8b/10b编码、时钟恢复、链路训练)是另一回事。同一个电平标准可以承载不同协议,比如LVDS可以传自定义数据,也可以传Camera Link;CML可以传以太网,也可以传PCIe。
理解这个分层很重要:电平标准解决“电信号能不能被正确识别”,协议解决“数据怎么组织、怎么纠错、怎么同步”。调链路时先确认物理层眼图OK,再去查协议层,否则会在错误的方向上浪费时间。
6.3 未来趋势:更低摆幅、更高密度
从趋势看,电平标准在往两个方向走:摆幅越来越低(降低功耗和边沿时间),通道密度越来越高(更多差分对挤在更小面积里)。这对PCB设计提出更高要求:更严格的阻抗控制、更低的串扰、更好的电源完整性。
一个具体的挑战是串扰。当差分对间距缩小,相邻对之间的耦合增强,远端串扰(FEXT)会直接恶化眼图。对策包括:增加对间间距、使用带状线(上下都有参考平面)、在敏感对之间加地线隔离。这些手段都要在布板早期规划,后期补救代价很大。
6.4 给不同阶段工程师的建议
如果你刚入门,建议先把LVDS吃透:它的参数清晰、应用广泛、端接简单,是最好的学习样本。把LVDS的眼图调好,再去看LVPECL和CML,会发现很多概念是相通的。
如果你已经做过几版板子,建议深入研究共模和电源完整性。高速链路的很多疑难杂症,根子都在共模和电源上,而不是差分信号本身。学会用差分探头看共模、用TDR看阻抗、用频谱看噪声来源,这三样技能能解决大部分问题。
如果你在做SerDes,建议把信道建模和均衡作为重点。电平标准只是起点,信道才是决定性的。学会用S参数看信道、用IBIS-AMI做仿真,能大幅减少试错成本。
最后分享一个我自己的小习惯:每次画高速差分对之前,先在纸上把发送端标准、接收端标准、共模、端接方式、是否AC耦合这五项写清楚,确认无误再动手。这五分钟的纸面推演,帮我省下了无数次改板。高速接口电平标准这件事,说到底就是把这些电气约定一个个对齐,对齐了,链路自然就通了。