USB通信协议——分割数据交易
图1 起始分割数据交易与完成分割数据交易的示意图
但其中,有一个例外的是,快速等时OUT数据交易。这是因其无须回传任何值,所以不必使用完全分割数据交易。而即使用户需要包含更多的数据交易来实现一个传输的工作,但分割数据交易的程序将会使得总线的时间有较佳的使用性。这是因为它们将会缩小对于低速或是全速设备用来响应所需花费的总线等待时间量。
如图1所示,在起始分割数据交易中,2.0主机会送出至起始分割令牌封包(Start-Split Token Packet,SSPLIT),其后再跟随一般的低速或是全速令牌封包(在令牌阶段中,包含2个令牌封包,SSPLIT(起始令牌)+令牌),以及指定此设备的数据封包。此时,若设各所连接的2.0集线器回传ACK或是NAK,主机就可以针对别的数据交易很自由地使用整个总线的带宽。而设各也知道至今仍未有任何的数据存在。
为了更清楚了解整个起始分割数据交易与完成分割数据交易的过程,读者可以比对图2与图3,分割数据交易IN与OUT的过程示意图。在这两个图中,包含了3个主要的传输部分,2.0主机、2.0集线器与低速或是全速的设各。因此,读者可以从这3个主要的部分来加以分析,且以图2与3所示之3个步骤来加以了解。
图2 分割数据交易(IN)过程示意图
如图2所示的第1步中,2.0主机先送出SSPLIT与IN令牌。第2步,集线器就会转换主机接收到的封包或多 个封包为适当的速度,然后将它们送至设备,以及存储如果设备有的任何响应。根据数据交易类型,设各可以回传数据、握手或是没有任何动作。对于设备部分来说,这个数据已经是以预期的低速或是全速来处理的,且不知这是已被分割过的数据交易。此时,主机仍未收到任何设备的响应。当集线器已经完成了与设各的数据交易的工作后,紧接着,主机可以开始另外的总线传输工作。同时,该集线器也必须加以处理。
此时对主机来说,当其认为集线器已经有足够的时间来完成与设各的数据交易后,就开始与集线器进行完成分割数据的步骤,这即是步骤3(注意到这个动作在数据交易OUT,是不需要的)。
在第3步中的完成分割数据交易中,主机会送出完成分割数据交易,其后一般再跟随低速或全速令牌封包(在令牌阶段中,包含2个令牌封包,CSPLIT(完成令牌)+令牌),来要求集线器已经从设各收到的数据或状态信息。这也可参考图2所示的下半部。集线器就会回传所要求的数据或是状态码。这将是完成数据交易的动作。如果集线器并没有准备好可以送出封包,它将会回传NYET状态码,而且主机还会再试一次。
评论