第一章:USB协议概述与LTSSM基础

1.1 USB发展史:从USB 2.0到USB4

做硬件这么多年,我亲眼看着USB从当初那个只能接键盘鼠标的慢速接口,一步步进化到今天能跑40Gbps的怪物。说实话,每次协议升级,信号完整性工程师的头发就要掉一批。

咱们先快速过一遍USB的演进路线:

版本 推出年份 理论速率 编码方式 信号电压
USB 2.0 2000 480 Mbps NRZI + 位填充 3.3V(差分)
USB 3.0 2008 5 Gbps 8b/10b 1.0V(差分)
USB 3.1 2013 10 Gbps 128b/132b 0.8V(差分)
USB 3.2 2017 20 Gbps 128b/132b 0.8V(差分)
USB4 2019 40 Gbps 64b/66b 0.6V(差分)

你想想看,从USB 2.0的480Mbps到USB4的40Gbps,速率提升了将近100倍。但信号电压从3.3V降到了0.6V。这意味着什么?意味着我们的设计余量被压缩得越来越紧。

我记得刚入行那会儿,做USB 2.0的板子,走线稍微长一点、阻抗稍微偏一点,问题都不大。但现在做USB4,别说走线长度了,连过孔的残桩长度都要精确控制到毫米级。嗯,这就是信号完整性工程师的宿命。

核心要点:每次USB速率翻倍,物理层电气特性的容限就减半。这是理解LTSSM与信号完整性关系的底层逻辑。

1.2 物理层电气特性

说到物理层,咱们得聊聊几个关键参数。这些参数直接决定了你的信号能不能被接收端正确识别。

差分电压摆幅:

  • USB 2.0:差分信号幅度约400mV(单端约200mV)
  • USB 3.0:差分信号幅度约200mV
  • USB 3.1/3.2:差分信号幅度约160mV
  • USB4:差分信号幅度约120mV

为什么会越来越小?说白了就是为了降低功耗、减少EMI。但代价就是——信号更容易被噪声淹没。

眼图模板要求:

每个USB版本都有对应的眼图模板。我建议你在做合规性测试时,别只看眼图是否通过模板,还要关注眼高、眼宽、抖动这些具体数值。我在一个项目中遇到过,眼图勉强通过模板,但量产时良率只有70%。后来发现是PCB的介质损耗太大,导致高频分量衰减严重。

实战技巧:做USB3.x/4设计时,建议预留至少20%的眼图余量。别卡着模板边界设计,那是给自己挖坑。

阻抗要求:

  • USB 2.0:D+/D-差分阻抗90Ω ±15%
  • USB 3.x/4:SSTX/SSRX差分阻抗90Ω ±7%

注意看,USB 3.0以后的阻抗容差从±15%收紧到了±7%。这意味着你的PCB叠层设计、线宽线距控制都要更精细。我曾经帮一个客户排查问题,他们USB 3.0老是掉链路,最后发现是阻抗实际只有82Ω,离90Ω差了将近10%。

1.3 LTSSM状态机简介

LTSSM,全称是Link Training and Status State Machine。翻译过来就是链路训练与状态状态机。嗯,名字有点绕口,但它的作用很简单——管理USB链路的电源状态和连接状态。

我画了一张LTSSM的核心状态转换图,你看完就明白了:

U0 正常工作状态 U1 浅睡眠(快速唤醒) U2 深睡眠(省电) U3 挂起状态 Recovery 链路恢复/重新训练 空闲超时 深度空闲 软件挂起 唤醒 唤醒 唤醒 信号质量恶化 训练成功 活动状态 睡眠状态 恢复状态

这张图我建议你保存下来。后面讲信号完整性对LTSSM的影响时,我们会反复回到这张图。

1.4 各状态详解

U0(正常工作状态):

这是链路正常传输数据的状态。在U0下,发送端持续发送数据或训练序列。信号完整性要求最高——眼图必须干净,抖动必须小,否则就会触发链路错误。

U1(浅睡眠状态):

链路空闲一段时间后进入U1。发送端停止发送数据,但保持电气空闲状态。从U1恢复到U0只需要几十微秒。我建议你在设计低功耗产品时,优先考虑U1而不是直接进U2,因为频繁进出U2反而可能增加功耗。

U2(深睡眠状态):

比U1更省电,但唤醒时间也更长(几百微秒到毫秒级)。在U2下,部分电路可以断电。但要注意——从U2恢复时,链路需要重新进行电气训练,这时候信号质量不好就会导致恢复失败。

U3(挂起状态):

最省电的状态,相当于设备休眠。从U3恢复需要软件参与,时间最长。我曾经遇到一个案例,设备从U3唤醒后链路一直训练失败,最后发现是唤醒信号上的噪声触发了错误的电气参数协商。

Recovery(恢复状态):

这不是一个稳定的状态,而是一个过渡状态。当链路检测到信号质量恶化、或者需要从睡眠状态唤醒时,就会进入Recovery。在Recovery中,发送端和接收端重新进行电气训练,包括均衡器系数调整、相位锁定等。

注意:Recovery状态是信号完整性问题的重灾区。如果PCB设计不好,Recovery可能反复失败,导致链路在U0和Recovery之间来回跳转,这就是我们常说的「链路抖动」现象。

1.5 信号质量与状态转换的关系

讲到这里,你可能已经猜到了——信号完整性直接影响LTSSM的状态转换行为。

举个例子:

  • 如果信号质量好,链路可以稳定在U0,数据传输流畅
  • 如果信号质量一般,偶尔出现误码,链路会频繁进入Recovery进行重新训练
  • 如果信号质量很差,链路可能根本训练失败,卡在Recovery出不来

我见过最夸张的一个案例,某款产品的USB 3.0接口,在高温下眼图闭合严重,导致链路每秒钟进入Recovery十几次。用户插个U盘,拷贝文件的速度忽快忽慢,体验极差。最后查出来是PCB的过孔设计不合理,导致高频信号反射严重。

所以,做USB设计,千万别把LTSSM当成纯软件问题。它和你的PCB走线、连接器选型、甚至电源完整性都息息相关。

我的建议:在项目初期就做完整的信号完整性仿真,包括通道损耗、串扰、反射等。别等到板子打回来再改,那时候成本就高了。

好了,第一章的内容就到这里。USB协议的基础框架和LTSSM的核心状态我们已经理清楚了。下一章我们会深入讨论信号完整性的具体参数,以及它们如何影响LTSSM的每一个状态转换。


公众号:蓝海资料掘金营,微信deep3321