




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 USB2.0协议第八章协议层这章从字段和包的定义开始,从底向上地展示万用串列总线协议。接着是对不同事务类型的包事务格式的描述。然后是链路层流程控制和事务级的故障恢复。本章的最后将讨论复执同步化的恢复和高速网络侦测协议的同步,超时干扰,总线活动丧失。8.1位定序数据位被发送到总线的时候,首先最低有效位(LSb),跟着是下一个最低有效位,最后是最高有效位(MSb)o在以后图表中的,包以下列形式给出,即包中单个的位和字段从左到右的顺序就是它们通过总线的顺序。8.2同步字段所有的包都从同步(同步)字段开始的,同步字段是产生最大的边缘转换密度的编码序列。同步字段被输入电路用来以本地时钟对齐输入数据。对
2、丁全速/低速模式,最初的同步被定义为8字节的长度,而对于高速模式则定义为32字节的长度。正如第七章描述的那样,标准的同步字段可以更加简短。同步字段是用丁同步的机制,在以后图表当中将不被表示(参照节7.1.10)o同步字段里的最后2位是同步字段结束的记号,并且标志了包标识符(PID,)的开始。8.3包字段格式在后面儿节将描述标记,数据和握手包的字段格式。包中位的定义是以未编码的数据格式给出。为了清楚起见,在此不考虑NRZI编码和位填充的影响。开始一小包的)和包结束分隔符的所有包都分别有包开始。包开始分隔符是同步字段的一部分,而包结束(E0P)分隔符在第7章有所描述。8.3.1包标识符字段所有万用
3、串列总线包的同步字段后都紧跟着包标识符(PID)。如图8-1所示,包标识符由4位的包类型字段和其后的4位的校验字段构成。包标识符指出了包的类型,并由此隐含地指出了包的格式和包上所用错误检测的类型。包标识符的4位的校验字段可以保证包标识符译码的可靠性,这样包的余项也就能被正确地解释。包标识符的校验字段通过对包类型字段的二进制的求反码产生的。如果4个PID检验位不是它们的各白包标识符位的补,则说明存在PID错。(LSB)(MSb)PDIP(D1PID2PID3阿阿匹眄I图8-1PID格式主机和所有功能部件都必须对得到全部PID字段实行完整的译码。任何收到包标识符,如果含有失败的校验字段,或者经译码
4、得到未定义的值,则该包标识符被假定是被损坏的,而且包的余项将被包接收机忽略。如果一个功能部件收到了包含了它所不支持的事务类型或方向的合法包标识符,则不必应答。例如,只能输入的端口(IN-onlyEndpoint)必须忽略输出标记。表8-1列出了包标识符类型,编码及其描述。表8-1PID类型PID类型PID名PIDE3:0描述标记出H)的输0001B在主机到功能部件的事务中有地址+端(表征)1001B口号)的输入(0101B在功能部件到主机的事务中有地址+端口号帧开始(S0F)1101B帧开始标记和帧号建立(装备)在主机到功能部件建立一个控制管道的事务中有地址+端口号数据数据00011B偶数据包
5、PID(数据)(DATA0)数据11011B奇数据包PID(DATA1)数据20111B高速宽带同步传输帧数据包PID(更多(DATA2)内容请参见5.9.2章节部分)MDATA1111B高速宽带分段传输数据包PID(更多内容请参见5.9.2,11.20和11.21章节部分)握手确认(ACK)0010B接收器收到无措数据包;(Handshake)不确认1010B接收设备部不能接收数据,或发送设备不(NAK)能发送数据;停止(STALL)1110B端口挂起,或一个控制管道请求不被支持。无回应0110B(NYET)尚未从接收者获得回应。(更多内容请参见8.5.1和11.17-11.21章节部分)专
6、用(special)前同步(PRE)1100B(标记)主机发送的前同步字。打开到低速设备的下行总线通信。报错(ERR)1100B(握手)分段传输的差错握手(重新使用PRE量值)分段(SPLIT)1000B(标记)高速分段传输标记(参见8.4.2侦测(PING)0100B章节部分)预留0000B(标记)对bulk/control模式下端口的高(Reserved)速数据流控制侦测(参见8.5.1章节部分)预留PID*注解:PID位以最高位在前的顺序被表示。在万用串列总线上被发送的时候,最右的位(位0)将被第一个发出。包标识符被分为4个编码组:标记,数据,握手和专用。包标识符传送的前2位(PID)指
7、出了其属于哪个组。这说明包标识符编码的分布。8.3.2地址字段功能部件端口使用2个字段:功能部件地址字段和端口字段。功能部件对地址和端口字段都需耍进行译码。不允许使用地址或端口别名(Aliasing),并且任何一个字段不匹配,此标记都必须被忽略。另外,对未初始化的端口访问将使得标记被忽略。地址字段功能部件地址(ADDR)字段通过其地址指定功能部件,至丁是数据包的发出地还是目的地,则取决丁标记PID的值。如图8-2所示,ADDR指定了总共128个地址。地址字段被用丁输入,建立和输出标记。由定义可知,每个ADDR値都定义了单一的功能部件。刚一复位和加电的时候,功能部件的地址默认值为零,并且必须由主
8、机在枚举过程中编程。功能部件地址零被用作为缺省地址,不可被分配作任何别的用途。)WSb)Ad叫Addr1Addr2Ad叫Addr4AddrsAdd%图8-2地址字段端口字段如图8-3所示,附加的4位的端口(ENDP)字段在功能部件需耍一个以上端口时候允许更灵活的寻址。除了端口地址0之外,端口个数是由功能部件决定的。端口字段只对输入,建立和输出标记PID有定义。所有的功能部件都必须在端口0提供一个控制管道(缺省控制管道)。对丁低速设备,每个功能部件最多提供3个管道:在端口0的控制管道加上2个附加管道(或是2个控制管道,或是1个控制管道和1个中断端口,或是2个中断端口)。全速功能部件可以支持最多可
9、达16个的任何类型的端口。LSb)(MSb)Ertd%E血图8-3端口字段8.3.3帧号字段帧号字段是一个11位的字段,主机每过一帧就将其内容加一。帧号字段达到其最大值7FFH时归零,且它仅每个帧最初时刻在SOF标记中被发送。8.3.4数据字段数据字段可以在0到1,023字节之间变动,但必须是整数个字节。图8-4为多字节显示格式。每个字节的范围内的数据位移出时都是最低位(LSb)在前。ByteN-1ByteN图8-4数据字段格式ByteN+166如同在第5章所描述的那样,数据包大小随着传送类型而变化。8.3.5循环冗余校验循环冗余校验(CRC)被用來在标记和数据包中保护所有的非PID字段。在上
10、下文中,这些字段被认为是保护字段。PID不在含有CRC的包CRC校验范围内。在位填充之前,在发送器中所有的CRC都由它们的各H字段产生。同样地,在填充位被去除之后,CRC在接收器中被译码。标记和数据包的CRC可100%判断单位错和双位错。失败的CRC指出了保护字段中至少有一个字段被损坏,并导致接收器忽略那些字段,且在大部分情况下忽略整个包。为了CRC的发生和校检,发生器和检验器里的移位寄存器置成为全1型。对于每个被发送或者被收到的数据位,当前余项的最高一位和数据位进行异或(X0R),然后,余项是左移1位,并且,最低一位置零。如果异或的结果是1,余项和生成多项式作异或。当检査的字段最后的一位被发
11、送的时候,发生器里的CRC被颠倒,再以最高位(MSb)在前发给检验器。当检验器收到CRC的最后一位,且不发生错误的时候,余项将等丁多项式的剩余。如果剩余与包接收器中最后计算出的检验和余项不匹配,则存在CRC误差。对于CRC,必须满足位填充的耍求,且如果前6位都是1的话,这包括在CRC的最后插入零,。标记CRC标记使用了5位的CRC字段,它覆盖了输入,建立和输出标记的ADDR和ENDP字段,或S0F标记的时间戳字段。生成多项式如下:G(X)=Xs+X!+1这个多项式的二进制位组合是00101B。如果所有的标记位都被准确无误地收到,接收机中的5位剩余将是01100Bo数据CRC数据CRC是作用于数
12、据包的数据字段上的16位多项式。产生的多项式是如下G(X)=Xu+X,s+X!+l这个多项式的二进制位组合是1000000000000101B。如果全部的数据和CRC位被准确无误地收到,16位剩余将是1000000000001101B。8.4包格式这节展示标记,数据和握手包的包格式。这些图将以位被挪动到总线上的顺序显示包内的字段。8.4.1标记包图8-5显示了标记包的字段格式。标记由PID,ADDR和ENDP构成,其中PID指定了包是输入,输出还是建立类型。而PING特殊标记包也有相同的构成结构。对丁输出和建立事务,地址和端口字段唯一地确定了接下來将收到数据包的端口。对丁输入事务的,这些字段唯
13、一地确定了哪个端口应该传送数据包。对T-PING处理环节,这些字段唯一地确定了发送数据包的端口。只有主机能发出标记包。输入PID定义了从功能部件到主机的数据事务。输出和建立PID定义了从主机到功能部件的数据事务。侦测PID定义了从功能部件到主机的握手处理环节。(lsb)(msb)FieldPIDlDDRENDPCRC5Bits8745VJ图8-5标记包格式如上图所示,标记包包括了覆盖地址和端口字段的5位CRC。CRC并不覆盖PID,因为它有H己的校验字段。标记和帧开始(S0F)包是由小包)界定的3个个字节的包字段数据后面的包结束(E0P,结束。如果包被译码为合法标记或S0F,但却没有在3个字节
14、之后以E0P终止,则它被认为是无效的,并被接收器忽略。8.4.2数据分割特殊标记包USB为数据分割传输定义了特殊的标记:SPLITo与其他普通的三字节标记包不同,这是一个四字节的标记包。数据分割传输标记包提供了携带额外特殊传输信息的更多的传输字节。数据分割传输标记用來支持主机控制器与处于高速运转状态的集线器之间图8-11端II字段 # #图8-7末端数据分割传输的信息包 数据分割传输,而这一高速运转是集线器的下行端口与全速/低速设备之间进行的。有两种数据分割传输被规定使用SPLIT特殊标记:始端数据分割传输(SSPLIT)和末端数据分割传输(CSPLIT)o如下面的章节所述,数据分割传输特殊标
15、记的字段表明了特殊的数据分割传输。数据分割传输高速数据分割传输仅仅用丁主机与连有全速/低速设备的集线器之间的传输。这种高速数据分割传输用来通过集线器和一些全速/低速设备端口初始化全速/低速传输。高速数据分割传输也允许重新从集线器获得全速/低速传输的完成状态。这一方式允许主机控制器先通过高速传输开始全速/低速传输,再继续其他高速传输而无需等待全速/低速传输以较慢速度进行或完成。关丁状态机制和数据分割传输等待传输定义的更多细节请见第11章节。高速数据分割传输有两个部分:始端数据分割传输和末端数据分割传输。数据分割传输仅被定义用來完成主机控制器和集线器之间的传输。没有其他高速、全速/低速设备使用数据
16、分割传输。图8-6显示了组成一般始端数据分割传输的信息包。状态标记有两个信息包:SSPLIT标记和全速/低速标记。状态标记有选择地跟随一个信息包或者一个握手包,这取决丁数据传输的指令以及与传输类型的握手是否被定义。始端数据分割传输可以2个、3个或4个信息包,这取决于特定的传输类型和数据指令。SSPLITTokenFS/LSToken:DATAxHandshake:图8-11端II字段 # #图8-7末端数据分割传输的信息包 #图8-11端II字段 图8-7末端数据分割传输的信息包 #TokenPhase图8-6始端数据分割传输的信息包图8-7显示了组成一般末端数据分割传输的信息包。状态标记有两
17、个信息包:SSPLIT标记和全速/低速标记。状态标记有选择地跟随一个信息包或者一个握手包,这取决数据传输的指令以及与传输类型的握手是否被定义。末端数据分割传输可以2个或3个信息包,这取决丁特定的传输类型和数据指令。CSPLITTokenFS/LSTokenTokenPhase!DATAxiIIor【WwwwwwwwwMWWwWw;Handshake|数据分割传输的结果是由末端数据分割传输返回的。图8-8用一个中断IN传输的例子说明了这一概念上的会话。主机先向集线器发出一个开始片段(用1表示),再就可以进行其他高速传输。一段时间后,开始片段使得集线器发出一个全速/低速IN标记(用2表示)。设备用
18、一个数据包回应IN标记(在这个例子中),集线器用一个握手回应设备。最后,再过一段时间后,主机发出一个末端片段(用3表示)以再次获得设备提供的数据。在例子中请注意:在末端片段以前集线器向设备端口提供了全速/低速握手(在这个例子中是ACK),而末端片段向集线器提供的不是高速握手。1FUII-/LOW-SpeedBus图8-8中断IN传输与数据分割传输的关系常规的全速/低速OUT传输同样在概念上“转换”为始端分割传输和末端分割传输。图8-9以中断传输为例说明了这种“转换”。主机发起一个始端片段事务,它包括SSPLIT特殊标记,OCT标记和数据包。一段时间后,集线器在全速/低速总线上发出OUT标记和数
19、据包。设备用握手作出回应。一段时间后,主机发起末端片段事务,集线器用设备提供的结果(全速/低速数据或是握手)作出回应。Device图8-9中断OUT传输和高速分割OUT传输的关系接下来的两部分描述的是组成具体始端分割标记包和末端分割标记包的字段。图8-10和图8-12说明了分割传输标记包中的字段。跟随一般标记格式的SPLIT特殊标记以一个PID字段(在一个SYNC后)开始,并以一个CRC5字段(和EOP)结束。始端分割标记包和末端分割标记包都是4字节长oSPLIT传输必须仅来源丁主机。始端标记在章节被定义,末端标记在被定义。始端分割传输标记(lsb(msb)FieldSPLITPIDHubAd
20、diSC?onsEETCRC5Bns8711I95图8-10始端片段(SSPLIT)标志集线器地址字段包含支持特定全速/低速设备全速/低速传输的集线器的USB设备地址。这一字段与章节中ADDR字段有相同的定义。带有SC(始端/末端)字段被设定为0表明这是一个始端片段事务(SSPLIT)o端口字段包括接收全速/低速事务的目标集线器的端口号码。正如图8-11所示,所有128个端口用P0RT加以制定。主机必须正确地为单独或多个TT集线器执行设定端口字段。一个单独TT集线器执行可以忽略端口字段。(LSb)PortPort,Port“PWl.Port,PonrPort.o24-6S(速度)字段按照如下规
21、定制定中断传输或控制传输速度:0全速1低速对丁批量IN/0UT和同步IN的始端片段,S字段必须被设定为0。对丁批量/控制IN/0UT,中断IN/0UT,和同步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量值
23、端点类型00控制传输01同步传输10批量传输11中断传输这一字段告诉集线器使用哪个分割传输状态机完成全速/低速传输。全速/低速设备的地址和端点号码信息包含在跟随在SPLIT特殊标记包后的常规的标记包中。末端分割传输标记(LVb)(msb)FieldSRLITPIDHubAddjSCPonsuETCRCBitsS71I125图8-12末端分割传输(CSPLIT)标记如果SPLIT特殊标记包中SC字段被置为1,则说明这是一个末端分割传输(CSPLIT)。 图8-7末端数据分割传输的信息包 #U位是被保留的/不能加以使用,并必须置为0(0B)。其他末端分割片段标记包的字段和始端片段标记包具有相同的定
24、义。8.4.3帧开始(SOF)包对丁全速总线和高速总线,主机分别以每1.00ms土0.0005ms一次和每125Ps0.0625us次的额定速率发出帧开始(SOF)包。如图8-13中所示,SOF包是由指示包类型的PID和其后的11位的帧号字段构成。(mW)FieldPIDFrameNumberCRC5Bits3115图8-13帧开始包S0F标记组成了仅有标记的事务(它被用來分配S0F标记)和伴随的帧数的事务(相应丁每帧的开始以准确时间间隔进行)。包括集线器的所有全速功能部件都可收到S0F包。S0F标记不会使得接收功能部件产生返回包;因此,不能保证向任何给定的功能部件发送的S0F都能被收到。S0
25、F包发送2个时间调配信息。当功能部件探测到S0F的PID的时候,它被告知发生S0F。对帧时间敏感而不需要追踪帧数(例如集线器)的功能部件,仅需对S0F的PID译码;可忽略帧数和其CRCo如果功能部件需要追踪帧数,它必须对PID和时间标志都进行译码。对总线时间调配信息的没有特别需耍的全速设备可以忽略S0F包。USB帧和微帧对丁全速传输,USB定义了每个都由帧开始标志(S0F)标记的Ims帧时间,并且每Ims周期都有约定的跑动公差。对于高速传输,USB也定义了以125微秒为帧时间、具有相应跑动公差的帧(参见第七章)。对丁全速连接,S0F包每Ims产生一次(由主机控制Full/Low-SpeedFr
26、ameSize(1ms)图8-14微帧和帧之间的关系器或HUB事务转换器发出)。对丁高速传输,SOF包也是在接下来的七个125微秒周期后产生的。图8-14显示了微帧和帧之间的关系。在1ms的时间内,高速USB设备将看到同一个SOF令牌包八次,且它们有相同的帧号。如果需要的话,高速设备可以通过检测与原有SOF包有不同帧号的帧和将它作为第0个微帧处理來鬥己确定一个特殊微帧号。接下來的七个具有相同帧号的SOF包可以被当作微帧1-7來处理。8.4.4数据包如图8-15所示,数据包由PID,包括至少0个字节数据的数据区和CRC构成。有4种类型的数据包,根据不同的PID:DATAO,DATA1,DATA2
27、和MDATA来识别。2种数据包PID(DATAO和DATA1)是为了支持数据切换同步(在第8.6节提到)而定义的。所有四种数据PID被用在高带宽高速同步端点的PID序列中(在第5.9节提到)。三种数据PID(MDATA,DATAO,DATA1)被用在分割传输事务中(在11.17-11.21章节中提到)。(Lsb)(msb)FieldPIDDATACRC16Bits80-819216图8-15数据包格式数据必须以整数的字节数发出。数据CRC仅通过对包中的数据字段计算而得到,而不包括PID,它有白己的校验字段。低速设备的最大数据有效载荷是8字节。全速设备的最大数据载荷是1023字节。高速设备的最大
28、数据载荷是1024字节。8.4.5握手包如图8-16所示,握手包仅由PID构成。握手包用來报告数据事务的状态,能还在表示数据成功接收,命令的接收或拒绝,流控制和停止条件。只有支持流控制的事务类型才能返回握手信号。握手总是在事务的握手时相中被返回,也可在数据时相代替数据被返回。握手包由1个字节的包字段后的EOP确定界限。如果包被解读为合法的握手信号,但没有以1个字节后面的EOP终止,则它被认为是无效的,且被接收机忽略。(lsb)(msb)FieldPIDBits8图8-16握手包有4种类型的握手包和一种特殊握手包:ACK表示数据包没有位填充或数据字段上的CRC错,并且数据PID被正确收至IJ。A
29、CK在下列的情况下被发放,当时序列位匹配且接收器能接受数据的时候,或者当时序位失配,但发送方和接收器互相之间必须再同步(详见第8.6节)的时候。ACK握手信号只适用丁数据被传送且期待握手信号的事务中。对丁输入事务,ACK由主机返回,而对于输出、建立或PING事务则由功能部件返回;NAK表示功能部件不会从主机接受数据(对于输出事务),或者功能部件没有传输数据到主机(对丁输入事务)。NAK仅由功能部件在输入事务的数据时相返回,或在输出或PING事务的握手时相返回。主机决不能发出NAK。出于流控制的目的,NAK用丁表示功能部件暂时不能传输,或者接收数据,但是最终还是能够在不需主机干涉的情况下而传输或
30、接收数据;STALL作为输入标记的回应,或者在输出事务的数据时相之后由功能部件返回,或者作为PING事务的回应(见图8-30和图8-38)。停顿表示功能部件不能传输,或者接收数据,或者不支持一个控制管道请求。功能部件在返回一个STALL后的状态(对于除了默认端点的任何端点)是不被定义的。在任何条件下都不允许主机返回STALLo停顿握手由设备用丁在两个不同的场合之一。第一种情况,是当设置了与端口相联系挂起特征的时候,称为为特色功能停顿(挂起特征在这文档的第9章中详细说明)。功能停顿的特殊情况是命令停顿o如同在第9章中详细叙述的那样,命令停顿发生在主机显式地设置了端口的挂起特征的时候。如果功能部件
31、的端口被挂起,则功能部件必须继续返回停顿,肖到引起停止的条件通过主机干涉而被清除。如同在8.5.3节中详细叙述的那样,第二种情况称为协议停顿。协议停顿对于控制管道是唯一的。协议停顿和功能停顿在意义和持续时间上是不同。协议停顿在控制传送的数据或状态阶段被返回,并且,停顿条件在下一个控制传送的开始终止(建立事务)。这节的剩下部分将提到功能停顿的一般情况。NYET是高速传输仅有的在两种情况下能被返回的握手。作为将要在这一章接着被介绍的PING协议的一部分,它将被高速端点返回。当全速/低速传输没有完成或者集线器不能控制分割传输时,作为对分割传输的回应,NYET也可以被集线器返回。更多细节见丁第十一章。
32、ERR是高速传输仅有的允许高速集线器在全速/低速总线上被返回以报告错误的握手。它仅作为分割传输协议的一部分被高速集线器返回。更多细节见丁第十一早。8.4.6握手回答传输和接收功能部件必须根据从表8-4中到表8-6详细叙述的优先顺序返回握手。不是所有的握手都是被允许,依赖丁事务类型和功能部件或主机是否发出握手。如果标记在传输到功能部件的阶段里发生了错误,则功能部件将不以任何包回应,H到下一个标记被收到并成功地译码。功能部件对输入事务回答表8-4显示了功能部件作为对输入标记的反应而可能做的回答。如果由丁停止或流控制条件,功能部件不能发送数据,它将发出STALL或NAK握手。如果功能部件能发出数据,
33、它就发出数据。如果收到的标记被损坏,则功能部件不应答。表8-4功能部件対输入事务的回应收到的标记损坏功能部件的发送端口的挂起特征功能部件能发送数据采取的动作是不管不管不回应否置了位不管发送停止握手否没置位否发送NAK握手否没置位能发送数据包主机对输入事务回答表8-5显示了主机对输入事务回答。主机只能返回1种类型的握手:ACK。如果主机收到了损坏的数据包,它把数据丢弃且不应答。如果主机不能从功能部件接受数据,则(出丁类似内部缓冲溢出的问题)这条件被认为是错误,并且主机不应答。主机能接受数据,并且如果数据包是完整无错地被接收到,则主机接受数据并发出ACK握手。 图8-7末端数据分割传输的信息包 #
34、表8-5主机对输入事务的回应数据包损坏主机能接受数据主机返回的握手是N/丢弃数据,不回应否否丢弃数据,不回应否能接受数据,发送ACK功能部件对输出事务回答对输出事务的握手回答由表8-4表示。假设标记译码成功,功能部件收到数据包后,可以返回三种握手类型中的任何一种。如果数据包被损坏,功能部件不返回握手。如果数据包是被完整无错地接收到,而功能部件的接收端口被停止,则功能部件返回停止。如果事务正维持着时序位同步而探测到失配(在第8.6节有详细描述),那么功能部件返回ACK,并丢弃数据。如果功能部件能够接受数据并完整无错收到数据,它返回ACK。如果由丁流控制的原因,功能部件不能接受数据包,它返回NAK
35、。表8-6功能部件対输出事务的回应(按优先顺序)数据包损坏接收器的挂起特征时序位匹配功能部件可接收数据功能部件返回的握手是N/N/N/无否置了位N/N/停止否没置位否N/ACK否没置位是可ACK否没置位是否NAK功能部件对建立事务的回答建立事务定义了特殊的主机-功能部件的数据事务,它允许主机初始化端口的同步位为主机的同步位。一收到建立标记,功能部件就必须接受数据。功能部件不能对建立标记用STALL或NAK应答,并且,接收功能部件必须接受建立标记后的数据包。如果非控制端口收到建立标记,它必须忽略事务且不应答。8.5事务格式包事务格式根据端口类型而变化。有4种端口类型:批处理,控制,中断和同步。为
36、满足各种传输的时序耍求,主机控制器和设备各H需耍不同的状态机制。一些章节中的图显示了在各种传输类型中定义正确时序包的状态机制。图表不应该认为是必需的执行,但指定了必需的行为。图8-17显示了状态机制图表的图例。三线圆表明是提及了另外一个(分等级的)状态机。两线圆表明是一个初始状态。单线圆表明是简单状态。ContainsotherstatemachinesInitialstateofastatemachine-StateinastatemachineEntryandexitofstatemachine-Jointusedtoconnecttransitions-Transition:takenw
37、henconditionistrueandperformsactions图8-17状态机制的图例带箭头的“突出”图形表示状态机制的出口或入口(在各H的图例中)。在状态机机制中,出口或入口与状态机中处丁更高级别的另一状态有关。菱形(连接)用來将儿个过渡连接成一个普通的点。连接允许有单个输入过渡而有多个输出过渡或者是有多个输入过渡而有单个输出过渡。为了路径能够被获取,所有与连接有关的过渡情形都耍为真。路径仅仅是包括一个或更多的连接的过渡的序列。过渡附加了一个方框,它里面的中间有一条线,将方框分为上下两部分,上而是条件,下面是行为。若想进行这一过渡,则需条件为真。行为和条件的句法是符合vhdl的。如
38、果过渡得以进行,那么行为也将可以施行。圆圈包括一个黑体的名字,可以包含一个或多个进入状态时施行的行为。主机控制器和设备状态机正是工作在如图8-18所示的环境下的。主机控制器其将和设备的某端点之间进行的下一个事务处理,并想主机控制器状态机发出命令(HC_cmd)o这使得主机控制器状态机向下行总线发出一个或多个信息包(HSD1)。设备从总线(HSD2)获得这些信息包,对收到的信息包作出反应,并通过相应的设备端点(在“端点阵列”中)和其功能单元进行通信。之后,设备可能向上行总线(HSU1)返回一个信息包。主机控制器状态机能够从总线(HSU2)收到一个新版并把该事务的处理结果提供给USB主控制器(HC
39、_resp)。总线上什么包被发送的细节决定丁端点的传输类型和状态机遵守什么样的总线活动规则。状态机是以分等级的形式存在的。图8-19显示了主机控制器的顶层状态机。这一章的余下部分将讨论无分割传输。分割传输状态机(HC_Do_start和HC_Do_complete)将在第十一章进行描述和说明。HostControllerIranisctionTransactioncomnwndsResultsHoststalemachinesHDDownstieaniUp13earnBusBusHSD2HSU1DevicestaremachinesEparrayIFunctionsDevice图8-18状态机
40、环境概述HC_Process_conunaiidHC_Do_UirtHC_Do_completeHC_Do_nonsplit图8-19主控制器顶层事务状态机分层概况图8-7末端数据分割传输的信息包 #主机控制器状态机位丁主机控制器内部。主机控制器负责向下行总线(标志为HSD1)发送信息包和从上行总线(标志为HSU2)接收信息包。设备状态机位于设备内部。设备负责向上行总线(标志为HSU1)和从下行总线(标志为HSD2)接收信息包。主机控制器具有告知接下來为端点发起什么事务的命令。主机控制器跟踪儿个端点的事务。主机控制器状态机时序决定了接下來需耍为现在的端点做什么。设备对丁任意它的端点都有一个状态
41、。设备状态机时序决定了对于事务设备作出怎样的反应。附录包括了一些用丁组成状态机、可能对丁理解状态机的额外细节有所帮助的声明。还有数个伪代码程序和函数作为条件和行为。在附录中还包含对它们的简单描述。图8-20显示了无分割传输类型主机控制器总体状态机分层的概况。图8-21显示了设备状态机的分层。首先介绍的是端点类型的普通状态机。最低级别的端点类型特殊状态机将在以下的各种端点类型的章节中分别进行介绍。HC_Do_nonsplitHCHSBCOHCDoBCINTOHCDoBCINTIHCDoIsochOHCDoIsochI图8-20主机控制器无分割传输状态机分层概况Devicc_ProccsDevdo
42、OUTDevDoIsochODevDoBCINTODevHSBCODevdoINDevDoJsoclilDevDoBCINn图8-21设备传输状态机分层概况 # 图8-7末端数据分割传输的信息包 #ArchitoctureDeclarstionshaulCOT(SVLK.WAX,).0.ok.in_dic,TTUX.ALLDAT.rRtfC.rASir寫:pwDec啦伽8GlobalActionsConcurrentStstementoFacttgeL嗽MOQWogR-,4feeenunenc_s:auso2st3temacnrest-eravjjacogeSign&8StatusShteRe
43、gisterstatementsSI31JALSCOPEDEFAULT # #图8-7末端数据分割传输的信息包 # # #图8-7末端数据分割传输的信息包 # #图8-7末端数据分割传输的信息包 #token.PID=toke-nlNDevicedaOUTDevicedoNtoken.PID=tokenOUTortoken.PID=tokenSETUPdevice.HSandtoken.PID=pingDevHSping图8-22设备顶层状态机token.PID/=tokenOUTandtoken.PID/=tokenlNandtoken.PID/=tokensETUPandtoken.PID
44、/=piingand(token.PID=pingandJnotdevice.HS)Devk&procfrsstrans图8-23Device_process_Trans状态机制图8-24Dev_do_OUT状态机制 # 图8-7末端数据分割传输的信息包 #图8-25Dev_do_IN状态机制 #图8-7末端数据分割传输的信息包 #图8-26HC_Do_nonsplit状态机制 图8-7末端数据分割传输的信息包 #8.5.1通过PING流控制的无应答限制全速/低速设备可以具有批量传输/控制传输端点,它们耍花费时间处理它们的数据,并且,因此用无应答握手回应OUT事务。这一握手回应说明端点因为没有
45、数据空间而不接收数据。在未來的端点有可用空间的时侯,主机控制器被期望重新进行这一传输事务。不幸的是,等到端点发生无应答时,大多数全速/低速总线的事务时间已经被使用了。这意味着,当无应答OUT事务高频率发生时全速/低速总线具有低利用率。高速设备必须支持改进的无应答机制,以实现批量OUT传输和控制传输端点和事务。控制端点必须支持支持这一协议,以实现数据和状态阶段的OCT事务。控制建立阶段不支持PING协议。这一机制允许设备告知主机控制器它是否对丁下一个OUT事务足够的端点空间。如果设备端点不具有空间,主机控制器可以决定为这个端点延迟一个事务尝试,同时可以尝试其他事务。这就可以完成改进的总线实现。这
46、一机制避免了在主机控制器知道端点有数据空间前使用发送数据的总线时间。主机控制器用PING特殊标记查询高速设备的端点。PING特殊标记是普通的标记包,正如图8-5所示。端点或者用一个NAK握手或者用一个ACK握手回应PING。NAK握手表明端点没有“最大数据包”数据有效载荷的空间。主机控制器将在未來的某个时间重新尝试PING以再次査询端点。设备可以长时间的用NAK回应PINGoNAK回应并不是主机控制器重新传输请求的原因。如果设备在(微)帧中用NAK作出回应,主机控制器可以在下一个blnteval中特别为端点发出下一个事务。然而,设备必须准备好以连续事务的形式接收PINGs,例如,一个立刻接着另
47、一个。ACK握手表明具有“最大数据包”数据有效载荷的空间。主机控制器必须以数据相产生OUT事务以作为端点的下一个事务。主机控制器在此端点的OUT/DATA事务之前可以为其他端点产生其他事务。如果端点用ACK握手对OUT/DATA事务作出回应,这就意味着端点成功接收了数据并且具有“最大数据包”数据有效载荷的空间。只耍主机控制器有事务产生,它就继续OUT/DATA事务(对丁总线上的下一个事务这是需耍的)。如果端点以NYET握手回应OUT/DATA事务,这就意味着端点接收了数据但不再具有“最大数据包”数据有效载荷的空间。氏到端点声明具有空间,主机控制器才可以重新使用PING标记。|DeY_C_BCI
48、NTQJ图8-27主机高速批lOUT/ControlPING状态机制PING协议中对OUT/DATA的NAK回应端点也可以用NAK握手回应OUT/DATA事务。这意味着此时端点不接收数据并且不具有“最大数据包”数据有效载荷的空间。虚到端点声明具有空间,主机控制器才可以重新使用PING标记。NAK回应被认为是异常事件。高速批量传输/控制传输端点必须在端点描述符中明确最大的NAK率。端点最多被允许在一个vlnterval周期发生一次NAK。一个NAK说明端点用不恰当的握手回应先前的OUT/PING,或者端点转入了一个(临时)不能接收数据的状态。端点可以使用一个blnterval的0表明它从不发生N
49、AK。端点必须总是能够从主机接收PING,即使它从不发生NAK。如果数据相以后发生了超时,主机必须重新使用PING标记。注意回到PING状态的转变并不影响传输数据相的切换状态。图8-27说明了PING、OUT/DATA标记与被允许的PING机制的ACK、NAK和NYET握手之间相互作用和转换的主机控制器状态机制。图8-29说明了端点缓冲空间可用的PING的设备端点状态机制。 #图8-7末端数据分割传输的信息包 #图8-28Dev.HS.ping状态机制 图8-7末端数据分割传输的信息包 #图8-29设备高速批niOUT/Control状态机制全速/低速设备/端点不支持PING协议。主机控制器对
50、丁全速/低速设备也不支持PING协议。注意:PING协议也不包含在分割传输协议的定义中。一些分割传输有相当的不使用PING的流控制。其他分割传输像定义的那样无法受益TPINGo在任何情形下,可以返回NAK握手的分割传输具有较小的数据有效载荷,而这也就会对高速总线具有较小的冲击。集线器必须在它们的控制端点支持PING,但是对丁用丁被集线器所支持的全速/低速设备之间通信的分割传输,PING是不被定义的。8.5.2批处理事务批处理事务类型的特点是具有以错误检测和重试的方式保证主机和功能部件之间的数据无错发送的能力。如图8-30所示,批处理事务是由标记,数据和握手包构成的三时相的事务。在某些流控制和挂
51、起条件下,数据时相被握手信号替换,从而产生了没有数据传输的两时相的事务。PING包和NYET包仅仅使用在工作在高速状态的设备上。IIIFuiwtloe图8-30批处理事务格式当主机准备好了接收批处理数据的时候,它发出输入标记。功能部件端口通过返回数据包,或者如果不能返回数据,则返回NAK或STALL握手作为应答。NAK表示功能部件暂时不能返回数据,而STALL表示端口永久地被停止,需耍USB系统软件干涉。如果主机收到合法的数据包,则它用ACK握手来应答。如果收到数据时主机检测到错误,它不返回握手包给功能部件。当主机准备好了传送成批数据的时候,它首先发出一个后跟数据包的输出标记包(或者PING标
52、记包,参见8.5.1章节)。如果数据由功能部件无错地接收到,那么它将返回三个握手中的一个:ACK表示数据包无错地接收到,通知主机可以发送下一个包;NAK表示数据被无错地收到,但主机应该重新发送数据因为数据功能部件处丁妨碍它接受数据的暂时条件(例如缓冲满)中;如果端口被停止,则返回STALL(停止)以告诉主机不耍重试传输,因为功能部件上有错误条件。如果接收到的数据有CRC或者位填充错误,那么不返回任何握手。图8-31和图8-32分别说明了主机和设备批量传输、控制传输和中断传输OUT全速/低速事务的状态机制。图8-27图8-28和图8-29说明高速传输事务的状态机制。图8-33和图8-34分别说明
53、了主机和设备批量传输、控制传输和中断传输IN事务的状态机制。 # 图8-7末端数据分割传输的信息包 #WaitrespwaitforDackeT:HSU2,ITG:error(HSU2.PID/=STALLandHSU2.PID/=NAKandHSU2.PID/=ACK)orHSU2.timeoutDotokenInctrror;Packet_ready(HSU2)ErrorCount=3RespondHCiDohalt);HSU2.PID=STALLRespondHC(Do_ha:t);HSU2.PIC=NAKNota?oweaforcontrolsetupvantaction # #图8-
54、7末端数据分割传输的信息包 # # #图8-7末端数据分割传输的信息包 #HCDoBCINTO图8-31批量/控制/中断OUT事务主机状态机制 #图8-7末端数据分割传输的信息包 #DevDo6CINTO图8-32批量/控制/中断OUT事务设备状态机制 # 图8-7末端数据分割传输的信息包 #(HSU2.PID/=NAKandHSU2.PID/=STALLandHSU2.PID/=datax)or(HSU2.PID=dataxandHSU2.CRC16=bad)orHSU2.timeoutPaeket_ready(HSU2)Waitdatawaitforpacket;HSU2,ITG;Erro
55、rCount=3R.espondHC(Dc_halt);HSU2.PID=dataxandHSU2.CRC:16=okandHSU2.X1=HC_cmd.toggleIssue_packet(HSD1.ACK);RespondHC(Do_s.ame_cmd);HSU2.PID=NAKRes-pondHCtDosaniecmd);图8-33批量/控制/中断IN事务主机状态机制 #图8-7末端数据分割传输的信息包 # # #图8-7末端数据分割传输的信息包 # # #图8-7末端数据分割传输的信息包 # # 图8-7末端数据分割传输的信息包 #DevDoBCINTI08-34批量/控制/中断IN事
56、务设备状态机制图8-35说明了时序位和数据PID在成批读和写中的用法。数据包同步经数据时序切换位和DATAO/DATA1PID的使用而达到。当端口经历配置事件(配置事件在节和9.4.5中有解释)的时候,批事务端口的切换时序被初始化为DATAO。端口上的数据切换不是作为短包传送或IRP撤消的直接结果而被初始化的。批处理写批处理读DATAdn|OUT|OUT|QUT(0/1)|DATAODA.TA1DATADDATA1DATAGH图8-35批事务读和写主机总是通过配置事件初始化总线传送的第一个事务为DATAOPID。第二的事务使用DATA1PID,并且,剩余的后继数据传送轮流切换。数据包发送器根据
57、ACK的接收情况来切换而接收器根据数据包的接收的情况切换(参见第8.6节)。8.5.3控制传送控制传送最少有2个事务阶段:建立和状态。控制传送可以有选择性地包括建立和状态阶段之间的数据阶段。在建立阶段里,建立事务用丁向功能部件的控制端口传输信息。建立事务在格式上类似丁输出,但是使用的是建立而不是输出的PID。图8-36说明了建立事务的格式。建立总是在建立事务的数据时相上使用DATAOPID。收到建立的功能部件必须接受建立数据并用ACK应答,如果数据被损坏,则丢弃数据且不返回握手。IdleI|Host|Function # #图8-7末端数据分割传输的信息包 # # #图8-7末端数据分割传输的
58、信息包 #图8-36控制建立事务控制传送的数据阶段,如果有的话,由一个以上的输入或输出事务构成,遵守和批量事务传送相同的协议规则。所有的数据阶段里的事务都必须有相同的方向(即全部输入或者全部输出)。在数据时相中耍发送的数据数量和其方向在建立阶段鬼被指定。如果数据的数量超过了先前确定的数据包大小,数据在支持最大的包大小的多个事务中被发送(输入或者输出)。任何剩下的数据都作为剩余在最后的事务中被发送。控制传送的状态阶段是序列中的最后一个操作。状态阶段是以相对前而的阶段数据流方向的变化來描述的,并且总是使用DATA1PID。例如,如果数据阶段由输出事务构成的,状态是单一的输入事务。如果控制传送序列没
59、有数据阶段,那么它由建立阶段和其后的由输入事务构成的状态阶段构成。图8-37说明了事务顺序,数据时序位的值和控制读写序列的数据PID类型。时序位显示在括号中。数揚阶段状态阶段LDATA4DATA1bMM控制读DATAODATA1OATAODATAIDATAW1DAFA1崖立阶段状态阶段无数据控制传送DATAODATA1 # #图8-7末端数据分割传输的信息包 # # #图8-7末端数据分割传输的信息包 #图8-37控制读写序列 图8-7末端数据分割传输的信息包 #当控制端口在控制传送的数据和状态阶段中发送停止握手的时候,必须对以后所有对此端口访问返回停止握手,宜到收到建立PID为止。端口收到建
60、立PID之后,不应返回停止握手。对丁默认端点,如果对丁建立事务返回了一个ACK握手,主机就认为端点已经自动从导致停止的情况下恢复了并且端点一定正常工作了。汇报状态结果状态阶段向主机做汇报传送中的先前建立和数据阶段的结果。可能返回三种结果:命令序列成功地完成f;命令序列没能完成;功能部件还在忙于完成指令。汇报状态总是从功能部件到主机的方向。表8-7概括了每一种所需的应答类型。控制写传送在状态阶段的事务数据时相返回状态信息。而对丁控制读传送,主机在状态阶段事务的数据时相中发出零长度的数据包之后,功能部件在握手时相返回状态信息。表8-7状态阶段的响应状态响应控制写传送(在数据时相发送)控制读传送(在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CJ/T 188-2004户用计量仪表数据传输技术条件
- 二级Msoffice学习与技能提升试题及答案
- 2025年软件评测师考试大纲与试题及答案
- 信息管理三级考试冲刺计划试题及答案
- 提升设计思维的多媒体应用设计师试题及答案2025
- 2025年计算机二级考题分析试题及答案
- 汽修店特种设备管理制度
- 建筑公司试验管理制度
- 批发企业公司管理制度
- 改善计划资金管理制度
- 最简单装修合同协议书
- 阿米巴模式的合同协议书
- DB32/T 4622.4-2023采供血过程风险管理第4部分:血液成分制备和供应风险控制规范
- 技术员奖励协议书
- 2025年供应链管理专业考试试题及答案
- GB 35181-2025重大火灾隐患判定规则
- 2025山东能源集团营销贸易限公司招聘机关部分业务人员31人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年漳州市招聘中小学幼儿园教师真题
- 2025年道德与法治课程考试试卷及答案
- 统编版一年级下册道德与法治第四单元学先锋做先锋第一课时教学设计
- 一年级下册《读读童谣和儿歌》试题及答案共10套
评论
0/150
提交评论