1. 高速接口电平标准的前世今生
1.1 为什么电平标准是高速设计的命门
做硬件设计十几年,我越来越觉得高速接口电平标准这东西,就像武侠小说里的内功心法——招式(协议层)再花哨,内功(物理层电平)不到家,一掌推出去照样软绵绵。很多刚入行的朋友一上来就盯着协议规范看,什么链路训练、均衡算法、前向纠错,结果板子打回来一测眼图,眼睛闭得比熬夜加班还快。问题出在哪?十有八九是电平标准没吃透。
所谓高速接口电平标准,说白了就是芯片管脚之间用什么电压范围来区分“0”和“1”,以及收发两端怎么在电气层面达成默契。它规定了输出端的驱动能力、输入端的判决门限、共模电压范围、端接方式、差分摆幅等一系列电气参数。你可能会问,不就是高低电平吗,TTL和CMOS那套我熟啊。但速率一旦上了吉赫兹,事情就完全变了——传输线效应、反射、串扰、抖动、损耗全冒出来了,电平标准必须跟着进化,否则信号还没到接收端就已经面目全非。
我见过太多项目在选型阶段忽略电平标准的兼容性,比如把LVDS的输出直接怼到CML的输入端,结果共模电压对不上,接收端要么完全没反应,要么误码率飙到没法看。也见过有人用普通FR4板材跑十几Gbps的差分信号,电平标准选的是低摆幅的,结果损耗大到眼图完全闭合。这些坑,说到底都是对电平标准的理解停留在“电压高低”层面,没有深入到电气规范的细节里。
这篇文章我打算把高速接口电平标准这件事掰开揉碎讲清楚。从最基础的CMOS、LVTTL,到差分体系里的LVDS、CML、LVPECL,再到如今高速串行链路里常见的SSTL、HSTL、POD,以及SerDes常用的可编程摆幅架构,我会把每种标准的电气特性、适用场景、端接方式、互连注意事项都过一遍。不管你是刚接触硬件设计的新手,还是已经做过几个高速项目但总觉得信号质量差口气的老手,应该都能从里面找到对自己有用的东西。
1.2 从单端到差分:电平标准演进的底层逻辑
要理解电平标准为什么有这么多花样,得先回到信号传输的基本矛盾上。单端信号用一根线对地传输,接收端比较的是信号线和参考地之间的电压差。这种方式简单、省管脚,但致命弱点是抗干扰能力差——任何串到信号线上的噪声、任何地平面上的波动,都会直接叠加到判决结果上。速率低的时候无所谓,几十兆赫兹以下,噪声容限足够大,TTL和CMOS就能应付。但速率一高,噪声容限被压缩,单端信号就力不从心了。
差分信号用两根线传输一对极性相反的信号,接收端比较的是两根线之间的电压差。外部耦合的共模噪声在两根线上几乎相同,相减之后就被抵消掉了。而且差分信号的摆幅可以做得很低,因为接收端只需要检测两根线之间的微小差异,不需要像单端那样把信号摆到满电源轨。摆幅低意味着边沿爬升快、功耗低、电磁辐射小。这就是为什么高速接口几乎清一色采用差分电平标准。
但差分也不是万能的。差分对的两根线必须严格等长、等距、对称,否则差分信号会转换成共模信号,反而制造麻烦。差分对的端接电阻必须精确匹配差分阻抗,否则反射照样发生。而且差分标准之间也不是随便互连的,LVDS和CML的共模电压范围、摆幅、端接方式都不一样,直接对接往往需要交流耦合或者电平转换。
再往深了说,电平标准的演进还跟半导体工艺的进步紧密相关。早期CMOS工艺只能做3.3V、5V的器件,电平标准自然就是LVTTL、LVCMOS这些。后来工艺进步到1.8V、1.2V甚至更低,核心电压降下来了,但接口电压还得兼容旧标准,于是出现了SSTL、HSTL、POD这些专门为存储器接口设计的电平标准,它们的特点是参考电压和端接电压可以独立设置,方便在低电压下实现高速传输。
2. 主流高速接口电平标准深度拆解
2.1 单端标准:LVTTL、LVCMOS与SSTL的适用边界
LVTTL和LVCMOS是大家最熟悉的老朋友了。LVTTL的输入高电平门限一般是2.0V,输入低电平门限是0.8V,输出高电平在2.4V以上,输出低电平在0.4V以下,供电3.3V。LVCMOS的门限跟供电电压成比例,比如3.3V供电时门限大约是供电的一半。这两种标准速率一般不超过200MHz,再高就力不从心了。它们的优点是简单、便宜、兼容性好,适合低速控制信号、复位信号、中断信号这些场合。
但到了DDR存储器接口,SSTL就登场了。SSTL的全称是Stub Series Terminated Logic,翻译过来就是“短截线串联端接逻辑”。它的核心特点是接收端有一个参考电压VREF,通常是供电电压的一半,输入信号跟VREF比较来判决。输出端通过一个串联电阻连接到端接电压VTT,VTT也等于供电电压的一半。这种端接方式的好处是阻抗匹配好,反射小,适合DDR这种多负载、总线式的拓扑。
SSTL有很多变种,SSTL-2、SSTL-3、SSTL-15、SSTL-135等等,数字代表供电电压。比如SSTL-15就是1.5V供电,对应DDR3;SSTL-135是1.35V供电,对应DDR3L;SSTL-12是1.2V供电,对应DDR4。每一代的VREF、VTT、摆幅、端接电阻都有细微差别,设计的时候必须严格按照对应的JEDEC标准来,不能想当然。
HSTL跟SSTL类似,也是参考电压判决、端接电压匹配的结构,但主要面向高速SRAM和某些专用接口。HSTL的摆幅比SSTL更小,速率更高,但驱动能力相对弱一些。POD是后来出现的,全称是Pseudo Open Drain,伪开漏。它的特点是输出高电平时不需要驱动电流,只有输出低电平时才拉电流,所以功耗比SSTL低。POD主要用于DDR4和DDR5的数据接口。
这里要特别提醒一点:SSTL和POD的VREF不是随便设的,必须跟供电电压严格对应,而且VREF的噪声要控制得非常低。我见过一个项目,VREF直接用电阻分压从电源上取,结果电源上的纹波全部耦合到VREF上,DDR误码率居高不下。后来改用专用的VREF芯片,问题才解决。VREF的旁路电容也要足够大,而且要靠近接收端放置。
2.2 差分标准:LVDS、CML、LVPECL的电气特性对比
差分标准里,LVDS应该是大家最熟悉的。LVDS的全称是Low Voltage Differential Signaling,低电压差分信号。它的差分摆幅典型值是350mV,共模电压典型值是1.2V,接收端内部有一个100欧姆的差分端接电阻。LVDS的速率可以跑到几百Mbps到几个Gbps,功耗低,抗干扰好,适合中短距离的板内和板间传输。
CML是Current Mode Logic,电流模式逻辑。它的输出级是一个差分对,通过电流舵来控制输出。CML的摆幅典型值是400mV到800mV,共模电压一般是供电电压减去一个压降,比如1.8V供电时共模可能在1.2V左右。CML的速率可以跑到十几Gbps甚至更高,是SerDes接口的标配。CML的端接方式通常是接收端对供电做50欧姆端接,或者差分端接100欧姆。
LVPECL是Low Voltage Positive Emitter Coupled Logic,低电压正射极耦合逻辑。它的输出级是射极跟随器,需要外部下拉电阻来提供偏置电流。LVPECL的摆幅比LVDS大,典型值是800mV左右,共模电压一般是供电电压减去1.3V左右。LVPECL的速率也很高,但功耗比CML大,而且端接方式比较麻烦,需要戴维南等效端接或者交流耦合。
这三种标准之间互连的时候要特别小心。LVDS到CML,如果共模电压不匹配,可能需要交流耦合。CML到LVPECL,因为LVPECL的共模电压比较高,直接直流耦合可能会让CML接收端饱和,也需要交流耦合或者电平转换。LVDS到LVPECL,同样存在共模和摆幅的差异,交流耦合是最稳妥的方案。
我个人的经验是,板内短距离互连优先用LVDS,因为它的摆幅适中、功耗低、端接简单。芯片间高速互连用CML,因为它的速率上限高、驱动能力强。LVPECL现在用得越来越少了,主要是一些老式光模块和时钟分配网络还在用。如果非要用LVPECL,一定要仔细计算端接电阻的值,确保射极跟随器的偏置电流在合适范围内。
2.3 SerDes时代的可编程电平架构
到了SerDes时代,电平标准的概念变得模糊了。因为SerDes的发送端和接收端都是可编程的,摆幅、共模、预加重、均衡都可以通过寄存器配置。你不再需要选择一个固定的电平标准,而是根据信道特性来优化发送端的输出波形和接收端的均衡参数。
SerDes发送端通常采用电压模式驱动或者电流模式驱动。电压模式驱动的输出阻抗低,摆幅由供电电压和分压网络决定。电流模式驱动的输出阻抗高,摆幅由电流和端接电阻决定。两种模式各有优劣,电压模式功耗低但驱动能力弱,电流模式驱动能力强但功耗高。
接收端通常包含连续时间线性均衡器、判决反馈均衡器、时钟数据恢复电路。CTLE用来补偿信道的低频损耗,DFE用来消除码间干扰,CDR用来从数据里恢复时钟。这些模块的参数都需要根据信道实测的S参数来调优。
SerDes的电平优化是一个迭代过程。先用仿真工具提取信道的插入损耗和回波损耗,然后根据损耗曲线设置CTLE的零极点位置和DFE的抽头系数。仿真通过之后,再在实测中微调。实测的时候要用误码仪或者示波器看眼图,眼高和眼宽都要留足够的余量。温度、电压、工艺角的变化也要考虑进去,最好在最坏情况下都能满足误码率要求。
3. 电平标准选型与互连的实操要点
3.1 选型决策树:从速率、距离、功耗三个维度切入
选电平标准,我一般从三个维度来考虑:速率、距离、功耗。速率决定了你能不能用电平标准本身,距离决定了你要不要用差分,功耗决定了你能不能用低摆幅。
速率方面,单端标准里LVTTL和LVCMOS一般不超过200Mbps,SSTL和HSTL可以到1Gbps以上,POD可以到3Gbps以上。差分标准里LVDS可以到3Gbps左右,CML可以到10Gbps以上,SerDes可以到56Gbps甚至112Gbps。如果你的速率超过5Gbps,基本上只能选CML或者SerDes。
距离方面,板内几厘米的互连,单端和差分都可以。板间几十厘米的互连,建议用差分。电缆或者背板上米的互连,必须用差分,而且要考虑均衡。距离越长,信道损耗越大,需要的均衡越复杂。
功耗方面,单端标准的功耗一般比差分高,因为摆幅大。差分标准里,LVDS的功耗最低,CML中等,LVPECL最高。SerDes的功耗跟速率和均衡复杂度相关,速率越高、均衡越复杂,功耗越大。
我一般会画一个简单的决策树:先看速率,超过5Gbps直接进SerDes;5Gbps以下看距离,超过30厘米进差分;30厘米以内看功耗,功耗敏感进LVDS,不敏感进SSTL或者POD。当然这只是一个粗略的指引,实际选型还要考虑芯片支持情况、成本、供货周期等因素。
3.2 端接方案设计:电阻选型与布局的细节
端接是高速接口设计里最容易出问题的地方。端接电阻的值、精度、布局位置都会影响信号质量。
LVDS的端接最简单,接收端差分端接一个100欧姆电阻就行。这个电阻要靠近接收端放置,走线要短,最好直接跨接在差分对上。电阻的精度建议用1%的,温度系数要小。如果差分阻抗不是100欧姆,端接电阻的值要跟着调整,比如差分阻抗是90欧姆,端接电阻就用90欧姆。
CML的端接稍微复杂一点。如果接收端是CML输入,通常内部已经有50欧姆对供电的端接,外部不需要再加。如果接收端是其他标准,可能需要外部端接。CML的输出端一般需要50欧姆对供电的端接,或者差分100欧姆端接。端接电压要跟CML的共模电压匹配,否则会影响输出摆幅。
LVPECL的端接最麻烦。因为LVPECL的输出是射极跟随器,需要外部下拉电阻来提供偏置电流。常见的端接方式有两种:戴维南端接和Y型端接。戴维南端接是用两个电阻分压,一个接供电,一个接地,等效出一个端接电压和端接电阻。Y型端接是用三个电阻,两个分别接供电和地,一个跨接在差分对之间。两种方式各有优劣,戴维南端接简单但功耗大,Y型端接功耗小但计算复杂。
SSTL和POD的端接是串联电阻到VTT。VTT的电压等于VREF,通常是供电的一半。端接电阻的值要跟传输线阻抗匹配,一般是50欧姆。VTT的电源要能吸收和灌出电流,所以不能用普通的LDO,要用专用的VTT稳压器或者大电容旁路。
注意:端接电阻的布局比选值更重要。我见过一个项目,端接电阻的值算得完全正确,但放在离接收端两厘米远的地方,结果反射照样严重。端接电阻必须尽可能靠近接收端,走线长度控制在几毫米以内。
3.3 互连与耦合:交流耦合电容的选取与放置
不同电平标准之间互连,交流耦合是最常用的手段。交流耦合电容隔断了直流共模电压,只让交流信号通过,接收端自己重新建立共模偏置。
交流耦合电容的值怎么选?这取决于信号的频率成分和接收端的输入阻抗。电容和接收端的输入阻抗构成一个高通滤波器,截止频率要低于信号的最低频率成分。对于8b/10b编码的信号,最低频率成分大约是速率的1/20。比如10Gbps的信号,最低频率成分大约是500MHz,截止频率要低于500MHz。如果接收端输入阻抗是50欧姆,电容值至少要是1/(2pi500MHz*50)≈6.4pF。实际选的时候要留余量,一般用10nF到100nF。
交流耦合电容的放置位置也有讲究。一般放在发送端附近,这样电容之前的走线是直流耦合的,电容之后的走线是交流耦合的。如果放在接收端附近,电容之前的走线是交流耦合的,可能会因为共模电压不匹配导致问题。电容的封装要小,0402或者0201最好,寄生电感小。电容的耐压要足够,虽然高速信号摆幅不大,但上电瞬间可能会有浪涌。
提示:交流耦合电容的焊盘要尽量小,焊盘越大寄生电容越大,对信号的高频成分影响越大。如果速率超过10Gbps,建议用0201封装的电容,并且把焊盘优化到最小。
4. 常见问题与排查技巧实录
4.1 眼图闭合:从电平标准角度找原因
眼图闭合是高速接口最常见的问题。眼图闭合的原因很多,从电平标准角度来找,主要有这么几个方向。
第一是摆幅不够。发送端的输出摆幅低于接收端的灵敏度要求,眼高自然不够。这时候要检查发送端的驱动配置,看看摆幅设置是不是太小了。有些SerDes的摆幅是可编程的,默认值可能偏小,需要根据信道损耗来调大。
第二是共模电压不匹配。发送端的共模电压超出了接收端的输入共模范围,接收端的输入差分对可能进入非线性区,眼图会严重变形。这时候要检查两端的共模电压规格,如果不匹配,要么调整发送端的共模,要么加交流耦合。
第三是端接不匹配。端接电阻的值跟传输线阻抗不匹配,反射会导致眼图出现振铃或者台阶。这时候要用TDR测量传输线阻抗,然后调整端接电阻的值。端接电阻的布局也要检查,看看是不是离接收端太远。
第四是VREF噪声。SSTL和POD接口的VREF如果噪声太大,判决门限就会抖动,眼图会横向和纵向都闭合。这时候要用示波器测量VREF的纹波,如果纹波超过几毫伏,就要加强旁路或者换用低噪声的VREF源。
我一般排查眼图问题的顺序是:先看摆幅,再看共模,再看端接,最后看VREF。这个顺序是从简单到复杂,从发送端到接收端,能快速定位大部分问题。
4.2 误码率偏高:电平标准相关的排查清单
误码率偏高但眼图看起来还行,这种情况往往更棘手。从电平标准角度,我整理了一个排查清单。
| 排查项 | 可能原因 | 检查方法 | 解决措施 |
|---|---|---|---|
| 摆幅余量 | 发送摆幅偏小或信道损耗过大 | 测量接收端眼高 | 增大发送摆幅或加均衡 |
| 共模偏移 | 两端共模电压不匹配 | 测量接收端共模电压 | 调整共模或加交流耦合 |
| 端接误差 | 端接电阻值偏差或布局不当 | TDR测量阻抗 | 更换电阻或调整布局 |
| 参考电压噪声 | VREF纹波过大 | 示波器测量VREF | 加强旁路或换VREF源 |
| 电源噪声 | 供电纹波耦合到信号 | 测量电源纹波 | 加强电源滤波 |
| 串扰 | 相邻信号耦合 | 测量受害线噪声 | 增加间距或加屏蔽 |
| 抖动 | 时钟质量差或电源噪声 | 测量抖动成分 | 优化时钟或电源 |
这个清单我用了很多年,基本上能覆盖八成以上的误码率问题。剩下的两成可能是芯片本身的问题、信道模型不准确、或者测试方法有误,需要更深入的调试。
注意:误码率测试一定要跑足够长的时间。我见过有人跑了几秒钟没误码就认为通过了,结果批量生产的时候误码率超标。误码率10的负12次方意味着每10的12次方个比特才错一个,跑几秒钟根本说明不了问题。至少要跑几分钟到几小时,最好能跑24小时。
4.3 互连兼容性:不同标准对接的避坑指南
不同电平标准对接,最容易出的问题是共模电压不匹配和摆幅不匹配。我整理了一个对接兼容性表格,供大家参考。
| 发送端 | 接收端 | 直流耦合 | 交流耦合 | 备注 |
|---|---|---|---|---|
| LVDS | LVDS | 可以 | 可以 | 共模和摆幅都匹配 |
| LVDS | CML | 不建议 | 推荐 | 共模电压不同 |
| LVDS | LVPECL | 不建议 | 推荐 | 共模和摆幅都不同 |
| CML | CML | 可以 | 可以 | 共模和摆幅都匹配 |
| CML | LVDS | 不建议 | 推荐 | 摆幅可能过大 |
| CML | LVPECL | 不建议 | 推荐 | 共模电压不同 |
| LVPECL | LVPECL | 可以 | 可以 | 需要正确端接 |
| LVPECL | CML | 不建议 | 推荐 | 共模电压不同 |
| LVPECL | LVDS | 不建议 | 推荐 | 摆幅可能过大 |
| SSTL | SSTL | 可以 | 不适用 | 需要VREF和VTT |
| POD | POD | 可以 | 不适用 | 需要VREF和VTT |
从表格可以看出,同种标准之间直流耦合一般没问题,不同标准之间最好用交流耦合。交流耦合虽然多加了电容,但省去了共模匹配的麻烦,而且电容还能起到隔直保护的作用。
还有一个坑是摆幅过大导致接收端饱和。比如CML发送端摆幅800mV,LVDS接收端灵敏度虽然够,但输入级可能因为摆幅过大而进入非线性区,反而导致误码。这时候可以在接收端加衰减网络,或者把发送端摆幅调小。
4.4 实测案例:一个DDR4接口的调试记录
去年我参与了一个DDR4接口的调试项目,速率3200Mbps,电平标准是POD12。板子回来之后,写操作正常,读操作误码率很高。用示波器看读数据的眼图,眼高只有几十毫伏,眼宽也很窄。
我先检查了VREF。POD12的VREF应该是0.6V,实测是0.6V没错,但纹波有30mV,明显偏大。VREF的旁路电容是0.1uF,我换成了1uF并联0.01uF,纹波降到5mV以内。眼图有所改善,但误码率还是偏高。
接着检查端接。POD12的端接是串联40欧姆到VTT,VTT是0.6V。我测量了端接电阻的值,发现实际是39欧姆,偏差不大。但端接电阻的布局离DRAM颗粒有点远,大概有5毫米。我把端接电阻移到靠近DRAM颗粒的位置,走线缩短到1毫米以内。眼图明显改善,眼高增加到150mV。
最后检查了走线阻抗。用TDR测量,发现差分阻抗是85欧姆,而不是设计的80欧姆。虽然偏差不大,但在3200Mbps的速率下,5欧姆的偏差也会导致明显的反射。我调整了走线宽度,把差分阻抗拉到80欧姆。眼图进一步改善,误码率终于达标。
这个案例告诉我,高速接口调试是一个系统工程,VREF、端接、阻抗、布局,任何一个环节出问题都会影响最终性能。而且这些问题往往不是孤立的,VREF噪声会放大端接不匹配的影响,端接不匹配又会放大阻抗偏差的影响。调试的时候要有耐心,一个一个排除,不要指望一步到位。
5. 高速接口电平标准的未来走向
5.1 更低摆幅与更高集成度的趋势
随着速率继续提升,电平标准的摆幅还在往下降。SerDes的发送摆幅已经从早期的800mV降到现在的400mV甚至更低,接收端的灵敏度也相应提高。低摆幅的好处是功耗低、边沿快、辐射小,但对噪声和串扰的容忍度也更低。
集成度方面,越来越多的电平转换和端接功能被集成到芯片内部。比如很多FPGA的IO Bank支持多种电平标准,通过配置寄存器就能切换,不需要外部电平转换芯片。SerDes的发送端和接收端也集成了可编程的均衡和端接,简化了板级设计。
但集成度高也带来了新的问题:芯片内部的端接电阻精度可能不如分立电阻,而且芯片内部的电源噪声可能耦合到端接网络上。所以即使芯片内部有端接,外部有时候还是需要加一些辅助电路来优化信号质量。
5.2 光电共封装对电平标准的冲击
光电共封装是最近几年比较热的话题。它把光引擎和电芯片封装在一起,电信号不用出封装就能转换成光信号,大大缩短了电信号的传输距离。这对电平标准的影响是深远的。
传统的可插拔光模块,电接口要经过连接器、PCB走线、金手指等多个环节,信道损耗大,需要复杂的均衡。光电共封装之后,电接口的距离缩短到几毫米,信道损耗几乎可以忽略,均衡可以大大简化,甚至不需要均衡。这意味着电平标准可以进一步简化,摆幅可以进一步降低,功耗和延迟都能改善。
但光电共封装也带来了新的挑战:封装内的散热、光纤的耦合、测试的便利性等等。这些挑战不是电平标准本身能解决的,需要封装、光器件、测试等多个领域协同进步。
5.3 对硬件工程师的新要求
高速接口电平标准的发展,对硬件工程师提出了更高的要求。以前画个原理图、连个网表、做个PCB布局就算完事,现在不行了。你得懂传输线理论,得会看S参数,得能做通道仿真,得会调均衡参数。电平标准不再是一个简单的选型问题,而是一个需要综合权衡的系统工程。
我个人的建议是,硬件工程师要尽早建立“信号完整性”的思维框架。不要等到板子回来才发现问题,要在设计阶段就用仿真工具把风险识别出来。仿真工具不需要多高级,ADS、HyperLynx、SiWave这些都能用。关键是要理解仿真结果背后的物理意义,知道哪个参数影响哪个指标,这样才能在调试的时候有的放矢。
另外,多跟芯片厂商的FAE沟通也很重要。他们对自家芯片的电平标准最熟悉,知道哪些配置是推荐的,哪些是坑。我很多调试技巧都是从FAE那里学来的,比自己闷头摸索效率高多了。
最后再分享一个小技巧:如果你不确定某个电平标准能不能直接对接,最稳妥的办法是先用交流耦合试一下。交流耦合虽然多两个电容,但能隔断共模电压的差异,让接收端自己建立偏置。如果交流耦合能通,再考虑要不要改成直流耦合来省成本。如果交流耦合都不通,那说明问题不在共模电压上,得从摆幅、端接、阻抗这些方面继续排查。这个技巧帮我省了很多调试时间,希望对你有用。