☰
高速互连必会:LVDS、CML、LVPECL、HCSL四种差分电平详解
2026/10/8 2:50:08 网站建设 项目流程

1. 为什么高速互连绕不开这四种差分电平

做硬件设计这些年,有一个感受越来越深:凡是速率上到几百Mbps甚至Gbps级别的信号,几乎没有谁还在用单端传输。单端信号受地弹、串扰、共模噪声的影响太明显,到了高速场景基本寸步难行。而差分信号天生有两个优势:抗共模干扰能力强,因为接收端只认两根线的差值;电磁辐射也小,因为两根线上的电流方向相反,磁场相互抵消。所以从PCIE、USB、SATA到以太网、FPGA的高速串行接口,内部清一色都是差分结构。

但差分只是一个大的框架,真正落地到具体电路时,电平标准五花八门。LVDS、CML、LVPECL、HCSL这四种,可以说是当前高速互连里出场率最高的几个。LVDS在FPGA、ADC/DAC、液晶屏接口里到处都是;CML常见于SerDes、光模块、高速背板;LVPECL经常出现在时钟分配、高速比较器输出;HCSL则是PCIe时钟的首选。

很多工程师第一次接触这几个词时,第一反应是去看数据手册里的电压参数表,然后被一堆VOH、VOL、VOD、VICM搞得头晕。其实换个角度理解会轻松很多:这四种电平的差异,本质上就是三件事——输出管脚怎么接、电压摆幅多大、共模电平定在哪。搞清楚这三件事,互连设计里至少八成的坑都能提前避开。

从我自己的经验看,真正让人头疼的不是选哪一种电平,而是两种不同电平的芯片需要互连时怎么处理。LVDS输出接CML输入,LVPECL输出接LVDS输入,这些场景在混合信号系统里太常见了。直接连?大概率工作不正常。不连?改设计又伤筋动骨。所以这篇文章不是把四种电平的参数抄一遍,而是想从互连的角度,把每一种电平的电路结构、直流匹配、交流耦合、端接方式讲透,顺便把我踩过的坑和经验一起放进去。

2. 先把四种差分电平的“性格”摸清楚

2.1 LVDS:低摆幅、低功耗、好脾气

LVDS的全称是Low Voltage Differential Signaling,低压差分信号。它最核心的特点是输出电流源驱动,典型摆幅只有350mV左右,共模电平大概1.2V。摆幅低意味着功耗低、转折速率快,而且对EMI很友好。

它的输出级电路本质上是一个恒流源,电流在3.5mA左右,通过外部100Ω电阻产生350mV的压差。这个100Ω电阻必须跨接在接收端差分对的正负端之间,用来提供电流回路和建立差分电压。需要注意,LVDS的输出端不能直接接一个低阻抗负载到地,因为输出级是靠恒流源加外部电阻来工作的。

LVDS的接收端输入阻抗很高,所以端接电阻就是那一个100Ω,放在离接收芯片尽量近的地方。很多新手会把电阻放在连接器旁边,结果高速信号反射严重,眼图质量变差。端接电阻的位置,一定是靠近接收引脚,而不是靠近连接器。

2.2 LVPECL:摆幅大、速度快、功耗也大

LVPECL是低压正发射极耦合逻辑,源自ECL家族,只是把电源电压降到了3.3V或2.5V。它的输出级是一个射极跟随器结构,所以输出阻抗很低,驱动能力强,上升沿非常陡,适合高频时钟分配。

LVPECL的输出摆幅很大,差分摆幅典型值在800mV到1.6V之间,共模电平大约VCC-1.3V。比如3.3V供电时,共模约2.0V。这个电平特性意味着它不能直接和LVDS/CML互连,直流电平差太多了。

LVPECL输出是开路发射极,必须提供直流回路,通常用电阻分压网络或者Thevenin等效电阻来建立合适的直流工作点。很多人在这里栽跟头:以为LVPECL可以直接接传输线到负载,结果输出管根本没法正常工作,因为发射极电流没有回流路径。

LVPECL最大的缺点是功耗高,而且对电源噪声敏感。它输出的共模电平受VCC影响很大,如果电源纹波大,时钟抖动会明显恶化。所以在LVPECL电路里,电源去耦做不好,后面一切都是白搭。

2.3 CML:电流模式逻辑,SerDes的常客

CML的英文是Current Mode Logic,电流模式逻辑。它的输出级由一个上拉电阻和一个开关电流源组成,电流通常16mA,在50Ω上产生800mV的摆幅。它的共模电平取决于上拉电阻另一端接的电源,常见的是VCC或者VCC-0.2V之类。

CML的输出匹配是内部集成的,很多CML芯片的输出已经把50Ω上拉做到片内了,所以外部只需要在接收端再放一个50Ω到合适的共模电平,或者直接交流耦合后靠内部偏置工作。这使得CML互连相对简单,尤其是SerDes通道,基本都是CML标准。

