3. USB电源状态模型:全局状态与链路状态详解

在电池供电设备中,USB电源管理分为两个层次:全局状态(面向整个USB总线或设备)和链路状态(面向单条USB物理链路)。理解这两层状态及其转换关系,是优化链路电源管理(LPM)的基础。

3.1 全局电源状态:On / Suspend / Resume

全局状态由USB主机控制器(Host Controller)统一管理,作用于整个USB总线或单个设备。USB 2.0规范定义了三种全局状态:

全局状态 电气特征 功耗水平 典型场景
On(活动) 总线持续发送SOF帧,D+/D-线处于全速/高速驱动状态 ~100% 功耗 数据传输、枚举、控制传输
Suspend(挂起) 总线停止SOF帧,D+线被拉高(全速)或D-线被拉高(低速),维持空闲状态 ~0.5% ~ 2% 功耗 设备空闲超时、系统待机
Resume(恢复) 主机或设备驱动总线产生K状态(D+高、D-低),持续20ms唤醒总线 瞬态高功耗 从Suspend返回On
关键指标: USB 2.0规定,设备进入Suspend后,总线电流消耗不得超过2.5mA(低功耗设备)或2.5mA(高功耗设备在挂起时)。这是电池供电设备实现低功耗待机的重要依据。

3.2 链路电源状态:U0 / U1 / U2 / U3

USB 3.x引入更精细的链路状态(Link States),将电源管理粒度从“设备级”下沉到“链路级”。每个链路状态对应不同的电气活动和退出延迟:

链路状态 名称 电气活动 退出延迟 功耗节省
U0 活动状态 数据包收发、链路训练、电气空闲检测 无延迟 0%
U1 快速空闲 发送器关闭,接收器保持检测,链路维持电气空闲 ~1 µs ~30%
U2 深度空闲 发送器关闭,接收器进入低功耗检测模式,PLL可关闭 ~10 µs ~70%
U3 挂起 链路完全断电,仅维持唤醒检测电路 ~1 ms ~99%
设计权衡: 链路状态越深,功耗节省越大,但退出延迟也越长。电池供电设备需要在“快速响应”和“深度省电”之间找到平衡点。例如,U1适合频繁短空闲(如鼠标移动间隙),U2适合较长空闲(如键盘无输入),U3适合系统待机。

3.3 全局状态与链路状态的映射关系

USB 3.x的链路状态与USB 2.0的全局状态并非一一对应,而是存在层次化映射:

  • On(活动) → 对应链路状态 U0(数据收发)或 U1/U2(链路级空闲,但设备逻辑仍可活动)。
  • Suspend(挂起) → 对应链路状态 U3(链路完全挂起,设备逻辑停止)。
  • Resume(恢复) → 从 U3 经过 U2 → U1 → U0 的逐级唤醒过程。

下图展示了USB 3.x链路状态与USB 2.0全局状态之间的映射关系:

全局状态与链路状态映射关系 全局状态 ↔ 链路状态映射 On(活动) Suspend(挂起) Resume(恢复) 映射 U0 / U1 / U2 U3(挂起) U2→U1→U0 说明 • U0/U1/U2 属于链路级空闲 • U3 对应全局 Suspend • Resume 需逐级唤醒 电池优化要点 • 短空闲 → U1(快速响应) • 长空闲 → U2(深度省电)

3.4 链路状态转换流程

USB 3.x主机控制器通过链路命令(Link Commands)驱动状态转换。典型的转换流程如下:

  1. U0 → U1: 主机检测到链路空闲超过预设阈值(通常为1µs),发送LGO_U1命令,接收端回复LGO_U1_ACK后进入U1。
  2. U1 → U2: 链路在U1状态持续空闲超过U1超时(可配置,典型值10µs),主机发送LGO_U2命令,进入U2。
  3. U2 → U3: 系统进入全局Suspend时,主机发送LGO_U3命令,链路进入U3(挂起)。
  4. U3 → U0: 主机或设备发起唤醒(Resume),链路经过U2、U1快速恢复至U0。
常见陷阱: 部分电池供电设备在U1/U2状态下未正确关闭发送器时钟,导致实际功耗比预期高30%~50%。务必在硬件设计时确认PHY的U1/U2功耗数据手册值,并在固件中验证实际电流。

3.5 链路状态退出延迟对比

退出延迟直接影响用户体验(如鼠标唤醒延迟、键盘首字符响应时间)。以下是典型退出延迟数据:

源状态 目标状态 典型延迟 影响因素
U1 U0 ~1 µs PLL锁定时间、接收器恢复时间
U2 U0 ~10 µs PLL重新锁定、时钟恢复
U3 U0 ~1 ms 唤醒信号传播、链路训练、电气协商
优化建议: 对于人机交互设备(HID),建议将U1超时设置为1~2ms,U2超时设置为10~20ms。这样既能保证快速响应,又能显著降低空闲功耗。对于批量传输设备(如存储),可适当延长U1超时,减少频繁状态切换带来的功耗开销。

3.6 电池供电设备的状态选择策略

基于上述状态模型,电池供电设备应采用分层电源管理策略:

  • 短空闲(< 1ms): 保持U0,不进入低功耗状态,避免切换开销。
  • 中等空闲(1ms ~ 10ms): 进入U1,快速响应,节省约30%功耗。
  • 长空闲(10ms ~ 100ms): 进入U2,深度省电,节省约70%功耗。
  • 超长空闲(> 100ms): 进入U3(挂起),节省约99%功耗,但需接受1ms唤醒延迟。

下图展示了不同空闲时长下的推荐链路状态选择:

空闲时长 vs 链路状态选择 空闲时长 vs 链路状态选择策略 1ms 10ms 100ms ∞ U0(活动) 功耗 100% U1(快速空闲) 功耗 ~70% 延迟 ~1µs U2(深度空闲) 功耗 ~30% 延迟 ~10µs 策略:短空闲保响应,长空闲深度省电,超长空闲进入U3挂起

3.7 状态转换的功耗开销

每次状态转换本身也会消耗额外能量。设计时需权衡转换次数与空闲节省:

转换类型 转换能耗 转换时间 建议最小空闲时间
U0 → U1 → U0 ~0.5 µJ ~2 µs ≥ 10 µs
U0 → U2 → U0 ~2 µJ ~20 µs ≥ 100 µs
U0 → U3 → U0 ~50 µJ ~2 ms ≥ 10 ms
工程经验: 在电池供电的USB鼠标设计中,如果每次移动间隙(约5ms)都进入U1再退出,转换能耗可能超过空闲节省。建议设置U1进入阈值为2ms空闲,避免频繁切换。实际项目中,可通过逻辑分析仪捕获链路状态转换次数,结合功耗曲线计算最优阈值。