1. USB 3.0 信号特性简介
做 USB 3.0 布线之前,得先把它的信号脾气摸清楚。
USB 3.0 的数据率是 5 Gbps,比 USB 2.0 快了将近 10 倍。速度一上来,很多在低速时不是问题的事,就成了大坑。我个人习惯是先看物理层参数,再动手布线,这样后面改板子的概率小很多。
1.1 到底快在哪里?
USB 3.0 用了两对差分线,一对发(TX),一对收(RX),全双工工作。每对数率是 5 Gbps,也就是一个 bit 只有 200 ps 宽。你想想看,200 ps 的脉冲,在 PCB 上跑也就 4 cm 左右就到头了。所以布线长度稍微长一点,反射、衰减、抖动全来了。
差分信号的好处我不用多讲——抗共模干扰、EMI 小。但差分阻抗必须控制在 100 Ω ±15%,这几乎是硬规矩。
1.2 关键电气参数速览
下面这张表是我每次做项目前必看的。不是我背不下来,而是给团队开会时直接扔出来省事。
| 参数 | 值 | 说明 |
|---|---|---|
| 数据速率 | 5 Gbps | 单通道 |
| 信号编码 | 8b/10b | 跑 5 Gbps,实际线速率是 5 Gbps,编码后有效数据 4 Gbps |
| 差分阻抗 | 100 Ω ±15% | 这个值丢了,眼图基本就闭了 |
| 摆幅(差分) | 800 mV ~ 1.2 V | 片内预加重可以调 |
| 上升时间 | ~80 ps | 10%-90% |
| 接收端容差 | ± 0.25 UI | 即 ±50 ps 抖动容限 |
1.3 预加重与去加重
USB 3.0 的发射端有预加重,接收端有去加重。说白了就是为了对抗高频损耗。高频分量衰减比低频快,预加重就是先把高频分量提前抬一抬,等跑到接收端刚好平坦。我刚开始做的时候以为这是可选项,后来发现不配置预加重的话,长线(比如 20 cm 以上)根本过不了合规测试。
预加重的典型设置:
- 预加重幅度:+3 dB ~ +6 dB
- 去加重深度:-3 dB ~ -6 dB
- 这两个值通常在芯片的寄存器里配,不用你自己搭电路
1.4 编码与时钟恢复
USB 3.0 用 8b/10b 编码,目的是保证 DC 平衡,也方便接收端从数据流里恢复时钟。8b/10b 把 8 bit 数据映射成 10 bit 码元,额外 2 bit 用来保证连续的 0 或 1 不超过 5 个。这样接收端的 PLL 就不会失锁。
为什么要说这个?因为编码会影响高频成分。5 Gbps 的线速率,最高基频是 2.5 GHz(1010 交替),但 8b/10b 以后,最坏情况是 5 个一样的 bit,相当于一个 1 GHz 的波形。所以布线时要保证在 1 GHz ~ 2.5 GHz 这个频段内损耗可控。
1.5 信号完整性最关键的三个点
- 阻抗连续——换层、过孔、连接器都是阻抗突变点,每个突变都会反射。反射回来的能量叠加到原信号上,眼图就变小。
- 损耗预算——USB 3.0 的规范给的是接收端眼图高度至少 100 mV,宽度至少 0.2 UI。PCB 走线、连接器、电缆都会损耗信号。你算算总损耗不能超过 10 dB(一般在 6 dB 以内安全)。
- 抖动控制——总抖动不能超过 0.5 UI。电源纹波、串扰、码间干扰都会增加抖动。我见过最头疼的是电源去耦没做好,100 mV 的 VTTRipple 直接让眼图宽度缩了 0.1 UI。
1.6 一张图看懂 USB 3.0 信号链路
下面这张 SVG 画的是 USB 3.0 从芯片到接头的全链路。每个节点都是一个潜在的信号完整性问题点。我把关键参数直接标在图上,方便你对照。
1.7 关于抖动,说个真事
我曾经调试一块板子,眼图总是有个缺口,怎么改线宽、改过孔都不行。后来发现是板上的 3.3V 电源纹波太大,50 mV 的 ripple 耦合进了 PLL 的 VCO,导致随机抖动(RJ)多了 8 ps。换了个 LDO,问题就消失了。所以后来我做项目都会在电源设计阶段留一版去耦电容的余量。抖动这东西,根源往往不在信号线上,而在电源上。