CML的摆幅比LVDS大,比LVPECL小,速度上限非常高,目前几百Gbps的SerDes内部依然在用CML的变体。它的功耗介于LVDS和LVPECL之间,但因为是电流开关,开关噪声相对可控。

2.4 HCSL:PCIe时钟的“标准答案”

HCSL全称High-Speed Current Steering Logic,高速电流引导逻辑。它和CML有点像,也是电流模式,但它的输出结构是差分电流开关,电流典型值15mA,通过外部50Ω到地建立差分电压,摆幅约700mV到900mV。

HCSL最大的特点是没有内部偏置,输出必须靠外部端接提供直流回路。常见做法是每根线对地接一个50Ω电阻,这样差分阻抗是100Ω,同时每根线的单端阻抗也匹配50Ω。很多PCIe时钟缓冲器就是HCSL输出,所以你在PCIe时钟电路里会看到一堆电阻网络。

HCSL的共模电平大约在0.35V到0.6V之间,相对较低。这个低共模特性要求接收端必须能够接收这种接近地的信号,否则需要隔直电容加偏置。

3. 互连设计前必须搞懂的三个核心概念

3.1 共模电平:互连失败的“第一嫌疑人”

很多互连问题到最后发现都是共模电平不匹配。共模电平是差分对两根线电压的平均值。接收端对输入信号有一个允许的共模范围,如果发送端的共模电平不在这个范围内,即使差分摆幅正常,接收端也可能无法正确识别。

举个例子,LVDS接收端的输入共模范围通常在0.1V到2.4V之间,看起来挺宽,但LVPECL的共模在2V左右,直接耦合时可能超出某些窄共模接收器的范围。CML接收端的共模范围更窄,尤其是一些高速CML接收器,要求共模在特定偏置点附近。

解决共模不匹配最常用的方法是交流耦合。串一个隔直电容后,发送端的直流共模就被切断了,接收端需要自己建立合适的直流工作点。这时候接收端必须提供内部偏置,或者外部加偏置电阻网络。所以,交流耦合不是万能的,前提是接收端有内部偏置,否则还是得自己做直流偏置。

3.2 端接电阻:信号完整性的一半江山

差分信号的端接原则很简单:阻抗匹配。传输线的差分阻抗通常是100Ω,所以接收端需要跨接一个100Ω电阻来吸收信号能量,避免反射。但具体怎么接,四种电平各有讲究。

LVDS是纯外部端接,接收端跨接100Ω即可。CML通常内部已有50Ω上拉,外部如果交流耦合,接收端往往内部已有偏置电阻,不需要额外端接,或者根据数据手册加一个到地的电阻。LVPECL因为输出需要直流回路,端接网络要兼顾阻抗匹配和直流偏置,常用Thevenin等效。HCSL则是每根线对地50Ω。

很多人会问:为什么HCSL不直接用100Ω差分电阻跨接?因为HCSL的输出级是电流开关,电流需要分别从两根线流到地,如果只在两根线之间接100Ω,电流没有到地的路径,输出共模无法建立。所以HCSL必须每根线对地接50Ω,这样差分阻抗依然是100Ω(两个50Ω串联),同时每根线也有直流到地。

3.3 交流耦合vs直流耦合:不是想选哪个选哪个

直流耦合的优点是简单,不需要隔直电容,低频分量可以完整传输。缺点是必须保证发送端和接收端的共模电平兼容,而且对地电平差敏感。

交流耦合的优点是允许发送和接收各自有不同的共模电平,只要保证交流信号的幅值和摆率满足要求。缺点是需要加电容,占用PCB面积,而且会影响低频分量,如果信号中有低频成分或者DC平衡不好,可能会造成基线漂移。

在高速串行信号里,几乎全部采用交流耦合,因为SerDes IP内部已经处理了直流偏置,而且编码方式(比如8b/10b)保证了DC平衡。但在时钟分配、低速同步信号里,直流耦合依然常见,因为时钟是周期性信号,交流耦合时占空比会受到电容充放电影响,如果电容选不好,占空比失真会很严重。

4. LVDS互连:从原理到PCB布局的完整实操

4.1 LVDS驱动端和接收端的标准接法

LVDS的标准点对点连接很简单:驱动端输出通过一对差分走线连接到接收端,接收端跨接100Ω电阻。

驱动端通常是恒流源输出,外部不需要端接电阻。但这里有个细节:很多LVDS驱动器内部已经集成了部分端接或源端匹配,比如某些FPGA的LVDS输出引脚内部有可编程的驱动强度,可以调整摆幅。如果没有特殊需求,一般默认3.5mA电流、100Ω负载。

