1
USB3.0速率为5Gbps。
USB3.1速率提升至10Gbps。时钟频率提升了1倍。原5Gbps仍然支持,命名为Gen1,10Gbps命名为Gen2.
USB3.1相对USB3.0变化不大,主要是性能提升。
2
- LFPS : Low frequency periodic signal.
- LBPM : LFPS Based PWM Messaging
- LMP : Link Management Packet
- TP : Transaction Packet
- ITP : Isochronous Timestamp Packet
- DP : Data Packet
- lane : The connection between a transmitter (Tx) of one port to the receiver (Rx) in another port.
3
- USB3.1采用“dual-bus”的方式保持向前兼容USB2.0。
- USB2.0信号走D+/D- , USB3.1信号走Tx+/Tx-和 Rx+/Rx- , Vbus、Gnd不变。
- USB2.0采用轮训和广播的方式处理数据传输。
- USB3.1采用异步通知处理数据传输,数据包有精确的路径。
- USB3.1支持多个功耗级别:idle、sleep、suspend,对应U1、U2、U3。 USB2.0只支持sleep(LPM)、suspend两个级别。
- Gen1 采用8b/10b编码。 Gen2采用128b/132b编码。
- 使用LFPS进行速率协商
4 Data flow model
与USB2.0的一些对比
- endpoint, pipe, transfer type与USB2.0相同。max packet size, endpoint descriptor, device address, endpoint number, direction 这些概念与USB2.0相同。
- USB2.0的传输分三部分:Token、Data、handshake。USB3.1与USB2.0不同,不再需要单独的Token包,对于OUT传输Token合并到Data中,对于IN传输,Token合并到handshake,上一个包的handshake包含了下一个包的Token。
- USB3.1 非同步端点忙时回复一个NRDY,当端点可用时发送一个ERDY通知host。而USB2.0时通过host发送ping查询device端点的。
- USB3.1支持burst。
- USB2.0使用轮询模型。usb3.1使用异步通知模型。
- USB2.0固定1ms/125us发送SOF/uSOF。USB3.1 125us发送ITP。
- USB3.1支持stram。
- USB2.0是广播方式,USB2.0的packet发送到所有下行端口。USB3.1不广播,packet直接发送到host或device,但ITP是广播的。
- USB3.1的iso设备在SI之间可自主进入低功耗状态,当需要唤醒时host发送ping。USB2.0的低功耗状态(suspend、LPM)之能由host发起。
- USB3.1 device设备科通知host自己进出低功耗状态的延时时间(使用LTM包)。 host可据此决定是否进入低功耗状态。 不过貌似USB2.0的LPM也可以。
transaction的区别
在收到一个握手前可以发送多个数据包。
OUT: 不在需要token,而是包含在Data包的header中。
IN: handshake包含了下一个数据包的请求(包含下一个数据包的Token)。device要么回复数据,要么回复NRDY或者STALL。
packets
- LMP: Link Management Packets
- TP: Transfer Packets
- DP: Data Packets
- ITP: 相当于SOF
burst
端点在comp描述符中声明burst值。 这个值支出在接受handshake前可以接受多少个data包。
IN: host发送ACK,在ACK中包含可接受的burst
OUT: host控制burst包数量。
传输类型
增加了一个Device Notifications
- control transfer
- bulk transfer
- intr transfer
- isoc transfer
- Device Notification。 与endpoint、pipe无关,是Device直接发给host的。
6 physical layer
编码
- USB2.0采用NRZI编码。
- USB3.1 Gen1、Gen2采用不同编码方式。Gen1采用8b/10b编码 ,这是一种标准编码,ANSI X3. 230-1994。Gen2采用128/132b,这种编码类似于pcie的128b/130b编码。
符号
符号就是一些固定形状的波形,各自有其特殊的用途。
- TS1: training sequence 1
- TS2: training sequence 2
- TSEQ: ?
- SYNC: sync
- SKP: skip
- SDS: start data stream
- SKPEND: skip end
- SDP: start data packet
- EDB: end bad
- SUB: ?
- COM: comma
- SHP: start packet header
- DPH: start data packet header
- END: end
- SLC: start link command
- EPF: end packet framing
- SDS: start data stream
Link initialization and training
使用training sequences进行初始化和training。
training sequences有一些“Ordered sets”组成。
Traning sequences有TS1、TS2、TSEQ。
lane polarity inversion : PHY在TSEQ中检测polarity inversion并翻转接受的bits。
Compliance Pattern : CP0, CP1, … CP12
LFPS
Low Frequence Period Signal
用于边带通信。
应用场景:
low power link state
under training
warm reset
U3 wakeup
详细类型:
Polling.LFPS
Ping.LFPS
U1 Exit
U2 Exit
Loopback Exit
U3 wakeup
固定频率的信号,持续tBurst,按tRepeat周期出现。 tBurst之间报纸Idle状态。
Superspeedplus Capability Declaration (SCD) :
在polling.LFPS时发送特殊的“pattern”,标识自己有superspeedplus能力。
LBPM : LFPS Based PWM Signaling。 superspeedplus使用,superspeed不使用。
7 Link Layer
link layer
packets: host <—> device
link commands: link <—> link
Packets
LMP: Link Management Packets
TP: Transfer Packets
ITP: Isochronous Timespamp Packets
DP: Data Packets (DP由DPH和DPP两部分组成)
packets分两类:
- header packets
- LMP
- TP
- ITP
- DPH
- Data packets
- DPP
这些包都有一个“header packet”。
header packet由三部分组成:
Link Control Word | Packet Header | Header Packet framing |
---|
DPP组成:
CRC32 | Data | DPP framing |
---|
Link Commands
LGood_n
LTRY
LCRD_x
LCRD1_x
LCRD2_x
LGO_Ux
LAU
LXU
LPMA
LDN
LUP
Logical Idle: 没有packets和Link command传输的状态。
一种special symbol
Gen1: 00h
Gen2: 5Ah
对应还有Electrical Idle状态。
注意Link command与packets header中的Link control不同。
LTSSM
Link Training Status State Machine
- 最初为disabled状态
- Reset后进入Rx.detect状态
- 如果设备脸上,则进入Polling状态
- Traning之后进入U0
- U0是正常工作状态。
- LGO.U1使Link进入U1, LGO.U2使Link进入U2, LGO.U3使Link进入U3.
- 出错会进入Recovery状态。
- Recovery状态会进入Hot Reset,如果失败会进inactive,如果成功则进U0
- Polling状态还可进入Loopback、compliance等状态。
以上规则仅仅是LTSSM的一部分,详细的运作规则见USB3.1 spec。
8 protocol layer
有四种基础类型packet:
LMP:
Link management Packets
用于管理链路(link)
TP
Transaction Packets
用于控制Data packet和配置设备、hub等。
DP
Data Packets
data packet由DPH和DPP组成。
DPH
Data Packets Header
DPP
Data Packets Payload
ITP
Isochronous Time Packet,相当于sof
LMP 有以下种类和用途:
Set Link Function
U2 inactivity Timeout
Vendor device test
Port Capability
Port configuration Response
Precision Time Management
TP有以下种类:
ACK
NRDY
ERDY
STATUS
STALL
DEV_NOTIFICATION
PING
PING_Response
9、10、11
略。