




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、杭州电子科技大学毕业设计(论文)外文文献翻译 USB 2.0 协议 第八章 协议层这章从字段和包的定义开始,从底向上地展示万用串列总线协议。接着是对不同事务类型的包事务格式的描述。然后是链路层流程控制和事务级的故障恢复。本章的最后将讨论复执同步化的恢复和高速网络侦测协议的同步,超时干扰,总线活动丧失。8.1 位定序数据位被发送到总线的时候,首先最低有效位( LSb ),跟着是下一个最低有效位,最后是最高有效位( MSb )。在以后图表中的,包以下列形式给出,即包中单个的位和字段从左到右的顺序就是它们通过总线的顺序。8.2同步字段 所有的包都从同步(同步)字段开始的,同步字段是产生最大的边缘转换
2、密度的编码序列。同步字段被输入电路用来以本地时钟对齐输入数据。对于全速/ 低速模式,最初的同步被定义为 8 字节的长度,而对于高速模式则定义为 32 字节的长度。正如第七章描述的那样,标准的同步字段可以更加简短。同步字段是用于同步的机制,在以后图表当中将不被表示(参照节 7.1.10 )。同步字段里的最后 2 位是同步字段结束的记号,并且标志了包标识符( PID ,)的开始。8.3包字段格式在后面几节将描述标记,数据和握手包的字段格式。包中位的定义是以未编码的数据格式给出。为了清楚起见,在此不考虑 NRZI 编码和位填充的影响。开始-小包的)和包结束分隔符的所有包都分别有包开始。包开始分隔符是
3、同步字段的一部分,而包结束( EOP )分隔符在第 7 章有所描述。8.3.1包标识符字段所有万用串列总线包的同步字段后都紧跟着包标识符( PID )。如图 8-1 所示,包标识符由 4 位的包类型字段和其后的 4 位的校验字段构成。包标识符指出了包的类型,并由此隐含地指出了包的格式和包上所用错误检测的类型。包标识符的 4 位的校验字段可以保证包标识符译码的可靠性,这样包的余项也就能被正确地解释。包标识符的校验字段通过对包类型字段的二进制的求反码产生的。如果 4 个 PID 检验位不是它们的各自包标识符位的补,则说明存在 PID 错。图 8-1 PID 格式主机和所有功能部件都必须对得到全部
4、PID 字段实行完整的译码。任何收到包标识符,如果含有失败的校验字段,或者经译码得到未定义的值,则该包标识符被假定是被损坏的,而且包的余项将被包接收机忽略。如果一个功能部件收到了包含了它所不支持的事务类型或方向的合法包标识符,则不必应答。例如,只能输入的端口(IN-only Endpoint)必须忽略输出标记。表 8-1 列出了包标识符类型,编码及其描述。表 8-1 PID 类型PID 类型PID 名PID3:0描述标记(表征)出自)的输出()的输入(帧开始( SOF )建立(装备)0001B1001B0101B1101B在主机到功能部件的事务中有地址+ 端口号在功能部件到主机的事务中有地址+
5、 端口号帧开始标记和帧号在主机到功能部件建立一个控制管道的事务中有地址+ 端口号数据(数据)数据 0 ( DATA0 )数据 1 ( DATA1 )数据 2 ( DATA2 )MDATA0011B1011B0111B1111B偶数据包 PID奇数据包 PID高速宽带同步传输帧数据包 PID (更多内容请参见 5.9.2 章节部分)高速宽带分段传输数据包 PID (更多内容请参见 5.9.2,11.20 和 11.21 章节部分)握手(Handshake)确认( ACK )不确认( NAK )停止(STALL)无回应( NYET )0010B1010B1110B0110B接收器收到无措数据包;接
6、收设备部不能接收数据,或发送设备不能发送数据;端口挂起,或一个控制管道请求不被支持。尚未从接收者获得回应。(更多内容请参见 8.5.1 和 11.17-11.21 章节部分)专用(special)前同步( PRE )报错(ERR)分段(SPLIT)侦测(PING)预留(Reserved)1100B1100B1000B0100B0000B(标记)主机发送的前同步字。打开到低速设备的下行总线通信。(握手)分段传输的差错握手(重新使用PRE量值)(标记)高速分段传输标记(参见8.4.2章节部分)(标记)对bulk/control模式下端口的高速数据流控制侦测(参见8.5.1章节部分)预留PID*注解
7、: PID 位以最高位在前的顺序被表示。在万用串列总线上被发送的时候,最右的位(位 0 )将被第一个发出。包标识符被分为 4 个编码组:标记,数据,握手和专用。包标识符传送的前 2 位( PID<0 : 1> )指出了其属于哪个组。这说明包标识符编码的分布。8.3.2地址字段功能部件端口使用 2 个字段:功能部件地址字段和端口字段。功能部件对地址和端口字段都需要进行译码。不允许使用地址或端口别名( Aliasing ),并且任何一个字段不匹配,此标记都必须被忽略。另外,对未初始化的端口访问将使得标记被忽略。8.3.2.1地址字段功能部件地址( ADDR )字段通过其地址指定功能部件
8、,至于是数据包的发出地还是目的地,则取决于标记 PID 的值。如图 8-2 所示, ADDR<6 : 0> 指定了总共 128 个地址。地址字段被用于输入,建立和输出标记。由定义可知,每个 ADDR 值都定义了单一的功能部件。刚一复位和加电的时候,功能部件的地址默认值为零,并且必须由主机在枚举过程中编程。功能部件地址零被用作为缺省地址,不可被分配作任何别的用途。图 8-2 地址字段8.3.2.2端口字段如图 8-3 所示,附加的 4 位的端口( ENDP )字段在功能部件需要一个以上端口时候允许更灵活的寻址。除了端口地址 0 之外,端口个数是由功能部件决定的。端口字段只对输入,建立
9、和输出标记 PID 有定义。所有的功能部件都必须在端口 0 提供一个控制管道(缺省控制管道)。对于低速设备,每个功能部件最多提供 3 个管道:在端口 0 的控制管道加上 2 个附加管道(或是 2 个控制管道,或是 1 个控制管道和 1 个中断端口,或是 2 个中断端口)。全速功能部件可以支持最多可达 16 个的任何类型的端口。图 8-3 端口字段8.3.3帧号字段帧号字段是一个 11 位的字段,主机每过一帧就将其内容加一。帧号字段达到其最大值 7 FFH 时归零,且它仅每个帧最初时刻在 SOF 标记中被发送。8.3.4数据字段数据字段可以在 0 到 1,023 字节之间变动,但必须是整数个字节
10、。图 8-4 为多字节显示格式。每个字节的范围内的数据位移出时都是最低位( LSb )在前。图 8-4 数据字段格式如同在第 5 章所描述的那样,数据包大小随着传送类型而变化。8.3.5循环冗余校验循环冗余校验( CRC )被用来在标记和数据包中保护所有的非 PID 字段。在上下文中,这些字段被认为是保护字段。PID 不在含有 CRC 的包 CRC 校验范围内。在位填充之前,在发送器中所有的 CRC 都由它们的各自字段产生。同样地,在填充位被去除之后, CRC 在接收器中被译码。标记和数据包的 CRC 可 100% 判断单位错和双位错。失败的 CRC 指出了保护字段中至少有一个字段被损坏,并导
11、致接收器忽略那些字段,且在大部分情况下忽略整个包。为了 CRC 的发生和校检,发生器和检验器里的移位寄存器置成为全 1型。对于每个被发送或者被收到的数据位,当前余项的最高一位和数据位进行异或( XOR ),然后,余项是左移 1 位,并且,最低一位置零。如果异或的结果是 1 ,余项和生成多项式作异或。当检查的字段最后的一位被发送的时候,发生器里的 CRC 被颠倒,再以最高位( MSb )在前发给检验器。当检验器收到 CRC 的最后一位, 且不发生错误的时候,余项将等于多项式的剩余。如果剩余与包接收器中最后计算出的检验和余项不匹配,则存在 CRC 误差。对于 CRC ,必须满足位填充的要求,且如果
12、前 6 位都是 1 的话,这包括在 CRC 的最后插入零,。8.3.5.1标记 CRC标记使用了 5 位的 CRC 字段,它覆盖了输入,建立和输出标记的 ADDR 和 ENDP 字段,或 SOF 标记的时间戳字段。生成多项式如下:这个多项式的二进制位组合是 00101 B 。如果所有的标记位都被准确无误地收到,接收机中的 5 位剩余将是 01100 B 。8.3.5.2数据 CRC数据 CRC 是作用于数据包的数据字段上的 16 位多项式。产生的多项式是如下这个多项式的二进制位组合是 1000000000000101 B 。如果全部的数据和 CRC 位被准确无误地收到, 16 位剩余将是 10
13、00000000001101 B 。8.4包格式这节展示标记,数据和握手包的包格式。这些图将以位被挪动到总线上的顺序显示包内的字段。8.4.1标记包图 8-5 显示了标记包的字段格式。标记由 PID , ADDR 和 ENDP 构成,其中 PID 指定了包是输入,输出还是建立类型。而PING特殊标记包也有相同的构成结构。对于输出和建立事务,地址和端口字段唯一地确定了接下来将收到数据包的端口。对于输入事务的,这些字段唯一地确定了哪个端口应该传送数据包。对于PING处理环节,这些字段唯一地确定了发送数据包的端口。只有主机能发出标记包。输入 PID 定义了从功能部件到主机的数据事务。输出和建立 PI
14、D 定义了从主机到功能部件的数据事务。侦测PID定义了从功能部件到主机的握手处理环节。图 8-5 标记包格式如上图所示,标记包包括了覆盖地址和端口字段的 5 位 CRC 。CRC 并不覆盖 PID, 因为它有自己的校验字段。标记和帧开始 (SOF) 包是由小包)界定的 3个个字节的包字段数据后面的包结束( EOP ,结束。如果包被译码为合法标记或 SOF ,但却没有在 3 个字节之后以 EOP 终止,则它被认为是无效的,并被接收器忽略。8.4.2 数据分割特殊标记包USB为数据分割传输定义了特殊的标记:SPLIT。与其他普通的三字节标记包不同,这是一个四字节的标记包。数据分割传输标记包提供了携
15、带额外特殊传输信息的更多的传输字节。数据分割传输标记用来支持主机控制器与处于高速运转状态的集线器之间数据分割传输,而这一高速运转是集线器的下行端口与全速/低速设备之间进行的。有两种数据分割传输被规定使用SPLIT特殊标记:始端数据分割传输(SSPLIT)和末端数据分割传输(CSPLIT)。如下面的章节所述,数据分割传输特殊标记的字段表明了特殊的数据分割传输。8.4.2.1 数据分割传输高速数据分割传输仅仅用于主机与连有全速/低速设备的集线器之间的传输。这种高速数据分割传输用来通过集线器和一些全速/低速设备端口初始化全速/低速传输。高速数据分割传输也允许重新从集线器获得全速/低速传输的完成状态。
16、这一方式允许主机控制器先通过高速传输开始全速/低速传输,再继续其他高速传输而无需等待全速/低速传输以较慢速度进行或完成。关于状态机制和数据分割传输等待传输定义的更多细节请见第11章节。高速数据分割传输有两个部分:始端数据分割传输和末端数据分割传输。数据分割传输仅被定义用来完成主机控制器和集线器之间的传输。没有其他高速、全速/低速设备使用数据分割传输。图8-6 显示了组成一般始端数据分割传输的信息包。状态标记有两个信息包:SSPLIT标记和全速/低速标记。状态标记有选择地跟随一个信息包或者一个握手包,这取决于数据传输的指令以及与传输类型的握手是否被定义。始端数据分割传输可以2个、3个或4个信息包
17、,这取决于特定的传输类型和数据指令。 图 8-6 始端数据分割传输的信息包图8-7 显示了组成一般末端数据分割传输的信息包。状态标记有两个信息包:SSPLIT标记和全速/低速标记。状态标记有选择地跟随一个信息包或者一个握手包,这取决于数据传输的指令以及与传输类型的握手是否被定义。末端数据分割传输可以2个或3个信息包,这取决于特定的传输类型和数据指令。 图 8-7 末端数据分割传输的信息包数据分割传输的结果是由末端数据分割传输返回的。图8-8 用一个中断 IN 传输的例子说明了这一概念上的会话。主机先向集线器发出一个开始片段(用1表示),再就可以进行其他高速传输。一段时间后,开始片段使得集线器发
18、出一个全速/低速 IN 标记(用2表示)。设备用一个数据包回应 IN 标记(在这个例子中),集线器用一个握手回应设备。最后,再过一段时间后,主机发出一个末端片段(用3表示)以再次获得设备提供的数据。在例子中请注意:在末端片段以前集线器向设备端口提供了全速/低速握手(在这个例子中是ACK),而末端片段向集线器提供的不是高速握手。 图 8-8 中断IN传输与数据分割传输的关系常规的全速/低速OUT传输同样在概念上“转换”为始端分割传输和末端分割传输。图8-9以中断传输为例说明了这种“转换”。主机发起一个始端片段事务,它包括SSPLIT特殊标记,OUT标记和数据包。一段时间后,集线器在全速/低速总线
19、上发出OUT标记和数据包。设备用握手作出回应。一段时间后,主机发起末端片段事务,集线器用设备提供的结果(全速/低速数据或是握手)作出回应。 图 8-9 中断OUT传输和高速分割OUT传输的关系接下来的两部分描述的是组成具体始端分割标记包和末端分割标记包的字段。图8-10和图8-12说明了分割传输标记包中的字段。跟随一般标记格式的SPLIT特殊标记以一个PID字段(在一个SYNC后)开始,并以一个CRC5字段(和EOP)结束。始端分割标记包和末端分割标记包都是4字节长。SPLIT传输必须仅来源于主机。始端标记在8.4.2.2章节被定义,末端标记在8.4.2.3被定义。8.4.2.2 始端分割传输
20、标记 图8-10 始端片段(SSPLIT)标志集线器地址字段包含支持特定全速/低速设备全速/低速传输的集线器的USB设备地址。这一字段与8.3.2.1章节中ADDR字段有相同的定义。带有SC(始端/末端)字段被设定为0表明这是一个始端片段事务(SSPLIT)。端口字段包括接收全速/低速事务的目标集线器的端口号码。正如图8-11所示,所有128个端口用PORT<6:0>加以制定。主机必须正确地为单独或多个TT集线器执行设定端口字段。一个单独TT集线器执行可以忽略端口字段。 图8-11 端口字段S(速度)字段按照如下规定制定中断传输或控制传输速度:0全速1低速对于批量 IN/OUT和同
21、步 IN 的始端片段,S字段必须被设定为0。对于批量/控制 IN/OUT,中断 IN/OUT,和同步 IN 的始端片段,E字段必须被设定为0。对于全速同步 OUT 始端片段,如表8-2所示,S(开始)字段和E(结束)字段为全速数据包确定全速数据有效载荷如何与数据相对应。(此处的S位可以为这些编码重新使用,但要求同步传输必须是低速的。)表8-2 同步 OUT 有效载荷附加编码SE高速数据和全速数据的关系00高速数据在全速数据有效载荷的中间部分01高速数据在全速数据有效载荷的末尾部分10高速数据在全速数据有效载荷的始端部分11高速数据在全速数据有效载荷的全部部分为了使集线器发现各种各样由于具有数据
22、有效载荷并需要多重始端片段的端点缺少接收始端分割事务而产生的错误,同步 OUT 始端分割事务使用了这些编码。举例来说,大量的高速数据有效载荷可能需要三个始端分割事务:始端片段/开始,始端片段/中部,始端片段/结束。如果任何的这些事务没有别集线器接收到,集线器或者会忽略这次全速传输(如果始端片段/开始没有被接收到),或者会为相应的全速传输强加一个错误(如果另外两个事务的一个没有被接收到)。其他错误情形可以根据在一微帧中没有接收到始端片段来加以发现。ET(端点类型)字段确定了全速/低速传输的端点类型,如表8-3所示。表8-3 分割特殊标记的端点类型量值ET量值端点类型00控制传输01同步传输10批
23、量传输11中断传输这一字段告诉集线器使用哪个分割传输状态机完成全速/低速传输。全速/低速设备的地址和端点号码信息包含在跟随在SPLIT特殊标记包后的常规的标记包中。8.4.2.3 末端分割传输标记 图 8-12 末端分割传输(CSPLIT)标记 如果SPLIT特殊标记包中SC字段被置为1,则说明这是一个末端分割传输(CSPLIT)。U位是被保留的/不能加以使用,并必须置为0(0B)。其他末端分割片段标记包的字段和始端片段标记包具有相同的定义。8.4.3 帧开始( SOF)包对于全速总线和高速总线,主机分别以每 1.00 ms ± 0.0005 ms 一次和每125 s ±0
24、.0625 s一次的额定速率发出帧开始( SOF )包。如图 8-13 中所示, SOF 包是由指示包类型的 PID 和其后的 11 位的帧号字段构成。 图 8-13 帧开始包SOF 标记组成了仅有标记的事务(它被用来分配SOF标记)和伴随的帧数的事务(相应于每帧的开始以准确时间间隔进行)。包括集线器的所有全速功能部件都可收到 SOF 包。SOF 标记不会使得接收功能部件产生返回包;因此,不能保证向任何给定的功能部件发送的 SOF 都能被收到。SOF 包发送 2 个时间调配信息。当功能部件探测到 SOF 的 PID 的时候,它被告知发生 SOF 。对帧时间敏感而不需要追踪帧数(例如集线器)的功
25、能部件,仅需对 SOF 的 PID 译码;可忽略帧数和其 CRC 。如果功能部件需要追踪帧数,它必须对 PID 和时间标志都进行译码。对总线时间调配信息的没有特别需要的全速设备可以忽略 SOF 包。8.4.3.1 USB帧和微帧对于全速传输,USB定义了每个都由帧开始标志(SOF)标记的1ms帧时间,并且每1ms周期都有约定的跑动公差。对于高速传输,USB也定义了以125微秒为帧时间、具有相应跑动公差的帧(参见第七章)。对于全速连接,SOF包每1ms产生一次(由主机控制 图8-14 微帧和帧之间的关系器或HUB事务转换器发出)。对于高速传输,SOF包也是在接下来的七个125微秒周期后产生的。图
26、8-14显示了微帧和帧之间的关系。 在1ms的时间内,高速USB设备将看到同一个SOF令牌包八次,且它们有相同的帧号。如果需要的话,高速设备可以通过检测与原有SOF包有不同帧号的帧和将它作为第0个微帧处理来自己确定一个特殊微帧号。接下来的七个具有相同帧号的SOF包可以被当作微帧1-7来处理。8.4.4数据包如图 8-15 所示,数据包由 PID ,包括至少 0 个字节数据的数据区和 CRC 构成。有 4 种类型的数据包,根据不同的 PID : DATA0, DATA1,DATA2和MDATA 来识别。2种数据包 PID (DATA0 和DATA1)是为了支持数据切换同步(在第 8.6 节提到)
27、而定义的。所有四种数据PID被用在高带宽高速同步端点的PID序列中(在第5.9节提到)。三种数据PID(MDATA,DATA0,DATA1)被用在分割传输事务中(在11.17-11.21章节中提到)。图 8-15 数据包格式数据必须以整数的字节数发出。数据 CRC 仅通过对包中的数据字段计算而得到,而不包括 PID ,它有自己的校验字段。低速设备的最大数据有效载荷是8字节。全速设备的最大数据载荷是1023字节。高速设备的最大数据载荷是1024字节。8.4.5握手包如图 8-16 所示,握手包仅由 PID 构成。握手包用来报告数据事务的状态,能还在表示数据成功接收,命令的接收或拒绝,流控制和停止
28、条件。只有支持流控制的事务类型才能返回握手信号。握手总是在事务的握手时相中被返回,也可在数据时相代替数据被返回。握手包由 1 个字节的包字段后的 EOP 确定界限。如果包被解读为合法的握手信号,但没有以 1 个字节后面的 EOP 终止,则它被认为是无效的,且被接收机忽略。图 8-16 握手包l 有 4 种类型的握手包和一种特殊握手包:l ACK 表示数据包没有位填充或数据字段上的 CRC 错,并且数据 PID 被正确收到。ACK 在下列的情况下被发放,当时序列位匹配且接收器能接受数据的时候,或者当时序位失配,但发送方和接收器互相之间必须再同步(详见第 8.6 节)的时候。ACK 握手信号只适用
29、于数据被传送且期待握手信号的事务中。对于输入事务, ACK 由主机返回,而对于输出、建立或PING事务则由功能部件返回;l NAK 表示功能部件不会从主机接受数据(对于输出事务),或者功能部件没有传输数据到主机(对于输入事务)。NAK 仅由功能部件在输入事务的数据时相返回,或在输出或PING事务的握手时相返回。主机决不能发出 NAK 。出于流控制的目的, NAK 用于表示功能部件暂时不能传输,或者接收数据,但是最终还是能够在不需主机干涉的情况下而传输或接收数据;l STALL 作为输入标记的回应,或者在输出事务的数据时相之后由功能部件返回,或者作为PING事务的回应(见图 8-30 和图 8-
30、38 )。停顿表示功能部件不能传输,或者接收数据,或者不支持一个控制管道请求。功能部件在返回一个STALL后的状态(对于除了默认端点的任何端点)是不被定义的。在任何条件下都不允许主机返回STALL。停顿握手由设备用于在两个不同的场合之一。第一种情况,是当设置了与端口相联系挂起特征的时候,称为为特色" 功能停顿" (挂起特征在这文档的第 9 章中详细说明)。功能停顿的特殊情况是 " 命令停顿" 。如同在第 9 章中详细叙述的那样,命令停顿发生在主机显式地设置了端口的挂起特征的时候。如果功能部件的端口被挂起,则功能部件必须继续返回停顿,直到引起停止的条件通过
31、主机干涉而被清除。如同在8.5.3 节中详细叙述的那样,第二种情况称为 " 协议停顿" 。协议停顿对于控制管道是唯一的。协议停顿和功能停顿在意义和持续时间上是不同。协议停顿在控制传送的数据或状态阶段被返回,并且,停顿条件在下一个控制传送的开始终止(建立事务)。这节的剩下部分将提到功能停顿的一般情况。l NYET 是高速传输仅有的在两种情况下能被返回的握手。作为将要在这一章接着被介绍的PING协议的一部分,它将被高速端点返回。当全速/低速传输没有完成或者集线器不能控制分割传输时,作为对分割传输的回应,NYET也可以被集线器返回。更多细节见于第十一章。l ERR 是高速传输仅有
32、的允许高速集线器在全速/低速总线上被返回以报告错误的握手。它仅作为分割传输协议的一部分被高速集线器返回。更多细节见于第十一章。8.4.6握手回答传输和接收功能部件必须根据从表 8-4 中到表 8-6 详细叙述的优先顺序返回握手。不是所有的握手都是被允许,依赖于事务类型和功能部件或主机是否发出握手。如果标记在传输到功能部件的阶段里发生了错误,则功能部件将不以任何包回应,直到下一个标记被收到并成功地译码。8.4.6.1功能部件对输入事务回答表 8-4 显示了功能部件作为对输入标记的反应而可能做的回答。如果由于停止或流控制条件, 功能部件不能发送数据,它将发出STALL或 NAK 握手。如果功能部件
33、能发出数据,它就发出数据。如果收到的标记被损坏,则功能部件不应答。表8-4 功能部件对输入事务的回应收到的标记损坏功能部件的发送端口的挂起特征功能部件能发送数据采取的动作是不管不管不回应否置了位不管发送停止握手否没置位否发送 NAK 握手否没置位能发送数据包8.4.6.2主机对输入事务回答表 8-5 显示了主机对输入事务回答。主机只能返回 1 种类型的握手: ACK 。如果主机收到了损坏的数据包,它把数据丢弃且不应答。如果主机不能从功能部件接受数据,则(出于类似内部缓冲溢出的问题)这条件被认为是错误,并且主机不应答。主机能接受数据,并且如果数据包是完整无错地被接收到,则主机接受数据并发出 AC
34、K 握手。表 8-5 主机对输入事务的回应数据包损坏主机能接受数据主机返回的握手是N/一丢弃数据,不回应否否丢弃数据,不回应否能接受数据,发送 ACK8.4.6.3功能部件对输出事务回答对输出事务的握手回答由表 8-4 表示。假设标记译码成功,功能部件收到数据包后,可以返回三种握手类型中的任何一种。如果数据包被损坏,功能部件不返回握手。如果数据包是被完整无错地接收到,而功能部件的接收端口被停止,则功能部件返回停止。如果事务正维持着时序位同步而探测到失配(在第 8.6 节有详细描述),那么功能部件返回 ACK ,并丢弃数据。如果功能部件能够接受数据并完整无错收到数据,它返回 ACK 。如果由于流
35、控制的原因,功能部件不能接受数据包,它返回 NAK 。表8-6 功能部件对输出事务的回应(按优先顺序)数据包损坏接收器的挂起特征时序位匹配功能部件可接收数据功能部件返回的握手是N/一N/一N/一无否置了位N/一N/一停止否没置位否N/一ACK否没置位是可ACK否没置位是否NAK8.4.6.4功能部件对建立事务的回答建立事务定义了特殊的主机- 功能部件的数据事务,它允许主机初始化端口的同步位为主机的同步位。一收到建立标记,功能部件就必须接受数据。功能部件不能对建立标记用STALL或 NAK 应答,并且,接收功能部件必须接受建立标记后的数据包。如果非控制端口收到建立标记,它必须忽略事务且不应答。8
36、.5事务格式包事务格式根据端口类型而变化。有 4 种端口类型:批处理,控制,中断和同步。为满足各种传输的时序要求,主机控制器和设备各自需要不同的状态机制。一些章节中的图显示了在各种传输类型中定义正确时序包的状态机制。图表不应该认为是必需的执行,但指定了必需的行为。图8-17显示了状态机制图表的图例。三线圆表明是提及了另外一个(分等级的)状态机。两线圆表明是一个初始状态。单线圆表明是简单状态。图8-17 状态机制的图例带箭头的“突出”图形表示状态机制的出口或入口(在各自的图例中)。在状态机机制中,出口或入口与状态机中处于更高级别的另一状态有关。菱形(连接)用来将几个过渡连接成一个普通的点。连接允
37、许有单个输入过渡而有多个输出过渡或者是有多个输入过渡而有单个输出过渡。为了路径能够被获取,所有与连接有关的过渡情形都要为真。路径仅仅是包括一个或更多的连接的过渡的序列。过渡附加了一个方框,它里面的中间有一条线,将方框分为上下两部分,上面是条件,下面是行为。若想进行这一过渡,则需条件为真。行为和条件的句法是符合VHDL的。如果过渡得以进行,那么行为也将可以施行。圆圈包括一个黑体的名字,可以包含一个或多个进入状态时施行的行为。主机控制器和设备状态机正是工作在如图8-18所示的环境下的。主机控制器其将和设备的某端点之间进行的下一个事务处理,并想主机控制器状态机发出命令(HC_cmd)。这使得主机控制
38、器状态机向下行总线发出一个或多个信息包(HSD1)。设备从总线(HSD2)获得这些信息包,对收到的信息包作出反应,并通过相应的设备端点(在“端点阵列”中)和其功能单元进行通信。之后,设备可能向上行总线(HSU1)返回一个信息包。主机控制器状态机能够从总线(HSU2)收到一个新版并把该事务的处理结果提供给USB主控制器(HC_resp)。总线上什么包被发送的细节决定于端点的传输类型和状态机遵守什么样的总线活动规则。状态机是以分等级的形式存在的。图8-19显示了主机控制器的顶层状态机。这一章的余下部分将讨论无分割传输。分割传输状态机(HC_Do_start 和HC_Do_complete)将在第十
39、一章进行描述和说明。 图8-18 状态机环境概述 图8-19 主控制器顶层事务状态机分层概况主机控制器状态机位于主机控制器内部。主机控制器负责向下行总线(标志为HSD1)发送信息包和从上行总线(标志为HSU2)接收信息包。设备状态机位于设备内部。设备负责向上行总线(标志为HSU1)和从下行总线(标志为HSD2)接收信息包。主机控制器具有告知接下来为端点发起什么事务的命令。主机控制器跟踪几个端点的事务。主机控制器状态机时序决定了接下来需要为现在的端点做什么。设备对于任意它的端点都有一个状态。设备状态机时序决定了对于事务设备作出怎样的反应。附录包括了一些用于组成状态机、可能对于理解状态机的额外细节
40、有所帮助的声明。还有数个伪代码程序和函数作为条件和行为。在附录中还包含对它们的简单描述。图8-20显示了无分割传输类型主机控制器总体状态机分层的概况。图8-21显示了设备状态机的分层。首先介绍的是端点类型的普通状态机。最低级别的端点类型特殊状态机将在以下的各种端点类型的章节中分别进行介绍。 图8-20 主机控制器无分割传输状态机分层概况 图8-21 设备传输状态机分层概况 图8-22 设备顶层状态机 图8-23 Device_process_Trans状态机制 图8-24 Dev_do_OUT 状态机制 图8-25 Dev_do_IN 状态机制 图8-26 HC_Do_nonsplit状态机制
41、8.5.1通过PING流控制的无应答限制全速/低速设备可以具有批量传输/控制传输端点,它们要花费时间处理它们的数据,并且,因此用无应答握手回应OUT事务。这一握手回应说明端点因为没有数据空间而不接收数据。在未来的端点有可用空间的时侯,主机控制器被期望重新进行这一传输事务。不幸的是,等到端点发生无应答时,大多数全速/低速总线的事务时间已经被使用了。这意味着,当无应答OUT事务高频率发生时全速/低速总线具有低利用率。高速设备必须支持改进的无应答机制,以实现批量OUT传输和控制传输端点和事务。控制端点必须支持支持这一协议,以实现数据和状态阶段的OUT事务。控制建立阶段不支持PING协议。这一机制允许
42、设备告知主机控制器它是否对于下一个OUT事务足够的端点空间。如果设备端点不具有空间,主机控制器可以决定为这个端点延迟一个事务尝试,同时可以尝试其他事务。这就可以完成改进的总线实现。这一机制避免了在主机控制器知道端点有数据空间前使用发送数据的总线时间。主机控制器用PING特殊标记查询高速设备的端点。PING特殊标记是普通的标记包,正如图8-5所示。端点或者用一个NAK握手或者用一个ACK握手回应PING。NAK握手表明端点没有“最大数据包”数据有效载荷的空间。主机控制器将在未来的某个时间重新尝试PING以再次查询端点。设备可以长时间的用NAK回应PING。NAK回应并不是主机控制器重新传输请求的
43、原因。如果设备在(微)帧中用NAK作出回应,主机控制器可以在下一个bInteval中特别为端点发出下一个事务。然而,设备必须准备好以连续事务的形式接收PINGs,例如,一个立刻接着另一个。ACK握手表明具有“最大数据包”数据有效载荷的空间。主机控制器必须以数据相产生OUT事务以作为端点的下一个事务。主机控制器在此端点的OUT/DATA事务之前可以为其他端点产生其他事务。如果端点用ACK握手对OUT/DATA事务作出回应,这就意味着端点成功接收了数据并且具有“最大数据包”数据有效载荷的空间。只要主机控制器有事务产生,它就继续OUT/DATA事务(对于总线上的下一个事务这是需要的)。如果端点以NY
44、ET握手回应OUT/DATA事务,这就意味着端点接收了数据但不再具有“最大数据包”数据有效载荷的空间。直到端点声明具有空间,主机控制器才可以重新使用PING标记。 图8-27 主机高速批量OUT/Control PING状态机制8.5.1.1PING协议中对OUT/DATA的NAK回应端点也可以用NAK握手回应OUT/DATA事务。这意味着此时端点不接收数据并且不具有“最大数据包”数据有效载荷的空间。直到端点声明具有空间,主机控制器才可以重新使用PING标记。NAK回应被认为是异常事件。高速批量传输/控制传输端点必须在端点描述符中明确最大的NAK率。端点最多被允许在一个vInterval周期发
45、生一次NAK。一个NAK说明端点用不恰当的握手回应先前的OUT/PING,或者端点转入了一个(临时)不能接收数据的状态。端点可以使用一个bInterval的0表明它从不发生NAK。端点必须总是能够从主机接收PING,即使它从不发生NAK。如果数据相以后发生了超时,主机必须重新使用PING标记。注意回到PING状态的转变并不影响传输数据相的切换状态。图8-27 说明了PING、OUT/DATA标记与被允许的PING机制的ACK、NAK和NYET握手之间相互作用和转换的主机控制器状态机制。图8-29说明了端点缓冲空间可用的PING的设备端点状态机制。 图8-28 Dev_HS_ping 状态机制
46、图8-29 设备高速批量OUT/Control状态机制全速/低速设备/端点不支持PING协议。主机控制器对于全速/低速设备也不支持PING协议。注意:PING协议也不包含在分割传输协议的定义中。一些分割传输有相当的不使用PING的流控制。其他分割传输像定义的那样无法受益于PING。在任何情形下,可以返回NAK握手的分割传输具有较小的数据有效载荷,而这也就会对高速总线具有较小的冲击。集线器必须在它们的控制端点支持PING,但是对于用于被集线器所支持的全速/低速设备之间通信的分割传输,PING是不被定义的。8.5.2批处理事务批处理事务类型的特点是具有以错误检测和重试的方式保证主机和功能部件之间的
47、数据无错发送的能力。如图 8-30 所示,批处理事务是由标记,数据和握手包构成的三时相的事务。在某些流控制和挂起条件下,数据时相被握手信号替换,从而产生了没有数据传输的两时相的事务。PING包和NYET包仅仅使用在工作在高速状态的设备上。图 8-30 批处理事务格式当主机准备好了接收批处理数据的时候,它发出输入标记。功能部件端口通过返回数据包,或者如果不能返回数据,则返回 NAK 或STALL握手作为应答。NAK 表示功能部件暂时不能返回数据,而STALL表示端口永久地被停止,需要USB系统软件干涉。如果主机收到合法的数据包,则它用 ACK 握手来应答。如果收到数据时主机检测到错误,它不返回握
48、手包给功能部件。当主机准备好了传送成批数据的时候,它首先发出一个后跟数据包的输出标记包(或者PING标记包,参见8.5.1章节)。如果数据由功能部件无错地接收到,那么它将返回三个握手中的一个:l ACK 表示数据包无错地接收到,通知主机可以发送下一个包;l NAK 表示数据被无错地收到,但主机应该重新发送数据因为数据功能部件处于妨碍它接受数据的暂时条件(例如缓冲满)中;l 如果端口被停止,则返回STALL(停止)以告诉主机不要重试传输,因为功能部件上有错误条件。如果接收到的数据有 CRC 或者位填充错误,那么不返回任何握手。图8-31和图8-32分别说明了主机和设备批量传输、控制传输和中断传输
49、OUT全速/低速事务的状态机制。图8-27、图8-28和图8-29说明高速传输事务的状态机制。图8-33和图8-34分别说明了主机和设备批量传输、控制传输和中断传输IN事务的状态机制。 图8-31 批量/控制/中断OUT事务主机状态机制图8-32 批量/控制/中断OUT事务设备状态机制 图8-33 批量/控制/中断IN事务主机状态机制图8-34 批量/控制/中断IN事务设备状态机制图 8-35 说明了时序位和数据 PID 在成批读和写中的用法。数据包同步经数据时序切换位和 DATA0/ DATA1 PID 的使用而达到。当端口经历配置事件(配置事件在节 9.1.1.5 和 9.4.5 中有解释
50、)的时候,批事务端口的切换时序被初始化为 DATA0 。端口上的数据切换不是作为短包传送或 IRP 撤消的直接结果而被初始化的。图 8-35 批事务读和写主机总是通过配置事件初始化总线传送的第一个事务为 DATA0 PID 。第二的事务使用 DATA1 PID ,并且,剩余的后继数据传送轮流切换。数据包发送器根据 ACK 的接收情况来切换而接收器根据数据包的接收的情况切换(参见第 8.6 节)。8.5.3控制传送控制传送最少有 2 个事务阶段:建立和状态。控制传送可以有选择性地包括建立和状态阶段之间的数据阶段。在建立阶段里,建立事务用于向功能部件的控制端口传输信息。建立事务在格式上类似于输出,
51、但是使用的是建立而不是输出的 PID 。图 8-36 说明了建立事务的格式。建立总是在建立事务的数据时相上使用 DATA0 PID 。收到建立的功能部件必须接受建立数据并用 ACK 应答,如果数据被损坏,则丢弃数据且不返回握手。图 8-36 控制建立事务控制传送的数据阶段,如果有的话,由一个以上的输入或输出事务构成,遵守和批量事务传送相同的协议规则。所有的数据阶段里的事务都必须有相同的方向(即全部输入或者全部输出)。在数据时相中要发送的数据数量和其方向在建立阶段里被指定。如果数据的数量超过了先前确定的数据包大小,数据在支持最大的包大小的多个事务中被发送(输入或者输出)。任何剩下的数据都作为剩余
52、在最后的事务中被发送。控制传送的状态阶段是序列中的最后一个操作。状态阶段是以相对前面的阶段数据流方向的变化来描述的,并且总是使用 DATA1 PID 。例如,如果数据阶段由输出事务构成的,状态是单一的输入事务。如果控制传送序列没有数据阶段,那么它由建立阶段和其后的由输入事务构成的状态阶段构成。图 8-37 说明了事务顺序,数据时序位的值和控制读写序列的数据 PID 类型。时序位显示在括号中。图 8-37 控制读写序列当控制端口在控制传送的数据和状态阶段中发送停止握手的时候,必须对以后所有对此端口访问返回停止握手,直到收到建立 PID 为止。端口收到建立 PID 之后,不应返回停止握手。对于默认
53、端点,如果对于建立事务返回了一个ACK握手,主机就认为端点已经自动从导致停止的情况下恢复了并且端点一定正常工作了。8.5.3.1汇报状态结果状态阶段向主机做汇报传送中的先前建立和数据阶段的结果。可能返回三种结果:l 命令序列成功地完成了;l 命令序列没能完成;l 功能部件还在忙于完成指令。汇报状态总是从功能部件到主机的方向。表 8-7 概括了每一种所需的应答类型。控制写传送在状态阶段的事务数据时相返回状态信息。而对于控制读传送,主机在状态阶段事务的数据时相中发出零长度的数据包之后,功能部件在握手时相返回状态信息。表8-7 状态阶段的响应状态响应控制写传送(在数据时相发送)控制读传送(在握手时相发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海市部分重点中学2025届高三3+1期末质量调研考试历史试题含解析
- 忻州职业技术学院《航司餐饮文化基础》2023-2024学年第一学期期末试卷
- 武汉商贸职业学院《新时代中国特色社会主义理论与实践研究》2023-2024学年第二学期期末试卷
- 沈阳建筑大学《西方文明史》2023-2024学年第二学期期末试卷
- 石家庄幼儿师范高等专科学校《偏微分方程》2023-2024学年第二学期期末试卷
- 江阴职业技术学院《机械工程基础》2023-2024学年第二学期期末试卷
- 上海音乐学院《数字视音频处理技术》2023-2024学年第二学期期末试卷
- 江苏财经职业技术学院《传热学》2023-2024学年第二学期期末试卷
- 山西财贸职业技术学院《热工与流体力学》2023-2024学年第二学期期末试卷
- 山东省五莲县2025年新高三入学考试数学试题含解析
- 2023年郑州工业应用技术学院单招考试面试题库及答案解析
- 《电子制造技术-电子封装》配套教学课件
- 二月份循证护理查房课件
- 粉笔国考行测模考大赛第八季
- JJF(湘) 09-2018 纯水-超纯水系统监测仪表(电导率)计量校准规范-(高清现行)
- 大一下【世界古代史】期末复习资料
- 延安市幼儿教师心理健康现状调查分析
- 尾矿库筑坝施工组织方案
- 中药斗谱排序
- 数学建模“如何进行人员分配”问题
- 空调系统维保记录表格模板
评论
0/150
提交评论