接收端必须跨接100Ω电阻吗?严格来说,如果接收器内部已经集成了100Ω端接(有些高速LVDS接收器有),外部可以不加。但大多数通用LVDS接收器没有内部端接,所以外部必须加。我之前用某款ADC时,数据手册说输入内部有100Ω端接,我就没加外部电阻,实测也正常。但如果你不确定,老老实实加外部端接,多一个电阻不会坏事。

4.2 LVDS到CML的互连转换

FPGA的LVDS输出接到CML输入的SerDes芯片,这是很常见的场景。这时候需要评估两点:共模电平和摆幅。

LVDS摆幅约350mV,CML接收灵敏度通常足够,所以摆幅不是问题。共模上,LVDS共模约1.2V,CML接收端的内部偏置如果也是VCC-0.2V级别(比如3.3V供电时3.1V),1.2V直接接进去会超出输入范围。解决办法是交流耦合。

交流耦合后,接收端的偏置由CML芯片内部提供,这时候只需要在接收端按CML要求处理。通常CML接收端内部有50Ω上拉到VCC,并且有内部偏置,外部不需要额外端接。但有些CML接收器要求外部提供50Ω到地的端接,以配合内部上拉形成分压偏置。这个必须看数据手册的“Input Termination”章节。

我的经验是,LVDS到CML优先选用交流耦合,电容选0.1uF或0.01uF,根据信号速率和低频分量决定。对于8b/10b编码的串行数据,0.1uF足够,因为最低频率分量是码流中连续相同位的长度决定的,实际不会太低。如果信号有低频分量且脉宽很宽,就需要增大电容,比如1uF甚至10uF。

4.3 LVDS到LVPECL:最折腾的组合

LVDS驱动LVPECL接收,这组互连我踩过不少坑。LVPECL接收端通常是高阻抗输入,但它的共模要求很高,需要偏置到VCC-1.3V左右。LVDS共模只有1.2V,所以必须交流耦合,然后在LVPECL输入端提供直流偏置。

具体做法:交流耦合后,在接收端用电阻分压产生大约VCC-1.3V的偏置电压,通过电感或者大电阻接到输入端。但不建议直接用电阻分压驱动低阻抗,因为LVPECL输入端可能需要吸收基极电流。更稳妥的方案是使用专用的电平转换芯片,比如ON Semi的NB系列、TI的LVDS转LVPECL缓冲器。自己搭分立电阻网络虽然能工作,但温度漂移和电源变化会影响偏置点,可靠性不高。

如果你非要自己搭,可以采用Thevenin等效偏置。比如3.3V供电,需要偏置2V,可以用两个电阻分压,然后接一个0.1uF电容到地用于滤除噪声。但注意,这种偏置网络会消耗额外的电流,而且对电源纹波敏感,建议在偏置节点加一个小电容旁路。

4.4 LVDS到HCSL互连

LVDS驱动器接HCSL接收器的情况相对少,因为HCSL主要用于PCIe时钟,而PCIe时钟源本身通常是HCSL输出。不过有些FPGA的Bank可以配置成HCSL接收吗?较少见,但接法思路类似:交流耦合,HCSL接收端需要每根线对地50Ω偏置。

需要注意,HCSL接收端的输入共模范围比较特殊,它的输入结构通常是一个比较器,共模接近地。交流耦合后,HCSL接收器内部可能没有偏置,需要外部提供。多数HCSL缓冲器数据手册会给出输入偏置建议,通常是50Ω到GND。这时候LVDS的350mV摆幅可能低于HCSL期望的输入摆幅,建议检查接收器的灵敏度。一般HCSL接收灵敏度在100mV以内,所以350mV应该够用。

4.5 PCB布局的实战细节

差分线布线核心是等长和阻抗连续。LVDS信号速率通常在百Mbps到数Gbps,对于1Gbps以下的信号,等长要求可以放宽到±5mm也行,但高速SerDes则要求±5mil以内。不过既然做了差分,工艺允许的话尽量做到等长。

阻抗控制方面,100Ω差分阻抗是标准。计算阻抗时需要考虑层叠结构、线宽、线距、参考平面。经验值是,在4层板、外层铜厚1oz、介质厚度4mil左右的条件下,差分线宽5mil、间距7mil(边缘到边缘)大致能到100Ω。但不同厂家工艺有差异,最好让板厂帮你算好,或者用阻抗计算软件(如Polar SI8000)先算一遍。

还有一个容易忽视的细节:差分对内部的两根线是否要靠近?靠近可以增强耦合,减少共模辐射,但太近会增大串扰。常规做法是线间距保持在3倍线宽的范围内,具体值按阻抗要求来。另外,尽量保证差分对周围有一整块地平面,不要在差分线下方走其他信号线。

端接电阻的位置一定要靠近接收端,这是高频信号的铁律。如果电阻离接收脚超过几百mil,反射就会影响波形。我在实际项目中曾经因为端接电阻放远了,导致LVDS眼图闭合,后来把电阻移到距离接收引脚100mil以内,眼图立刻变好。

