做硬件这几年,我发现一个挺有意思的现象:刚接触电路的人,往往把"信号"想得过于简单。一根线,要么高要么低,要么凹下去要么凸起来,拿示波器一戳就能看,可一旦遇到长线传输、高速接口、EMC整改这些场景,就发现单端信号、差分信号、共模信号、差模信号这几个基础概念,其实是所有疑难杂症的起点。甚至很多工作三五年的工程师,看到共模和差模还是容易混。
这篇文章我就用实际调试设备的思路,把这四种信号从头到尾捋一遍。不只讲定义,更会讲它们之间怎么换算、怎么测量、对PCB Layout有哪些要求,以及RS-485、CAN、USB、LVDS这些常见总线为什么如此选型。文章里会有不少我从项目中摸索出来的经验,特别是示波器测差分、共模电感该不该加、长线通信乱码排查这几块,希望能帮到正在搞硬件或嵌入式开发的朋友。
1. 先从"电压是相对的"说起:单端信号的工作原理与实际局限
1.1 单端信号的底层逻辑与参考地假设
要理解单端信号,先要建立一种意识:电压不是一个绝对概念,而是两个点之间的电位差。单端信号,是信号线相对于一个固定参考点,通常是系统地(GND)的电压。单片机GPIO输出的3.3V,就是IO引脚相对GND的3.3V;万用表测电池电压,也是把负极当0V参考点。这种"一对一地"的表达方式,是数字电路和大部分模拟电路的家常便饭。
但这里有个非常容易忽略的假设:我们把参考地当成处处0V的理想电势点。实际PCB上,地线是有电阻和电感的,当信号电流和系统其它电流一起流经地平面,地平面不同位置之间会出现电压差,这个压差直接叠加在接收端的输入电压上。换句话说,单端信号好不好,一半取决于信号线上的电压,另一半取决于"参考地是否干净"。
1.2 单端信号为什么会"翻车":地弹、环路与噪声耦合
单端信号在下面几种情况最容易出现问题:
- 地弹(Ground Bounce):当多个输出同时由高电平跳变到低电平,瞬态电流通过地引脚电感回到系统地,会在芯片内部和PCB地之间产生一个短暂电压尖峰。这个尖峰让总线上所有对外输出的电平阈值都出现偏移,严重时接收端会把低电平误判成高电平。
- 地环路面积过大:信号从发送端到接收端,电流一定有回流路径。如果回流走的是绕远的地线,或参考平面不连续,信号路径和返回路径之间围出的环路面积会变大。环路形状如同一根天线,既容易接收外界电磁干扰,也容易向外界辐射。环路面积越大,天线效果越明显,传输距离越远、速率越高,问题越严重。
- 参考电平漂移:远端设备的地参考和近端设备的地参考之间如果有压差,接收端看到就不再是发送端那种漂亮的波形。典型例子是两个独立供电的设备用UART直连,电源地线压差1V,那么发送端的3.3V逻辑到接收端可能只剩下2.3V,如果接收芯片的输入阈值高一些,通信就失灵了。
我遇到过最典型的单端翻车案例,是一台设备通过半米长排线与另一块控制板通信,板上有一颗继电器在动作。继电器每一次吸合,SPI数据都会偶发错包。用示波器抓CS线,能看到继电器动作瞬间,地线上有接近1V的毛刺,SPI时钟线也叠加了同样的噪声。后来把数字地重新规划,让SPI信号和地回流路径贴在一起,并把回路线缩短、加宽,错包现象就消失了。整个过程中单端信号本身没变,变的是"参考地"的稳定性。
1.3 单端信号依旧不可替代的原因
那为什么在很多板级通信里,我们还在大量使用单端信号?因为单端在短距离、低速率、低成本的场景下,性价比碾压任何差分方案:
- 省引脚、省线宽:一个信号只需要一根线,I/O资源和PCB空间占用少;
- 电路简单:驱动端用普通推挽输出,接收端用施密特触发器或比较器就行,不需要专门接口芯片;
- 功耗低:不需要维持一对常互补的逻辑。
单片机内部的外设、板上UART、SPI、I2C,以及DDR的数据线DQ,都是单端信号。DDR的地址/命令/数据线跑了很高频率仍然是单端,是因为设计者通过等长布线、匹配参考平面、时钟/数据训练等手段,把参考地各种误差限制在了可控范围内。相反,只要走上长线、走进恶劣电磁环境,或者速率继续往上升,人们就开始转向差分信号。
2. 差分信号的"减法原理":为什么高速总线几乎都选它
2.1 双线依偎的结构,第一层抗噪逻辑
差分信号最简单的描述是:用两根导线传递一个信息,其中一根上的电压与另一根关于某个参考点互为镜像。接收端看的不是任何一根线对地的电压,而是"正端"和"负端"之间的电压差。
发送端在D+线上输出Vcm+ΔV/2,在D-线上输出Vcm-ΔV/2,其中Vcm是共模偏置,比如2.5V的USB或1.2V的LVDS;ΔV是差分摆幅,可能只有几百毫伏。接收端只关心ΔV = V+ - V-。LVDS的典型差分摆幅只有350mV,却能在几个Gbps下稳定传输,原因就在这套结构里蕴藏的抗噪逻辑。
2.2 减法为什么能把共模干扰"抵消"掉
这里的关键不在于"两条线相位反了",而在于"两条线挨得非常近,外界干扰对两条线的作用几乎相同"。电磁干扰在差分线上感应的电压,通常同时、同向、同幅地落在两条线上。
如果接收端取V+ - V-,这部分同向分量在相减环节就被消掉了。这就是共模噪声的抑制原理,也是为什么差分线必须紧耦合地成对走线,而不只是任意两根线。低频段可以用双绞线让两条线对干扰的几何位置充分平均;PCB上要求等距、等长、同参考平面,目的也是一样——让干扰在两条线上获得最大的"对称性"。
需要注意,现实中的差分接收端(差分放大器或接口芯片)并非无限共模抑制。它有一个指标叫CMRR(共模抑制比),通常用dB表示。CMRR越高,放大器对两端输入中共模电压的处理越一致,差模输出中残留的共模分量就越少。实际PCB上等长、等距做得越差,接收端眼图里反映的共模噪声残留就越明显。
2.3 接收端如何将差模电压还原成数字逻辑
典型的差分接收器结构是:两路输入进入一个差分放大器或比较器,输出的是两者之差对应的逻辑电平。
以RS-485为例,A相对于B的电压差大于+200mV时,接收器判为逻辑1;小于-200mV时判为逻辑0。这中间的滞回窗口,本身就具有很强的抗干抗能力。CAN总线则规定:CAN_H约3.5V、CAN_L约1.5V时,差分电压约2V,该状态为显性;两条线都在2.5V,差分电压几乎为0V时为隐性。整个总线依靠显性和隐性的仲裁抢占机制工作。
由于接收器和收发器内置了较强的共模抑制能力,使用单端方案时最让人头疼的"地电位差"在这里基本失效了。哪怕设备A和B之间地电位差了好几伏,只要没超过收发芯片允许的共模输入范围(比如RS-485芯片通常允许-7V到+12V),A-B的差值依然能明确读出。这也是差动传输能长距离工作的根本原因。
3. 共模与差模:两个容易混淆的"干扰模式"拆解
3.1 用公式把任意两根线拆成共模+差模
在讨论差分时,经常把"共模电压"和"差分电压"挂在嘴边。其实不光是差分线,任何两根导线(两个节点)之间的电压,都可以严格拆成共模和差模两部分:
- Vcm = (V1 + V2) / 2
- Vdiff = V1 - V2
反推可得:V1 = Vcm + Vdiff/2,V2 = Vcm - Vdiff/2。
这套数学很简单,但它给理解带来很大帮助。一对差分线上的"真信号"是Vdiff,而Vcm往往是系统为了适配接口电平而设置的偏置,大部分情况下是干扰的"宿主"。当外部电磁场同时影响两根线时,Vcm里混入噪声;当接收端做减法时,Vdiff里的共模噪声分量被消掉。
举个实际例子:CAN总线静态时CAN_H和CAN_L都是2.5V。用万用表测"CAN_H对地"是2.5V,"CAN_L对地"也是2.5V,这2.5V就是共模偏置;两线之间的电压约0V,说明差模分量接近0。通信时,差模分量被拉起来,显性状态下Vdiff约2V。所以维修CAN总线时看两线对地电位只能判断供电和物理层是否正常,真正决定逻辑定义的是两根线之间的差值。
3.2 共模干扰从哪里来:地环路与对外电场
共模干扰的本质,是两条线上同时、同向出现的干扰电压。产生机制主要有三类:
- 地电位差:两台设备相距较远,各自接地之间的电位并不相同。这部分电位差通过信号线形成回路,等效地抬升了整条总线的共模电压。
- 地环路感应:当系统存在多个接地点,信号地和保护地形成闭环,周围的交变磁场在环路上感应出电动势,这个电动势会以共模形式串进接口电路。
- 空间耦合:外部强电场或强磁场同时作用在两根信号线和它们的回流路径上。
共模干扰的特点是不容易被普通滤波电容吸收,因为电容对"共模回路"而言,往往没有直接的回流通道。常规对策是:隔离(光耦、数字隔离器、隔离电源)、共模扼流圈、屏蔽层单端接地。关于共模扼流圈,后面会细说。
3.3 差模干扰从哪里来:电流环路与源端抑制
差模干扰对应的是两条线之间的电压差或电流差,它沿着正常信号路径传播,和信号本身是"同一种东西"。差模干扰主要来源是电路内部:
- 开关电源中高频开关回路的脉冲电流;
- 继电器、电机、感性负载通断时产生的瞬态冲击;
- 大功耗芯片在翻转时产生的同步开关噪声。
差模分量以电流环路为媒介辐射。环路电流产生磁场,环路面积越大,辐射越强;同时外部电磁场也会在环路中感应出差模噪声。控制差模干扰的重点,是减小电流环路面积、在源端或接收端加高频滤波、对开关节点做缓冲吸收,以及让强干扰信号源远离敏感信号线。
EMC整改时区分共模和差模有很实际的用途。辐射超标时,如果先判断是共模主导还是差模主导,整改方向就完全不同:共模通常靠斩断地环路、加共模电感、处理电缆屏蔽解决;差模则要看PCB环路面积、布局叠层、电源滤波。方向选错了,只会越改越痒。
4. 真实总线里的信号模式选择:UART、RS-485、CAN、USB、LVDS的取舍
4.1 长距离传输的老牌差分方案:RS-485与CAN
RS-485可以说是差分信号最经典的教学案例。两线制,使用双绞线,差分电压判断逻辑,最大传输距离可到1200m,总线上最多挂32个标准负载(加上中继和扩展,可更多)。它允许总线两端地平差在-7V到+12V范围内,所以工业现场设备之间哪怕地电位差几伏甚至十几伏,只要在范围内,通信依然可靠。
与之相似的CAN总线,物理层也是差分总线。CAN_H和CAN_L在显性时产生约2V的差分电压,隐性时差分电压接近0V。CAN的差分结构让它具备较强的抗干扰能力,适合用在汽车、工业控制这类电磁环境恶劣的场合。两者通常都需要在总线两端加120Ω匹配电阻,来吸收反射、保证信号质量。
这些长线场景为什么不考虑单端?因为长线意味着地电位差不齐、电磁干扰多、环路天线面积大,单端信号难以同时处理以上问题。差分的减法原理和抗共模能力,在这里几乎是为长线传输量身定做的。
4.2 高速消费接口为什么也全走差分:USB、HDMI、以太网、LVDS
高速方向的答案同样离不开差分。USB的D+/D-、HDMI的TMDS差分对、以太网的4对差分磁接口、PCIe/SATA的串行差分线、LVDS显示接口,这些大家日常使用的接口,物理层几乎清一色差分。
为什么高速不坚持单端?原因有三点:
- 低摆幅、低功耗:差分信号只要几百毫伏摆幅就能可靠接收,单端要达到同样抗噪能力,往往需要更大压摆,功耗随之上升;
- 抗地对准干扰:高速系统里的地平面噪声非常严重,差分对可以通过减法把共模部分抑制掉,而单端没有任何"抵消"机制;
- 时钟恢复更容易:高速串行差分信号可以采用LVDS或CML等电平标准,配合内嵌时钟和均衡技术,让接收端能恢复非常小的差分信号。
LVDS最典型:350mV左右的差分摆幅,3.5mA电流,在100Ω端接电阻上产生电压,功耗远低于TTL/CMOS单端。这也是为什么笔记本电脑到屏幕、嵌入式系统到LCD面板的信号传输大量采用LVDS或它的升级版FPD-Link、eDP。
4.3 一张权衡表:什么时候继续用单端
那是不是差分越猛越好?当然不是。差分要在PCB上占用两倍布线空间,还要加接口芯片、端接电阻、共模电感,成本比单端高出一截;低速板上通信用差分,是"杀鸡用牛刀"。判断依据大体是这样一张表:
| 维度 | 选单端 | 选差分 |
|---|---|---|
| 传输距离 | 板内短距离(20cm以内) | 超过半米或跨设备 |
| 速率 | 几十Mbps以下 | 几十Mbps以上 |
| 干扰环境 | 相对干净 | 电机、电源噪声、雷电感应多 |
| 成本要求 | 严格,数量大 | 可接受接口芯片成本 |
| 总线多挂 | 少设备 | 多设备长距离 |
DDR数据总线是个有趣的中间态:数据线DQ为单端,但时钟CK和选通DQS都用差分。单端数据线通过Vref参考电压和大量的时序校准来保证可读。这个混合方案的目的是节省引脚、降低功耗,代价是布线和控制器校准逻辑非常复杂。普通项目没有这么强的设计能力,还是按规律走比较稳妥。
5. 示波器上如何正确"看见"共模与差模?
5.1 普通探头测差分,常见错误与危害
很多工程师习惯把手头两根普通探头同时搭在不同信号线上,让示波器做A-B运算,以为这就测出了差分信号。这叫"伪差分"测量,确实能用,但有几个显眼陷阱:
- 两个探头的"地线夹"都把探头地接到示波器地壳,如果被测系统没有隔离,探头地线的接入相当于给系统加了一条额外的地回路,可能改变电路工作状态;
- 两条探头路径不可能完全一致,前端带宽、延迟稍有差异,高频下A-B运算会残留误差;
- 共模电压如果超过示波器输入范围,通道可能损坏。
还有更危险的:测量浮地电路(比如没有隔离的开关电源初级侧)时,如果把普通探头地线夹到电路里的"非地"节点,等于将电路与示波器地短路,轻则炸探头,重则烧板子。
5.2 正确测差分信号的常用操作
预算充足时,直接上差分探头或隔离探头,这是最稳妥的方案。差分探头内部是两个放大器做减法输出,输入端不需要接地,能直接测量"悬空"的两点电压,抗共模能力由探头CMRR决定。高压差分探头(如100:1或1000:1)还专门处理开关电源这类高压浮地测量。
预算有限时,可以用两路普通探头配合A-B数学功能,但必须遵守几条规定:
- 两个探头最好同一型号、同一衰减比,开启探头偏斜校正(Deskew)功能;
- 两个地线夹尽量短,且接到同一个干净的参考地;
- 只能测量共模电压在示波器安全范围内、且系统与示波器共地的信号;
- 不要在电机驱动、开关电源主回路这类浮地高压电路上用伪差分。
如果想观察共模噪声的成分,可以先把两路相对地电压测出来,再用示波器数学功能算(V1+V2)/2。这个结果就是共模分量;而V1-V2就是差模分量。我调试USB D+/D-眼图时,就经常用这种"数学拆解"的方式,快速判断噪声到底是线路参考地波动引起的,还是差分布线/端接失配引起的。
5.3 我在实际测量中踩过的三个坑
第一,探头偏斜没校准。曾经测一对DDR差分DQS信号,看到眼图上有严重的红绿闪动,第一反应是布线有问题,结果换了短路模块做Deskew之后,波形立刻清爽。差别就在两根探头之间相位差,几十皮秒的延迟在高频差分测量中会直接表现为共模被放大,进而污染差模结果。
第二,靠"长地线夹"测量高dv/dt节点。地线夹拖了太长,在探头上形成了一个小环路天线,开关节点的高频干扰在上面感应出振铃,读数完全失真。后来我把地线夹剪短,波形才接近真实。
第三,拿万用表量CAN总线,发现两根线都是2.5V就以为没有信号,差点把正常的总线当成故障。其实那是隐性状态,两条线都2.5V就是标准。把"共模偏置"和"差模信号"区分清楚,才知道测量工具该看哪个指标。
6. PCB布局让差分原理落地:差分对布线、共模电感与端接整改经验
6.1 等长、等距、参考平面连续,是所有差分对的"地基"
前面讲了差分靠减法抗共模,但这个减法的前提是,两条线对外界干扰的感应程度尽可能一样。所以PCB上差分对的核心要求就三句话:
- 等长。两条线的物理长度差要控制在很小范围内。长度失配会导致两条线上的差分信号不同步,接收端看V+ - V-时,会把一部分差模信号转换成共模,降低抗扰能力。
- 等距。同一对差分线,间距要尽量恒定。因为差分阻抗主要由线宽、线距、层叠结构决定,线距变了,阻抗就跳变,反射随之而来。
- 参考平面连续。差分线必须有一块完整的地(或电源)参考平面,保证返回电流通路低阻抗且连续。分割槽跳过平面,信号完整性直接崩。
对DDR这类高速单端总线,等长和参考平面同样重要,但差分对由于抗噪依赖对称性,对称要求的优先级更高。
6.2 转角、过孔与过孔处理的细节
走线拐角尽量用45度角或圆弧,避免锐角。锐角不只是工艺问题,它会局部改变线宽容差,也会引起阻抗微小变化。过孔方面,差分对的两个过孔最好成对打、对称打,并尽量靠近信号换层位置;过孔会带来明显的寄生电容和阻抗不连续,能用盲埋孔/VIA-in-pad优化就优化。过孔反焊盘的参数、残桩长度都会影响高速信号质量。
6.3 端接电阻和共模电感什么时候必须上
差分总线的端接电阻不是摆设。RS-485/CAN总线两端各接一只120Ω终端电阻,作用是让总线特征阻抗匹配,防止信号在末端反射;差分接收器的反射信号不仅影响本节点,还会沿总线反弹恶化其他节点。USB、以太网、LVDS等高速差分也都内置或外部加终端。
共模电感(Common Mode Choke)则专门对付共模干扰。它的结构是两根线同向绕在一个磁环上:差模电流在磁芯中产生方向相反的磁通,互相抵消,所以对差模信号几乎不产生阻抗;共模电流在磁芯中方向相同,磁通叠加,呈高阻抗,从而把共模噪声"挡"下来。
到底加不加,加在哪里,我奉行的原则是先看测试数据和现象:
- 如果产品在辐射发射测试中有高频共模超标,多半总线上有共模电流在电缆上形成发射天线,此时在连接器出口加共模电感,通常立竿见影;
- 如果现场通信偶发错误,且确认是地电位差不稳定导致的共模干扰,加共模电感的同时,最好再评估隔离方案;
- 如果是单纯差模问题,比如布线环路大、端接失配,加共模电感基本没用,改了再去测,反而掩盖了根因。
6.4 一个RS-485长线通信整改的真实过程
我处理过一个项目:厂房A的控制柜与厂房B的监控屏,用RS-485走100多米的屏蔽双绞线,波特率9600bps。现场反映一天发生几次通信超时,尤其在附近有大功率变频器启动时。
排查思路是这样的:先用差分探头在接收端量A/B之间的波形,发现正常时波形还能接受,但变频器动作时,波形上出现持续几百微秒的共模干扰包络,差模部分被压得低于200mV阈值。再用普通探头测A对地、B对地,发现两者几乎同时被抬高了接近2V,判断为共模干扰为主。
整改动作最后是两个方向同时进行:
- 把屏蔽层改为只在控制柜端单点接地,避免屏蔽层两端接地形成更大的地环路;
- 在两端信号入口各加一颗RS-485专用共模电感,同时保证总线两端120Ω端接完好。
加完以后,变频器反复启停测试,连续跑了几周再没出现通信中断。这个案例里,如果没有先分清共模和差模,而是盲目加大端接、改布线,可能折腾很久都找不到根因。
写到这里,我想起刚入门时排查CAN通信故障的那次经历。当时拿着万用表量CAN_H和CAN_L对地,两根线都约2.5V,下意识以为没有信号,差点把正常的总线当成故障。直到前辈提醒我,这两个电压是共模偏置,真正的信息在两根线之间。从那天起,我再看到"单端、差分、共模、差模"这几个词,都会多问自己一句:我关心的到底是相对地的量,还是线间的量;我遇到的问题,根源是参考地不稳、共模回路,还是差模环路。差别的是定义,想清楚的是问题。希望这篇分享,对你有同样的帮助。