2024年2月3日发(作者:)

USB3.0与USB2.0的特性比较

超苞和U5B2□比规+

数据率p

USB^

超谨(GO越戏戶

USB2 0^

低速(1.5Mbps) >

全%

(12Mbps)

高谨

C48DMbps)^

数据接口

f

Duaksimplexj四线差分估号十

与US日2.0信号分离心 同时双向数据流十

电缆信号数• &个:赧速数据路径4个信号存

菲超速信号路径2个倍号」

半取工,2线差分信号卡 前衣冋仲裁转换的单向数据流门

2个;底5蛰全速倚麓信号路径2个估号存

慧线蚩务协

主机导向的,异歩传输Sb

包传输有主机导向乳枪询传输姦, 包广播到所有设备卢

确定路由户

电源管理』

多级羅路电源管理支持仝闲、睡 蹴端口级.带两级入口/出口延迟」 塚魏电源理

挂起状态,裁路、设命功 能级别的电源曹理杆

总线洪电2

端□状态*

同US82K未配直时的洪电噌加

和%,配直秋态供电曙加60%v

亘于操作状态以备趙速数据通

支持低僖总线洪电,开对未配直的和挂起的 设蓍有低电源限制e

令切换端口到使能状态.・

端口硬件检测逹接雪件,并擀端 口端口硬件检测逹接事件口系统软件便用端口 命

数据传输类

带超連的束的舶出£1类型 海區传输四种传输理;控制海墓中断、弄时…

型屮

有流能力“卩

3.2超速结构

超速总线是一个分层的通讯结构,如下图所示:

D

「Device Ori/er'AppliMtion Pp«mrale (par FurKticri

豊n's 2 H

U

呂LI 5ysiern 5cltwdre

DeidLl*.

□□TJITJI Pije

il ? ii; Trunj i Mi

fi

pvgdHU

Transaction ” Data

P j: 11 ii

Packets J *■. I

'ifalfafltor»[

Trsfsi^tion

PacfcalS

Tn9i witnA

T Data J

P'3C**|j£

畐二

PROTOCOLS

L-NK;Lnk Id anac: emert P^c^-sa

Lrk Msnaoerr^rt Packer

Link Strd/MgRt

P ki % ------------------------

• *hm&JC Lin* CmdE )

f r~

Lirk Con Irob Mgmt Plif —3 uFJd

Tibial

d^n€E3irhfe

LJ=PS

Entity

Giiffa-'SIkipt

a Jb

de^rr^nh W

■3bflOb

Eb'lOb

Mieria'nhft

(ILF^S )

Spread j E冠5百坯

Clock

CDR Bu Isr. Skips

Spmd

CtxkCDR

LFPS

呂丹x)

CIOCACDR

F

Ela成脚'

Figure 3-3. SuperSpeed Bus CommuriFcations Layers anri

Power Managemerrt Elements

.

协议层:

协议层在 主机和设备 间定义了

end-to-end

通讯规则。超速协议在 主机 和 设备端点

(endpoint)

之间提供应用数据信息交换。这个通讯关系叫做 管道

(pipe)。

它是主机导向的协议 ,意味着主机决定什么时候在主机和设备间进行应用 数据传输 。设 备可以通过一个 特定端点 向主机发起 异步请求 服务,所以它不是一个 轮询协议 (

USB2.0

为 轮询协议)。

数据可以连续 突发传输 ,提高 总线效率 。

对某些传输类型(块传输) ,协议提供 流控支持 。

SS

设备可以 异步发送, 通知主机,设备的功能状态发生改变。而不是轮询的方式。设备 端点可以通过设备异步发送的“

ready”包(ERDY TP)通知主机进行数据发送与接收,主

机对于“ready”通知,如果有有效的数据发送或者缓存接收数据,会添加管道。

主机发送包含主机时间戳的 特殊包头(

ITP) 到总线上,该值可以用于保持 设备和主机 同步 (如果需要的话) 。

超速

USB

电源管理:

链路电源管理的关键点是:

•设备向主机发送 异步“

ready”通知

•包是有路由路径的,这样就允许

态。

• 如果包送到一个处于 低电源状态的端口 ,这个端口会切换到 退出低电源状态 并指示 这是个切换事件。

不参与数据通讯 的链路进入或仍旧停留在低电源状

设备:

•超速需要支持

USB2.0

对默认的控制管道 的规定。

HUB

设备:

因为USB3.0向下兼容

USB2.0,为支持USB3.0双总线结构,USB3.0 HUB在逻辑上是 两个

HUB

的组合:一个

USB2.0 HUB

和一个

USB3.0 HUB

。连接到上游端口的电源和地线 是共享的。

集线器参与到一个端到端的协议中,所承当的工作: •路由选择输出的包到下游端口。

•输入包混合传递到上游端口 •当不在低功耗状态下时,向所有下游端口广播时间戳包(

ITP) •当在一个低功耗状态的端口检测到包时,集线器将目标端口转变成

通知主机和设备(带内)包遭遇到了一个在低功耗状态的端口。

主机

(Hosts):

一个

USB3.0

主机通过主控器和

USB

设备互连。 为了支持

USB3.0

双总线结构 ,

USB3.0

主控器必须包括 超速(USB3.0

)和USB2.0部分,这样可以同时管理每一个总线上主机和设 备间的控制、状态和信息交换。

主机含有几个根下行端口实现超速

USB

USB2.0

,主机通过这些端口:

•检测USB设备的连接和移除;

•管理主机和设备间的控制流;

•管理主机和设备间的数据流;

•收集状态和活动统计;

退出低功耗状态 ,

.

•对连接的设备供电;

USB

系统软件继承了

USB2.0

的结构,包括:

•设备枚举和配置;

•规划周期性和异步数据传输;

•设备和功能电源管理; •设备和总线管理信息。

数据流模型:

超速USB集成了

USB2.0的数据流模型,包括:

•主机和设备间的数据和控制交换通过 管道(pipe)进行,数据传输在主机软件和指 定的设备端点间进行。

•设备可以有 不止一个 的活动管道,有两种类型的管道:流式管道(数据)和消息管道 (控制),流式管道没有

USB2.0

定义的结构,消息管道有指定的结构(请求的结构) 。管道 相关联的是数据带宽,传输类型(见下面描述) ,端点属性,如传输方向与缓冲大小。

•大多数管道在系统软件对设备进行 配置后才存在 ,但是当设备上电在默认的状态后, 一个消息管道即默认的控制管道总是存在的。提供权限访问设备的配置,状态和控制信息。

•一个管道支持

USB2.0

定义的四种传输类型的 一种

(管道和端点属性一致

)。

•海量传输类型(bulk)在超速中进行了扩展,叫做 流(stream)。流式提供在协议级支 持在标准块传输管道中 多路传输 多个独立的逻辑数据流。

第四章

4.2

超速通信流

超速数据流模型

SS

保持相似的观念和机理,支持端点,管道和传输类型。参考

USB2.0

协议。

端点的属性(最大包尺寸(端点缓存大小) ,突发大小等)被记录在描述符中和

SS

Endpoint Companion Descriptor

。正如在

USB2.0

中,端点是使用三个参数组成的地址来验证

(设备地址, 端点号和方向) 。所有的

SS

设备必须起码在默认控制管道 (端点

0)开始执行。

4.2.1

管道 一个超速管道是一个设备上的端点和主机软件的连接。 管道代表拥有缓存空间的主机软 件和设备端点之间传输数据的能力,和

USB2.0

有相同的过程。主要的区别在于 当超速的非 同步端点忙时 ,会返回一个没有准备好(

NRDY

)应答 ,当它想又要服务时必须发送准备好

(ERDY

)通知 。主机在下一个传输类型限制下的有效时机中重新安排事务。

4.3

超速协议综述:

正如在

USB3.0

结构总览那章中提到的,超速协议是利用双差分数据线的物理层。所有 的

USB2.0

的类型都可以被高速协议支持。 协议之间的区别在于下面要首先讨论的超速中使 用的包的描述。

4.3.1

USB2.0

的区别:

在框架上,超速是向后兼容

USB2.0

的,但是二者在协议上还是有一些重大的不同:

USB2.0

transaction

有三部分(令牌(token)、数据(data)和握手(handshake)),超

速也是这三部分但是用法不同(令牌包集成在头包和

DPH

中,各种类型的握手包都是

TP

包形式);对于

OUT

事务,令牌被合并在数据包中;对于

IN

事务,令牌被握手包代替。

USB2.0不支持突发(bursting),超速支持 持续突发;

USB2.0

是半双工

(half-duplex)

的广播总线,超速是

dual-simplex

(全双工)的非广播 总线, 支持同时进行

IN、

OUT transaction

.

USB2.0

使用 轮询模式 ,超速使用 异步通知方式 ;

USB2.0不支持流能力,超速支持海量(bulk)端点的Stream方式;

USB2.0在同步传输(isochronous)间隔中没有进入低耗电状态的机制,超速则允许同步

传输服务间隔中自动进入低耗电状态 (不服务的时间段进入低功耗);SS主机在服务间隔前

发送一个

PING

包到目标同步设备允许开始同步传输之前转变成电源活动状态。

USB2.0

设备无法通知主机自己在进入低耗电状态前可容忍的 延迟时间(设备通知主

机自己进入低功耗状态的最长延迟时间) ,超速则提供

Latency Toleranee消息;

USB2.0

以固定的

1ms/125us

间隔发送帧包

/小帧包(

USB 2.0

全速和高速模式) 。超速 下,设备可以发送

Interval Adjustment消息给主机调整间隔

125us

一直到+/-13.333us

;

USB2.0

电源管理总是 主机导向(主机初始化) 的,超速链路 两端都支持电源管理 ; 因此不管何时需要空闲,需要退出,需要通信,每个链路能独立的进入低电源状态。

USB2.0

仅在每个

transaction

进行

end-to-end

级别的错误检测、恢复、流控,超速在

end-to-end

(数据包重试) 和链路级别(头包重试) 分割这些功能。

4.3.2比较

USB2.0

和超速的 事务处理

(Transaction)

超速全双工总线物理层允许 同时 进行双向 的通信。超速协议允许 收到握手包之前 发送多 个数据包 (突发)。对于

OUT

传输, 包含在

USB2.0

令牌包中的信息 (设备地址和端点信息) 被合并在数据包头里面,因此不需要额外令牌包。对于输入传输

IN,超速主机发送一个握

手包(

ACK

)给设备以 请求数据(和指示数据是否正确) 。设备可以通过返回数据或者返回

STALL

握手包来应答,或者返回一个没准备好

(NRDY)

握手包 延迟传输直到设备准备好了。

USB2.0

的包是 广播方式 ,每个连接的设备解析每个包的 地址、端点、方向信息来 决定 自己是否应该响应。超速包有 路由信息 ,

HUB

决定每个包要送达 哪个设备,只有一个例外 , 等时时间戳包(Isochro nous

Timestamp Packet,

ITP)广播到每一个设备。

USB2.0

的查询方式已经被异步通知代替。 超速传输通过主机发出一个请求来开始传输, 后面跟随着设备的应答。 如果设备能接受请求, 它就接收数据或者发送数据; 如果端点停止 了,设备应该以

STALL

握手包响应;如果设备由于 缺少缓存空间或者没有数据 而不能接受 请求,应该以

NRDY

应答告诉主机现在还不能处理请求。当等到设备能接受请求时,设备 会主动发送一个端点准备好(

ERDY

)异步通知给主机然后主机会重新安排传输事务。

单路传送和有限制的多点广播的包以及异步通知, 都允许没有活跃传输包的链路进入一 个降低功耗状 态,上游和下游端口共同决定它们的链路进入一个低功耗状态,

传递到上游端口,使总线快速进入最低允许电源状态。

集线器会传递

到上游端口。 通过允许链路伙伴独立控制它们的链路电源状态, 集线器将任意下游端口可见 的最高链路电源状态4.3.1.2超速包介绍:

超速包以16字节的头部开始。一些包只包含有头部(

TP,

LMP,ITP

)。所有的头部以用

于决定包处理方式的包类型信息开始。 头部有

16

CRC

保护,以

2

个字节链路控制字 (link control word

)结束。依赖于类型,大多数包包含有 路由信息 (路由字符)和一个三参数的 设备地址 (设备地址,端点号和方向) 。路由字符给主机用来指导包被发送到被指向的拓扑 路径。设备发送的包被集线器默认路由选择, 集线器总是把数据从任何可见的下游端口传到 上游端口(这一过程不需要路由信息) 。

有四种基本类型的包: (协议层 )

Link Management Packet(LMP ),只穿过一对直接连接的端口(链路两端)

管理链路。

Transaction Packet(TP,事务包),穿过所有直接连接主机与设备的链路,用来控制流

式 数 据 包 , 配置 设 备 和集 线 器 等 ( 任 何 传输类 型 的 事 务 处 理 都用 到 )。 注 意一 个

,主要用来

.

Tran saction Packet是没有数据的。(控制命令包,

TP包就是一个包头(DPH))

Data Packet(DP),穿过所有直接连接主机与设备的链路,数据包有两部分组成,一个

TP

包相似的数据包头

(DPH)

和带有数据块加上用来确保数据完整性的

32

CRC

的数据 包(

DDP

Isochronous Timestamp Packet(ITP)

。它被主机用来多点广播到所有的 活动 的链路上。

4.4

对传输

(transfer)

的一般性描述 :

每一个发送给接收器的 非同步数据包 通过一个握手包(

ACK TP

)被应答(同步端点不 应答,非同步端点要为每个收到的数据包进行应答,以报告是否正确传输和是否要重传) ,

但是由于超速有独立的发送与接收路径, 所以发送器不必在发送下一个包之前为每次传输的 数据包等待一个握手(超速

USB

的一个特色:同时进行发送数据与接收应答,当设备检测 到数据包错误时或者端点错误,没准备好等,都会通过在应答

TP

包中反应给主机,主机收

。 到的应答

TP

包中记录出错的包顺序号,于是主机从错误的那个顺序号开始重新发送包)

超速保护所有的基本数据流和

USB2.0

定义的传输观点,包括传输类型,管道和基本数 据流模式。和

USB2.0

的区别在这章被讨论,开始是协议层,然后是传输类型。

USB2.0

规范利用一系列事务处理的模式。这从本质上意味这主机是在开始下一次事务 前完成这一次总线处理(令牌,数据和握手) 。分离事务处理也坚持这相同模式,因为他们 由完整的高速事务组成,类似所有其他事务在相同的模式下完成。

超速通过实施发送与接受同步改善了

USB2.0

事务的协议。 因此超速

USB

事务处理协 议本质上是一个分离的事务处理协议 ,它允许在同一时间不止一个

OUT

总线事务处理(设 备可以多个)和至多一个

IN

总线事务处理(主机只有一个)在总线上活动。设备对事务处 理的应答的命令是确定在每个端点基础上(例如,如果一个端点接收三个

为每一个

DP

包返回

ACK TP

告知收到

DP

包)。

DP

包,端点必须

IN

OUT

事务(令牌,数据

USB2.0

总线上的每一个活动

USB2.0

协议要在继续下一个总线事务处理之前完成整个

和握手包连续传输) ,所有的来自主机的传输本质上是广播到

设备,与之比较起来,超速协议不进行广播任何包(

ITP

除外),包只穿过需要达到目标接 收方的链路,主机通过发送握手请求(

ACK TP

)或者发送数据(OUT)开始所有的事务,

IN

)或者不能接受数据(OUT),它

