写这篇文章的起因,是上周帮朋友救砖一台路由器。板子上明明标着TTL串口,我拿了根USB转TTL的小板接上去,GND、TXD、RXD线序全都对,屏幕上却是一片乱码,偶尔蹦出几个正常字符。折腾了半小时才意识到,小板的跳线默认在5V,而那颗路由器SoC的串口电平其实是1.8V,一个“看起来还能用”的电压差,把整个调试节奏全部打乱。后来我索性坐下来,把TTL、CMOS、ECL、LVDS、CML这五种主流逻辑电平标准完整梳理了一遍,越理越觉得这些东西不光是参数表上的几行数字,背后藏着整个数字电路的发展史和所有高速互连的设计逻辑。
这篇东西适合谁看?刚入行的硬件工程师、做FPGA却对电平匹配犯嘀咕的软件派开发者,以及喜欢折腾路由器、电视盒子、开发板的玩家,都能在里面找到自己需要的参数和避坑常识。我不打算把五个标准拆成五篇百科式词条,而是想把它们放在一起看:为什么会有这么多种电平,各自的边界在哪里,互相之间怎么对接才是最稳的,以及在现场翻车时该从哪里查起。
1. 为什么需要这么多种电平:功耗、速度与噪声容限的博弈
1.1 电平标准说白了就是一份电气接口契约
只要你用数字电路,就必须回答一个基本问题:多少伏算逻辑1,多少伏算逻辑0?中间那段既不算1也不算0的区域怎么办?逻辑电平标准,本质上就是电路之间的一份电气接口契约。
打个比方,两个人约定“点头是1、摇头是0”,但如果有一个人点头幅度特别小,小到对方根本看不清,那通信就崩了。电路上更严格,因为还有噪声叠加在信号上。所以电平标准里会同时规定两套门槛:一套是“输出端必须保证”的电压范围,一套是“输入端必须识别”的电压范围。输出端的约束比输入端更严格,确保上一级给出的信号无论怎么折腾,都能稳稳落在下一级能识别的区间里。你去看任何一颗芯片的datasheet,High-Level Output Voltage、Low-Level Output Voltage、High-Level Input Voltage、Low-Level Input Voltage这四个参数,就是这份契约的正文。
TTL、CMOS、ECL、LVDS、CML之所以并存到今天,是因为它们的契约条款天差地别。有的追求极低功耗,有的追求极高速率,有的追求抗干扰,有的追求低成本,没有任何一种电平能同时把这几项全占满。
1.2 为什么TTL、LVDS们电压摆幅越来越小?
如果只看数字电路的翻转功耗,有一个公式绕不开:P = C × V² × f,也就是功耗正比于负载电容、电压摆幅的平方和翻转频率。想跑高频率,就得降低电压摆幅,否则功耗会以平方关系爆炸式上升。
这个规律直接解释了两件反直觉的事:第一,越高速的信号,逻辑摆幅反而越小。LVDS的差分摆幅只有350mV左右,CML大概在400到800mV,和当年5V TTL动辄3V以上的摆幅完全不是一个量级。第二,摆幅一缩小,噪声容限就必然跟着缩小,所以低速芯片随便飞线都能跑,高速差分信号却必须严格做阻抗匹配和端接,否则几十毫伏的反射就会让接收端识别错电平。
还有一个分水岭是单端和差分。TTL、CMOS都是单端信号,以地作为参考平面,信号一到几百MHz,地弹噪声、电源噪声、串扰都会被叠加进逻辑判断里,很难再往上走。ECL、LVDS、CML全是差分结构,接收端比较的是两根线之间的电压差,共模噪声天然被抵消。如果你想在GHz以上做可靠传输,差分几乎是唯一出路。
弄明白这条暗线,后面五个标准为什么长成现在这样,就都有了解释。
2. TTL与CMOS:单端逻辑里的两位老将
2.1 TTL:靠双极型晶体管“灌”出来的5V逻辑
TTL全称Transistor-Transistor Logic,是双极型晶体管逻辑。它的输入级是一个多发射极NPN管,输出级是“图腾柱”结构——上管导通时把输出拉高,下管导通时把输出拉低。早期TTL的经典电源是5V,于是大家习惯了“TTL就是5V逻辑”的印象。
TTL有一个特别典型的电气特性:低电平输出时对外“灌电流”的能力很强,常见芯片IOL能到16mA甚至更高;但高电平输出时“拉电流”能力很弱,一般只有几百微安到几毫安。这就是为什么老工程师驱动LED时都喜欢“低电平点亮”——把LED正极接电源、负极接芯片引脚,输出低电平时LED亮,靠的就是芯片往下灌电流的能力。反过来想让芯片把灯“顶”亮,反而会因为拉电流不够而点不亮。
它的逻辑门槛也比较有特点:输出高电平不低于2.4V,输出低电平不高于0.4V;输入端识别高电平的门槛是2V,识别低电平的门槛是0.8V。算一下噪声容限,高电平方向是2.4减2等于0.4V,低电平方向是0.8减0.4等于0.4V,总共只有400mV的余量。放在今天的高速信号里这算很大的余量,但在5V时代,这个噪声容限真不算宽。原因在BJT的饱和导通特性:输出低电平就是晶体管的饱和压降,输出高电平还要扣掉二极管和晶体管的导通压降,加起来正好剩下2.4V左右。
TTL系列里大量型号你肯定听过,74LS、74ALS、74F、74S等。其中74LS低功耗肖特基是上世纪最流行的逻辑家族,74F则更偏高速。它们共同的瓶颈是:BJT工作在饱和导通状态时,基区会积攒大量过剩电荷,关断瞬间这些电荷必须被抽走,这个“存储时间”直接把速度上限卡死在百兆赫兹以内。所以TTL想再往上冲频率,物理上就非常吃力。
2.2 CMOS:栅极不吸电流,输出接近电源轨
CMOS是Complementary Metal-Oxide-Semiconductor的缩写,核心是PMOS加NMOS互补组成的开关结构。它比TTL晚普及,但很快就把TTL从大多数逻辑应用里挤了出去,原因非常直接:输入阻抗极高。MOS管的栅极是一层二氧化硅,理论上栅极几乎不吸取电流,所以CMOS芯片驱动下一级时,不需要像TTL那样操心拉电流灌电流的问题。
CMOS的静态功耗低到可以忽略,只有信号翻转瞬间,PMOS和NMOS短暂同时导通,才有一个小小的浪涌电流。翻转完成之后,除了漏电,芯片几乎不耗电。而TTL因为有源源不断的晶体管导通电流,静态功耗一直是实打实地烧着。当年一个装满74LS芯片的电路板,整板功耗轻松十几瓦,换成74HC系列CMOS芯片,功耗能掉一个数量级还多。
电气参数上,CMOS赢得很彻底:输出是轨到轨的,5V供电时输出高电平几乎等于5V,输出低电平几乎等于0V。输入端识别高电平的门槛是0.7倍VCC,识别低电平的门槛是0.3倍VCC。5V供电时VIH是3.5V,VIL是1.5V,单个方向上的噪声容限高达1.5V,比TTL宽松太多。常见的74HC系列、CD4000系列都是这个路数。
不过CMOS也有自己的脾气:栅极输入阻抗高意味着电荷很难泄放,所以CMOS输入引脚绝对不能悬空。悬空的输入会因为静电感应或微弱漏电漂移,甚至在高、低电平之间来回振荡,导致逻辑紊乱、整芯片电流激增。这是新手栽得最多的坑之一。解决办法很简单,不用的输入引脚要么接上拉电阻到VCC,要么接下拉电阻到GND,总之要给它一个确定的电平。
顺带澄清一个容易混淆的点:很多人装机时见过CMOS checksum error这句话,它指的是主板上保存BIOS配置的CMOS RAM电池没电了,和本文说的CMOS逻辑电路属于同一工艺家族但不是一个东西。遇到这个报错先换主板电池,别去查什么逻辑电平。
2.3 TTL驱动CMOS为什么可能翻车?
TTL和CMOS都是单端逻辑,但直接互连时不一定是兼容的。最经典的坑是5V TTL输出驱动5V CMOS输入:TTL输出高电平最低只有2.4V,而5V CMOS输入要识别高电平需要3.5V,这1.1V的差直接把信号丢进了“不确定区”。很多时候电路看起来一切正常,但噪声一来就莫名其妙复位,就是这个原因。
解决思路有三条。第一,在TTL输出端到VCC之间接一个上拉电阻,比如1k到4.7k,把高电平硬生生拉到接近5V,等于用外部电阻补足了TTL拉电流弱的短板。第二,选专门为TTL输入门槛优化的HCT系列,比如74HCT,它的输入门槛设计成和TTL一样识别2V高电平,这样TTL输出2.4V就能被可靠识别。第三,在混合电压系统里直接用一颗电平转换芯片,把两边彻底隔开。
反方向,CMOS驱动TTL通常问题不大,因为CMOS输出高电平接近5V,远超TTL的2V门槛。但还有一个隐患容易被忽略:CMOS输出的拉电流能力有限,如果后面挂了很多TTL输入或重负载,高电平可能被拉下来。TTL输入需要从驱动端抽取一定电流,虽然单路不大,但扇出太多时一样会拉垮CMOS的输出电压。所以大规模混合电路里,我还是建议按真实电流计算一遍扇出,而不是“看着能带就带了”。
现在低电压时代还有3.3V CMOS、1.8V CMOS这些低压单端逻辑,电平匹配原则完全一致,就是拿输出端的VOH、VOL对比输入端的VIH、VIL,两头都盖上余量再连线。我在项目里跑任何逻辑转换电路,第一步永远是拿excel把这四个参数列出来,算噪声容限,不满足就上转换方案。
3. ECL:负电源上的超高速老炮
3.1 ECL为什么能比TTL快一个数量级
ECL全称Emitter-Coupled Logic,发射极耦合逻辑。它是上世纪六十年代到九十年代的超高速主力,至今在一些特殊场合还没完全退场。ECL的核心结构是差分放大器,一对晶体管共享尾电流,输入信号控制电流往哪一边走,所以它本质上是“电流开关”而不是“电压开关”。
它快的原因特别纯粹:所有晶体管始终工作在放大区,从不进入饱和区。回想一下TTL的瓶颈,BJT饱和时基区存储电荷,关断需要额外时间。ECL直接不让晶体管饱和,存储时间这个拖后腿的机制就消失了,开关速度一下子冲进亚纳秒级。单个ECL门的传播延迟能做到几十皮秒到几百皮秒,在六十年代就能实现GHz分频,这是当时任何TTL、CMOS都做不到的。
代价也极其明显:恒流源时刻有电流流过,无论有没有信号翻转,功耗都稳定地烧着。一片中等规模的ECL电路板,整板功耗几十瓦是家常便饭,所以老式ECL设备常常需要强迫风冷甚至水冷。这个“用功耗换速度”的思路,后来被LVDS、CML继承了一部分,只是把电流降到毫安级,才终于让高速电路不至于变成电暖器。
3.2 负电源系统与“看起来奇怪”的电平
ECL最劝退人的地方是电源体系。以经典的MECL 10K系列为例,它用的是VCC接0V、VEE接-5.2V的负电源方案。输出高电平约-0.8V,输出低电平约-1.8V,摆幅大约1V。你没看错,整个逻辑电平全都“沉”在了地平面以下。
为什么搞这么别扭?一个是历史原因,ECL内部大量射极跟随器输出,天然会把电平往下推一个PN结压降,选择负电源可以让输出电平尽量靠近地,方便后端接50Ω传输线做端接。另一个原因是,负电源方案配合恒流源,可以让电源电流更加平稳,di/dt小,对高速信号的电源噪声干扰更小。ECL内部的电流模式也让开关瞬间不会像CMOS那样从电源抽取大电流尖峰,这反而让它在超高速下的电源完整性比CMOS更好控制。
ECL的噪声容限其实很小,高低电平之间总共大约1V摆幅,折算到单边容量只有两三百毫伏,比TTL的400mV还差。所以用ECL的系统,PCB布线几乎必须按传输线来设计:特征阻抗匹配、终端电阻、差分对等长、参考平面完整,一样都不能少。当年能把ECL玩明白的硬件工程师,到了今天做LVDS、CML互连时基本都是降维打击,因为高频布线的底层逻辑从来没变过。
3.3 PECL/LVPECL:把ECL抬回正电源,代价是端接
ECL用负电源太反人类了,到后来出现了PECL,也就是正向ECL,电源变成VCC=5V、VEE=0V,逻辑高电平约4.2V、低电平约3.2V;再后来为了配合3.3V系统又出了LVPECL,高电平约2.5V、低电平约1.5V。PECL和LVPECL的速度、驱动能力继承了ECL的底子,常被用来做高速时钟输出,在很多时钟芯片、锁相环芯片上都能看到它们。
但PECL/LVPECL有一个让新手非常头疼的地方:输出端是射极跟随器,需要提供一个确定的直流偏置电流通路,否则无法建立正确的工作点。所以它不能像普通CMOS那样直接连一根线就完事,必须设计端接网络。常见做法包括戴维南等效端接,例如用两个电阻构成分压点,把端接电压设定在VCC-1.3V左右,再连接到差分电阻,或者用AC耦合电容配合偏置电阻。网上你搜LVPECL端接,能搜出一堆拓扑图,第一次看会觉得很复杂,但你不照做,信号自己就死在传输线中间了。
因为端接麻烦、功耗又大,PECL/LVPECL现在的位置有点尴尬:在极高性能要求、尤其是低抖动时钟分配领域还有一席之地,但在很多消费级高速互连里,已经被LVDS和CML替代了。它更像一位简历很漂亮但脾气很大的老前辈,用好了是真强,请回来伺候也真累。
4. LVDS与CML:当代高速系统的差分双子星
4.1 LVDS:3.5mA电流在100欧姆电阻上唱主角
LVDS全称Low-Voltage Differential Signaling,低压差分信号,是目前应用最广的高速接口电平之一。你手上的FPGA板卡、液晶屏接口、摄像头模块、高速ADC,背后多少都有LVDS的身影。
它的工作原理特别优雅:发送端是一个恒流源,典型输出电流3.5mA,驱动一对差分线;接收端跨接一个100Ω终端电阻,电流流过电阻时产生约350mV的电压差,接收器靠检测这个压差的正负判断逻辑1还是0。这个容积很小,但配合高速差分结构,LVDS能在极低功耗下跑到数百Mbps到数Gbps,而且因为电流恒定、摆幅小,对外辐射的电磁干扰也小,是板级互连的优等生。
LVDS的共模电平典型值在1.2V左右,标准允许范围大约是0.2V到2.2V。接收端的差分阈值只要±100mV,也就是两根线电压差超过100mV就算有效。反过来看,LVDS的噪声容限其实很小,但这种“小”和单端信号的小是两回事:差分接收天然抗共模噪声,地弹和电源噪声只要同时串到两根线上,就会被差分放大器抵消掉。
实际用LVDS的时候,最大的坑是端接。100Ω终端电阻必须放在接收端,这是标准规定的位置。很多LVDS接收芯片内部已经集成了100Ω端接,外部就不要再并一个100Ω电阻,否则等效阻值变成50Ω,信号反射和衰减都会恶化。不确定的时候就查datasheet,看接收器输入结构里有没有Termination字样。
另一个常见应用是屏幕接口。很多3路RGB接口转LVDS的模组,就是把24位RGB并行信号打包成差分串行对,数量从二十几根线降到几对差分线,电磁干扰也小很多,传输距离还能拉长。你拆一台带LVDS屏的显示器,面板排线上那几对差分就是它。
4.2 CML:漏极开路和恒定电流的高端玩法
CML全称Current Mode Logic,电流模式逻辑,是更高速链路里的常客。PCIE、SATA、SerDes、光模块、10G/25G甚至更高速率的背板互连,底层信号基本都是CML或者CML变体。
CML和LVDS一样靠电流工作,但输出结构完全不同。LVDS是电流源驱动差分对,电流始终有明确通路;CML的输出端通常是集电极开路或漏极开路,外部必须接上拉电阻到VCC,恒流源电流流过这个上拉电阻时产生压降,形成逻辑摆幅。比如驱动电流16mA、上拉电阻50Ω,单端摆幅就是0.8V、差分摆幅1.6V?不对,因为差分对里电流是交替走的,每一侧上拉电阻流过的电流是总电流的一半,所以单端摆幅是8mA×50Ω=400mV,差分摆幅是800mV。这一点很多资料讲得含糊,实际算一遍就清楚了。
CML能比LVDS更快的原因有几层:小摆幅让上升沿和下降沿时间更短;漏极开路结构让驱动端不需要推挽式地“主动充电”,只需切换电流方向;输出端阻抗匹配更简单,很多CML驱动器内部已经自带50Ω源端匹配,让信号反射更小。这些优势叠加在一起,让CML能轻轻松松向10Gbps以上冲锋。代价是功耗比LVDS高,同时对端接的要求也更严格。
CML的端接习惯和LVDS不太一样:接收端常见做法是内部集成50Ω到VCC或者通过AC耦合电容后做内部偏置。如果自己搭电路,差分线往接收器方向加100Ω差分端接,或者分别用50Ω到VCC,取决于驱动和接收端的直流电平。
4.3 差分信号之间的互连:端接、交流耦合与坑
LVDS、LVPECL、CML这三个都是差分高速信号,但它们之间不能想当然直连。LVDS的输出共模约1.2V,CML的输出共模接近VCC,LVPECL的输出要偏置在VCC-1.3V附近,三者直流电平完全不同,直接DC耦合必然导致工作点偏移。
工程中最常用的解法是交流耦合:在发送端和接收端之间串入隔直电容,把直流偏置问题彻底隔离,然后在接收端重新建立正确的共模电平。电容选0.1uF或0.01uF级别比较常见,0402、0603封装都行,但注意高速信号链路里,电容的寄生参数、安装位置、焊盘铜皮都可能成为阻抗不连续点,所以交流耦合电容通常要求放在走线细段、对称放置,并且搭配参考平面优化。
LVPECL转LVDS尤其容易翻车,因为LVPECL的共模电压太高了,即使AC耦合后,LVDS接收器如果没有内部自偏置,也需要补一个自偏置网络把共模拉到1.2V附近。反过来,CML的信号经过AC耦合进LVDS接收器同样要做类似处理。
我的经验是:高速差分互连不要只看“差分信号接得上”就行,要把发送端的输出结构、接收端的内部端接、是否支持交流耦合全查清楚,画一个直流等效通路出来,看看每一根差分线上在静态时到底挂了多少电阻、偏置在哪里,再决定用DC还是AC。这个习惯帮我避免了至少三次“上电就冒烟或者完全无信号”的返工。
5. 五种电平标准横向对比与选型思路
5.1 一张表理清五种电平的脾气
直接上对比表,参数按典型应用取值,具体以器件datasheet为准:
| 特性 | TTL | CMOS | ECL/LVPECL | LVDS | CML |
|---|---|---|---|---|---|
| 典型供电 | 5V | 1.8V~5V | 5V / 3.3V | 3.3V | 1.8V / 3.3V |
| 信号形式 | 单端 | 单端 | 差分 | 差分 | 差分 |
| 典型摆幅 | 约3V | 轨到轨 | 约1V | 约350mV | 400mV~800mV |
| 输出高电平 | ≥2.4V(5V供电) | ≈VCC | VCC-0.8V | 共模1.2V | 接近VCC |
| 输出低电平 | ≤0.4V | ≈0 | VCC-1.8V | 对地不适用 | VCC-摆幅 |
| 输入识别门槛 | VIH=2V,VIL=0.8V | VIH=0.7VCC,VIL=0.3VCC | 组件相关 | 差分±100mV | 组件相关 |
| 速度上限 | 几十MHz | 几十MHz~百MHz级 | 数GHz | 数百Mbps~3Gbps+ | 10Gbps~数十Gbps |
| 功耗特点 | 静态功耗大 | 静态功耗极低 | 功耗巨大 | 功耗低 | 功耗中等偏高 |
| 端接要求 | 一般不要求 | 不要求 | 需要偏置与端接 | 接收端100Ω | 上拉至VCC+匹配 |
| 典型应用 | 早期逻辑、接口 | 逻辑电路、MCU IO | 超高速时钟 | 屏接口、板级总线、FPGA | SerDes、光模块、PCIE |
把这个表打印出来贴在工位上都不过分。选型时候重点看两列:信号形式和端接要求。单端标准电路简单、成本低、适合低速;差分标准抗干扰强、速度高,但必须按传输线设计。
5.2 项目选型的几个判断顺序
我在实际项目里决定用哪种电平,通常按下面这个顺序过:
第一,看速率。板级速率还在100MHz以下,老老实实用CMOS或LVCMOS,不要为了显得高级上LVDS,白白增加端接和布线成本。第二,看距离。芯片之间三五厘米,单端完全够;要跨一块板几十厘米或者走连接器,LVDS的差分优势就体现出来了。第三,看功耗预算。省电项目优先LVDS,能不用LVPECL就不用,那玩意儿发热和功耗都高。第四,看链路协议。如果接的是PCIE、SATA、光模块,那标准本来就是CML或者协议指定,轮不到你来选,照着做就行。
另外特别提醒FPGA开发者:FPGA的Bank电压配置决定了IO标准能用什么,LVDS通常要占用成对引脚,且需要把IOStandard设置成LVDS,并用综合工具生成差分约束。很多人写了逻辑但没配Bank电压,导致引脚输出电压完全不对,这是FPGA接LVDS屏、LVDS ADC时最常见的低级错误。
6. 电平转换实操:救砖、点屏和常见接口转换
6.1 USB转TTL“救砖”乱码排查:电平不匹配的真实案例
回到开头那台路由器。USB转TTL模块本质上是把USB信号转成UART串口电平,但注意,市面上叫“TTL”的模块,实际输出往往不是标准5V TTL逻辑,而是3.3V甚至5V的UART电平,很多芯片用的是CMOS/LVCMOS输出,这里“TTL”已经成了串口电平的统称,和真正意义上的74系列TTL不完全是一回事。你只要记住:模块输出电平能不能和路由器SoC串口的电平匹配,才是关键。
救砖时遇到乱码,按这个顺序排查:先查共地,串口通信两边参考地必须有电气连接;再查TXD和RXD有没有交叉,发送接接收、接收接发送;然后查电平,用万用表量路由器串口TXD空载电压,如果接近其IO电源(比如3.3V或1.8V),说明是CMOS类型电平,模块对应档位必须照此设置;最后查波特率,很多U-Boot串口默认115200,但有的设备是57600或1500000,爬错一个零就是满屏乱码。
最靠谱的操作是:先接GND,再接模块RXD到板子TXD、模块TXD到板子RXD,上电前用万用表逐个引脚确认电压,再把模块跳线电压调到和目标一致。1.8V串口要特别注意,很多老式USB转TTL模块最低只支持3.3V,这种时候只能换支持1.8V的芯片或加电平转换。别问我为什么知道这么多,问就是曾经烧过板子。
6.2 电平转换电路的分级方案:上拉、BSS138、专用芯片
单端逻辑之间的电平转换,按可靠性从小到大有三种方案。
第一种是上拉电阻。适合信号速率不高、方向固定的开漏或弱驱动力输出,比如某些芯片的漏极开路引脚需要上拉到较高电压。它的缺点是上升沿受RC时间常数限制,速率一高波形就塌。第二种是BSS138或类似MOSFET组成的双向电平转换电路,网上俗称“I2C电平转换神器”,核心是利用MOS管的体二极管和栅极控制实现双向导通。它适合I2C、UART等慢速双向信号,优点是便宜、简单,缺点是导通电阻大、不适合高速单端信号。第三种是专用电平转换芯片,比如TXB0108、TXS0108E、SN74LVC8T245、PCA9306之类,速度、驱动能力、ESD防护都更规范,双向或者单向都有对应型号。项目里只要空间和成本允许,我一般直接上专用芯片,省心。
芯片选型时注意一个细节:很多电平转换芯片是“方向可控”的,OE引脚和DIR引脚方向接反,数据流就直接断了。我自己的习惯是画原理图时在方向引脚旁边标注清楚“高电平方向为A->B”之类的注释,避免PCB回来后对着示波器发呆。
6.3 三种常见高速转换场景的接线要点
场景一,RGB转LVDS点屏。把TTL/CMOS电平的RGB信号转成LVDS差分对,需要专用转换芯片如DS90C363、MT8090一类。接线时除了RGB数据、时钟、使能信号,还要注意电源和地平面尽量干净,LVDS差分对按100Ω差分阻抗走线,等长等距。如果屏幕花屏,先看PCLK频率有没有超过芯片上限,再看LVDS的mapping格式和数据位宽跟屏规格书是否一致,这两个问题我各踩过一次。
场景二,FPGA接LVDS ADC或者LVDS屏。FPGA侧要启用LVDS IO标准,用差分引脚,并检查Bank电压是否满足共模要求。如果FPGA输出的LVDS需要交流耦合到接收端,考虑接收端是否支持内部偏置,不支持就加偏置网络。
场景三,高速时钟用LVPECL输出接LVDS输入。这种最好直接选支持LVPECL转LVDS的时钟缓冲器,比如先经过AC耦合电容再配合等效端接网络。千万不要把LVPECL输出直接怼进LVDS输入,共模差太多,轻则识别失败,重则损伤接收端。
芯片选型时注意一个细节:很多电平转换芯片是“方向可控”的,OE引脚和DIR引脚方向接反,数据流就直接断了。我自己的习惯是画原理图时在方向引脚旁边标注清楚“高电平方向为A->B”之类的注释,避免PCB回来后对着示波器发呆。
6.3 三种常见高速转换场景的接线要点
场景一,RGB转LVDS点屏。把TTL/CMOS电平的RGB信号转成LVDS差分对,需要专用转换芯片如DS90C363、MT8090一类。接线时除了RGB数据、时钟、使能信号,还要注意电源和地平面尽量干净,LVDS差分对按100Ω差分阻抗走线,等长等距。如果屏幕花屏,先看PCLK频率有没有超过芯片上限,再看LVDS的mapping格式和数据位宽跟屏规格书是否一致,这两个问题我各踩过一次。
场景二,FPGA接LVDS ADC或者LVDS屏。FPGA侧要启用LVDS IO标准,用差分引脚,并检查Bank电压是否满足共模要求。如果FPGA输出的LVDS需要交流耦合到接收端,考虑接收端是否支持内部偏置,不支持就加偏置网络。
场景三,高速时钟用LVPECL输出接LVDS输入。这种最好直接选支持LVPECL转LVDS的时钟缓冲器,比如先经过AC耦合电容再配合等效端接网络。千万不要把LVPECL输出直接怼进LVDS输入,共模差太多,轻则识别失败,重则损伤接收端。
最后说一个我自己的习惯。设计任何接口前,我会先把两端器件的datasheet里High-Level Input Voltage和Low-Level Input Voltage以及输出驱动结构圈出来,算一遍噪声容限和直流通路,再决定要不要加转换、要不要加交流耦合。这一步花不了十分钟,但能省掉后面大量排错时间。另外就是电路板打样回来后,一定要拿示波器看真实波形,不要只看逻辑分析仪的0和1。一次我遇到LVDS图像花屏,万用表和逻辑分析仪都查不出问题,示波器一挂差分探头,眼图明显塌了,最后发现是参考平面被过孔群切断。电平标准说到底是一套物理契约,参数表背得再熟,都不如亲自把波波头的针尖怼到焊盘上看一眼来得踏实。