第二章:USB物理层基础
学USB测试,第一关就是搞懂物理层。很多人一上来就盯着协议分析仪看包,结果信号质量不行,啥都白搭。我做了这么多年测试,有个深刻体会:物理层是USB的根,根不牢,地动山摇。
这一章,咱们把差分信号、电压摆幅、阻抗匹配、终端电阻还有信号编码这些底子活儿,一次说透。
2.1 差分信号——为什么是它?
USB为什么用差分信号,而不是传统的单端?说白了,就是扛干扰能力强。你想想,一根线传数据,外面来点电磁干扰,信号就变了。但差分信号用两根线,一根传正,一根传负,干扰来了两根线一起变,接收端一相减,干扰就被抵消了。
我在项目中遇到过最典型的问题:客户说他们的USB 2.0设备偶尔丢包,我一看PCB走线,D+和D−两根线走了不同的层,长度差了好几毫米。差分信号讲究的就是对称,你不对称,共模干扰就滤不干净。
| 对比项 | 单端信号 | 差分信号 |
|---|---|---|
| 抗干扰能力 | 弱 | 强(共模抑制) |
| 电压摆幅 | 大(3.3V/5V) | 小(USB 2.0约400mV) |
| EMI | 高 | 低 |
| 布线要求 | 相对宽松 | 严格对称 |
2.2 电压摆幅与终端电阻
USB 2.0的差分信号电压摆幅,低速和全速是0V到3.3V(单端),高速则是400mV(差分峰值-峰值)。为什么会变小?因为速率上去了,电压摆幅大了功耗和EMI都受不了。
接收端怎么知道信号是“0”还是“1”?这就要求终端电阻匹配。USB 2.0的高速模式,D+和D−对地要接45Ω的电阻(实际是集成在收发器里的),而且在主机端还有Rterm(终端电阻)做匹配。我在调试一块USB 3.0的板子时,发现信号反射特别严重,最后查出来是终端电阻的精度只有5%,换成1%的电阻,眼图立刻干净了。
- 低速/全速:终端电阻在主机端是15kΩ下拉,设备端是1.5kΩ上拉。
- 高速:主机和设备各自的D+/D−都要接45Ω到地。
- USB 3.x/4:差分阻抗要求是90Ω±15%。(推荐控制在±5%以内)
2.3 阻抗匹配——信号完整性第一课
阻抗匹配,说白了就是让传输线的阻抗和驱动端、接收端的阻抗保持一致。如果不匹配,信号走到阻抗突变的地方就会反射。反射回来的信号跟原信号叠加,眼图就会出现“眼皮”变厚、抖动加大。
举个例子:USB 2.0高速要求差分阻抗是90Ω±15%。我习惯留余量,设计时按90Ω±5%来算。为什么?因为PCB生产有公差,你卡着15%做,量产一波动就超标了。
// 计算微带线差分阻抗的近似公式(经验值,高频建议用场求解器)
// 介质高度 h,线宽 w,线间距 s,介电常数 εr
// 单端阻抗 Z0 ≈ 87 / sqrt(εr + 1.41) * ln(5.98h / (0.8w + t))
// 差分阻抗 Zdiff ≈ 2 * Z0 * (1 - 0.48 * exp(-0.96 * s/h))
2.4 信号编码——NRZI / 8b10b / 128b132b
信号不光要传出去,还要能同步。USB的编码方式经历了三代,我来捋一捋。
NRZI(不归零翻转编码)
这是USB 1.x和2.0低速/全速用的编码。规则很简单:遇到数据“0”就翻转电平,遇到“1”就不翻转。好处是没有直流分量,坏处是如果连续太多“1”,时钟就不同步了。所以USB规定每6位数据必须插入一个“0”来强制翻转。我刚开始学的时候总觉得这编码别扭,后来想想,其实就是为了省成本,不需要额外的时钟线。
8b10b编码
USB 3.0用了这种编码。8位数据变成10位发送,多出来的2位用来保证直流平衡和足够的翻转密度。代价是20%的带宽损耗,但换来更好的信号质量。我记得第一次看8b10b的编码规则时头都大了,后来做了一次眼图测试,对比NRZI和8b10b的抖动,8b10b明显干净很多。
128b132b编码
USB 3.1 Gen2和USB4用的是这个。128位数据只加4位校验,编码效率高达96.97%,比8b10b高多了。但实现复杂度也上去了。我在测试USB4信号时发现,128b132b对时钟恢复的算法要求很高,如果锁相环(PLL)不够好,容易失锁。
| 编码类型 | 效率 | 使用标准 | 特点 |
|---|---|---|---|
| NRZI | ≈80% | USB 1.x / 2.0低速/全速 | 简单,需位填充 |
| 8b10b | 80% | USB 3.0 / 3.1 Gen1 | 直流平衡好,20%开销 |
| 128b132b | 96.97% | USB 3.1 Gen2 / USB4 | 高带宽利用率,编解码复杂 |
2.5 一张图串起物理层逻辑
下面这张图,把USB物理层的核心要素串在一起。从发送端的编码,到差分对传输,再到终端匹配和接收端的解码,环环相扣。
这张图里有个关键点我想强调:终端电阻和阻抗匹配不是一回事。终端电阻是物理器件(比如45Ω电阻到地),阻抗匹配是传输线的特性。两者必须协同,才能让信号干净地到达接收端。我在测试中见过不少设计,终端电阻用的很标准,但PCB走线的阻抗没控制好,结果眼图照样不合格。
2.6 本章小结
USB物理层看似啰嗦,但抓住三个核心点就行:
- 差分对:等长、同层、紧耦合,这是基本功。
- 阻抗:90Ω差分阻抗要留裕量,别卡着15%的边。
- 编码:不同版本差异大,测试时先看清是NRZI、8b10b还是128b132b。