第2章 差分信号与电气特性

做USB的人,第一关就是搞懂差分信号。我记得刚入行时看过一块板子,D+走线绕了半个板子,D-直接拉直线——结果死活枚举不过。当时师傅丢给我一句:“差分对不是两根独立的线,是两口子,走哪都得一起走。”这话糙理不糙。

2.1 为什么是差分信号,不是单端?

你想想看,480Mbps的速度,信号上升沿才几百皮秒。如果用单端信号,稍微来点地弹噪声,接收端就懵了。差分信号用两根线互为参考,抗共模干扰的能力很强。

说白了:D+和D-上传输的是互补信号。接收端只关心两者的差值,不关心电平。哪怕地线上窜进来2V的噪声,只要两根线上窜得一样,差值不变,数据照收。

我早期测试中用过劣质USB线,共模噪声都超过200mV了,结果低速枚举没问题,高速模式直接掉线。这就是差分信号的优势——你给了它一个好环境,它自然跑得快。

2.2 电压摆幅:400mV vs 3.3V

这可能是新手最容易混淆的地方。很多人以为USB信号是0~3.3V跳变,实际上HS模式完全不是这样。

参数 USB 2.0 低速/全速 USB 2.0 高速(480 Mbps)
差分电压摆幅 3.3V 单端摆幅 400mV 峰值
传输方式 单端+差分混合 纯差分
电平标准 TTL 电平(0~3.3V) 低压差分

为什么高速跑这么低的电压?很简单——降低功耗、减少EMI、提高速度。电压摆幅小,信号翻转时充放电就快,能跑更高的速率。我在一个项目中看到有人硬是用3.3V的驱动力去跑高速时序,结果信号过冲超过500mV,把芯片的接收器直接打穿……嗯,从那以后我对400mV这数字特别敏感。

实际测量时你会看到D+和D-各自对地的摆动大约是200mV,合在一起形成400mV的差分摆幅。接收器通过一个差分放大器来恢复数据,精度要求很高。

注意:高速模式下的一对差分线,不是简单的一高一低,而是一个摆200mV、另一个摆-200mV(相对共模电平)。差值是400mV,这才是真正的信号。

2.3 终端电阻匹配——别小看45Ω

USB高速传输要求D+和D-各接一个45Ω的下拉电阻到地(标准值是45Ω,实际允许±5%偏差)。为什么偏偏是45Ω?

因为USB电缆的特性阻抗是90Ω(差分阻抗),每个单端看过去是45Ω。终端电阻的作用就是防止信号在电缆末端反射回来,把波形搞得乱七八糟。匹配了,信号干净;匹配不好,眼图闭合,误码率飙升。

我个人习惯:终端电阻必须靠近接收端,走线越短越好。曾经有一块板子把终端电阻放到了芯片背面,中间穿过两个过孔和一段3cm的走线,结果高速信号眼图都塌了。

// 终端电阻匹配的典型电路结构
//
//  发送端         电缆(90Ω差分)       接收端
//   D+ ————————  ————————————————— ———— D+
//   D- ————————  ————————————————— ———— D-
//                              45Ω ↓     45Ω ↓
//                              GND        GND

为什么没提到上拉?注意:高速模式下的终端是纯下拉,不再需要全速/低速模式下的1.5kΩ上拉电阻。这是很多人改设计时容易踩的坑。我见过一个团队移植代码时忘记关掉全速上拉,导致高速协商永远不成功,排查了两天才找到原因。

2.4 上升/下降时间要求

USB 2.0高速规范要求信号上升时间(Tr)和下降时间(Tf)都要在500ps到2ns之间,而且两者之差不超过100ps。太慢了会使信号眼图变窄,太快了会引入高频辐射和过冲。

实际调试中最常遇到的问题:

  • 上升过慢:驱动能力不足,或走线寄生电容太大
  • 下降过快:往往伴随振铃,需要串阻或调整驱动强度
  • Tr/Tf不匹配:共模噪声增大,信号畸变

你想想看,480Mbps的比特宽度约2.08ns,上升/下降时间就要占掉信号窗口的一半。留给建立时间和保持时间的裕量非常小。这就意味着PCB布线的寄生电感和电容必须严格控制,任何不匹配的地方都会变成高速瓶颈。

项目实测小技巧:用示波器测量差分信号时,把两个探头分别接到D+和D-,用数学函数做A-B运算,才能看到真正的差分波形。单端测是看不全的。

核心逻辑图

USB 高速差分信号传输核心逻辑 差分信号对 D+ / D- 电压摆幅 400mV 峰值 共模抑制抗干扰 终端电阻 45Ω 下拉匹配 消除反射,保持信号完整性 上升/下降时间 500ps~2ns Tr/Tf 差值 ≤100ps USB 2.0 高速模式(480 Mbps)可靠传输 ⚠ 注意:高速模式不使用 1.5kΩ 上拉电阻 终端电阻必须靠近接收端,走线不超过 2cm

2.5 实践中的避坑清单

这些年做USB调试,总结几个最容易忽略的地方:

  1. D+和D-等长设计。我习惯约束长度差不超过5mil,越短越好。不等长会导致信号偏斜,直接吃掉时序裕量。
  2. 终端电阻精度。千万别用5%的普通电阻,要选1%或者更精密的。45Ω差1%是0.45Ω,基本不影响;差5%就是2.25Ω,反射就开始明显了。
  3. 过孔要谨慎。每用过孔就要算一下阻抗突变,能少用尽量少用。曾经有一块板在D+上打了一个过孔、D-上打了两个,结果两边的延迟差了30ps,眼图直接闭合。
  4. 焊接质量。低温焊锡会改变电阻值,特别是终端电阻。我一般用自动化焊接,手工焊接的话要确认焊点均匀。
一句话记住本章:高速USB靠的是400mV差分小信号 + 45Ω精确匹配 + 皮秒级边沿控制。这三样缺一不可,每次调试我都先检查这三点。