5. LVPECL互连:高摆幅背后的“电阻游戏”

5.1 LVPECL输出的正确负载

LVPECL输出是射极跟随器,它需要外部电阻提供直流偏置电流。最经典的端接是Thevenin等效:用两个电阻分压出一个等效电压,同时提供50Ω等效阻抗。

以3.3V供电为例,输出共模约2V,目标等效端接电压也是2V左右,同时等效端接阻抗50Ω。可以选两个电阻:R1接VCC到输出,R2输出到GND。计算方式:等效开路电压为VCC×R2/(R1+R2)=2V;等效并联阻抗为R1∥R2=50Ω。解得R1=82Ω,R2=130Ω(近似值)。实际电路中常用82Ω到VCC,130Ω到GND。

但是,这个端接网络没有匹配传输线阻抗吗?严格说,输出端的等效阻抗是50Ω,传输线的差分阻抗也是100Ω,每根线50Ω到参考面,所以是匹配的。很多LVPECL的参考设计就是采用这种Thevenin电阻网络。

如果不想自己算,也可以用集成方案,比如用一个芯片的LVPECL端接网络,但这玩意不常见,自己用电阻更灵活。

5.2 LVPECL到LVDS:交流耦合加偏置电阻

LVPECL输出接LVDS接收器,这是高频时钟分配常见场景。LVPECL的差分摆幅800mV到1.6V,LVDS接收器的输入范围通常能接受。但共模不对,LVPECL共模2V,LVDS有的接收器共模范围到2.4V还能兼容,但很多LVDS接收器最高只能2.2V或2.0V,数据手册写得明明白白,所以稳妥起见还是交流耦合。

交流耦合后,LVDS接收端需要重新建立偏置。有些LVDS接收器有内部偏置,比如片内100Ω端接且共模自偏置,那外部直接接电容过去就可以了。如果没有内部偏置,就需要外部加电阻分压。

一个通用方案:在LVDS接收端用100Ω电阻跨接,同时用两个电阻分压给两根线提供1.2V偏置。比如用1kΩ接3.3V,1.5kΩ接地,分压得到2.0V,但这太高了,需要调。其实标准LVDS偏置就是1.2V,可以用10kΩ接1.8V,另一个10kΩ接地,得到0.9V,不太对。实际计算:假设VCC=3.3V,选R1=1.5kΩ到VCC,R2=1.2kΩ到GND,分压约1.47V,再经过100Ω端接电阻,由于分压电阻阻值远大于100Ω,对偏置影响不大。

不过,这样自搭偏置网络需要精心计算,而且会引入额外噪声。更推荐的是直接使用LVDS转LVPECL的电平转换芯片,这类芯片很成熟,比如DS90LV047(LVDS驱动器)、DS90LV048(LVDS接收器),或者专门的转换器。很多情况下,单独为了一个互连增加一颗芯片看起来成本高,但考虑到可靠性和开发时间,其实更划算。

5.3 LVPECL到CML:一种相对顺畅的组合

LVPECL输出接CML输入,尤其在高速比较器输出接到FPGA的CML输入时比较常见。LVPECL摆幅大,CML输入一般能接受,只要不超过最大输入范围。共模依然不匹配,所以交流耦合。

CML接收端通常有内部偏置,交流耦合后直接用即可。如果CML接收端没有内部偏置,就需要外加50Ω到VCC的电阻。以3.3V供电为例,CML输入偏置通常在1.4V到2.0V,用50Ω上拉到VCC可以建立约VCC/2的偏置(如果另一侧有到地路径),但实际要根据数据手册。

经验是:LVPECL转CML比LVDS转LVPECL简单,因为CML输入范围相对宽一些,而且交流耦合后偏置大多内部解决。唯一需要注意LVPECL的输出摆幅可能过高,如果超过接收端最大输入范围,需要串联电阻衰减。比如LVPECL差分摆幅1600mV,CML最大输入范围可能只有1200mV,就可以在发送端串联适当电阻(比如22Ω或33Ω)来降低摆幅。

6. CML互连:电流模式下的“少即是多”

6.1 CML的标准点对点连接

CML输出通常内部有50Ω上拉电阻,信号通过这个上拉电阻到输出引脚。外部如果走100Ω差分线,接收端必须提供50Ω到地的等效负载,才能保证每个输出引脚看到50Ω负载。

但很多现代CML芯片的输出级其实是一个电流源,内部已经集成了50Ω上拉到VCC或者内部电源,输出引脚可以直接驱动100Ω差分负载。这时候如果接收端再放一个100Ω跨接电阻,就会和内部上拉形成并联,等效负载变成33Ω左右,可能降低摆幅。

所以CML互连的关键是查数据手册,搞清楚输出内部到底有没有端接。比如TI的DS25MB100这类CML缓冲器,输出内部有50Ω上拉,外部接收端如果是CML输入也有内部50Ω上拉,那么交流耦合后不需要外部端接。如果接收端是LVDS或HCSL,就需要另加端接。

