USB3.2 摘录(二)

简介: USB3.2 摘录(二)

7 链路层(Link Layer)

  增强型 SuperSpeed USB 包括基于 Gen 1x1 操作的 SuperSpeed USB 和基于 Gen 2 操作(Gen 2x1 或 Gen 2x2)或 Gen 1x2 操作的 SuperSpeedPlus USB。增强型 SuperSpeed USB 的链路层负责维护链路连接,以确保两个链路伙伴之间的数据传输成功。根据数据包和链路命令定义了鲁棒的链路流控制。数据包在链路层中准备,用于在主机和设备之间传输数据和不同的信息。链路命令是为两个链路伙伴之间的通信定义的。此外,还构造了数据包帧有序集和链路命令有序集,使它们能够容忍一个符号错误。此外,错误检测功能还集成到数据包和链接命令中,以验证数据包和链接命令的完整性。

7.1 字节顺序

    包或者链路命令中的多字节域以小端顺序通过总线传输。即先传输最低有效字节(LSB)最后传输最高有效字节(MSB)。Figure7-2 展示了字节顺序的例子:

7.2 链路管理和流量控制

7.2.1 包和包帧(Packets and Packet Framing)

    超速使用包来传输信息。链路电源管理包、事务包、同步时间戳包和数据包的详细包格式在第 8.2 章定义。在协议层,头包是不可见的。

7.2.1.1 头包结构(Header Packet Structure)

   所有头包有 20 符号长度,格式在 Figure7-3 中。包括有 LMPs(Link Management Packet),TPs(Transaction Packet),ITPs(lsochronous Timestamp Packet),和 DPHs(Data Packet Header)。头包由三个部分组成,一个头包帧,一个包头,一个链路控制字。

    Gen2 非延迟 DPH 包不一样。

7.2.1.1.1 头包帧(Header Packet Framing)

    头包帧,HPSTART(header)顺序集,是一个 4 个基于 K 标志的有序集合头包起始帧。被定义为 3 个连续的 SHP 标志后面跟着一个 K-symbolEPF。一个头包应该总是以 HPSTART 序列集开始。头包帧的结构是能容忍 1 个符号错误的。

7.2.1.1.2 数据包包头(Packet Header)

    一个包头由 14 个字节组成,格式如 Figure 7-4 所示。它包括 12 字节的头信息和一个 2 字节的 CRC-16 。CRC-16 用来保护 12 字节的头信息的数据完整性。

7.2.1.1.3 链接控制字

    2 字节链接控制字的格式如图 7-7 所示。它既用于链路级控制,也用于端到端流量控制。

    在 SuperSpeed 操作中,链路控制字应包含一个 3 位头序列号、3 位保留、一个 3 位集线器深度索引、一个延迟位 (DL,Delayed)、一个延迟位 (DF,Deferred) 和一个 5 位 CRC-5。在 SuperSpeedPlus 操作中,链路控制字应包含一个 4 位头序列号、2 位保留值、一个 3 位集线器深度索引、一个延迟位 (DL)、一个延迟位 (DF) 和一个 5 位 CRC-5。


7.2.1.2 数据包结构(Data Packet Payload Structure)

    数据包是一种由数据包头(DPH,Data Packet Header)和一个数据负载包(DPP,Data Packet Payload)组成的特别包。DPH 定义在 7.2.1.1.章。另外一方面,DPP 由数据包帧和可变长度的数据构成,可变长度数据后面跟着 CRC-32 。Figure 7-8 描述了 DPP 格式。

