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 差分摆幅)。
2.3 NRZI编码
USB物理层使用 NRZI(Non-Return-to-Zero Inverted,非归零反转) 编码方式。NRZI是一种通过电平是否跳变来表示数据的编码方案,而非直接用电平高低表示0或1。
- 编码规则:
- 数据位为 逻辑0:信号电平发生跳变(从高变低或从低变高)。
- 数据位为 逻辑1:信号电平保持不变。
- 初始状态: 传输开始时,信号线处于预定义状态(通常为J状态)。
- 优点: 减少了信号跳变次数,降低了电磁干扰,且不需要独立的时钟线(时钟信息嵌入在数据流中)。
NRZI的潜在问题: 当连续传输多个逻辑“1”时,信号电平长时间不跳变,接收端可能因时钟漂移而丢失同步。为此,USB引入了位填充机制。
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”是协议定义的错误条件,可用于快速识别总线故障。
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协议层的数据包结构、传输类型以及设备枚举流程至关重要。