6.2 CML到LVDS的转换思路

CML输出接LVDS接收器,常见于光模块输出的差分信号接到FPGA的LVDS Bank。光模块的CML输出摆幅通常在800mV,而LVDS接收器标准输入摆幅是350mV,但一般可以接受过驱,只要不超出最大输入范围(通常几百毫伏到1V以上)。

但更关键的是共模。CML输出共模接近VCC,比如3.3V供电时约3.1V,LVDS接收器共模范围最高2.4V,所以必须交流耦合。交流耦合后,LVDS接收端需要偏置到1.2V。同样,需要看FPGA的LVDS输入是否支持内部偏置。很多现代FPGA的LVDS输入支持“接交流耦合”模式,内部有可编程偏置电阻。比如Xilinx FPGA的IBUFDS支持内部偏置,设置成DIFF_TERM和内部偏置后,外部只需要加隔直电容。

如果FPGA不支持,就需要外部偏置。典型做法:100Ω跨接电阻,同时在两根线上各通过电阻分压网络提供1.2V偏置。这个偏置网络电阻必须远大于100Ω,否则会改变差分负载。可以用10kΩ+10kΩ分压产生1.65V(3.3V供电),再串联一个1kΩ电阻接到线上,用来“微弱”上拉,但精确度有限。更好的办法是用精密基准和运放构成偏置电路,但太复杂。所以多数人还是选择支持内部偏置的接收器。

6.3 CML到HCSL:少见但需要注意

CML输出接HCSL接收器,主要出现在某些时钟分配电路中。HCSL接收器需要低共模偏置,CML高共模信号交流耦合后就没有共模问题了,但HCSL接收端需要每根线对地50Ω偏置。如果HCSL输入内部没有偏置,外部就要加。

做法:交流耦合后,在HCSL输入端每根线对地接50Ω电阻。注意,这两个50Ω还提供了差分阻抗匹配(两个50Ω串联=100Ω),同时提供了直流到地路径。CML输出内部有50Ω上拉到VCC,交流耦合电容起到隔直作用,直流上,CML输出通过内部上拉连接到VCC,但被电容隔断,所以到不了HCSL输入端。HCSL输入端对地50Ω提供了一个独立的偏置点,约0V。这对HCSL接收器是合适的,因为它的输入共模可以接近地。

实际测试中,CML转HCSL我遇到过占空比失真,原因是HCSL的输入灵敏度较高,对转换速率有要求。CML输出的上升沿很快,应该没问题,但如果交流耦合电容太小,会造成低频衰减,导致波形畸变。建议电容选0.1uF以上,并验证占空比。

7. HCSL互连:PCIe时钟的专属玩法

7.1 HCSL输出端接:每根线50Ω到地

HCSL输出内部是一个电流开关,没有上拉电阻。输出电流从VCC通过内部开关流向输出引脚,然后经过外部电阻到地。所以外部必须提供低阻直流路径,通常是每根线一个50Ω到地。

这个50Ω的放置位置,一般就在接收端附近。如果走线很短,也可以放在源端附近,但为了阻抗匹配,建议在接收端放。同时注意,这两个50Ω电阻共同决定了差分负载阻抗100Ω,也是信号端接。

PCIe时钟的常见拓扑是点对点,一个HCSL时钟缓冲器输出到一个接收器。接收器通常是PCIe设备或时钟芯片,很多时候接收端也有内部端接。如果接收端已经有差分100Ω端接,那外部还需要对地50Ω吗?这时要小心,HCSL驱动电流需要流过外部电阻才能建立电压,如果接收端只有差分端接而没有地对地直流回路,输出共模无法建立。所以依然需要每根线对地50Ω。很多PCIe时钟接收器数据手册会明确要求“HCSL input requires 50Ω to GND on each pin”。

还有一种做法是采用“源端端接”,也就是在HCSL输出引脚处每根线放一个50Ω串联电阻到地,但这会影响信号幅度。更常用的还是接收端端接。

7.2 HCSL到LVDS:没有内部偏置时的应对

HCSL输出接LVDS接收器,主要出现在用HCSL时钟源驱动FPGA的LVDS时钟输入时。HCSL的摆幅约800mV,LVDS接收器能接受。但HCSL共模只有0.4V左右,而LVDS接收器需要1.2V共模,所以需要交流耦合。

交流耦合后,LVDS接收端必须有内部偏置,或者外部加偏置网络。很多FPGA的LVDS输入可以配置内部端接和偏置,此时交流耦合加内部端接即可。如果不支持,可以用外部电阻分压,在每组线上通过10kΩ电阻连接到1.2V基准。