除此之外, 超速提供将

设备以数据或者握手来应答。假如设备没有有效的数据(

会以一种包(

NRDY

)来应答以指示不能进行此操作。之后,当设备准备好发送或者接收数 据时, 它会发送一个包给主机指示它已经准备好重新进行事务处理。

链路转变成指定的低电源状态或者退出低电源状态的能力。 低电源链路状态可以在软件使能 以后由软件控制或者自发的硬件控制来进入。 还提供一个自动将主机与设备之间的所有链路 由非活动电源状态转变成活动电源状态的机制。

设备在每个端点的描述符中记录每个端点的最大包尺寸。 这个尺寸只指示负载数据块长 度,不包括链路层和协议层的包头(

DPH

)。超速的带宽分配相似于

USB2.0。

4.4.1 Data Bursting

(突发数据)

突发数据通过消除在每个基于数据包应答的等待时间提高效率 (即无需等待应答就能处

理数据)。每个超速设备上的端点指示了它在必须等待一个明显握手之前能够发送

/接受的包

数量(称之为 最大数据突发大小 )。最大数据突发大小是一个每个端点各自的能力,一个主 机从与端点相关的

SuperSpeed Endpoint Companion descriptor 描述符决定

一个端点的最 大数据突发大小。

主机在每个事务处理的基础之上能动态改变突发大小, 直到最大突发大小被配置了。 主

机能使用不同突发大小的一个例子, 不受限于, 但是包括一个主机上的公平决策和中断流的 重试。 当端点是

.

OUT

类型,主机能容易控制突发大小(接收器必须总是能管理突发大小 事务处理),当端点为

IN

类型,主机能基于每次事务处理限制端点突发大小,是通过在发 送给设备的应答包中的一个域来限制。

4.4.2 IN transfer

(输入传输) : 主机和设备应该延续传输类型和端点属性的约束。

一个主机通过发送一个

ACK

确认请求包给设备 (

IN

)开始请求一次传输。 这个确认(握 手包)包包含了数据包路由选择到想要的端点所需要的地址信息。 主机告知设备它可以发送

的数据包数量和期望来自于设备第一个包的序号 (

0) 。在应答中, 端点会发送正确的序列号 的数据包给主机, 主机发的确认包也暗中应答了之前成功收到的数据包 (以及请求下一个顺 序号的数据包) 。

注意 :即使主机需要为每一个收到的数据包发送一个确认包, 但是设备可以不需等待任 何确认包就发送所需要的数据包数量。

超速总线的 一次

IN

传输 由一个或 多个

IN

事务处理 组成,一个

IN

事务处理由一个或多 个包组成(比如主机发送

ACK TP,设备发送

DP或NRDY TP或STALL)。

当下面的任何条件发生,都能结束

IN

传输:

•所有数据已经成功传送;

•设备端点发送一个 短包(比最大包尺寸小的包)作为应答

•端点响应错误。

Host

发送

IN packet

之后,设备可以持续发送多个数据包,不需要等待每个包都得到

host的确认包(ACK TP),因为超速是dual-simplex

(全双工)的,但是设备收到的总的认 可包数量应该和设备发送的数据包数量一样。 )

.

IN Session Trans a di on (s)

Lam

Figure 4-1. Supers peed IN Transaction Protocol

443 OUT transfer :

主机通过发送一个突发数据包给设备开始一次

含需要路由选择目标端点的地址信息,

OUT传输,每一个数据包(的

DPH

)包

也包含数据包的顺序号 (作为区分不同发送顺序的数

据包标号)。对于一个 非同步事务,设备返回一个确认包,其中包含下个要接收的数据包顺 序号和隐含地应答当前数据包。

注意虽然设备需要为每个收到的数据包发一个确认包,

发送最大的突发数据包数量给设备。

但是主机不需等待一个应答就能

OUT transfer在下列情况下时会结束:

•所有数据已经成功传送;

Host发送了一个短包;

•端点响应错误。

.

OUT Session

Transaction^}

N data

acknowl&aen&ntg

Figure 4*2, St perSpeed OUT Transaction Protocol

四种

transfer

类型:control、bulk、interrupt、isochronous transfer。用意同

USB2.0,但 是bulk最大包大小增加为

1024B,

control端点最大包大小增加为

512B。control端点不支持

0-1024之间任意大小,对

>1时,最大包

burst ,bulk

可以

burst 1

〜16,bulk

还增加了

Stream

能力;interrupt、isochronous

可以

bust 1

16

(当最大突发大小为

大小只能为1024

)。

1时,对于同步传输,其最大包大小能为

于中断端点,最大包大小可以在

1-1024之间任意大小;如果最大突发大小为

4.4.5控制传输

控制传输的目的与特点与

USB2.0协议完全相同。这个规格的协议层章节详细描述了用 于完成控制传输的包,总线事务处理和事务处理流程。设备架构那章定义了完整系列的设备 使用的标准命令编码。

每个设备需要启动默认控制管道作为一个 消息管道。这个管道用来进行设备初始化和管

。控制传输必须维持相同 理,用来访问设备描述符和向设备请求对其进行操作(在设备级)

的在USB2.0中定义的请求(获取描述符等命令) 。

超速系统会制造一个最好的条件情况支持主机与设备间的控制传输。正如

能和客户软件不能为控制传输主动要求指定带宽(不是能分配

USB2.0,功

10%的带宽吗?)。

512字节(同时反应了端点缓存大

4.4.5.1控制传输包大小

控制端点有一个固定的最大控制传输数据包大小为

小)。还有一个最大突发大小为

1

(控制传输不支持突发数据? )。这些最大值适用于在控制 传输数据阶段 的所有的数据事务处理。参考

(setup)与数据阶段(data)。

超速设备在设备描述符的

8.12.2章,详细描述了超速控制传输的建立

bMaxPacketSize域中必须记录一个

09H的值。默认控制管道

的默认最大包大小的解码规则在

9.6.1章被给出(2的9次方=512B

)。默认控制管道必须支 持最大顺序值为

32

(在[0-31]范围的顺序值被使用)。USB2.0与超速之间,设备到主机和主 机到设备的数据阶段数据传输和完成一般没有什么改变。

4.4.5.2

控制传输带宽需求

.

设备没有方法为控制管道指示想要的带宽。 主机通过权衡所有控制管道总线访问需求与 在那些管道上挂起事务处理来提供一个最好的情况给客户软件和功能设备之间的传输。 这个 规则跟

USB2.0

相似。

超速需要保留有效的总线带宽给控制管道作为以下使用:

•控制传输事务处理可能与其他被定义功能端点的事务处理一同被安排

•控制传输的重试不能优先于其他最好情况的事务处理

•如果有控制传输和块传输为多个端点挂起,

同端点的控制传输被选择服务。

•当一个控制端点传输一个流控制事件, 主机会移除来自于被安排的活动端点。 一旦收 到一个来自于设备准备好的通知,主机会对这个端点恢复传输。

这些要求允许主机与设备间的控制传输周期性的通过有最好条件的超速总线移动数据。 系统软件的任意操作行为在

USB2.0 5.5.4

定义。超速控制传输同样适用。

根据一个主机控制器相关的公平规则, 不

4.4.5.3

控制传输数据流程

超速保护消息格式和在

USB2.0

定义的控制传输的一般阶段流程。 超速协议定义了对控 制传输建立和状态阶段的相同改变。

4.4.6

块传输

此规格的

8.12.1

章详细描述了用来完成块传输的包, 总线事务处理和事务处理流程。 块 传输类型是用来支持想要跟相当大的海量数据通信设备,传输能使用任何可用的超速带宽。 超速块传输功能端点提供以下:

•对基于有限带宽的超速总线访问 •保证数据的发送,但是不保证带宽和发送时间

超速维持下面的块传输管道特征: •对块传输管道通信流没有强制固定的数据结构

•块传输管道是一个流式管道, 因此总是有通信流进出主机。 如果应用需要一个双向块 传输通信流,必须使用两个块传输管道(一个

OUT, —个IN

)。

标准

USB

块传输管道提供移动数据流的能力。超速增加了协议级支持 多倍流模式 的流 式概念。

4.4.6.1

块传输数据包大小

块传输端点应该在端点描述符中设置最大数据包大小为

1024

字节。也要指定端点在超 速总线上能够接受或发送的突发大小。可允许的块传输端点突发大小在

有的超速块传输端点要支持

[0-31]

的顺序值。

主机需要支持任何超速

bulk

传输端点和所有的

bulk

传输突发大小。主机要确保发送给 端点的数据包的数量不能超过描述符中定义的最大包大小。

过记录的最大突发大小。

块传输功能端点发送的数据包,其数据域必须总是小于等于

据量超过

1024,则突发事务中所有数据包除了最后一次,都必须是

此外, 发送的突发数据包不能超

1到

16的范围。所

1024

字节。如果块传输数

1024

字节大小。最后一

次是剩下的不足

1024

字节的数据。 块传输可以持续多个总线事务处理 。块传输在端点有以 下情况时完成:

•已经准确传输完了所期待的数据

传输了一个比

1024

字节少的数据包(短包) 应答

STALL

握手包

4.4.6.2

块传输带宽需求

正如

USB2.0

,块传输功能端点没有方法为块管道指定想要的带宽。块事务处理只发生 在超速总线上有可用带宽的基础上。 超速提供一个最好的条件在客户软件和功能设备间传输 块数据。 控制传输对总线操作比块传输更有优先权( 对总线操作的优先级,控制传输比较 高)。当有多个端点的

bulk

传输挂起时,主机会根据一个公平

.

访问原则提供事务处理的机会 给每个端点,这就是主机依赖性操作。

所有在系统中挂起的块传输竞争相同的有效总线时间。 端点和客户软件不能为块传输假 定配置一个指定的服务率 (总线带宽不能为块传输主动分配) 。总线时间被提供给客户软件, 由于其他设备被插入到系统或者从系统中移除或者因为块传输被其他功能端点需要, 端点能 被改变。 客户软件不能假定在块传输和控制传输之间的顺序, 即在一些情形中, 块传输能在 控制传输的前面进行。

主机在带有块传输端点的事务处理中能使用任何在

1

和记录的最大的突发大小, 更高效 的利用有效总线带宽。 例如, 可能有比有效总线带宽更多的块传输, 所以主机可以每次使用 事务中更小的数据突发, 以提供公平服务给所有挂起的块数据流 (因为块传输多, 有效带宽 少,所以为了能公平给所有等待的块传输机会, 主机会使用事务处理中比较小的数据突发大 小,从而将有效带宽充分平均分配给所有块传输) 。

当一个块传输端点传输一次流控制事件 (在

8.10.1

章定义) 时,主机会从安排的活动端 点中移除它,主机会基于接收到来自于设备的准备好通知恢复端点的传输。

4.4.6.3

块传输数据流程

块事务处理为数据可靠传输使用标准的突发序列, 在

8.10.2

章定义。 块端点通过一次合 适的控制传输(

SetConfiguration, SetInterface, ClearEndpointFeature

)被初始化成最初的 发送

/接受顺序号和突发大小值 (

8.12.1.2

8.12.1.3)。同样, 主机在已经成功完成了上面提 到的合适的控制传输后,配置块传输管道初始的发送

/接收序列号和突发大小值。

超速块管道的停止条件跟

USB2.0

定义的块端点一样同样有副作用。 从停止条件中恢复 也跟

USB2.0

相同。块管道 停止条件 包括

STALL

握手包作为一次事务处理的应答 或者 由于 发送错误主机事务处理的重试次数消耗完的应答 。

4.4.7 中断传输 中断传输类型用来支持带有轮询服务间隔需要高可靠性传输小数量数据的设备。 这 个规格的协议层章详细描述了与中断传输相关的包,总线事务和事务处理流程。超速中 断传输类型一般提供以下方面:

•能保证最大的服务间隔

•能保证在下一次服务间隔中尝试重新传输

在每个服务周期中为中断端点尝试中断传输, 保留一定带宽保证在每个服务间隔尝 试传输。一旦传输成功,就不尝试另外一次传输(在此周期内) ,直到下一个轮询服务 周期到来(保证每个服务周期中尝试一次中断传输) 。如果端点以没有准备好的通知或

者一个指示不能接收任何包的 ACK应答,则主机不会在此次服务中尝试另外一次到端点

的传输,除非接收到准备好的通知。然后主机必须在收到(准备好)通知后的

周期内服务端点。端点服务周期的请求在它的端点描述符中描述。

超速维持中断管道下面的特性:

•没有数据内容结构用于中断管道通信流

•中断管道是一条流式管道,因此总是单向的。

4.4.7.1 中断传输包大小

2个服务

中断传输端点指定了超速总线上可以接受的 /发送的最大数据包大小, 对于支持突发 次数

.

( burst size )大于 1的中断端点,仅仅允许的最大数据包大小为 1024字节;对于突

发次数等于 1的中断端点, 最大数据包大小能为 1到1024的任何值。中断端点允许的最大 的突发次数是 3. 所有的超速中断端点应该支持在范围 [0-31]的顺序值。

超速中断端点只用来移动带有界限服务间隔的小数量数据。 超速协议不要求中断事 务处理的包为最大化大小(即不要求每个数据包都为 1024字节大)。

主机被要求支持超速中断端点, 主机应该支持所有允许的中断包大小和突发大小的 组合。主机要确保在一次突发事务处理中发送到端点的数据包大小不能超过端点的最大 数据包大小。在突发事务处理中主机也不能发送超过端点最大突发大小的数据包数量。

中断端点应该总是发送带有数据域小于等于端点最大数据包大小的包, 如果中断传

输有比适应端点最大数据包大小更多的信息, 所有的突发事务处理的数据都要求为最大 包大小,除了突发事务处理的最后一个数据包,就是包含剩下的数据。中断传输可以包 含多个突发事务。

中断传输是在端点做以下几个完成的:

•已经传输了所需精确的数据量

•传输了比最大包尺寸小的数据包(短包)

•应答STALL握手包

4.4.7.2 中断传输带宽需求

周期性端点(中断和同步)可以被分配到超速总线可利用带宽的 80%。中断管道的 端点通过端点描述符指定它想要的服务间隔,中断端点能指定一个想要的周期 2(bInterval-1)

x 125 口 s,blntervaI值是在范围1到(包含16) 16。USB系统软件会在配置期间使用这个

信息,决定能被采用的连续周期。被系统提供的周期可以缩到比设备想要的还短,最短

到超速定义的周期大小(也是参考的总线轮询周期 125 口 s)。注意总线上的错误能阻止

中断事务处理在总线上的成功传输,因此超过了想要的周期。

