2. USB物理层与协议层:USB线缆与信号、差分信号、NRZI编码、位填充机制

USB通信的基石在于其物理层与协议层的紧密配合。物理层定义了线缆、连接器以及电信号的传输方式;协议层则规定了如何在物理介质上组织数据流。本章将深入拆解USB的差分信号传输、NRZI编码以及位填充机制,这些是理解USB数据完整性与时序控制的核心。

2.1 USB线缆与连接器

USB线缆内部包含四根导线(USB 2.0及以下),分别承担电源、地线和差分数据对的功能。线缆的结构直接影响信号质量与传输距离。

引脚编号 信号名称 线缆颜色(典型) 功能描述
1 VBUS 红色 +5V 电源,为设备供电(最大500mA / 900mA)
2 D- 白色 差分数据线负端
3 D+ 绿色 差分数据线正端
4 GND 黑色 电源地线,信号参考地
关键点: D+ 和 D- 在主机端通过 15kΩ 电阻下拉至地,设备端则通过 1.5kΩ 电阻上拉至 3.3V。设备插入时,通过上拉 D+(全速/高速)或 D-(低速)来通知主机设备速度等级。

2.2 差分信号传输

USB采用差分信号(Differential Signaling)来传输数据,即通过 D+ 和 D- 两条线上的电压差来表示逻辑状态。这种方式相比单端信号具有更强的抗共模噪声能力。

  • 逻辑“1” (J状态): D+ 线电压高于 D- 线电压(对于全速/高速设备)。
  • 逻辑“0” (K状态): D- 线电压高于 D+ 线电压。
  • 共模抑制: 外部噪声会同时耦合到 D+ 和 D- 上,接收端通过计算差值 (V(D+) - V(D-)) 即可抵消噪声,还原原始信号。
差分信号优势:
  • 更高的抗干扰能力,适合长距离(USB规范内)传输。
  • 更低的电磁辐射(EMI),因为两条线上的电流方向相反,磁场相互抵消。
  • 更精确的时序控制,信号摆幅小(约 400mV 差分摆幅)。
差分信号 vs 单端信号抗噪原理 差分信号抗共模噪声原理 单端信号 信号 + 噪声 → 难以分离 差分信号 D+ 与 D- 同时受噪声干扰 V(D+) - V(D-) → 噪声抵消,信号还原 共模噪声被差分接收器抑制 信号完整性大幅提升

2.3 NRZI编码

USB物理层使用 NRZI(Non-Return-to-Zero Inverted,非归零反转) 编码方式。NRZI是一种通过电平是否跳变来表示数据的编码方案,而非直接用电平高低表示0或1。

  • 编码规则:
    • 数据位为 逻辑0:信号电平发生跳变(从高变低或从低变高)。
    • 数据位为 逻辑1:信号电平保持不变。
  • 初始状态: 传输开始时,信号线处于预定义状态(通常为J状态)。
  • 优点: 减少了信号跳变次数,降低了电磁干扰,且不需要独立的时钟线(时钟信息嵌入在数据流中)。
NRZI的潜在问题: 当连续传输多个逻辑“1”时,信号电平长时间不跳变,接收端可能因时钟漂移而丢失同步。为此,USB引入了位填充机制。
NRZI编码示例 NRZI编码示例:数据 1 1 0 1 0 0 1 1 1 0 1 0 0 1 保持 保持 跳变 保持 跳变 跳变 保持 遇到逻辑0时电平跳变,遇到逻辑1时电平保持

2.4 位填充机制

为了防止NRZI编码中连续6个以上的逻辑“1”导致信号长时间无跳变,USB协议规定:在发送连续6个逻辑“1”之后,发送器必须强制插入一个逻辑“0”。这个插入的0会强制信号产生一次跳变,从而为接收端的PLL(锁相环)提供时钟同步参考。

  • 触发条件: 数据流中出现连续的6个“1”。
  • 填充动作: 在第6个“1”之后,发送器自动插入一个“0”。
  • 接收端处理: 接收器检测到连续6个“1”后的“0”时,自动将其丢弃,恢复原始数据。
  • 异常检测: 如果接收器检测到连续7个或更多“1”,则判定为位填充错误(Bit Stuff Error),表示传输出现异常。
位填充的作用:
  • 时钟同步: 保证信号有足够的跳变沿,供接收端PLL锁定时钟。
  • 数据完整性: 通过强制跳变,避免因长时间无跳变导致的位错误。
  • 错误检测: 连续7个“1”是协议定义的错误条件,可用于快速识别总线故障。
位填充机制流程 位填充机制:发送与接收流程 发送端:原始数据流 ... 1 1 1 1 1 1 ... 连续6个1? 是 否 插入一个逻辑0 (强制跳变) 发送带填充的数据 接收端:检测并丢弃填充0 位填充规则 连续6个1后强制插入0 接收端自动丢弃填充的0

2.5 信号状态与总线状态

USB总线上的信号状态由D+和D-的电压差决定,不同的状态组合定义了总线上的特定事件。

总线状态 D+ (V) D- (V) 描述
J状态 高 低 全速/高速:逻辑1;低速:逻辑0
K状态 低 高 全速/高速:逻辑0;低速:逻辑1
SE0 (Single-Ended Zero) 低 低 复位信号或包结束(EOP)
SE1 (Single-Ended One) 高 高 非法状态,表示总线冲突或错误
空闲状态 高 (全速/高速) 低 (全速/高速) 总线空闲,等待下一个传输
包结束(EOP): 主机或设备在发送完一个数据包后,会驱动SE0状态持续2个位时间,然后恢复为J状态。接收端通过检测SE0来判断数据包边界。

2.6 本章小结

USB物理层通过差分信号提供了高抗干扰的传输通道,NRZI编码减少了信号跳变次数,而位填充机制则确保了时钟同步的可靠性。这三者共同构成了USB数据在物理介质上稳定传输的基础。理解这些底层机制,对于后续分析USB协议层的数据包结构、传输类型以及设备枚举流程至关重要。