实际项目中,我更喜欢用AC耦合搭配芯片内部偏置。比如FPGA的IBUFDS设置DIFF_TERM = TRUE时,内部会开启100Ω差分端接,有些器件还提供输入共模偏置。需要查具体FPGA家族的配置选项。比如7系列FPGA的IBUFDS支持DIFF_TERM但不支持内部共模偏置,所以外部仍然需要偏置网络。对于这种情况,可以把端接电阻改为分压偏置结构:两个电阻串联在VCC和GND之间,中间点通过一个小电阻(比如100Ω)连接到LVDS正端和负端,同时差分端接还是100Ω。但要小心这会影响差分阻抗。更推荐用专用的HCSL转LVDS时钟缓冲器,省心。

7.3 HCSL到CML:共模对接地敏感

HCSL输出接CML接收器,常见于FPGA的CML接口(比如GTP/GTX)接收HCSL时钟。CML接收端通常有内部偏置,交流耦合后应该没问题。但有一个细节:HCSL输出的共模很低,接近0V,交流耦合后这个直流电平不会传递到CML端,所以CML内部偏置正常。但要注意电容的耐压和ESD,因为HCSL输出有时会带负压尖峰。

测试时遇到过HCSL时钟通过交流耦合接入CML输入后,时钟抖动变大。排查发现是CML输入内部偏置网络的时间常数和电容配合不当,导致低频抖动被放大。后来增大电容到0.1uF,并增加一个小阻值串联电阻(比如10Ω)来抑制振铃,问题解决。

7.4 HCSL端接电阻的功率和精度

HCSL输出电流约15mA,在50Ω上产生750mV电压,功率P=I^2R=0.015^250≈11mW,普通0402电阻完全没问题。但电阻精度建议1%,因为摆幅直接由电流和电阻决定,电阻误差会带来摆幅误差。如果接收端灵敏度余量不大,用5%电阻容易导致信号边沿变差。

8. 互连转换的通用心法:一张表搞定决策

经常有人问,能不能给一个通用的转换公式?其实转换的本质就是三步:查发送端输出特性、查接收端输入要求、决定耦合方式和端接方式。

我把常见互连组合的推荐做法整理成一张表,都是我实测过或者根据数据手册推出来的常规方案,大家可以直接作为起点,再结合具体芯片手册微调。

发送端接收端耦合方式端接/偏置建议备注
LVDSLVDS直流或交流接收端跨接100Ω若收发共模兼容可直流,否则交流加内部偏置
LVDSCML交流无外部或按CML手册利用CML内部偏置,电容0.1uF
LVDSLVPECL交流LVPECL端加Thevenin偏置需保证摆幅足够
LVDSHCSL交流每根线50Ω到地检查HCSL输入灵敏度和共模
LVPECLLVDS交流LVDS端内部偏置或外部1.2V偏置注意LVPECL摆幅过大时串联衰减
LVPECLCML交流CML内部偏置一般无需外部端接
LVPECLHCSL交流每根线50Ω到地验证占空比和边沿
CMLLVDS交流LVDS内部或外部1.2V偏置若CML输出共模过高必须交流
CMLCML直流或交流按芯片内部端接内部有端接时避免重复并联
CMLLVPECL交流LVPECL端Thevenin偏置较罕见
CMLHCSL交流每根线50Ω到地确认HCSL输入范围
HCSLLVDS交流LVDS端内部或外部1.2V偏置常见于时钟分配
HCSLCML交流CML内部偏置注意负压尖峰
HCSLHCSL直流接收端每根线50Ω到地标准PCIe时钟连接

这里要特别提醒,表格只是常规起点,不是绝对标准。比如LVPECL的Thevenin偏置,不同供电电压下阻值完全不同;CML的内部端接也不是所有芯片都有。所以拿到具体芯片后,第一件事就是找数据手册里的“Interface”或“Termination”部分,那里的参考电路才是最可靠的。

9. 实战案例:FPGA的LVDS接收如何接3路RGB转LVDS

刚才的表格可能还不够直观,下面用一个具体案例串一遍。

9.1 需求描述与信号链路

手头有一个项目,需要把一个3路RGB接口(每个颜色8位,共24位,加上时钟信号)转成LVDS输出,接到FPGA的LVDS接收引脚。标准的RGB转LVDS方案是用专用芯片,比如TI的DS90C383或者国产的某种转换器,输入并行RGB信号,输出4对LVDS(3对数据+1对时钟)。

这个场景其实不算复杂,因为发送端和接收端都是LVDS,互连就是标准的LVDS点对点。但有几个容易踩的坑:

  • 转接芯片的LVDS输出共模可能不是标准的1.2V,有些芯片的共模范围更宽;
  • FPGA的LVDS输入bank电压可能和转接芯片的电源不同,导致共模差异;
  • 多个LVDS对之间的skew会影响时序,尤其对像素时钟较高的场景(比如1080p@60Hz频率约65MHz,周期约15ns,skew要求没那么苛刻,但也得注意)。

