3. USB3.x Gen1/Gen2/Gen3 的比特率与编码方式(8b/10b vs 128b/132b)

好,咱们来聊聊 USB3.x 的速率和编码。说实话,很多工程师搞了好几年 USB,对这几个 Gen 的区分还是模模糊糊的。我刚开始接触 USB3.0 的时候,也踩过不少坑。今天咱们就把 Gen1、Gen2、Gen3 的比特率和编码方式彻底理清楚。

3.1 三个 Gen 的比特率——别被名字骗了

先看一张表,一目了然:

USB 规范 市场名称 原始比特率 有效数据速率(估算) 编码方式
USB 3.2 Gen 1 USB 3.0 / SuperSpeed 5 Gbps ~4 Gbps 8b/10b
USB 3.2 Gen 2 USB 3.1 / SuperSpeed+ 10 Gbps ~9.2 Gbps 128b/132b
USB 3.2 Gen 3 USB 3.2 / SuperSpeed+ 20Gbps 20 Gbps ~18.5 Gbps 128b/132b

你看,Gen1 是 5Gbps,Gen2 是 10Gbps,Gen3 是 20Gbps。但注意了,Gen3 其实是用了双通道(x2),每个通道还是 10Gbps。说白了,Gen3 就是两个 Gen2 通道绑在一起跑。

核心要点:Gen1 和 Gen2 的物理层速率差了一倍,但 Gen2 和 Gen3 的物理层速率其实是一样的,都是 10Gbps 每通道。Gen3 只是多了一个通道。

3.2 编码方式:8b/10b vs 128b/132b

编码方式这东西,说白了就是「怎么把数据变成能在线上传输的信号」。我当年做第一个 USB3.0 项目时,对编码的理解只停留在「哦,8b/10b 就是 8 位数据变成 10 位嘛」。后来调试眼图的时候才发现,编码方式直接影响着你的信号质量和设计难度。

3.2.1 8b/10b 编码——老将出马

Gen1 用的是 8b/10b 编码。什么意思呢?就是每 8 位数据,要编码成 10 位符号来传输。多出来的 2 位干嘛用?用来保证 DC 平衡和提供足够的跳变沿。

  • 开销:20% 的编码开销。也就是说,5Gbps 的线速率,实际有效数据只有 4Gbps 左右。
  • 优点:DC 平衡好,有足够的时钟恢复信息,技术成熟。
  • 缺点:开销大,效率低。

我在项目中遇到过一个问题:Gen1 的 8b/10b 编码虽然成熟,但 20% 的开销在高速设计中其实挺心疼的。尤其是当你需要跑满带宽的时候,这 1Gbps 的差距就很明显了。

3.2.2 128b/132b 编码——后来居上

Gen2 和 Gen3 换成了 128b/132b 编码。每 128 位数据,编码成 132 位符号。多出来的 4 位是同步头,用来做块同步。

  • 开销:只有 3.125%!效率从 80% 直接提升到了 96.875%。
  • 优点:效率高,带宽利用率大幅提升。
  • 缺点:对时钟恢复要求更高,需要更复杂的 CDR(时钟数据恢复)电路。

我的经验:128b/132b 编码虽然效率高,但它的同步头只有 4 位。我曾经在调试一个 Gen2 链路时,发现链路偶尔会失锁。查了半天,原来是 PCB 走线太长导致信号抖动太大,CDR 无法正确识别同步头。后来加了一级 re-driver 才解决。所以,用 128b/132b 编码时,对信号完整性的要求比 8b/10b 高得多。

3.3 为什么 Gen2 要换编码?

你可能会问:既然 8b/10b 用得好好的,为什么 Gen2 要换成 128b/132b?

原因很简单:效率

Gen1 的 5Gbps 用 8b/10b,有效数据 4Gbps,还行。但 Gen2 到了 10Gbps,如果还用 8b/10b,有效数据只有 8Gbps,浪费了 2Gbps 的带宽。换成 128b/132b 后,有效数据能到 9.2Gbps 左右,多了 1.2Gbps。

你想想看,在高速设计中,每一点带宽都很宝贵。这 1.2Gbps 的提升,对于存储设备、视频传输这些场景来说,体验差别是很大的。

避坑指南:我曾经在选型时犯过一个错误。以为 Gen2 和 Gen1 只是速率翻倍,其他都一样。结果发现 Gen2 的 PHY 芯片比 Gen1 贵了不少,而且 PCB 设计要求也更高。128b/132b 编码对信号质量更敏感,你的走线、阻抗控制、去耦电容都得重新算。所以,别只看速率,编码方式决定了你的设计难度。

3.4 链路训练中的编码影响

编码方式还直接影响链路训练的过程。8b/10b 编码有专用的训练序列(TS1/TS2),而 128b/132b 编码用的是不同的训练模式。

我记得在调试一个 Gen2 链路时,发现链路训练总是失败。抓了协议分析仪一看,原来是发送端和接收端的编码方式没协商一致。发送端在发 128b/132b 的块,接收端却还在等 8b/10b 的符号。这种低级错误,嗯,说多了都是泪。

所以,链路训练的第一步,一定是先确认双方都支持同一种编码方式。Gen1 只能跑 8b/10b,Gen2/Gen3 可以向下兼容,但训练时得先握手。

3.5 知识体系图

下面这张图,把 USB3.x 的比特率和编码方式的关系梳理清楚了:

USB 3.x 比特率与编码方式关系图 USB 3.2 Gen 1 5 Gbps USB 3.2 Gen 2 10 Gbps USB 3.2 Gen 3 20 Gbps (x2) 8b/10b 编码 128b/132b 编码 128b/132b 编码 有效数据 ~4 Gbps 效率 80% 有效数据 ~9.2 Gbps 效率 96.875% 有效数据 ~18.5 Gbps 效率 96.875% 单通道 (x1) 单通道 (x1) 双通道 (x2) 注:Gen3 的 20Gbps 由两个 10Gbps 通道组成,每个通道仍使用 128b/132b 编码

3.6 小结

总结一下今天的内容:

  • Gen1:5Gbps,8b/10b 编码,效率 80%,单通道。适合对成本敏感、速率要求不高的场景。
  • Gen2:10Gbps,128b/132b 编码,效率 96.875%,单通道。带宽利用率高,但设计难度也高。
  • Gen3:20Gbps,128b/132b 编码,效率 96.875%,双通道。本质上是两个 Gen2 通道。

编码方式的选择,说白了就是效率和复杂度的 trade-off。8b/10b 成熟稳定,但浪费带宽。128b/132b 高效,但对信号质量要求更高。你在做设计时,得根据实际需求来选。别一味追求高速,结果搞不定信号完整性,那就得不偿失了。

一句话记住:Gen1 是 8b/10b,Gen2/Gen3 是 128b/132b。编码方式决定了你的有效带宽和设计难度。

专注资料整理