超速中断端点在每个服务周期能提升到三个最大数据包的大小(

3x1024bytes)。对

于中断传输, 主机没有方法决定端点是否在没有访问端点和请求一个中断传输下进行源

/同步数据。如果一次IN中断端点没有中断数据要传输或者

接受数据,当被主机访问的话,会以一个流控制进行应答。

当有中断数据挂起避免客户软件错误通知传输完成的时候, 端点应该只提供中断数 据。一个数据负载为零长度的数据包是一次有效传输,可以用来进行某些操作。主机可 以在轮询服务周期中任何时刻访问一个端点。 中断端点不应该在尝试事务处理之间分 配固定的空间。 中断端点只能假定它在轮询服务周期会收到一次事务处理尝试。错误能 阻止轮询服务周期中的数据成功传输, 主机不被要求在同一个轮询服务周期中重新尝试 事务处理,只在下一个轮询服务周期中重试事务处理。

OUT中断端点没有充足buffer

.

4.4.7.3中断传输数据流程

中断事务处理使用标准的 突发流程 进行可靠的数据传输(在 8.10.2)。中断端点通过

适当的控制传输(SetCo nfigurati on. Set In terface, ClearE ndpoi ntFeature )被初始化成初始

的发送或者接收顺序号值和突发大小(参考 8.12.4.1和8.12.4.2)。主机在完成了合适的控

制传输后成功为中断管道设置初始的发送 /接收序列好和突发大小。

从停止条件 超速中断管道停止条件和 USB2.0定义的中断端点一样有相同的副作用。

中恢复也跟 USB2.0相同(Section 5.7.5 in the Universal Serial Bus Specification, Revision

2.0.)。中断管道停止条件包含STALL握手包对事务处理应答或者对由于发送错误导致主

机事务处理尝试次数的消耗的应答。

4.4.8 同步传输

正如USB2.0一样,超速同步传输类型是用来支持想要能容忍错误, 周期性的轮询服

(ITP) 务的传输流。超速跟USB2.0一样不发送起始帧,但是时序信息要通过同步时间戳包

被发送给设备。 这个规格的协议层章详细描述了用来完成同步传输的包,总线事务和事 务处理流程。也描述了怎么样传送时序信息给设备。超速同步传输类型提供下面的:

•保证在超速总线上一定范围延迟尝试事务处理的带宽

•只要数据被提供给管道,保证通过管道的数据率

同步事务处理在 每个服务周期 在同步端点上被尝试。 超速总线上承认的同步端点被 保证它们需要的总线带宽。 主机在对设备的特殊端点进行轮询服务间隔的任何时候都能 请求来自设备的数据或者发给设备数据。 被要求的端点轮询服务周期在端点描述符中被 定义。超速同步传输是用来支持一个以相同平均速率产生和消耗数据的发送器 /接受器

超速同步管道是一种流管道,总是 单向 的管道。端点描述符确定被给定的同步管道 通信流是流向主机还是流出主机。如果设备需要双向的同步通信流,则要使用两个同步 管道,一个输入,一个输出。

无论任何时候当同步传输需要穿过非活动链接, 超速电源管理都会妨碍到同步传 输。结果延迟会导致数据在服务周期内没有到达。 为防止这种情况,超速定义了 PING 和PING_RESPONSE机理(参考8.5.7),开始一次同步传输之前, 主机可以发送一个PING 包给设备,设备以PING_RESPONSE包应答通知主机所有连到设备的链路在活动状态 。

.

4.4.8.1 同步传输包大小

同步传输端点指定了端点在总线上能够接收 /发送的最大数据包大小。 对于支持突发

1024字节;对于支持突发尺寸等 尺寸大于 1的同步端点,允许的最大数据包大小只能为

于1的同步端点, 最大数据包大小可为 0到1024之间的任何值。 同步端点允许的最大突发 尺寸为 16.但是同步端点能在 同一个服务周期中请求 3次突发事务处理 。

超速协议不要求同步数据包一定要为最大数据包大小, 但是如果传输的数据量比最 大数据包尺寸小的话,数据包不被填满。

主机应该支持超速同步端点所有的同步数据包大小和突发大小。 主机应该确保发送

到端点的数据包量小于端点描述符中定义的最大数据包大小; 还要确保突发事务处理中 的数据包量不能超过端点的最大突发大小。

同步端点应该总是发送数据域小于等于端点的最大数据包大小的数据包。 如果同步

传输对端点最大包大小有充足的信息, 突发事务处理中的所有数据都要求为最大数据包 大小,除非突发事务中最后一次数据包,即包含了剩下的数据。同步传输能进行几次突 发事务处理。

4.4.8.2 同步传输带宽需求

周期性端点(中断和同步传输)能分配到 80%的有效超速总线带宽。同步管道的端

2(bInterval-1)

x 125 点通过端点描述符指定它想要的轮询间隔。同步端点能指定想要的周期

口 s。blnterval的范围是1-16.系统软件将在配置时候使用这个信息决定端点是否能被主 机安排。注意总线错误能阻止同步事务在总线上的的成功进行。

超速同步端点在每个服务周期能进行 3次最大突发大小为 16的事务处理的数据包传

输(3x16x1024bytes)。主机会在每个服务周期 发送数据到端点或者从端点请求数据。

意, 如果端点没有同步数据发送而被主机访问请求数据,则会发送一个注

0长度包作为数

.

据请求的应答 。

主机可以在合适的服务间隔的任何时刻访问端点。 同步传输端点不应该尝试在事务 处理之间假定一个固定空间(两次事务处理间相隔的时间不固定?) ,同步端点只能假 定它在服务周期会收到一次事务处理的尝试。 轮询服务周期发生的错误可以阻止数据的 成功传输。 但是由于同步事务处理中的包没有应答, 主机没有方法知道包没有成功传输, 因此不会重试包传输。

4.4.8.3 同步传输数据流程

同步端点总是在轮询服务周期中从包顺序号 0开始发送数据包 。每个在轮询服务间 隔中被依次连续发送的的数据包都带有下一个递增的顺序号。 顺序号应该从 0到 31循环 当发送了 32个包后,又从 0开始发送。同步端点不支持重试,不能应答流控制。

4.4.9 设备告知(非管道模式) 设备告知是一种为设备向主机进行设备级和总线级的事件通知的异步通信标准方 式。这个特色没有映射到为标准传输类型定义的管道模式。设备告知总是 由设备开始 数据流通知总是从设备到主机 。

第七章 链路层

7.1

字节顺序 包或者链路命令中的多字节域以小端顺序通过总线传输。 即先传输最低有效字节

(LSB)

, 最后传输最高有效字节 (MSB

)。

Figure 7-2 展示了字节顺序的例子:

.

one byte

byte

Transmitted first

WORD

byte 1

Transmitted last

byteO

Transmitted first

□WORD

byte 3

Transmitted last

byte 2 byte 1 byte 0

Transmitted first

byte3|

byte 2 byte 1 byte 0

byte 4

N bytes

• • •

byte (N-1)

byte-2) bytei'N-3) byte (N-4)

Traremitted last

U-078

Figure 7-2 SuperSpeed Byte Ordering

7.2.1包和包帧

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

721.1头包结构

所有头包有20符号长度,格式在在 Figure 7-3中.包括有LMPs, TPs, ITPs,和DPHs。头包 由三个部分组成,一个 头包帧,一个包头,一个链路控制字。

200 Framing Header and Urik Control

LSB (trsnsnltted list)

.J-K7

Figure 7-1 Header Packet with HP START, Packet Header, and Link Control Word

721.1.1头包帧

头包帧,HPSTART( header)顺序集,是一个4个基于K标志的有序集合头包起始帧

.

被定义为3个连续的SHP标志后面跟着一个 K-symbol的EPF。一个头包应该总是以 HPSTART序列集开始。头包帧的结构是能容忍

7.2.1.1.2 包头

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

1个符号错误的。

14 Bytes

MSB

mi

1

2 Bytes

. J -LJ.

LSB (transmitted first)

Used for.

Link Management Packet

Transaction Packet Data Packet Header Isochronous Time

stamp Pa Gkets]

U-D3S

721.2数据包结构

数据包是一种由数据包头(DPH

)和一个数据负载包(DPP)组成的特别包。DPH定义在

7.2.1.1.章。另外一方面,DPP由数据包帧和可变长度的数据构成,可变长度数据后面跟着

CRC-32。

Figure 7-8 描述了 DPP 格式。

7.2.1.2.1数据包帧

DPP帧由8个K-symbols,—个作为 DPP起始帧的four-symbol有序集和作为 DPP

结束帧的four-symbol有序集构成。正如 Figure 7-8所表示的,作为 DPP起始帧的

DPPSTART序列集,由三个连续的 SDP的K-symbols和后面跟着的一个 EPF的K-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 的半途终止结束。12

3

4

Figure 74 Packet Header

.

Packfit k^yload plus 4 Bytes of

CRC-32 and 8 Bytes of Framing

LSB (transrttt^d Prst;

13D P 1SD P

6 5

1END

1EN D

1END

4CRG

Oto W24 Byte?

2

4

Figure 7-S, Date Packet Payload with CRC-32 and Framing

72122数据包

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

CRC-32 略

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

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

示:

Parxfil, hcliFave nf

f/rti DaH

PBM刊評门』

DPH。

口/口

Pjckol Payload plus

E曲w

of

?Q Ryle? nf Fratnhq.

HIT静rirr、ond I i* Qnntid

1 1 1 E F

e E r

N h

N F p ij n

4CRC

0 ta ’ClMQdh) Bylu

1111 ES

S !> p

D

r;

r>

F

F

T' P

lEm:

11 Bylas

C

I nk Co*»ln: Wsri

LSB

1111

}

ESH S

PH H H

F

P

P

F

Figure 7-10. Data Packet wrth Data Packet Header Followed by

Data Packet Payload

头包由共20个字节,四个字节的

HPSTART序列集,14个字节的包头(Packet Header),

2个字节的链路控制字构成。

HPSTART似乎是用于链路双方数据时钟恢复同步用途,类似

于USB2.0时的SYNC

(同步序列);Packet Header则包含12个字节的包信息 和2个字节的

16

CRC; Link

Control Word

2

byte,包括

3 bit Header Sequenee Number, 3 bit reserved,

3 bit Hub Depth Index,1

bit Delayed bit,1 bit Deferred bit,和

5bit CRC。在第八章将会看到,

LMP,TP,ITP,DPH其实都是头包结构,只不过

12byte的包信息定义了不同的格式意义。

数据包构造:

数据包其实是由一个数据包头

(Data Packet Header,DPH)后面无缝跟着一个数据负载包

(Data Packet

Payload,DPP)构成的。DPH

的结构同上面的头包结构 ,DPP的结构如图

7-8

所示:

DPP由四个字节的

DPPSTART

(类似头包中的

HPSTART),

0〜1024字节的数据,四个 字节的32位CRC,以及四个字节的

DPPEND

(作用类似于

USB2.0的EOP?在数据有异常 的时候这个将是

DPPABORT)构成。

.

DatLa Pachat F*d/load plus 4 Bytes ot

CRC-32 andB Bytes af Frjfnng

MSB

丁山

■”

4 CRC

LSD (tr^nsmitledfirstl

1111 E S S

S

P D DD F

P P P

U4JC

8.1超速事务处理

随着向设备端点请求或者发送数据, 主机开始超速事务处理。随着端点发送数据或者

对接收数据应答完成事务处理。在超速总线上的一次传输是一次从设备到主机的数据请 求,然后将其分解为一次或者几次突发事务处理。当超速主机在等待当前总线事务完成的 时候, 它可能会开始一次或多次

OUT总线事务输出到一个或几个端点。然而,超速主机

不应该开始另外一次对端点的

进行一个IN事务)

收到一个DP包或者NRDY或STALLTP包或者因为当前被发送到非同步端点的

包的事务处理超时

•收到了所有被请求的

DP包,或者因为当前被发送到同步端点的

理超时

于tu

协议层管理Host和Device间end-to-end数据流,是建立在链路层正确传输基础上的。 本章详细描述:

•包类型;(LMP,DP,TP,ITP)

•包格式;

•包期待的响应;

•四种

transaction

类型;

|£J

P N N N h D D D

■ ■

对于非同步传输,端点可以通过下面应答有效的事务处理:

•返回一个NRDY TP包

-在OUT事务中通过返回一个

ACK TP

(正确应答)包接收数据

IN

事务中返回一个或更多数据包

npE

0 to 1024 Data Hytes

Figure 7-8. Dmta Paekei Payload with CRC-32 and Framing

第八章、协议层