7.2.1.2.1 数据包帧(Data Packet Payload Framing)

    DPP(Data Packet Payload) 帧由 8K-symbols,一个作为 DPP 起始帧的 four-symbol 有序集和作为 DPP 结束帧的 four-symbol 有序集构成。正如 Figure7-8 所表示的,作为 DPP 起始帧的 DPPSTART 序列集,由三个连续的 SDPK-symbols 和后面跟着的一个 EPFK-symbol 组成。一个 DPP 结束帧序列集有两种不同类型。第一种类型,DPPEND 序列集,它是个由三个连续的 K-symbol Of END 和后面跟着的单个 K-symbol of EPF 组成的结束帧有序集。第二种类型,DPPABORT 序列集,是一个 DPP(未完成)终止帧序列集,它由 3 个连续的 K-symbol of EDB 和后面跟着的单个 K-symbol Of EPF 组成。DPPEND 序列集是用来指示完成了的 DPP 的正常结束,而 DPPABORT 序列集用来指示一个 DPP 的半途终止结束。

7.2.1.2.2 数据包(Data Packet Payload)

    DPP 区域有 0-1024 字节的数据,后面跟着 4 字节的 CRC-32。任何一个 DPP 包提前结束应该包含一个 DPPABORT 有序集。DPP 应该快速无缝的跟着它相对应的 DPH

7.2.1.2.3 在数据包头(DPH)域数据负载包(DPP)之间的空间间隙

    Data Payload Structure and Spacing between DPH and DPP。

    在数据包头(DPH)域数据负载包(DPP)之间不应该有空间间隙,如 Figure 7-10 所示:


    头包由共 20 个字节,四个字节的 HPSTART 序列集,14 个字节的包头(Packet Header),2 个字节的链路控制字构成。HPSTART 似乎是用于链路双方数据时钟恢复同步用途,类似于 USB2.0 时的 SYNC(同步序列);PacketHeader 则包含 12 个字节的包信息和 2 个字节的 16CRCLink Control Word2byte 包括 3 bit Header Sequence Number3 bit reserved3 bit Hub Depth Index1 bit Delayed bit1bit Deferred bit,和 5bit CRC。在第八章将会看到,LMPTPITPDPH 其实都是头包结构,只不过 12byte 的包信息定义了不同的格式意义

数据包构造:

    数据包其实是由一个数据包头(DataPacket Header,DPH)后面无缝跟着一个数据负载包(Data Packet Payload,DPP)构成的。DPH 的结构同上面的头包结构,DPP 的结构如图 7-8 所示:

    DPP 由四个字节的 DPPSTART(类似头包中的 HPSTART),0~1024 字节的数据,四个字节的 32CRC,以及四个字节的 DPPEND(作用类似于 USB2.0 的 EOP? 在数据有异常的时候这个将是 DPPABORT)构成。

7.2.2 电源管理

    Ux 代表了 USB3.0 的四种电力管理状态。

  • U0 – 正常运作状态
  • U1 – 待机与快速恢复
  • U2 – 待机与缓慢恢复
  • U3 – 休眠模式(Suspend)


目录
相关文章
|
4月前
|
Linux API SoC
设备树知识小全(十一):OF是什么?
设备树知识小全(十一):OF是什么?
75 0
|
21天前
|
存储 缓存 算法
USB3.2 摘录(一)(下)
USB3.2 摘录(一)
40 12
|
21天前
|
安全 索引
USB3.2 摘录(11)
USB3.2 摘录(11)
30 1
|
21天前
USB3.2 摘录(八)
USB3.2 摘录(八)
29 2
|
21天前
USB3.2 摘录(六)
USB3.2 摘录(六)
22 1
|
21天前
|
存储 算法
USB3.2 摘录(10)
USB3.2 摘录(10)
25 1
|
21天前
|
存储 算法
USB3.2 摘录(九)
USB3.2 摘录(九)
27 1
|
21天前
|
存储 运维
USB3.2 摘录(七)
USB3.2 摘录(七)
25 1
|
21天前
USB3.2 摘录(五)(下)
USB3.2 摘录(五)
27 1
|
21天前
|
机器学习/深度学习 流计算
USB3.2 摘录(五)(上)
USB3.2 摘录(五)
41 1