9.2 具体连接方案

我采用的设计是:

  • 转接芯片采用3.3V供电,LVDS输出标准;
  • FPGA端LVDS bank的VCCO设置为2.5V(这是FPGA内部LVDS输入比较常见的配合),但由于LVDS是差分信号,通常VCCO不影响接收共模范围(LVDS输入有独立的参考),不过很多FPGA要求VCCO不低于1.8V即可;
  • 差分走线阻抗100Ω,等长控制在±5mil内;
  • 接收端每对差分线跨接100Ω端接电阻,并开启FPGA的DIFF_TERM选项(如果支持的话,相当于内部端接,外部可以不焊电阻)。

这里有个矛盾:如果FPGA内部已经开启差分端接,外部还焊电阻,会导致阻抗减半。所以二选一。我习惯的做法是外部不焊电阻,直接开启内部端接,因为内部端接通常位置更接近接收管脚,反射更小。但前提是FPGA管脚支持,有些老器件不支持,那就只能外部加电阻。

9.3 调试中遇到的关键问题

第一次上板测试,图像有雪花点,用示波器测LVDS差分波形,发现眼图很模糊。排查过程如下:

  • 先量端接电阻两端的直流电压,发现差分摆幅只有200mV左右,低于LVDS标准的350mV;
  • 再查转接芯片输出是否正常,断开连接,单测发送端,摆幅350mV正常;
  • 怀疑是走线导致的衰减,但走线长度只有几厘米,不太可能衰减那么多;
  • 仔细看原理图,发现FPGA管脚除了内部端接,外部还焊了100Ω电阻,相当于两个端接并联,等效50Ω,导致驱动器负载变重,摆幅降低。

去掉外部电阻后,眼图恢复正常,雪花点消失。

这个案例说明,互连设计一定要搞清端接是谁提供。两边都提供了端接,等同于双重端接,轻则摆幅下降,重则反射严重。

9.4 关于“3路RGB接口转LVDS”的时序考虑

RGB转LVDS芯片会并行输入24位数据和时钟,输出串行化后的LVDS信号,每个LVDS通道实际上是7:1的串行化(数据位+控制位)。所以LVDS时钟频率是像素时钟的7倍或3.5倍(取决于双沿还是单沿)。对于1080p@60,像素时钟约148.5MHz,LVDS时钟可到520MHz左右,这个频率已经需要认真考虑信号完整性。

此时差分等长就非常关键,因为串行数据一位的时间约1/520MHz≈1.9ns,如果两根线长度差1cm,延迟差约50ps,问题不大。但数据线与时钟线之间的skew会影响数据采样窗口,所以最好让所有差分对等长,至少保证每个差分对内部等长,组间等长误差控制在几百mil内。

实际项目中,我给每对差分线做蛇形走线补偿,确保组间skew小于100ps,这是比较稳妥的经验值。

10. 端接电阻的位置和布局禁忌

前面多次提到端接电阻靠近接收端,但具体多近算近?这个没有绝对数字,但有一个经验:对于上升沿小于1ns的信号,端接电阻到接收引脚的走线长度不要超过100mil(约2.5mm)。因为如果走线太长,电阻后的反射仍然会干扰信号,虽然不严重,但会造成振铃。

另外,端接电阻的放置方向最好是垂直差分线方向,也就是让电阻本体垂直于信号走向,这样可以减少电阻引脚之间的寄生电容。我见过很多设计为了布线方便,把电阻顺着走线方向放,结果高频特性变差。

还有,差分对之间尽量挖地隔离吗?不一定。如果差分对间距足够大(比如3倍线宽以上),串扰就不大。但在布局拥挤时,可以在相邻差分对之间加一条地线隔离,这比什么都不做好。地线两侧要保持完整,不要被切断。

端接电阻的参考地要干净。如果电阻下方有电源层分割,回流路径会中断,导致差模转共模。所以布局时,端接电阻所在一层和相邻参考层,尽量避免有裂缝。

11. 交流耦合电容的选择:不是越大越好

交流耦合电容的取值需要综合考虑信号速率、低频分量、电容自谐振频率和封装尺寸。

对于高速串行信号,比如5Gbps的NRZ码流,AC耦合电容常见值在0.01uF到0.1uF之间。电容太小,低频分量损失严重,引起基线漂移;电容太大,自谐振频率低,高频特性变差。还要考虑电容的ESR和ESL,因此高频应用推荐使用0402或0603封装的X7R或C0G电容。C0G温度特性更稳定,但容量做不大;X7R便宜,但直流偏压特性会导致容量下降。

一个经验公式:AC耦合电容和接收端输入阻抗形成一个高通滤波器,截止频率f_c = 1/(2πRC),R是接收端等效输入电阻(通常50Ω到100Ω)。如果你用0.1uF和50Ω,f_c≈32kHz,远低于串行信号的最低频率,所以没问题。但如果用0.001uF,f_c≈3.2MHz,对于包含低频分量的信号就可能出问题。

