USB物理层基础:差分信号、电气特性、终端匹配、眼图测试

做USB调试,第一关就是物理层。协议分析、链路训练、故障定位,说到底都得回到最基础的物理信号上去。我见过太多人拿着逻辑分析仪抓了半天的包,结果发现是焊点虚焊或者阻抗不匹配——说白了,白忙一场。

这一章,我们就把USB物理层的四个核心概念捋清楚。啃完这章,再去碰链路训练,你心里就有底了。

为什么用差分信号?

USB用的是差分信号传输。道理不复杂:两根线,D+和D-,数据靠两者的电压差来表达。

核心公式: Vdiff = V(D+) - V(D-)

逻辑“1”:D+比D-高 (高速模式下约400mV差)

逻辑“0”:D-比D+高

你可能会问,为什么不用单端?就一根线传数据,多省事?

我调过的板子里,单端信号最怕两件事:地弹和共模噪声。地线上稍微一蹦,电平参考点就飘了。差分信号不同,两根线紧紧捆在一起,外部噪声对它们的影响是大致相等的。看的是差值,不是值。噪声进来,差不变,信号照样通。

USB 2.0的高速模式下,信号电平只有400mV左右,非常脆弱。差分结构让它能在恶劣的电源环境中存活下来。这招,其实是从军工通信里抄过来的。

特性 差分信号 单端信号
抗共模干扰 强 弱
参考地依赖 弱 强
噪声容限 高 低
布线面积 稍大(2根线) 小(1根线)

实操提醒: 画USB走线时,D+和D-要尽量等长、贴近,这样共模噪声才能被有效抵消。我见过一片板子,差分对之间走了个过孔,结果眼图直接闭合,重新打样才搞定。

电气特性:你不能只看波形

USB物理层的电气参数非常苛刻。很多人以为USB是5V系统,逻辑是TTL电平——实际上完全不是那么回事。

USB 2.0低速/全速模式下,信号幅度确实是0到3.3V左右,但它靠的是端接电阻的分压。高速模式下,信号幅度只有大约400mV。你把示波器探头一挂,看到的是个小小的、摆幅很小的波形。千万别觉得它不对劲——它就是设计成这样的。

参数 高速(480 Mbps) 全速(12 Mbps)
信号摆幅 约 400 mV 峰峰值 约 3.0 - 3.6 V 峰峰值
终端电阻 45Ω 对地(D+和D-) 1.5kΩ 上拉至 3.0-3.6V
共模电压 约 200 mV 约 1.5 - 2.0 V
上升/下降时间 < 500 ps 4 - 20 ns

为什么高速模式下信号这么小?因为频率太高了。480Mbps,意味着每比特只有约2纳秒。如果信号摆幅还像全速那样3V猛跳,EMI辐射会严重超标,功耗也受不了。压低幅度,是为了换取速度。

避坑经验: 用示波器测高速USB信号时,要确保探头带宽至少1GHz,探头的接地弹簧要尽可能短。我曾经用一个500MHz的探头去抓高速USB眼图,波形严重失真,我以为板子坏了,排查了两天——结果是探头带宽不够,白费劲。

终端匹配:阻抗的“两头对接”

信号在传输线上跑,最怕遇到阻抗突变——一突变,信号就反射,反射回来和原信号叠加,波形就畸变了。USB链路的终端匹配,目的就是消除这种反射。

USB 2.0高速模式要求特性阻抗为45Ω(对地)。不仅仅是线要控制成45Ω,发送端和接收端也得匹配这个数。

你想想,一根特性阻抗45Ω的传输线,末端接了个90Ω的负载。信号到终点,看到阻抗变了,一部分能量被反射回去。回来再撞上源端45Ω,又是一次反射。来回折腾几次,信号质量就毁了。终端匹配,就是把负载端也做成45Ω,让信号觉得“一路通畅,没有反弹”。

具体的实现方式:在高速模式下,接收端内部会有45Ω对地的终端电阻。发送端也是45Ω,与传输线形成阻抗连续性。USB 2.0 Hub或主机端,通常内部已经集成好了匹配电阻,我们画板时只需要保证PCB走线自身的特性阻抗是45Ω±15%即可。

调试技巧: 如果USB信号眼图闭合或误码率偏高,先别急着怀疑协议层。用TDR(时域反射计)测一下链路的阻抗曲线。我曾遇到过一条DP走线被挖断后又补了一截飞线,TDR一看,阻抗从45Ω跳到了80Ω,反射异常明显。补那段线时没控制好长度和线宽,教训深刻。

眼图测试:看懂信号的质量

眼图,是评估数字信号质量最直观的手段。原理不复杂:把示波器设为无限余辉模式,用时钟或者数据边沿触发,把很多个比特的波形叠加在一起,就形成了“眼睛”的形状。

眼图里藏着的信号信息非常多。你从眼图上能读出:

  • 眼高: 信号的眼睛张开的高度,反映了噪声容限。眼高越低,信号越容易被噪声淹没。
  • 眼宽: 眼睛横向张开的大小,反映了时序抖动。眼宽越小,接收端越难正确采样。
  • 抖动: 看边沿的汇聚程度。如果边沿模糊、发散,抖动就大。
  • 过冲/下冲: 波形超出正常电平范围的部分,可能触发接收端误判。

USB规范对高速模式有明确的眼图模板(Mask)。模板定义了“眼睛”必须满足的最小区域——任何落在模板内部的波形,都是不合格的。

眼图指标 USB 2.0 高速标准 常见故障症状
眼高 ≥ 200 mV 阻抗不匹配、信号衰减
眼宽 ≥ 80% UI(单位间隔) 时钟抖动、串扰
过冲 ≤ 10% 反射、焊盘寄生电容
抖动(峰峰值) ≤ 10% UI 电源噪声、PLL抖动

眼图测试的条件: 眼图要测在连接器处,经过一定长度的线缆后,信号可能已经大幅衰减。建议在主机端和设备端分别采集。我见过一盘USB线,3米长时眼图完全合不上,供应商被我们现场要求退货。

USB物理层调试核心知识框架 USB物理层调试核心 差分信号 D+ vs D- 抗共模噪声 电气特性 信号摆幅 / 共模 上升/下降时间 终端匹配 45Ω 特性阻抗 消除反射 眼图测试 眼高 / 眼宽 抖动 / 模板 调试顺序建议 ① 确认差分走线等长/间距,满足45Ω特性阻抗(差分信号) ② 测量终端电阻是否正确接入(终端匹配) ③ 用示波器看共模电压和摆幅是否符合标准(电气特性) ④ 最后做眼图测试,验证信号质量和模板余量(眼图测试) 常见故障映射矩阵 故障:USB设备识别不稳定 → 测眼宽和抖动(高频噪声/电源) 故障:通信误码率上升 → 检查差分阻值、共模电压(终端匹配/电气)

眼图模板是固定的,但每个系统都有自己的裕量。如果你测出来的眼图紧贴着模板边界,说明系统已经在安全性边缘徘徊。稍微加点温度、老化或者噪声,就可能冒红。我一般的习惯是,要求至少20%的模板余量——眼高要比标准高20%,眼宽也要宽20%。达不到,就优化布局或加信号调理芯片。