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 ps10%-90%
接收端容差± 0.25 UI即 ±50 ps 抖动容限
我踩过的坑: 有一次项目为了省过孔,把差分对从顶层到底层打了三个过孔。结果眼图测试直接挂了。后来查就是因为每个过孔带来约 1.5 pF 寄生电容,三个加一起把信号边沿削没了。所以过孔数量能少就少,能不打就不打。

1.3 预加重与去加重

USB 3.0 的发射端有预加重,接收端有去加重。说白了就是为了对抗高频损耗。高频分量衰减比低频快,预加重就是先把高频分量提前抬一抬,等跑到接收端刚好平坦。我刚开始做的时候以为这是可选项,后来发现不配置预加重的话,长线(比如 20 cm 以上)根本过不了合规测试。

预加重的典型设置:

  • 预加重幅度:+3 dB ~ +6 dB
  • 去加重深度:-3 dB ~ -6 dB
  • 这两个值通常在芯片的寄存器里配,不用你自己搭电路
我的习惯: 仿真阶段就把预加重打开,设为 +3.5 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 信号完整性最关键的三个点

  1. 阻抗连续——换层、过孔、连接器都是阻抗突变点,每个突变都会反射。反射回来的能量叠加到原信号上,眼图就变小。
  2. 损耗预算——USB 3.0 的规范给的是接收端眼图高度至少 100 mV,宽度至少 0.2 UI。PCB 走线、连接器、电缆都会损耗信号。你算算总损耗不能超过 10 dB(一般在 6 dB 以内安全)。
  3. 抖动控制——总抖动不能超过 0.5 UI。电源纹波、串扰、码间干扰都会增加抖动。我见过最头疼的是电源去耦没做好,100 mV 的 VTTRipple 直接让眼图宽度缩了 0.1 UI。
千万不要: 在差分对内走线的长度差超过 5 mil。我亲眼见过一条板子因为等长没控好,5 mil 的差距转化成了 0.8 ps 的时延差,结果共模转换出来的 EMI 直接导致 FFC 线缆辐射超标。走线等长是基本功。

1.6 一张图看懂 USB 3.0 信号链路

下面这张 SVG 画的是 USB 3.0 从芯片到接头的全链路。每个节点都是一个潜在的信号完整性问题点。我把关键参数直接标在图上,方便你对照。

USB 3.0 信号链路与关键参数 发射端(TX) 预加重 +3dB 差分对 100Ω 最长建议 15cm 过孔 寄生电容 ~1.5pF 连接器 插损 ≤0.5dB USB 3.0 线缆 衰减 ~3dB@2.5GHz 接收端(RX) 去加重 -3dB 链路损耗预算快速估算 发射端输出摆幅(典型) 1.0 Vpp - 走线损耗(15cm, FR4) 约 3.5 dB - 连接器 + 过孔损耗 约 1.5 dB - 线缆损耗(1m 短缆) 约 2 dB 接收端实际摆幅 约 0.45 Vpp(裕量 OK)

1.7 关于抖动,说个真事

我曾经调试一块板子,眼图总是有个缺口,怎么改线宽、改过孔都不行。后来发现是板上的 3.3V 电源纹波太大,50 mV 的 ripple 耦合进了 PLL 的 VCO,导致随机抖动(RJ)多了 8 ps。换了个 LDO,问题就消失了。所以后来我做项目都会在电源设计阶段留一版去耦电容的余量。抖动这东西,根源往往不在信号线上,而在电源上。