在时钟信号中,假设时钟频率100MHz,最低频率成分就是100MHz(没有低频分量),所以0.001uF也可以,但占空比失真与电容充放电有关,大电容可以减小充放电带来的电压波动,所以依然建议用0.1uF。

12. 从“能通”到“稳定”:眼图和抖动的实测心得

互连电路最后的好坏,不能只看能不能工作,还要看眼图和抖动。

实测眼图的步骤:用示波器(带宽至少是信号基频的3倍以上)接差分探头,在接收端测量差分波形,调整示波器的余辉或采用高速采样模式,观察眼图的张开程度。

对于LVDS或CML这类信号,眼图应该清晰张开,交叉点稳定,眼高至少满足接收器灵敏度要求。如果眼图有重影或闭合,可能是阻抗不连续、反射、串扰或电源噪声导致。

抖动测量方面,关心的是总抖动(TJ)和随机抖动(RJ)。随机抖动主要来源于热噪声和电源噪声,很难完全消除,但可以通过改善电源去耦和地平面一致性来降低。确定性抖动主要来源于码间干扰(ISI)、串扰和反射,这些都与布线设计相关。

一个调试经验:如果抖动超标,先看电源纹波。很多高速信号抖动都是电源造成的,尤其是LVPECL电路,对电源噪声极其敏感,LDO输出端需要几个不同容值的电容并联,从10uF到0.1uF到0.01uF各来几个,必要时加磁珠隔离。

13. 电平转换的另一种思路:专用缓冲器/转换芯片

自己搭电阻网络进行电平转换虽然可行,但在批量产品中,我更推荐使用专用芯片。原因很简单:电阻网络的偏置点受温度和电源影响大,而专用芯片内部有稳定的偏置电路,还有ESD保护、驱动能力优化,一致性好。

常见的转换芯片:

  • LVDS转LVPECL:比如TI的SN65LVDS33是LVDS接收器,输出LVTTL,如果要输出LVPECL需要额外转换。更直接的是用时钟缓冲器,比如MC100LVEP111是LVPECL扇出缓冲器,输入兼容LVPECL,也可以接LVDS吗?需要看规格。实际上更常见的是用一颗LVPECL缓冲器,输入交流耦合LVPECL信号。所以思路是:如果电平不匹配,先转成中间逻辑,再转成目标逻辑,虽然多一跳,但可靠。

  • CML转LVDS:很多SerDes芯片都有CML输入或输出,如果和LVDS芯片对接,可以用专用的电平转换器,比如NB7L14是CML转LVDS的缓冲器。

  • HCSL转LVDS:类似的有ICS/IDT的时钟转换芯片,比如ICS8308等。

使用专用芯片时,要注意其供电电压和输入输出电平类型,有些芯片输出是LVCMOS,不是LVDS,别搞混了。我见过有人把LVCMOS缓冲器当LVDS输出,结果差分信号根本不对。

14. 写在最后的几个经验教训

回看我这些年的高速互连设计,有几个教训值得反复提。

第一个,永远先看数据手册的接口章节。很多互连问题在动手前就能避免,关键在于去查发送端的输出等效电路和接收端的输入等效电路。尤其是内部端接,很多人默认外部加电阻,结果双重端接,就是我没少见的低级错误。

第二个,能交流耦合就尽量交流耦合。交流耦合可以消除共模差异,简化DC设计。但要注意,交流耦合要求信号有良好的DC平衡性,如果信号中有长时间恒定电平,比如一些控制信号,就不适合交流耦合。这时候要么用直流耦合加电平转换,要么加编码。

第三个,PCB设计时,差分线的阻抗控制比等长更重要。等长误差只要不是太离谱(比如超过信号上升沿对应距离的10%),一般不会致命;但阻抗不匹配会造成反射,反射造成的振铃和过冲有时比等长误差严重得多。

第四个,测试时一定要在接收端测量,不要只看发送端波形。发送端波形漂亮不代表接收端就能收到好信号,中间的传输线、端接、过孔都可能改变信号。我习惯在调试时直接探接收端引脚,必要时把芯片的引脚焊盘露出来便于测试。

第五个,也是最重要的一点:互连设计的核心不是“抄参考电路”,而是理解参考电路为什么这样设计。理解了电流路径、直流偏置、阻抗匹配这三个维度,哪怕遇到从没见过的电平,也能根据数据手册推出合适的连接方案。

LVDS、CML、LVPECL、HCSL这四种电平,说到底是高速差分信号在不同场景下的四张面孔。搞清楚他们各自的特点和互连要求,硬件设计里一大半的“高速”问题就已经解决了。剩下的,就是多测、多看、多试,没什么捷径。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询