IN总线事务,直到主机:(同时能进行多个

OUT事务,只能

ACKTP

DP包或者主机收到一个短包,或者一个最后包标志域置位的

ACK TP

(注意同步端点没有错误应答)事务处

.

•如果发生了内部端点错误,则返回一个

STALL TP包

一个NRDYTP包应答指示端点还没有准备好接受或发送数据。因此,设备端点和主机 之间不应该有更多进一步操作, 除非端点通知主机它准备好了。 允许在设备和主机之间实 现一个链路降低功耗状态, 直到端点准备好接受或发送数据。 当准备好时, 端点 异步发送 一个通知(

ERDY TP

)给主机,告知它现在准备好移动数据,主机通过重新安排请求事 务进行应答(返回

ACK TP?)。注意当它们被主机进行周期性轮询服务时, 同步传输不使

用ERDY和NRDY TP包。此外,发送到或者接收自 同步端点的数据包不被应答(同步传输 不检测错误, 不应答错误) 。也就是

ACK TP 包不被主机发送给同步端点来应答对数据 包的接收。(如果同步端点不能发送给主机要求的数据则发送一个长度为 0 的数据包)

端点只对主机的要求做应答。 主机是负责在总线上安排事务处理, 保证数据传输的正 确与公平,这通过IN和OUT请求的命令和时序来实现。事务处理不是广播的(

从强制的电源管理。

USB2.0是

广播),在主机和设备间的包传输是有一条直接路径。任何没有使用的链路都会进入降低 功耗状态,使得总线遵8.2

包类型:

LMP

TP,

DP,

ITP

四种。

所有的包有一个14字节的头,结尾跟着一个

2字节的链路控制字组成(16byte)。所有 的包头都有两个需要被接收方使用的公共域(版本与类型)

包头包含一个2字节CRC-16。包头有一个不可改变的错误率,它为

一个错误。

所有的设备(包括集线器) 和主机使用他们收到的

LMP

包。集线器额外负责将

DP,ITP,TP

传递到连接设备的下游端口和连接主机的上游端口。 注意

ITP

只能被主机发送和被设备接收 (广播)。

LMP

所有的包都被集线器传递出去,除非包是路由选择集线器它自己。传递

集线器更改。链路控制字的域在

8.3.1.2被描述。

如果Type域的值是TP或者DPH,路由信息(字符)和设备地址域就跟在

路由信息是被集线器用来路由选择上游端口的包传递到正确的下游端口。

组成的流总是从集线器的下游端口通过路由选择传到上游端口。

来验证一个包的源头。所有的其他域在这章会被描述。

数据包的头部包含了用来描述数据块的额外信息。数据块(

,用来决定怎样处理包,所有的

10X2个位中不能出现

ITP

包额外的规则在

8.7被描述。注意

TP,ITP,或者DPH中的链路控制字(比如

DF域)在被 传递出去之前可以被Type域后。

从设备到主机的包

设备地址域被提供给主机用

DPP)总是被跟着一个4字

CRC-32

用来判定数据的正确性。数据块和

CRC-32

一同组成了数据负载包

DPP.

8.3

包格式 这个区域定义了超速包。它定义了组成各种包类型和子类型的区域。

这个区域的包类型和位定义以未编码数据格式呈现。 添加到串流上的符号有影响 (即帧 包,控制或修改链路) ,像位编码,链路层帧,为了精简讲述,已经被移除了(它们对协议 层是不可见的) 。详细参考

6,

7章信息。在总线操作,效率或者时序讨论到的地方,会描述 那些底层操作对提供额外内容的影响。

8.3.1

所有头的公共区域

所有超速头以 类型域 开始用来决定怎样处理包。在顶层这个告诉包接收方怎样处理包:

是使用它(DP)或者是管理链路(LMP)或移动和控制设备和主机间的数据流(

TP)。

.

8.3.1.1保留值和保留区域处理

保留区域和保留值不应该用在一个商家指定操作中。

发送器应该设置所有保留域为

0,接收器应该忽略任何保留值。

发送器不应该设置已定义域为保留值,接收器应该忽略任何在定义域上设置保留值的 包。注意,接收器应该应答包,返回

credit作为每一个在724.1章指定的要求。

8.3.1.2类型域

类型域是一个5位区域,用来确认包格式。类型用来决定怎样使用包或被中间链路

传送。

Table 8^1. Type Field Description

Width

(bits)

5

Offset

(DW:bit)

0:D

Descri ption

Type. These 5 bits identify the pa匚ket's Type

Value Description

Link Management Packet.

Transaction Packet

Data Packet Header

00000b

00100b

01000b

01100b

Iso匚h「Gncius Timestamp Packet

All other values are Reserved.

8.4链路管理包(LMP)

LMP是指类型域被设置为链路管理包的包。 这些包用来管理单个链路,它们没有带

有寻址信息和路由信息。可以是由集线器端口命令产生。例如,集线器端口命令用来设 置U2非活动超时。除此之外,它们用来交换端口属性信息和测试目的。

格式如图8-4所示:

可以看到,结构上就是第七章中的 头包结构(从协议层角度看包格式, 屏蔽了

HPSTART

序列以及8b/10b转换码等物理层的特性)。

Type是5bit,所有类型的包都有的,其意义为

00000LMP

100TP

DP

ITP

所以LMP类型包,Type总是00000。

.

K 2-9 2B 27 26 25 24 2^22 21 K Ifl 17 15 14 11 12 11 10 9

G 7 € 5 4 3 2 1 0

DWORD 0

DVWORD 1

DWORD 2

SubType Specific

Sublype SpecrfiC

Sublyfje Specific

Link Control Wbn

Sub Type

CRC-1C

DWDftD 3

Figure 84, Link Managemem Packet Structure

8.4.1子类型域

SubType为4bit,表示了是何种类型的

0000:

reserved

0001:

Set Link Function

0010: U2 In activity Timeout

0011: Ven dor Device Test

0100: Port Capability

0101: Port Co nfiguration

0110: Port Configuration Respons e

0111〜1111: reserved

SubType Specific则是根据不同的

SubType有不同的含义。

规范对每种LMP意义和格式做了详细解释。

LMP

:

8.4.2 Set Link Fun ction

设置链路功能

设置链路功能LMP应该用来配置没有停留在活动(U0)状态中能被改变的功能。

在接收到带

Force_LinkPM_Accept位声称的LMP时,端口应该接受所有的

和LGO_U2链路命令,除非端口收到一个带有

来进行符合性测试目的。软件必须确保发送

LGO_U1 or LGO_U2链路命令之前,链路层没有等待的包。

当集线器收到一条 SetPortFeature(FORCE_LINKPM_ACCEPT)命令时,这个 LMP 被

10.4.2.2 和 10.4.2.9 详细描述了。

LGO_U1

Force_LinkPM_Accept位撤销声称的LMP。

SetPortFeature命令产生

注意:Force_LinkPM_Accept功能不正确的使用会严重影响链路的使用性能。这个 性能应该只用DWORD 0

DWCRD?

L Control Wcrd

CRC-t6

DWORDS

Figure 8^5. Set Link Function LMP

(Set Link Fun ction

)

-Subtype---4 位宽度,DW0:bit5,这个域应该为一个 Set Link Function 的LMP包被置位。

-Set Link Function----7 位宽度,DW0:bit9,这 7 个位识别 Set Link Function.(具体的命令)

.

Bits

0

1

0

1

6: 2

Description

Reserved

Force_LinkPM_Accept

意义

撤销声称不起作用

命令声称起作用

Reserved

843 U2 非活动超时(U2 In activity Timeout )

如果 U1 In activity Timeout 已经不使能了, U2 In activity Timeout LMP 应被用来定义

从U1转到U2时的超时时间,或者从

10.421。

31 3Q 29 28 37 26 25 24 22 31 20 19 13 17 16 15 14 U 1? 11 10 9 3 7 6 5 4 3 2 I 0

U0转到U2的超时时间。具体细节见 Section

Reserved

U2 Inactivity Timeoul

Reswv&d

Reserved

SubType

Type

DWORD 0

DWORD 1

DWORD 2

nk Control Word

CRC-16

DWORDS

Figure 8-6. U2 Inactivity Timeout LMP

Table fl-5. U2 Inactivity Timer Functionality

Width

(bits)

4

6

Offset

Description

(DW:I>U

0:5

09

寸i汕

be set to U2 'nDcth>Hy Timeout for 5 U2 InscL Mty Timecul LMP.

U2 Inactivity Timawt Tbese fl hil<5 re?prE^sf?nt Ihf? U? InrSdivily TirrtpOul w^lufi Th^ v^lw pl貞禺d in Uiis field is

Subtype. This fie d

the sane value that sent to thm hub in a Sei Fort FeaturB IPORT_U2_T1MEOUT) lr'fi Rf?for io SPelion TO "4 2

& (iX dflfii On lhe

测说小円

M th r finld

8.4.4 商家设备测试(Ven dor Device Test )

使用这种LMP是为了商家指定的设备测试,不应该在正常操作链路下使用:

31

20

27 26

益 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9

Roservod Vencor Device lest

6 7 6 5 4 3 2 10

SubTypo Type

DWORD o

DWORD 1

DWORD 2

Vendor Defined Data

Vbndor tXjfined Data

L mk Canfral Word CRO16

DWORD 3

Figure 8-7, Vender Device Test LMP

Table 8-6” Vendor-specific Device Test Function

Width

(bits}

Offset

(DW:bH|

Description

4

B

Subtype ibis field shall set to VwrtforOevfoe Test

0.9

1:0

Vender-tp&ckfbe device teM The function of ite&e B bits is ^rendor specific.

V«ndor-icfefinod d^ta This valu$

64

vftndor-defiriad.

.

845 端口属性(Port Capabilities )

端口属性LMP描述了每个端口链路属性,它在成功完成了链路训练和初始化之后 被两个链路伙伴互相发送。所有端口应该在完成了链路初始化之后,在tPortConfiguration 时间内发送这个LMP。

如果一个链路伙伴在 tPortConfiguration时间内没接收到这种 LMP,那么:

•如果链路伙伴有下游属性,它应该发送一个在

这个设备支持的其他速度连接。

31 30 M 35 74 21 22 21 20 W 10 17 16 15 14 13 12 11 i0 5 B 7 6 5 4 3 2 1 0

Section10.1426中描述的错误

•如果链路伙伴只支持上游属性, 那么上游端口应该转变成 ed,它应该尝试用

Reserved

Reserved Tiebreaker R D

Link Speed

Reserved

SubType Type

USVUKD D

UWDRD 1

DWORD 2

Num HP Suffers

Reserved

Link Control Ward CR36

DWORD 3

3笛

Figure &-a. Port Capabilrty LMP

Table B-7. Port Capability LMP Format

Width

(bite)

4

Offset

(DWbrt)

OS

Description

SubType, Ttii% fiftld be

茨t tn Port 心和十抑冲

7

Link tpeed This fieHd 13 a aitmask that (Sescnbea the link speeds suppori&(9 by this device.

Bits

0

6:1

Description

This bit sh^ll ba sst to 1 io irnjicatP thin devicB supports ^igniiling

5 Gbps

RaurvedL

16

Reserved (RJ,

10

Num HP Thi® fi(Md frr-fifth Ih丹

numbfl-r of hfiader pjtcli讯

bijflflrs (nn

are resserved.

d

Transmit or Rccoi«J this devke supports. All devices that are ccrnplionl to tnis revision of the speciha

2

1 B

1 16

felum a

Rffserved (R)

OiFBGtiofl (D) Thtfi (told

ol 4 M this field All oth^r

也lion shall

令 也

usMi to KJamHy the uptlraain ar downctrsam capNMHiss of the part All pcirte

nr I帕orvt of ih旺阴

bi is *航.

Sits

0

DB^crlplIon

If 4hi£ brl

to 1* then diis port can be confiiguredi lo be a

downitreainn part.

1

2

4

1:1B

1;20

Raserved (R)

Tiebreaker^ This fioid is only

othar.

If this bil

sol to 1, theni

血惟

port can bd oon loured! Io bo an

曲lid wtiw both bits 0 and 1 of the Dlrsctioni field are sei This lielti

used to

dfettimine the port type when two devices wilh both* upslream and: down^lreani capability are connedlod Io oach

矗它

Table B-A for dslails.

Thss fteld shall be set to zero jn all other cases..

40

1:24

Rwsrved.

Tiebreaker :只有当Direction域的bit0和bit1都置位时,此域值才有效。此域值用来 决定都可配置为上游和下游端口的两个设备哪个作为上游,

情况,此域值为0.

在交换端口属性LMPs以后,链路伙伴应该决定哪个链路伙伴应该被配置成在 Table

哪个作为下游端口。在其他

.

8-8.中指定的下游端点;

Table 8*8. Port Type Selection Matrix

Port J

UpMre^m Only Downstream Only

Port 2

th@

port.

占tn&会R

Both

Pnrl 2 r& Iha down占肝白之fh

port-

Port 1 i£ lha dkywnslrsam port

Up&trflam Only

DawristrMm Only

Port 1

8oth

Nol Ddfinsd

Ron 1 is. me dcwnstream* Not Dolirwd

port.

Port 1

Eiie downstream Port 2

the dcwnsrtreanrk port

port.

Pie port with the higher *b>alLie

in the Tio breaker Field shall

betome the idouwistreann p(xl!,

注意:如果TieBreaker域内容相等,那么两个链路伙伴应该再次以新的不同 TieBreaker 域值交换端口属性 LMPs。TieBreaker域值序列被端口随机产生。当 TieBreake值不相 同时,较高值(1)的端口为下游端口;较低值(0)的端口为上游端口。

846端口配置(由下游端口发送给上游端口)

只与Port Capability LMP不同的域被描述

所有支持下游端口属性 的超速端口应该能发送这种

如果要在上游模式中被配置的端口在链路初始化后

到这种LMP,那么上游端口应该转变成

他速度下连接。

31 30 29 28 27 26 25 34 25 22 21 20 19 10 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Reserved Link Speed SubType

LMP

PortC on figuration时间内没接收

ed,它应该尝试在这个设备支持的其

Type

DVVOROO

DWORD 1

DVVORD2

Reserved

Reserved

Link Control Word CRC-16

DWORD 3

Figure 8-9- Port Configuration LMP

Table 8-9. Port ConfiguraUon LMP Format (DiFferences w^th Port Capability LMP)

Offset

Width W)

4

7

Description

(DWzbrt)

0:5

$ubTyp«. This fieitf

汕all be set to Ptxi Con阿屮疏3一

al which Vw upstrouin port sJhaM Dperate. Only Link fipeod This field de&critaesi lire Ihnk

one of !hh&

出恰

in this field shall set in the Port Configuration LMP sent by the link pawner configured m Ulis

Description

If 41dawnslrtssim mode.

Bits

0

BO

0:16to

Reserved

bil

fiat to 1a then Uh is shad operate at 5 Gbp^

在下游模式下被配置的端口应该发送端口配置

端口应该为链路速度域只选择一位。

LMP给上游端口。发送这种LMP的

那么下游属性端口应该发送一个

如果一个下游属性端口不能和它的链路伙伴工作,

在Section 10.1426描述的错误信号。

.

847端口配置应答(由上游端口发送给下游端口作为端口配置的应答)

这种LMP被上游端口发送作为一个端口配置的应答。它被用来指示端口配置

的接收与拒绝。只有与端口属性 LMP不同的域被描述:

所有支持上游端口属性 的超速端口应该能发送这种 LMP。如果下游端口在端口配置 时间内没接收到LMP,它应该发送在 Section 10.1426中描述的一个错误。

31 30 29 28 ?6 25 24

Reserved

LMP

?1 ?0 19 1S 17 16 15 14 13 12 10 fl 8 7 @ S 4 3 2

SubType

1 0

Type

DWORD 0

DWORD 1

DWORC 2

Response Oxi©

Reserved

r ......................................................................................................... .......................................... .....

.

.............. ...... .

.. ..... ...... ...... ... ..... ............ ... ... ... .... ........ .......... . .. ... ......... ........

Rnscirved

L ink Control Word CRC-16

DWORD 3

Figure 8-10. Pori Configuration Response LMP

Table 8-10, Port Configuration Response LMP Formal (Differences with P0rt Capability LMP)

Width

(biLs)

4

7

Offset

Description

0:5

o;e

Sut)Typ

Sit*

0

6:1

OflicriDHon

阳MEEHOH

^«*pcn»4 Gode mis ficm irdfcates tne seiiitigs tnai were accepted m me Pon Ccnngu(auon IMP Ih^l wafi SfiE bo a

If this t>t is set to 1 ■ Shen This dewce acceded the Liok Speed seiting.

Reserved

one

R”・rvarcL

如果应答码指示链路速度被上游端口拒绝,那么下游端口应该发送一个在

10.14.2.6中描述的错误信号。

8.5事务包(TP)

事务包在主机和设备间的直接路径上传输,

Section

TP用来控制数据流和管理端到端连接。

类型域的值应该被设置 为Transaction Packet。路由字符被集线器用来路由选择将一个呈 现在其上游端口的包传递到正确的下游端口。

TP包中的路由字符被设备设置为0发送 给主机(设备发给主机TP包,集线器由下游端口传递到上游端口,不需路由选择)。 当主机发送一个TP时,设备地址域(Device Address

)包含接收方的地址。当设备发送

TP给主机,那么它设置设备地址域为它自己的地址,这个域被主机用来确认TP的来源。

TP的子类型域被接收方用来决定TP的格式和使用。

TP结构上也是一个 头包结构。同LMP类似,TP有多种

SubType,一个典型的

ACK SubType的TP包格式如图8-11所示:

TP的SubType有如下类型:

0000:

Reserved

0001

:

ACK

(此类事务包用来向主机

/设备报告包正确的传输)

0010

:

NRDY

(此类事务包用来向主机报告数据包还没准备好传输)

0011: ERDY

(此类事务包用来向主机报告数据包准备好传输了)

0100: STATUS

(报告控制端点的状态?)

0101: STALL

(此类事务包用来报告发生了错误而停止传输)

0110: DEV_NOTIFCATION

(此类事务包只能用来向主机传输设备通知)

0111: PING

(同步端点中探测链路是否进入低功耗状态)

1000: PING_RESPONSE 1001~1111: reserved

.

规范对每种SubType的TP作了详细解释。

8.5.1

(确认)应答事务包(ACK Transaction Packet

)(主机和设备端点都能 发送)

TP用来两个目的:

•对IN端点,这个

ACK TP被主机发送以请求设备的数据(包含下一个包顺序号)和应 答前一次收到的数据包。

•对OUT端点,这ACK TP被设备对接收前一次被主机发送的数据包作应答和告知主机 在这个包被接收后的有效数据包缓存数

数据包)。

(告诉主机,传完这个包后,设备自己还能接收多少

31 30 ^9 Zfl 27 25 24 23 22 21 2C IS W 17 15 1^; 13 12 11 10 8

7

6 5 4 3 2 1 □

Device Address

Reserved Seq Num

Reserved

Link Gotilrrl Wurd

ROLLS String/Reserved

FJurtiP HE Rsvrl Ept Num D rty R^vd SubType

Type

D'Z'CiRL

'.:

DWUHD 1

eserved PP

Stres m ID?Reserved

CRG-16

DWORD 3

Figure ACK Transaction Pocket

.

Table 0-12. ACK TP Format

Width

(IMIS)

2D

Offset O«sc rj pti on

[DW:l3it)

:5

Route Etnnj^Reserved ' ms Tie id s oir/ uied nuts, in conjunctior witn:ne nu口

ampirL」i

used tn nouiE ® pac归 D

tie cornet fWvrnsme^ffi pon Refer to SecXion 8-9

的f details” When sent DM

a device, in is n

a is Feserx^ea

7

0 35

0wic4 Addran Tris neia specines tne JeJce, via

caress, mat i&ine recipient ar tna source oTine

TF Refer to

seaion e.B.

d

2

1

T.D

1.4

■ &

SubTfp*. Ttiisfie d

才四1 be、乂

to

R«E«rv«d I'Re^dl)

ftn du

心,、TP.

R*trv DituP&

才“

a

pcorni:-ft: cWa park*t

剧id

IP :*吐■

tt■ ranfinitter tr rtw r|

心茁勺

pac. cf :fanng or m: 5pecited uoq orcc riLmecr

or m'i'e

1

Directaon(D) 1 Ins

f elc aefines me di action of an endpdrtwrthki the deMcetrat ks the souire ar rec pl=nt or:N3

TF ?oSer:ion B

H

V9UU«

at>

1b

DlrwHon p?ts FIPW

no st to Device

D£MC& to Halt

出跡

i= hhe

1B

lEndpoint Number jiE pt Nun J Thi? fiplri rirtFrmirps an erripn rt wiiiin NTF

nurce ar

ITC ipsprif or thi s TP PHPT to S petta n 8 B

R«!«rv»d (Rsvd)j

1

1 12

1 15

H«5t Error (HE) l n ? Tieid is orwy vgli ? ?/ien tne

AUK 13 s^nt ironi ne nast

:□ a devi

TE rr(g [)[[ shall Le setirmE unable

DO accept 3 ^IIa datap^cK^t due to irternai ncis: issues.

V/nen tne nostsets mis field, it muse also set tne R^try Data PachetTi^id for a no rH so chronons transier.

Numi>cr or rz^Kcts

址町

is itcato oicTDtie nuri&zr cr Dara Packet

Inereceker u討

1 jjcept ire '^e in tils fl^ld shall be kss tran or

tiat

山耐旧

rnaxur urn Lurst

5

1 1&

ike supponeii tjyOite ^ndpoiiiL

A ifettjmined

血 酌匕讪

1謔

ri:ip Burst 6iie ddJ 1; 1?

a ErntiuinL Comparkon

DhcnptuF.^efrr Ito S mis 9.6.7)

5

1 21

6

16

S@qu«ince Number (5@q Num). This r^d dis ua=dl to denblv tte 5

quence number of the ne>:t expEded data

paikFf

Rt leaved

Stream iCjReserv^d fcr-is

ACK I

-

i? terg?ted a? a9ui^ cnctooint. ihi~ rieid ccrtane a Stnearn

ID

value ceween i ano

65636. i h「stream ID ^aiue nt 0 is regefveci for Stneam ppes. The usage OTtnis lie id is class (dependent This

ueld

酣制

be set to zero r tne Bulk enapoirr docc nit suppoc screams

126

?[l

11

1

2 1&

2 27

R4««rVAd

Packets Pendinia(PP)rrLisneldOTi ony beset bycneHosi irthcneid i" saine hoscr^as di uLnei |_uckuLc^dllublt^ (ur tr u

urupuiriLIdBfitiruil

氐山£

Endpotnt Number «uid Dlrecticn (It: d. IF im end|paint5 on th s

匚日』i匚巳

ha^e jackets

pending, then tfrie dEVICE 匸三门

use this information ta ap?grB55ively power manage its up5tre=m in

e.g

s set the 1

rUp a lower pair er U1

□「U 2 5tatEh

7 2B

Reserved

8.5.2没准备好(NRDY

)事务包(只由设备端点发送)

这个TP只能被设备为非同步端点发送到主机。如果

OUT端点没有有效包缓存空间接 收主机发送的DP,它会发送这个

NRDY TP给主机。如果IN端点不能返回DP作为被主 机发送的ACK TP的应答,则他会发送这个

NRDY TP给主机。

只有跟ACK TP不同的区域在下面描述:

M 3C £9 20 27 2C

DmiDJe Addlr tiM

£2 2t) 19 Ifi i7 10 15 w « 1? 11 it) S fl 7 U 5 4 5 2 t b

良曲旦ffvbsd T沪

Euf Num D Rsivd SjbTyptf

W jRD C

CVURD

I

CHYCRD

窝ream IIXRosgr阳W

2

Lint Ocht^J Y旳咱

CRC-1 e

Figure 6-12. NRDY Tranaaetloii Packet

.

Table 8-13. NRDY TP Fermat (Differences with ACK TP)

Width

(出为

Offset

[DUW:ht)

1-0

14

1 P

Petal pilon

SubTyps Thi5ifi?d shall h? =p|-to .VR.1V

Rwervsd iRsvd]

Reserved

d

3

5 2 27

8.5.4状态事务包(status TP,只能被主机发送给 控制端点)

这个TP只能被主机发送。它用来告知控制端点,主机已经初始化一次 控制传输的状态阶 段。这个TP应该只被主机发送给控制端点 。只与ACK TP不同的区域在下面描述:

31 3D 22 2^ 27 26 25 24 23 22 21 2D 1& 17 16 15 14 11 1Z 11 1U 9 8 7 6 $ 4 3 2 1 0

Device Address

Rosorvod

String

Ept

NUTI C Rcvd SubTyco

Rtisrrrwd

Typift

■5WORD 0

□WORD 1

nWORD ?

Lirtt Control Wore) CRG-16 DWORD

3

Figure 8-14. STATUS Transaction Packet

Table 8-15. STATUS TP Format (Differences with ACK TP)

Offset

De^cjlptlon

width

(bits]

4

3

砂b 0

t:d

04

1 12

SubTyp« This A eld iha 1 te «ec to

Th 'S

R»«rv0d (R&vdJ

Rnerved

57

8.5.5停止事务包(STALL TP,只由设备端点发送)

这个TP只能被设备端点发送给主机,用来通知主机 端点被停止或者控制传输无效。只 有与ACK TP不同的区域在下面描述:

31 30 2B 27 iG 2& 24 2S £2 21 20 13 17 13 15 14

K-isorvod

RidStfrveo Nur'i

12 11 10 9 8 7 B & 4 3 2 " C

DWORD 0

UDV C2: Adc rose

D

Rivci

SubType

DWORD 1

DWORDS

Unk Contro Word

CRC-1S

Figure 8^15» STALL Transaction Packet

.

Table

Width

[bits)

4

■I

STALL TP Format (Dinerences with ACK TP)

Offset

OFScriptlon

CDW:bL)

1:0

^ubType TTi咗

fied ^ha4l te iet

x 宕申LL

Rasfirvad (Rsvd)

R«erved

-:4

1 W

5?

8.5.6设备通知(DEV_NOTIFICATION

TP (只能被设备发送)

这个TP只能被设备发送。它被设备用来通知主机设备状态或者接口状态发生了一次异 步改变,即确定引起设备唤醒远程操作的设备 功能。这个TP不是从特殊端点发送,而是从 一般设备发送出来。只有与ACK TP不同的区域在下面描述:

V)酋2丁的制竝弹劝“怕仃俗詬恫侣佗节T 们 环內

T & $ 4 d 2 ¥ Q

RGScr/od Type

Type

O^iceAcd^css

DWORD

0

DWORD 1

DWORD 2

Nott csi)cri lyc«o SpaciJic

LkitFflcailori Typa SueciUc

SubTypo

Dr^iceAcd^css

ink Contra Word

Rcscr/od Type

L-1G5

Figure 8-16. Device Notification Transaction Packet

Table 3-17. Device Notitication TP Format (Dirterenccs with ACK TP)

Offset

D«scrlptlGn

SubTyp« This ffeln whmll ie set tn DEV_fiiOTirh H附

NMlfic&tlon Ty p*.

The

Held identifiesthe type

or Ttie device nolificttlDn.

Width

個同

()

1:D

4

4

oFMgtifiC稲©n Packwi

ooonb

Reserved

FTJNCTC1N_?WKE COD lb

COi Ob

LATENCY_TOLERA NC E_M ESS AGE

SUS. INTER/AL_ADJUSTME^-T MESSAGE

S^sprved

0101 lb

OlODb- i Hlb

8.561唤醒设备功能的通知

30 29 2& 27 23 26 2+ 23 32

Devize Addira&s

20 1D 16 17 15 14 1S 12 11 10 i)87 & 54&210

REissrveid Type

lDC

Reserved

Reserv&d

Irrtorta□&

7>冲

D'Z/GftD 1

D■恥姬2

s

U-1M

Link CjrilrtJ Word

Figure 8-17, Function Wake Device Notification

.

Table 8-18. Function Wake Devi|ce Unification

Width

(bit5)

Offset

Mbit)

I D

f-4

1 8

1:10

Description

4

4

$u»Typ« Ttiis ficl^ zhall tc sc:忙

CEjNWRSHQW

NctiFication Type -UNCTlON_WiKE

imtrfac* Tfiisfiald idantirbes tjiefi-Et interface n fine function tnai caused the

device to perform a remote

内"亡

ope^ation.

R«« srvftd

4B

8.562

延迟容忍消息(LTM)设备通知

LTM设备通知是一个能使更多电源有效操作的可选标准特性。

弟加恥沖77刑曲汹酸并臂5 怡1了厲怡冯13 ◊ H 佃q

h 7 S □ 4

% 7 t 0

Device Adc ress

Roeor^od

Reserved

BELT

NtotTk总

tion

Type

DWO^D D

Sjfc>Tpa

DWQ^D 1

DWitC 3

Rasa'/fed

UnKCanlrol Word CRCdG

u附

Fiqure 8-1«* Latency Tolerance Message Device No师cation

Table 8-10. Latency Tolerance Message Device Nottncation

Width

Offs et Description

(□W Lit)

〔咖

4

1:D

StibTyp*.

Thisfidd sh^il

血冷就tu

C£Y

A/Qr/HC/ir:QM.

: 'ort I. " cy 1 ultrah.^e

vgl 1

JB, tyeserlinj the ;'n^ in

Notin cation Tvp«

I ATFMCY_TOl FPAr

.MESSA^F

J H BELT [his iidd Cej sritjES ifi? Besna ic sEconds t^iat a device tan '.vat tor ssr ze before E^enencng」r JibsidEG cpsradoraL £id^ effects.

Bits

S

0

11: D

DesQriptiQn

L^lencyValue(ns]

LatencyScele

V»llM

OCb

01ti

Wb

D*verlptl4h

Pt seized

LatencyValue is Do De rnulljplied ® 1024

LatBncyV-3lu& i& to jie mm in plied by 3 2.738

I lllo

R«bM-v«d.

LssncyVaiue is to ae mt Dplied 也 1 .U^J.S/b

LatencyValue (ns) ------ 容忍值(ns)

LatencyScale ------ 延迟容忍级别

00b

01b

10b

11b

Reserved

LatencyValue 乘以 1024

LatencyValue乘以 32,768

LatencyValue 乘以 1,048,576

8.5.6.3总线轮询周期调整消息设备通知

.

Figure 8-19. Bus Interval Adjustment Message Device NoTin cation

Table 3-20. Bus Interval Adjustment Message Device Notification

Width

(bib&J

Offset

De st ription

()

D

1 4

SubTyp<

Thisfiqsld

号hnll

set 10 OE/JJOTiHGAUQN,

Motmcirkn Typ«

B U £l HTEFfV AL A£1 U v TM E

Reserved

Burs Adjustm ent

This f Aid 12己

UWs mmplFmenl

in

BusinteTvalAdjustiTEnK?raudarilry units

『Pinpm] frnrri -1?76F! to + J?7B7

A

ESS AG E(

1 R

T10

16

Bus Interval Adjustment

:这个域是一个二进制补码值(

初 3 护 丁帀阳

H 2?州

M

1a 17 1H 15 14 13 1? 1" 10 ft si 7 ft

F H 3

范围为-32768到+32767)

?

J n

lyoa

SVfORDO

VW訂丸n -

D^icEfAddr^a

RUH Ad]UfllriRni

Res&'^ed

WQfibz

CRC-1&

3W0RC1

U.1Q»

L nK Conirol Wo-d

8.564功能唤醒通知

如果使能了远程唤醒功能,

设备挂起(在转变链路为

则设备可以通过发送功能唤醒设备通知给主机告知它想要从

U0之后)或功能挂起中退出。详情参考

9.2.5章。

8.5.6.5延时容忍消息(LTM)

容忍度消息是一种利用记录的

源有效平台操作的标准

BELT

Best Effort Latency Toleranee

)值来使能更多电

USB电源管理特性(最大可能的更节省电源?)

BELT值是设备没有获得主机服务的最大时间(作为所有配置了的端点的服务需要因 素),尤其,BELT值是在主机接收到来于设备的

的时间。

设备指 示它们 是否能 使用在

BOS descriptor中 的 SUPERSPEED_USB Device Capability

ERDY和主机发送对

ERDY的应答之间

descriptor的LTM Capable域 来发送LTM TP。LTM使能特性选择器 能使LTM

设备发送LTM TPs。

8.5.6.5.1可选择的标准

LTM和BELT请求

一般设备请求:

LTM TPs应该只被外围 设备发送

LTM TPs适用于除了同步端点 以外的所有端点类型(可能同步端点无法忍受延迟请 求)

• 一旦BELT值被设备发送给主机,

被服务。

•设备应该发送

BELT

域为

tBELTdefault

LTM TP,作为

tMinLTMStateChange 的 LTM 使所有被配置的端点应该期待在指定的

BELT时间内

能状态下任何改变的应答。

•设备应该确保它的 BELT值尽快的被决定,以便于在需要改变

供设备服务延迟容忍的合理参考。除此之外,应该符合下面条件:

---最大的LTM TPs数是由tBeltRepeat约束

---每个LTM TP应该有一个不同 BELT值

-系统应该默认所有设备的 BELT为1ms (参考Table 8-33)

-BELT 的最小值为 125us (参考 Table 8-33)、

BELT值之前能提

.

设备要求管理建立 BELT 值:

• LTM机制应该利用U1SEL和U2SEL来提供系统延迟信息给设备。 在这里,系统

延迟是在设备发送 ERDY 和在最深允许链路状态为 U1 或 U2 时将收到来自于主机的事 务包( ACK TP? )之间的时间。这些值被设备用来正确调整它们的 BELT 值。

-----允许它们的链路进入 U1,但不进入U2的设备应该从总容忍延迟中减去 U1系统 退出延迟( U1SEL) ,将结果作为 LTM TP 的 BELT 域值发送。

-- 允许它们的链路进入 U1 和 U2 的设备应该从它的总容忍延迟中减去 U2SEL, 将结果作为 LTM TP 的 BELT 域值发送。

8.5.6.6 总线间隔调整消息(真的难看懂 - -) 这个设备通知可以被设备发送用来请求一个总线间隔长度的增加或减少。

周 期 , 例 如 , 如 果 设 备 请 求 增 加 一 个 总 线 间 隔 调 整

(BusIntervalAdjustmentGranularity )单元,然后又请求增加两个单元,那么总共主机请 求增加了三个单元。

主机应该支持 -37268 到 37267的绝对范围的总线间隔调整单元。 设备不应该 每 8个

总线 周期超过一次请求调整。 直到设备等待足够长时间而精确知道之前的总线轮询周期 调整请求对随后 ITPs 时间戳值的影响 ,设备才应该发送另外的总线周期调整请求。设 备不应该单次请求 BusIntervalAdjustment 单元超过 -4096 到+4096.设备可以随着时间多 次请求

BusIntervalAdjustment 总共超过 4096 个单元 . 直到设备在过去 125us 里接收到 ITP,才可以请求总线周期调整。ITP包含一个其值等于 0或者等于设备地址的总线周 期调整控制域,此时设备在地址或配置状态 。

一次只能有一个设备控制总线间隔长度。 主机控制器使用 先来先服务 原则来处理总 线周期调整请求。当主机控制器开始操作,它应该发送带有总线周期调整控制域为

请求的ITPs。当主机控制器首先收到一个总线周期调整控制请求时,它会设置随后的

ITPs (由主机广播)的Bus Interval Adjustment Control 域值为发送请求的设备地址,一 旦域值被设置为非 0值,主机应该忽略来于其他所有设备的总线周期调整请求。如果被 控制的设备断开了连接,主控制器应该复位 Bus Interval Adjustment Control 域值为 0. 主控制器可以给软件提供一种方式,不顾总线周期调整控制域的默认行为, 而选择一个

控制设备。主控制器应该在收到调整请求的两个总线周期内开始应用新调整的周期。

最小的总线周期调整(一个 BusIntervalAdjustmentGranularity )要求主机做一个 8x4096个总线间隔的平均调整。主机被允许在单个总线周期中做此调整,

所需时钟,总线轮询周期不需要一个比

间调整时,应该按下面的约束均匀分布:

•包含不止一个 8高速位时间的轮询周期调整要涉及到最大调整总线轮询周期。而 其他轮询周期不用

•在任何总线轮询周期中做的 8个高速位时间的调整次数不应该超过任何其他总线 轮询周期调整的高速位时间调整数

•在两个连续最大调整总线轮询周期之间的差值不应该变化??

轮询周期中进行总线轮询周期调整。当主机需要每

常用于产生ITP

8个高速位时间小的周期。主机应该在有规律的

4096个总线平均做多次 8个高速位时

0的

这典型被

设备用来试着与主机外部时钟的总线周期时钟同步。 总线周期的调整请求是相对于当前 总 线

.

直到之后主机收到那个有效的总线周期调整请求的总线周期, 总线周期调整的平等

X-1个总

分配和平均调整请求才应该在主机收到调整请求后的一个总线周期中应用。

下面是一个主机为指定有效总线周期调整请求操作的例子。上电后,在第

线周期中,主机收到一个增加 10个BusintervalAdjustmentGranularity 单元的总线周期调 整请求。主机控制器使用带有一个 8个高速位时间周期的时钟来驱动产生时间戳和总线 周期的计数器,主机控制器把额外的 8个高速位时间时钟节拍在每一个以下总线周期中 添加到它的计数器上: X+409, X+819, X+1228, X+1638, X+2048, X+2457, X+2867,

X+3276, X+3686, X+4096, X+4505,

8.5.7 PING事务包(只能被主机发送)

这种TP只能被主机发送。它是被主机用来在开始同步传输之前将所有连到设备的 链路转回成U0。详情参考这种 TP使用的Appendix C。只有与ACK TP不同的区域被 描述。

设备应该在tPingResponse time时间内通过发送 PING_RESPONSE TP (参考Section

8.5.8)给主机,以此对PING TP应答。

设备应该保持它的链路处在 U0直到随后它收到一个来自主机的包,或者直到

out time 超时。

51

tPi ngTime

29 2B 2? 26 25 24 23 22 21 20 1B 17 44 1312 11 10 & 3 7 B & 4 3 2 ' C

Routs Strir<]

DWORD、

DWORD 1

Reservec

REtsE-irved

EFT Num D RsvdP

Link CorlrcJ /Jord CKC-ie

DWOfttJ 3

Figure 8-20. PING Transaction Packet

Table S-21. PING TP Format (differences with ACK TP)

Width

4

QfFset

(□Wbrt)

1:0

1:4

OfrEcripticn

SubTypt : h

E teia shalt be se: to

円忖_.

Res«rv«d.

Reterved

3

52

1t?

8.5.8 PING_RESPONSE Tran saction Packet

(只能被设备发送)

这种TP只能被设备发送给主机作为 PING TP的应答。一个

PING_RESPONSE TP应该为每个收到的 PING TP被发送作为应答。只有与 ACK TP不 同的区域被描述:

.

31 30四24 27 2& 2&曲E3 22 3 20您1日仃16舫制佔12們10 9辻7应弓*

Cml腑

Add "fe;3 2 1 0

Rtttjrvfed

Rystsrwtsd

FPT

NLFI

C RsWP

StlbTypfe

I

DWO=?D2

Llrk Control Wcjrd

CRSd&

DWO=(US

H-no

Figure 8-21 ・ PING_RESPONSE Transaction Packet

Table S-22. PING_RESPONSE TP Format (Differences with ACK TP)

Width (bitsl

4

3

1

Offset

Description

(DW:b tj

T-n

IM

1;7

LB

1:12

SubType

1 his field -hall

阳弓rt tn

R««rv«d

Drwtion (D .

Ttits field shall

be set

to the value

of

the

Oir«ctiQn

field in the

FING TP

for whidnthiF

卩rNG_R£SPONSETP is beirg

毛ru

RFGWWSF

Endpdnt Mumber (Ept Num). Th

sftld

s*iul

be

lu?IL VII UU if

L U Ept Nurn

Ruld irt th今

PING 1H for ^nlch ihli

P Hi__HESPOM5E IF

低肚叭口

sert.

S2 Reserved

Direction :这个区域和 PING TP 的 Direction 域值一样? PING TP 与 PING RESPONSE

样方向?

8.6数据包(DP)

这种包能被主机或者设备发送。主机使用这种包发送数据给设备。设备使用这种包 返回数据给主机作为一个 ACK TP应答。所有的数据包由 DPH和DPP组成。只有与 ACK TP不同的区域被描述:

3/

円?了曲商

T4 23 23 K 20 1B 1? IS 1& 14 M 1? H 10 9 h ? ® & 4 3 2 1 D

Device Addness Route Slring/Reswneci

Type

DkVORD 0

1

Length

Rftfi-ftrii'fif;

?P R^RRTved

Lin < Conilri^l

WOFEI

S Ftsvc

|D

SlrRflr^i IDj'Rft^Arvnd

CRO1B

Seq Nurri

3

-ddmli,^

1□她

DWORD J

a

Nnhs Thft

CRC-S2

林厂lhog flrr> nd llirj OPH DF'F nm

I-BI nut isf ih

H Fqiirfi Ihr tss Z rHarlADilr/

Figure 8-2Z Example Data Packet

数据包格式:

End Of Burst (EOB)/Last Packet Flag (LPF) .=突发结束 /最后包标志: 解析:对于非同步端点,这个区域用来指示(EOB )突发结束;对于同步端点,用于指示最后一个包(LPF)

对于非同步IN端点,这个区域被用来确认这是突发的最后一个包。 当设备准备继续传输时,应该发送一个ERDY 通知主机。注意:一个端点应该在重发DP中重新计算EOB值。如果设备返回的数量比在收到最后的 ACK TP包NumP 域要求的数量还少,而且不是短包,则 EOB域应该在突发的最后包中被置位。当设备发送一个短包时, EOB域可以 被置位。

.

对于非同步OUT和控制端点,这个域应该被设为 0.

对于同步端点这个域被用来确认这是在当前服务周期中最后一次突发的最后包。

个DP源或目标是同步端点时候的使用请参考 8.12.6章。

Endpoint Number (Ept Num).=这个域决定DP源或者DP的接收方(哪个设备端点)

Setup (S).=这个区域被主机置位指示 DP是一个建立数据包。这个域只能被主机置位。

Data Length = 这个域用来指示不包含 CRC-32的DPP数据的字节数

Data Block .=这个区域包含DPP中的数据。字节中这个区域的大小由 Data Length值指示。

LPF能被设备和主机置位。当这

Table 8-23. Data Packet Format (Drfferences with ACK TP)

Width

Offset

CDWbit)

5

Description

1J

1.5

1 6

S«<|u*nc* Number (Stq Num) This rield iw used to idenbfy frie sequeince numb er ot this

NOPE 饷

m rm Tt ?r ninps nmurd

自T 31

1

1

Rwervad tR).

End OF Buirit (EOBjJLast Packet Flag (LPF) For n in- Eachnnouserdpoirts, This fi=|d is r^ferrsd

tn as FOR anrl for

i^nchronnus Endpnsnts thi~ fi^ld

讨Enrol Io as LPF

For riL n-feOLhrijnous IN endpoinls. dhls field is use J f

J ideinliiy tbjt llils is she psckin of

J burst

J Ue'/iDK is did、iu LontinuiB die IrdiiL'ei it jh^ll tend din ERD

TP to

igiial ttie hu-J.. Mole aw an endpoint

sha 1 re-evababe me EGB vake iri

住惟:诞勺

DP. The EOB felci shall be met ir die last packel of a burst if lhe device

returns fewer than Ifie numtier of ya^ i in the NumP tieid ot ne last ACK TF It received and tie

m:益

packet is

rsot a snort pac-et_ The EO.B 1 eld

TET/ b= set th亡

device sends a shnrr packet

For nr n-har hnnnnus A! IT ^nri conlrnl pndpnints, ^tiic fiFld

才IHII h吕性已rm

i^och^riDus enct'O«ntsth s lisle is jsed a identifytratthis r^tlie last

cuiT&nrt Horviize inW『/对

LPF c^in hm sti by a dtviLe jnd the ha^l PIB ast

FECET

ID

J-Esban LI2.3 lor Hit; ui&acs of ttals lit d '.Mien Jit: larg^L

EH SU」「匚B of this DF i& Jh iscch-口nous 2n(Spcii;rit

arth*

也就

fiurst^n

4

1 8

1.12

t 15

End paint Num ber (Ept Numi) This field li=!lRrrnirF!&

SDurce or recip ent of this DP

R4&«rv«d fR).

f=n ripniri i商i

也巴

GEM西

th it

臣卄哼

i

1

ISb

Setup ($)

一h冷

field is set tiy th? host to iriri

EEITP tnat Th

DP i

Setup c^ats padTt This fieli can unty be set by th隈

hast

I IB

Dita Ltngtfi. Thii field is u?ed

ID indicaTetre rurrber cf tMf = DpP excl」dirq

击亡

dota

CRC-32

40

Diu Slock This field

the va

UP in tiir Data L«nsth field

32

D + 5*

tfie daza in the DFT3. The

IZE jf:hisfteld in o'/tes is ind :also ov

CRC-32 The daia CRC is calcui ate d over the data block of the DPP. Refer to Secclon 7.2 1.2 J tor the polynornial used

iu caiculats th s value

NOLFt^atthi^fielc: ism? n^c-esssrilv

H iqneri an a □'eVORPIhcrunriarY ss rhe lats bl口匚b: iFnqrh mol b@

nultip

E

rif faur

8.7同步时间戳包(ITP)

ITPs的类型域值为Isochronous Timestamp Packet

ITPs被用来从主机到所有活动的 设备发送时间戳(广播)。ITPs不带有地址或路由信息,而是通过集线器在

广播给所有它们的下游端口链路。设备不应该应答

态,主机就应该在根端口链路上发送一个

间戳范围内的每个总线周期发送一个

机时序信息给设备。注意任何设备或集线器可以接收一个

U0状态下

ITPo

ITPs为同步传输被用来提供主

ITP。只要链路已经在 U0状

ITP。只有主机能初始化一个ITP发送。主机

ITP

o当主机根端口链路从查询状态进入 U0,

不应该为发送ITP而使一个根端口链路进入 U0。如果根端口链路在 U0状态,主机应该 在时主机应该发送带有同步时间戳开始(tIsochronousTimestampStart)的ITPs。 ITP可以在 一次突发中的包之间发送。如果设备收到一个带有链路控制字 DL标志置位的ITP,时

.

间戳值可以允许严重错误,可以被设备忽略

31 3fl 7!i 21 2? 71 ?h 1ft 1^ 1r 1fi 1fi U U 1? 11 1ft A H T fi 勺

4 A ? 1

罄门

ch ron

OLS Tmed anp

Resaved

R&sared

L rikCoTtrol Word CRCd6

Tf>e

^WORD 0

DWORD 1

DWORD 2

DWORD 3

Busant^nrsl AdjubtriwHii!'亡

on Ini

(J-11Z

Flqure 8-23. Isochronous Timestamp Packet

Table 8-24* Isochronous Timestamp Packet Format

width

(NTS)

■'-

OffsH

(D^.biQ

DiacrfptlBn

hsjehren*us Tim (ITS) he is nictirinDus tmesisrrip fitld w used to uSsrnFy the curnert

tme vslijF frnrri the pErspEctjvF ol ihe he丈

transiting the ITF Ttie Orrestannfp field is sp it into MQ sub-f elds:

Bit?

1 9 0

2E 14

DfricrlptiGFi

Bue interval counter* The current 1/8 of a mil ft seco nd counter

IL-2 couiniyalbtj lull在

u'^er Lu

二已口

when ths

旳lu匕

readies UA住卜卡卜

and cxinbiues m fncrenrent.

IDfrlta The lime delta fron the si art of th

已匚

urr

nt ITF pNdwt □ DIE

pfEWizmLhu■兮

haem -lary, Th

- a num be ref

tlsoqhTITIF^tampGranularity The yalu■己

osed shell speatytiie

d^lt^ Ih il nciE斗呂

clo^Est tr th尸

pmiciijr. huw mil boundary witjhout eoing beftr& th^ bcun-daiy

if a packet siads exactly on

time is se t ts 0

iritemlbLuniaiy. me ckiiz

"To

5T

Bus Interval Adjustmsnt Control This li巳Id ^pecihes ttie

祠Huss o? th'hat conlruls th«5 tus interval © dju stTie it met

han ism 11匚 口门

reset, p j^/e r- up Dr rtte device is diszornected. ±ie Iro^ shall 5已t th sfield t匚

zero

R41 «rvH

The TTS value in the TTP ^hall haveim m wcy ot'±l thochTimestampCirannlari^ units nfthe value of the hwt

ckxk (for ITP generation) measured when Hit first fnming symhcil of the ITP

ITP格式解析:

Isochronous Timestamp (ITS).同步时间戳区域被用来确认从主机发送

为2个子域:

Bits

13: 0

description

总线间隔计数。当前毫秒计数值的 1/8。计数值达到0x3FFF时归0,然后继续增加。

ITP以来的当前时间值,时间戳域被分

26: 14 Delta.(间隔)=从当前ITP包的开始到上一个总线周期边缘 之间的时间。这个值是一些

tIsochTimestampGranularity 单元数。被使用的值应该指定最接近前一个总线周期边界的间隔

注意:如果包是精确的从总线轮询周期边缘开始的,那么间隔时间被设为 0.

Bus Interval Adjustment Control

备断开连接,主机要设置次域为 0。

这个域指定了控制总线轮询周期调整机理的设备地址。一旦上电,复位或设

8.8

三个参数地址信息

数据包和大部分事务包提供使用一个由三个域构成的地址访问指定数据流的权限。

是设备地址、端点号和方向域。

一旦复位和上电,设备地址默认值为

它们

0,应该在枚举过程期间被主机用

1到127之间的

.

值来编程。设备地址

0保留成默认地址,不能分配给任何其他使用。

.

设备除去必须的默认端点号为

0的默认控制端点外,可以支持最大值达到

OUT端点(由方向域指示)

8.9路由字符域

路由字符是在下游导向(向下游端口方向发送)的包中一个

进行路由选择,将包传递到指定的下游端口。

集线器使用它到达设备。集线器使用集线器深度值

要定位的偏移值,集线器用它来决定下游端口号。

线器决定和分配。

15个IN和

15个20位的域,集线器使用其

它由一串下游端口号 (每个集线器4位)组成,

Hub Depth乘以4作为在路由字符域中

集线器深度值在枚举过程期间, 由每个集

注意这个域(路由字符)只在主机发送的包中有效,当被设备发送时,这个域是保留的。

Aval us of zero

40

対 対

37

35 U 册

32 31

2& 28 27 20 5& 24 23 22 21

indicates lhattne

target is the am

Hub@Ticr5 bub@T er4 Hub@Ter3

Hub@Tie(2

Hub@Tier1

port on the hub

■^rgettac downstream port numt>e^

Valid Vaites: Zerotl rough number of parts or huk>

Pit

IJ-1U

Figure 8*24. Route suing Detail

上图中集线器@Tier1域值是直接连接到主机根端口之一的集线器的下游端口号。 注意:上图中结构是每 4bit表示一个端口号。因此不同端口号是以

8.9.1路由字符端口域

在路由字符中的这4位宽度区域代表要被寻址的集线器端口

8.9.2路由字符端口域宽度

路由字符端口域宽度是固定为 4位,端口号的最大值限制为 15.

8.9.3端口号

包直接传向的集线器上指定的端口,由路由字符端口域值确定。当寻址集线器控制 器时,然后在集线器层的路由字符中端口号域应该被设置为

相继寻址。

8.10事务包使用

4为模进行偏移。

0.集线器下游端口一个个

TP被用来报告 数据事务传输的状态,能返回指示数据包、命令接收或拒绝,流控 的成功接收和停止条件的值。

8.10.1流控制条件

这部分描述当一个端点返回一个流控制应答时,在主机和设备之间的相互作用。流 控制是在主机和设备端点之间的端对端级的。

应答。同步端点不能发送流控制应答 。

如果一个IN端点返回下面对 ACK TP的应答之一(返回数据),则应该被认为这是 在一次流控制条件中:(对主机请求数据事务包的应答)

• NRDY TP 应答

•发送一个 DPH中EOB域值为1的DP

如果一个OUT端点返回下面的对 DP的应答之一,则应该被认为在流控制条件中:

• NRDY TP 应答

•发送一个NumP域值为0的ACK TP

只有当被主机设置时 Packets Pending域才有效,它不影响端点进入流控制状态。

只有块,控制和中断端点可以发送流控制

.

详细参考 8.11 的主机与设备的 TP 应答。

当端点在流控制条件中,它应该发送一个 ERDY TP 使自己进入活动状态。而且, 如果端点是 IN 端点,那么它应该一直等待, 直到它在能发送 ERDY TP 之前,为它发送 的最后一个DP收到ACK TP。当端点不在一个流控制条件中, 它不应该发送一个 ERDY TP,除非端点是支持流的块端点。 注意主机能重新开始到任何端点的事务处理一一甚

至端点在返回一个流控制应答以后还没有返回 ERDY TP。

8.10.2 Burst Transactions (突发事务处理)

只要设备能够接收数据,超速

USB

协议就允许主机连续发送数据给一个设备或者 只要 设备能够发送数据,主机就连续能从设备接受数据。设备端点能不需

ACK

而一次发送或者 接受数据包数量 (burst size)被记录在设备的

endpoint companion

descriptor中。在端点最 大突发大小中记录的值为不止一个包(最大突发尺寸大于 1),则被认为能支持“突发”

事务处理。(如果突发大小为 1,则意义为发送一个数据包而不需要 ACK 应答,这相当 于没有突发,还是发送每个数据包后要发送 ACK TP )

下面的规则适用于突发:

•在收到ACK之前能在突发中发送的最大包数 被限制于 端点的最大突发大小 加上 端点或主机收到最后一个 ACK TP包的NumP域的值,减去在被最后一个 ACK TP包应 答之后端点或主机已经发送的包数。

(收到一个 ACK 之前一次突发中能被发送的最大包数 <= 端点的最大突发大小 + 收到的最后一个 ACK TP包的NumP域值 一在被最后一个 ACK TP包应答的包之后已 经发送的包数)

•在突发中的每个包都要有一个最大数据包尺寸的数据负载

一个包的大小能比描述符中记录的最大数据包尺寸小(类似于

。仅仅在一次突发的最后

USB2.0 )。如果最后一个

包较小, 则对于短包的相同规则也适用一个在一次突发结尾的短包 (参考 8..10.3 短包)。

• 只要 ACK TP 包的 NumP 域值不为 0,突发传输事务就能持续 ,每个包都有最大 包尺寸大小的数据负载。

• 只要主机或者设备想要持续接受数据, NumP 域值能在任何时候通过主机或者设 备发送

ACK TP 包来增加。仅仅要求是 NumP 域值不能比设备支持的最大突发尺寸大。

•如果设备或者主机发送一个 NumP 域值减少的 ACK TP 包,那么减少的值不能比 1 大. 例如,如果前一个 ACK TP 包 NumP 域值为 5,那么对下一个收到的包的 ACK TP 的 NumP 域值不应该比 4 小,只有下面的情况除外:

-- 如果设备能够接受数据但是不能再接收更多的数据了,则它应该发送一个 NumP 域

值设为 0 的 ACK TP 包。

-----主机应该发送一个 NumP域值设为0的ACK TP包作为设备发送一个带有 EOB域值 被置位的 DP 包或者是短包的的应答。

但是,如果主机收到一个短包,主机还需要在同一个端点上开始另外一次传输,那 么主机可以发送一条 NumP 域值为非零值的 ACK TP 包来替代发送一个为 0 的 ACK TP 包。

8.10.3

短包

超速保持 USB2.0 支持的短包功能。当设备或主机收到数据长度区域比端点最大包 尺寸小的DP,则它应该认为传输完成了。

在 IN 传输中,设备应该在发送一个短包 DP 后,停止发送 DPs。 主机应该用一个

NumP域为0的ACK TP对短包应答。当此端点开始另外一次传输,

点安排事务。

主机应该对设备端

.

在OUT事务中,主机可以在发送一个短包后停止发送 DPs,主机在此端点开始另

外一次传输时应该给设备端点安排事务。注意这为端点的一次新突发的开始。

8.11 TP或DP应答

发送和接收设备应该返回 DPs或TPs,正如Table 8-25到Table 8-27详细描述的。注意

依赖域传输类型和TP流的方向,并非所有TP被允许。

8.11.1设备对TP请求数据的应答

Table 8-25显示了设备对块、控制和中断端点的

有一个不正确的设备地址或者端点号和方向,一个

TP请求数据的可能应答方式。如果

TP被当作无效。

Table 3-25, Device Responses ta TP Requesting Data (Bulk, Control, and Interrupt Endpoints)

Invalid TP

Recei ved

Yes

NO

TP With

TK

Endpoint H且It Feature

Set

Reacly to

Transmit Data

Action Tak«n

Deferred Bit Set

Oc not care Do noi care

Yes

Do not care

Oo ndt care

Hie devic« sdsil ignore the TP

The device slis sene ar

ERDYTP

Na Yes

No NQ

■Rie devica di all not respond.

Itst-sli serid ar ERDY7F

血r

I:i to

No Yes

ND

Yes

十佢

device

才汨11 Mndl an ERDY TP

mdirating tiiat it is ready to SEnd data.

忖口

No

No

M

Yes

No

No

Da not can?

ND

Yes

l-ssue STALL TP

issue NRO'f IP

Stan transmiting DPswih

SBCfuens numbers requesteci by ths

hast

PJO

时口

8.11.2主机对收到设备的数据应答

Table 8-26显示了主机对块,控制和中断端点收到设备的数据的应答。 主机能返回仅 仅一个ACK TP。如果有一个不正确设备地址或端点号和方向一个 DPH被当作无效的。 在Table 8-26中,DPP错误可能由于下面一个或几个导致:

• CRC不正确

• DPP终止

• DPP丢失

• DPH中的数据长度不与实际数据长度相符

.

Table 8-26. Host Responses to Data Received from a Device (ButL Control^ and Interrupt Endpoints}

DPH h:as

Invalid Values

Yes

Mo

Data Pack et

Payiosd Error

□n not care

VES

□|bufiiM care

Dorot cgre

□ i呂card dab and do not s?end any TP

D srardl d:前日

用ilh ±ie R皐try bit se:

Host Can Accept Oats

TP Rvturntd by Host

r&queslinq for one or mo re

vyih rhe S

电耳陋电怖出虚

NumHber field tr thf

旺qL^nr已

riLinoherof rhe DP that

Nu Nu

No

□tscad data, send an ACK TP with the R«tv bit »t iwjUtstmg

;ur

uric ul rnurt vulh the Sfqutnct

Num bar fit id

ttn

山匕

it

un”匕

HLHiib^r ul the L'H lhat Th5

hostv^s unabl* tc re*eiv£. The ACK TP sha Ths Hott Err*r t: ^ei io

ore

TQ indiesH :hac cbe host

两器

un^bl* ia atce:tlie data.

Mfl r-lo res

Accept dat^ a nd send A匚忒〒P for zero or

more

口Ps vyjtti the Sequence Num her f eld sef ta the AEqupri^

^LiRhEr cf tit

A 厂旧刈

DP fkpprt^d Thi匚;£ ailsu

AH mplicrt ackHD-AI1

cfprriprr th it fii1■:

口PPC Aivf di succe^fijiiy.

8.11.3设备对从主机那收到数据应答

设备对块,控制和中断端点从主机收到的数据的 TP应答在Table 8-27先表示。如果 有一个不正确的设备地址,端点号或方向,则一个 DPH被当作无效的。DPP错误可能由 下面一个或多个导致:

• CRC不正确

• DPP终止

• DPP丢失

• DPH中的数据长度不与实际数据长度相符

注意:ACK TP的接收是向主机指示前一个顺序号的 DP被设备成功接收,也指示设 备还能够接收主机将要发送 DPs的有效的数据包的缓存数(NumP域指示)。设备应该为 每个DP发送一个ACK TP.

.

Table 8-27. Device Responses to OUT Ttansactions (Bulk. Control, and Interrupt Endpoints)

DPH has

Invalid

Values

DPH has bafetred

Bit

Set

Do not匚剖匕

Yes-

Yes

Rflcai vtr Halt

Feature

Sat

Yes

NL

HD

DD hot care

Yes

ND

Do nut Cisre

Do not care

Do not care

Du nottaip

□□ not o_arE

b. 0

The device shrill not respond. I t setid an

ERDi TPv>hen it is ready tn re-sume.

do

No

ho

No

□' DF.

The dE-i/ice shall senLJ an ERIJV TP.

Dita Packet

Payload

Error

Device Can

Accept Data

TP Rttumsd b簞

Devica

Yes

Ma

Mo

Mn

No

Yes

NO

Do ret care

Hid net care

Dd net care

YBE

Yes

□□ not care

ND

T弋 北】ce shall se-'d an ERDr' TP.

The device shall se^nd a Sl ALL TP.

D sesrd DF. ^end ai M3 DY TP

ND Yes

□rsesra DP, send an ACK TP with the

sequpisp nLumber ne DP

H acted (Ihe^bi"

IE di Luting Ih^l the DP was mt recew&dj.

the H=tr< hr r. 1 aid the huh iter

计 口P^rhaiths cevite cai recei/f fc - ths

endpaint.

Send a-i ACh. TP inolcatlrg ne saqifirrf

riurmber

at Eha nea DP p .pecitd (thsfielJif

indkaang that this C'P刊w ";ir収罚sutx日斜u忖;

and the nurnber of OFs that ttin

No No No Nc{

device can rsceivs lorltiis erdpoim

8.11.4设备对SETUP DP的应答

SETUP DP是一种特别的DP,它通过Setup域被设置为1来认证,可被寻址到 任意端

点。SETUP是一种主机到设备的特别的数据事务处理, 它允许主机初始化设备一条要执

行的命令。收到SETUP DP的话,设备应该以Table 8-28.中的应答:

注意如果出现任何下面之一,SETUP DP应该被当作无效的;

•不正确的设备地址

•端点号和方向与端点当前配置部分不符

•端点号没有适用于一个控制端点

•非零顺序号(SETUP DP中所有顺序号都要为0)

•数据长度没有被设置为8

在Table 8-28中,DPP错误可能由于下面一个或多个导致:

• CRC错误

• DPP终止

• DPP丢失

• SETUP DPH中的数据长度域实际数据长度不符

Table 8-28. Device Responses to SETUP Transactions (Only for Conirol Endpoints)

DPH has

Invalid Vahin

□ PM has

DeferTed Bit Stt

HJA

Ve?

Nc

TP R«tunfM£l by Oeyic*

Psylosd Error

DP

Yes

Nc

The de^ca shall send sn

田口¥

IP indicating that it s Tody in Ulf SETUP DP

Yes

Discard SETUP DP. send an ACK TF■糾rtF the sequence iurnbc r

set To zero, the rty oit se* ar d :hE NurriF, fsslcl

SE:

m cne

No

ND

No

Nc

5end ati ACK TF

冋口

the njmaer

to ore

Athene ay ind Tatintj friis S =TUF

口F

啊s necerwed

:II i i

:' illv' :rn! '1 i jr'

= ■' '1 1 I'll ir i

.

8.12 TP流程

由事务处理组成的包依赖端点类型变化。 有四中端点类型:块,控制,中断和同步

8.12.1块事务处理

块事务处理类型具有通过错误检测与重试保证无错误的在主机与设备之间传输数

据的属性。块事务处理使用由 TPs和DPs组成的双相事务处理。

8.12.1.1状态机注释信息

这个区域展示详细的需要在IN和OUT管道上提出协议的主机和设备状态机制

Figure 8-25展示了状态机的图解。

8.12.1.2 块输入事务处理 Bulk IN Tra nsactio ns

当主机准备好接收块数据时,它就发送一个

到的包顺序号与包数量。

主机应该为每个从设备收到的有效 DP发送一个ACK TP

o如果前一个ACK TP指示主

机期待设备发送不止1个DP (依赖于TP中NumP域值),则设备不必等待 ACK TP后就可

以发送下一个DP给主机。ACK TP暗中用前一个被主机成功接受到的顺序号来应答最后 的DP,也对设备指示下一个顺序号的 DP和主机想要从设备获得的包数量。如果主机在

收到DP时检测到一个错误,它应该发送一个顺序号值被设置为发生错误的第一个包顺 序号的ACK TP,其retry位也要置位,即使是这个包以后的包都没有错误发生。设备需 要重新发送从发生错误的那个顺序号包开始的所有 DPs

o

DP的顺

当端点初始化后(通过命令 Set Con figuratio n. Set In terface, ClearFeature (STALL)参 考Chapter 9命令),主机开始第一次从端点接收数据的传输,主机期待第一个

序号被设为0.第二个被设备端点发送的DP顺序号应该被设置为1;第三个被设备发送的 DP顺序号应该设为2,……直到顺序号为31,顺序号31的下一个DP的顺序号又为0. 一 个设备端点保持它发送的包顺序号递增,除非它收到一个带有

这指示主机不得不重新发送前一个 DP

o

如果主机要求从设备获得多个 DPs,设备在那时刻没有那么多有效的 DPs可以发送, 则设备发送最后的DP应该在DPH中的EOB标志置位(因为有部分数据可以发送,所以 不发送NRDY TP)o当再有数据发送时,设备要发送 ERDY TP给主机。注意:如果被 发送给主机的DP的数据量比端点中定义的最大包尺寸少

标志。

当设备发送了所有被主机期待的数据时或发送了一个比最大数据包尺寸小的

得的下一个顺序号和 DPs数量的ACK TP。例如,如果数据量比最大包尺寸小的

DP

(短包)时,传输就完成了。当主机想要开始一次新的传输,它应该发送另外的期待从 设备获(短包),则没有必要设备EOB

retry位置位的ACK TP,

ACK TP给设备指示它想要的从设备得

.

DP为2,则主机应该通过发送一个带有期待顺序号被设为

8.12.1.3 块输出事务处理(Bulk OUT Transactions )

当主机准备发送块数据时,它会发送一个或多个

8.11.3定义的 应答。

3的ACK TP来开始新传输。

DPs给设备。如果设备收到有效的

DPH (有效的 device address, endpoint number, direction 和期待的顺序号),它应该以 Section

在端点初始化之后,主机总是在第一次对端点输出数据的传输中, 以第一个DP顺序

号为0开始。第二个被设备端点发送的 DP顺序号应该被设置为1 ;第三个被设备发送的

DP顺序号应该设为2,……直到顺序号为31, 31的下一个顺序号为0。主机保持它发送 的包顺序号递增,除非它收到一个带有 retry位置位的ACK TP,这指示主机不得不重新

发送前一个DP。

传输是在主机发送完所有它要发给设备的数据时完成。

或没有一个等于端点最大包尺寸大小的数据。

另外的DP,这个DP带有下一个目标端点想要的顺序号。

Host Tx Host Rx

然而,传输的最后DP可能有

当主机想要开始一次新传输, 它应该发送

IN (ACK TP)

IN (ACK TP)

SeqOt 4. rty

〜一 — =

DP with Soql Sant before rficfijves

lh« ACK

to retry DP with SeqO

Device no more data to send. Sets cob flag

in data packet.

Dwvicw must ssnd ERDY to rosumo

traffic to endpoint.

u-nti

Figure 8-26* Sample BULK IN Sequence

.

Host Tx Host Rx

DP with Seq2 sent before host

receives the ACK to retry DP

with Seql

Seq2

u 116

Figure 8-27. Sample BULK OUT Sequence

8.12.1.4块流协议

流协议坚持了标准超速块协议,所以支持流的超速块管道上的包交换跟超速块管道 没有什么区别。流协议通过 包头中的流ID域的操作被严格管理。

注意:如这个区域描述一样,流协议适用于管道状态,它被描述成单个实体。实际 上,流协议在管道的一端独立的被主机追踪,在另外一端被设备追踪。所以由于在主机

.

与设备间的包传播延迟,任何时刻两端可能随时不同相

Disabled

Prime

Pipe

Host ■

Initiated

Stream

Complete

Idle

Reject

Accept

Device

Initiated

Start

Stream

U-117

Figure 8-28. General Stream Protocol State Machine (SPSMJ

Figure

8-28展示了流协议状态机制

(SPSM)的基本状态转变。这里描述了当它们都适用 于IN和OUT端点时的一般SPSM转变。IN和OUT端点的SPSM的详细操作在随后的区域 中被描述。

Disabled ------ 这是在被配置后管道的初始化状态。 如果在任何其他状态中检测到错

误,则转变到这个状态。一个端点buffer第一次被分配到一个管道时,主机应该把 SPSM 转变成Prime Pipe状态。如果由于错误进入 Disabled状态,那么错误条件必须在状态 退出之前由软件的介入来消除。注意错误(stall,超时等)应该要把任何SPSM状态转变 成Disabled状态。

Prime Pipe --- 这个状态总是被主机初始化,通知设备端点buffer设置已经被软件添

加或修改。

Idle ----- 这个状态指示没有当前流被选择

初始化转变的对象是开始一次流

。在这种状态,SPSM正等待Prime Pipe或

主机初始化转变成 Move Data状态,或者设备初始化转变成 Start Stream状态。主机和设 备(被主机或设备各自设置为 当前流),开始移动数据。

Start Stream --- 当想要选择一个流或开始一次数据传输时,这个状态总是被设备初

始化得来的。如果设备选择的流被主机接收,则当前流被设置,管道进入

态。如果设备选择的流被主机拒绝,管道返回 Idle状态。

Move Data状

.

Move Data——在这个状态中,流数据被传输。如果这个状态是由于主机初始化流

选择而进入的,则当前流应该被主机设置。如果这个状态是从

变回Idle状态。转变成Idle状态使管道的当前流无效。

8.12.1.4.1 流 ID

一个16位域的流ID域在DP头中被保留,也保留在主机和设备间传输流

ACK ,NRDY ,ERDY TP中。指定的被流协议保留流的ID值和其他流ID标记:

• NoStream――这个流ID指示没有流ID被分配给各个相关的总线包, 流ID域应该不

被解释成有效流。NoStream流ID值是FFFFh。

•Prime ----- 这个流ID被用来定义转变到 Prime Pipe状态或从Prime Pipe状态中转变出

来。Prime流ID是FFFEh。

• Stream n—— n是在1到65533 (FFFDh )之间的值。这个标记是用来指示一个有效

流ID。如果使用这种标记,则在包头中的流

的n值 是在1到65533 ( FFFDh)之间。

• Stream 0――这个值保留,不被管道用来支持流。

要被标准块管道使用。

• CStream ------ 代表被分配给管道的当前流 ID的值,一个CStream值都被主机和设

备操控。流协议确保 CStream 值在主机与设备中是一致的。有效值是 NoStream 或 Stream n .

• LCStream ---- 代表在最后一个状态转变之前被分配给管道的 CStream流ID的值。

一个LCStream值被主机操控,有效值为Prime, NoStream,或Stream n。例如,当在Move

Data状态下CStream = Stream n的管道从 Move Data到Idle状态转变时,LCStream被设 置为Stream n , CStream被设置为NoStream,因此LCStream记录了 "最后的(上一个) 当前流”值。

Stream n流ID值被主机分配,被传递到一个设备。Stream n流ID值应该被设备当成 一个逻辑值对待,即设备不应该从值中推断出任何意思或修改它。

注意:下面描述的块IN和OUT流协议是简化了的状态机制, 没有明确仔细说明超速

端点的突发特性(允许 DP没有收到ACK就被发送)。一个实施应该扩展这些状态机制 管理突发。

8.12.142块IN流协议

这里定义了在IN块端点上,从一个状态到另外状态的转变流协议超速包的交换

对于IN管道,主机中端点buffers从设备收到功能数据

Stream 0流 ID值是OOOOh。它ID域是有效的。有效的Stream n流ID值当中

ID的

Start Stream状态进入的,

则当前流选择被设备设置。当流传输完成时或者如果主机或设备决定终止流传输时, SPSM转

.

端点被配置以后,管道在 Disabled状态。主机应该通过发送流

发生。

ID域设置为Prime的

ACK TP将管道转变成Prime Pipe状态。这个转变在端点buffers被系统软件分配到管道上 后设备会通过发流ID域设置为Prime的NRDY TP引起管道退出Prime Pipe状态,转变 到Idle状态。

注意:如果中间的集线器(deferred)延迟了 ACK TP,则主机和设备会犹如设备发送 一个NRDY TP 一样。即,当收到延迟应答时,主机会转变到

置为Prime的NRDY TP。

在Idle状态下,管道正在等待流选择(例如一次到

态,

被主机初始化的流选择通过流ID被设置为Stream n和NumP值大于0的ACK TP确认。这 个包会将ISPSM从Idle状态转变成 Move Data状态。如果最后一次的

Stream或Move Data转变的,则主机会由于两个可能的条件而开始一次从

ISPSM是从Start

Idle到Move

Start Stream或Move Data的转变)

或等待端点buffers已经为管道被添加或修改的主机通知

(转变到Prime Pipe )。在Idle状Idle状态。当收到延迟 ACK

TP时,设备会转变到 Prime Pipe状态,然后立刻转变到Idle状态犹如它已经发送了流ID 域设Data状态的转变:1)如果为LCStream而给管道布置端点buffer,并且最后的ISPSM转 变不是由于一个 NRDY(Stream n )Move Data状态退出;(2)如果是为新的流布置端点 buffer

(例如新发送的不等于LCStream的流ID)。在Idle中,被设备开始的流选择是通过 一个流ID被设置为 Stream n, NumP值大于0的ERDY TP来确认的。这个包会将ISPSM从 Idle状态到Start Stream状态转变。当设备想要开始流传输时,不管它是否在一个流控制 条件中,都应该开始这个转变。

.

在Start Stream^犬态下,管道正等待主机接收或拒绝设备发起的流选择。主机会通过 发送一个Stream ID = Stream n和NumP > 0的ACK TP来指示接收到设备初始化的流选 择。这个包会历经从 Start Stream状态到Move Data状态的ISPSM转变。主机会通过发送 Stream ID =

NoStream, NumP = 0,Packet Pending (PP) = 0的 ACK TP 来指示拒绝由设备初 始化的流选择。这个包会历经从Start Stream state到Idle state的ISPSM转变。如果没有有 效端点buffer为设备选择流ID,主机会拒绝流选择。

ISPSM独立的在主机和设备上执行。一种条件发生:如果设备发送一个

Prime Pipe状态。为了从此条件中恢复,如果设备在

ERDY给主

机,并且进入Start Stream状态,与此同时,主机发送 ACK (Prime,PP=0)给设备,并且 进入Start Stream状态下接收到一

Prime Pipe Ack到

个ACK(Prime,PP=0),它会转变到Prime Pipe Ack状态,并且发送一个 NRDY( Prime)给 主机,为主机完成从 Prime Pipe到Idle状态的转变,和为设备完成从

Idle状态的转变。

在Move Data状态,当前流在管道的两端被设置,并且管道被激活移动数据到主机。

总线事务处理在 Move Data状态的执行和它的退出条件在下面的

Machi ne详细定义。

IN Move Data State

ACK (Stream n. NumP^O・ PP=0>

I

D抽C

TEW mn ale

DP (StresrFi rt. EOB=1 > or DP

(Strearti n Data Length *

ACK (Stream n. NumP=Oa PP=0)

NRDY [Slream n)

D^ice

Packel

Host

Packet

ACK (Stream nB NurnP>0 PP= T Rty i

□ P (SLr&din n, EOB-O) □ala

Length = MoxFockctS >zc

_ I'- INMvData'

Covice

ACK (SI re aim nB NumP^O)

J

ACK iNumPsO. PP^1)

Burst '' End

ACK (Stream n,

W-T10

Figure IN

閘。鹽

Data State Machine flMDSM)

如上面描述,IN Move Data状态机制(IMDSM )是从Start Stream或Idle 状态进入 的。当转变到INMvData Device状态,就立刻进入IMDSM。所有被IMDSM产生的包的流 ID 域会是

Stream n.

每次进入INMvData Device状态时,设备都会进行下面的操作进入

if ( Device Fu nction Data bytes > Max Packet Size )

设备会产生一个EOB域值为0的DP ,这会引起管道转变成INMvData Host状 态.

else if ( Device Fun cti on Data bytes = Max Packet Size )

设备会产生一个 EOB 域值为 1的 DP, 这会引起管道转变成 INMvData Device

IMDSM :