关闭

关闭

封号提示

内容

首页 USB中文协议--08 协议层.doc

USB中文协议--08 协议层.doc

USB中文协议--08 协议层.doc

上传者: 胡哥008 2012-08-12 评分 5 0 216 30 984 暂无简介 简介 举报

简介:本文档为《USB中文协议--08 协议层doc》,可适用于工程科技领域,主题内容包含第八章协议层这章从字段(Field)和包(Packet)的定义开始从底向上地展示USB(UniveralSerialBus)协议。接着是对不同事务(符等。

第八章协议层这章从字段(Field)和包(Packet)的定义开始从底向上地展示USB(UniveralSerialBus)协议。接着是对不同事务(Transaction)类型的包事务格式的描述。然后是链路层(Linklayer)流程控制(FlowControl)和事务级别的故障恢复(Faultrecovery)。本章的最后将讨论复执同步化(Retrysynchronization)超时干扰(Babble)和总线活动丧失(Lossofbusactivity)的恢复。位定序数据位被发送到总线的时候首先最低有效位(LSb)跟着是下一个最低有效位最后是最高有效位(MSb)。在以后图表中的包以下列形式给出即包中单个的位和字段从左到右的顺序就是它们通过总线的顺序。同步字段所有的包都从同步(SYNC)字段开始的同步字段是产生最大的边缘转换密度(EdgeTransitionDensity)的编码序列。同步字段作为空闲状态出现在总线上后面跟着以NRZI编码的二进制串“KJKJKJKK”。通过被定义为位长的二进制串输入电路以本地时钟对齐输入数据。同步字段是用于同步的机制在以后图表当中将不被表示(参照节)。同步字段里的最后的位是同步字段结束的记号并且标志了包标识符(PIDPacketIdentifer)的开始。包字段格式在后面几节将描述标记数据和握手包的字段格式。包中位的定义是以未编码的数据格式给出。为了清楚起见在此不考虑NRZI编码和位填充(BitStuffing)的影响。所有的包都分别有包开始(StartofPacket)和包结束(EndofPacket)分隔符。包开始(SOP)分隔符是同步字段的一部分而包结束(EOP)分隔符在第章有所描述。包标识符字段所有USB包的同步字段后都紧跟着包标识符(PID)。如图所示包标识符由位的包类型字段和其后的位的校验字段构成。包标识符指出了包的类型并由此隐含地指出了包的格式和包上所用错误检测的类型。包标识符的位的校验字段可以保证包标识符译码的可靠性这样包的余项也就能被正确地解释。包标识符的校验字段通过对包类型字段的二进制的求反码产生的。如果个PID检验位不是它们的各自的包标识符位的补则说明存在PID错。图PID格式主机和所有功能部件都必须对得到全部PID字段实行完整的译码。任何收到包标识符如果含有失败的校验字段或者经译码得到未定义的值则该包标识符被假定是被损坏的而且包的余项将被包接收机忽略(Ignore)。如果一个功能部件(Function)收到了包含了它所不支持的事务类型或方向的合法包标识符则不必应答。例如只能输入的端口(INonlyEndpoint)必须忽略输出标记(Token)。表列出了包标识符类型编码及其描述。表PID类型PID类型PID名PID:描述标记(Token)输出(OUT)输入(IN)帧开始(SOF)建立(SETUP)BBBB在主机到功能部件的事务中有地址端口号在功能部件到主机的事务中有地址端口号帧开始标记和帧号在主机到功能部件建立一个控制管道的事务中有地址端口号数据(DATA)数据(DATA)数据(DATA)BB偶数据包PID奇数据包PID握手(Handshake)确认(ACK)不确认(NAK)停止(STALL)BBB接收器收到无措数据包接收设备部不能接收数据或发送设备不能发送数据端口挂起或一个控制管道请求不被支持。专用(Special)前同步(PRE)B主机发送的前同步字。打开到低速设备的下行总线通信。*注解:PID位以最高位在前的顺序被表示。在USB上被发送的时候最右的位(位)将被第一个发出。包标识符被分为个编码组:标记数据握手和专用。包标识符传送的前位(PID<:>)指出了其属于哪个组。这说明包标识符编码的分布。地址字段功能部件端口使用个字段:功能部件地址字段和端口字段。功能部件对地址和端口字段都需要进行译码。不允许使用地址或端口别名(Aliasing)并且任何一个字段不匹配此标记都必须被忽略。另外对未初始化的端口的访问将使得标记被忽略。地址字段功能部件地址(ADDR)字段通过其地址指定功能部件至于是数据包的发出地还是目的地则取决于标记PID的值。如图所示ADDR<:>指定了总共个地址。地址字段被用于输入建立和输出标记。由定义可知每个ADDR值都定义了单一的功能部件。刚一复位(Reset)和加电(Powerup)的时候功能部件的地址默认值为零并且必须由主机在枚举过程(EnumerationProcess)中编程。功能部件地址零被用作为缺省地址不可被分配作任何别的用途。图地址字段端口字段如图所示附加的位的端口(ENDP)字段在功能部件需要一个以上端口时候允许更灵活的寻址。除了端口地址之外端口个数是由功能部件决定的。端口字段只对输入建立和输出标记PID有定义。所有的功能部件都必须在端口提供一个控制管道(缺省控制管道)。对于低速(LowSpeed)设备每个功能部件最多提供个管道:在端口的控制管道加上个附加管道(或是个控制管道或是个控制管道和个中断端口或是个中断端口)。全速(FullSpeed)功能部件可以支持最多可达个的任何类型的端口。图端口字段帧号字段帧号字段是一个位的字段主机每过一帧就将其内容加一。帧号字段达到其最大值FFH时归零且它仅每个帧最初时刻在SOF标记中被发送。数据字段数据字段可以在到,字节之间变动但必须是整数个字节。图为多字节显示格式。每个字节的范围内的数据位移出时都是最低位(LSb)在前。图数据字段格式如同在第章所描述的那样数据包大小随着传送类型而变化。循环冗余校验循环冗余校验(CRC)被用来在标记和数据包中保护所有的非PID字段。在上下文中这些字段被认为是保护字段。PID不在含有CRC的包的CRC校验范围内。在位填充之前在发送器中所有的CRC都由它们的各自的字段产生。同样地在填充位被去除之后CRC在接收器中被译码。标记和数据包的CRC可判断单位错和双位错。失败的CRC指出了保护字段中至少有一个字段被损坏并导致接收器忽略那些字段且在大部分情况下忽略整个包。为了CRC的发生和校检发生器和检验器里的移位寄存器置成为全(Allones)型。对于每个被发送或者被收到的数据位当前余项的最高一位和数据位进行异或(XOR)然后余项是左移位并且最低一位置零。如果异或的结果是余项和生成多项式作异或。当检查的字段的最后的一位被发送的时候发生器里的CRC被颠倒再以最高位(MSb)在前发给检验器。当检验器收到CRC的最后的一位,且不发生错误的时候余项将等于多项式的的剩余。如果剩余与包接收器中最后计算出的检验和余项(Checksumremainder)不匹配则存在CRC误差。对于CRC必须满足位填充的要求且如果前位都是的话这包括在CRC的最后插入零。标记CRC标记使用了位的CRC字段它覆盖了输入建立和输出标记的ADDR和ENDP字段或SOF标记的时间戳字段。生成多项式如下:这个多项式的二进制位组合是B。如果所有的标记位都被准确无误地收到接收机中的位剩余将是B。数据CRC数据CRC是作用于数据包的数据字段上的位多项式。产生的多项式是如下这个多项式的二进制位组合是B。如果全部的数据和CRC位被准确无误地收到位剩余将是B。包格式这节展示标记数据和握手包的包格式。这些图将以位被挪动到总线上的顺序显示包内的字段。标记包图显示了标记包的字段格式。标记由PIDADDR和ENDP构成其中PID指定了包是输入输出还是建立类型。对于输出和建立事务地址和端口字段唯一地确定了接下来将收到数据包的端口。对于输入事务的这些字段唯一地确定了哪个端口应该传送数据包。只有主机能发出标记包。输入PID定义了从功能部件到主机的数据事务。输出和建立PID定义了从主机到功能部件的数据事务。图标记包格式如上图所示标记包包括了覆盖地址和端口字段的位CRC。CRC并不覆盖PID,因为它有自己的校验字段。标记和帧开始(SOF)包是由个字节的包字段数据后面的包结束(EOPEndofPacket)界定的。如果包被译码为合法标记或SOF但却没有在个字节之后以EOP终止则它被认为是无效的并被接收器忽略。帧开始(SOF,StartofFrame)包主机以每msms一次的额定速率发出帧开始(SOF)包。如图中所示SOF包是由指示包类型的PID和其后的位的帧号字段构成。图帧开始包SOF标记组成了仅有标记的(tokenonly)事务它以相对于每帧的开始精确计算的时间间隔发送SOF记号(Marker)和伴随的帧数。包括集线器的所有全速功能部件都可收到SOF包。SOF标记不会使得接收功能部件产生返回包因此不能保证向任何给定的功能部件发送的SOF都能被收到。SOF包发送个时间调配(Timing)信息。当功能部件探测到SOF的PID的时候它被告知发生SOF。对帧时间敏感而不需要追踪帧数(例如集线器)的功能部件仅需对SOF的PID译码可忽略帧数和其CRC。如果功能部件需要追踪帧数它必须对PID和时间戳都进行译码。对总线时间调配信息的没有特别需要的全速设备可以忽略SOF包。数据包如图所示数据包由PID包括至少个字节数据的数据区和CRC构成。有种类型的数据包根据不同的PID:DATA和DATA来识别。种数据包PID是为了支持数据切换同步(DataToggleSynchronization)(在第节提到)而定义的。图数据包格式数据必须以整数的字节数发出。数据CRC仅通过对包中的数据字段计算而得到而不包括PID它有自己的校验字段。握手包如图所示握手包仅由PID构成。握手包用来报告数据事务的状态能还在表示数据成功接收命令的接收或拒绝流控制(FlowControl)和停止(Halt)条件。只有支持流控制的事务类型才能返回握手信号。握手总是在事务的握手时相(Phase)中被返回也可在数据时相代替数据被返回。握手包由个字节的包字段后的EOP确定界限。如果包被解读为合法的的握手信号但没有以个字节后面的EOP终止则它被认为是无效的且被接收机忽略。图握手包有种类型的握手包:ACK表示数据包没有位填充或数据字段上的CRC错并且数据PID被正确收到。ACK在下列的情况下被发放当时序位(SequenceBit)匹配且接收器能接受数据的时候或者当时序位失配但发送方和接收器互相之间必须再同步(Resynchronize)(在第节详细提到)的时候。ACK握手信号只适用于数据被传送且期待握手信号的事务中。对于输入事务ACK由主机返回而对于输出或建立事务则由功能部件返回NAK表示功能部件不会从主机接受数据(对于输出事务)或者功能部件没有传输数据到主机(对于输入事务)。NAK仅由功能部件在输入事务的数据时相返回或在输出事务的握手时相返回。主机决不能发出NAK。出于流控制的目的NAK用于表示功能部件暂时不能传输或者接收数据但是最终还是能够在不需主机干涉的情况下而传输或接收数据STALL作为输入标记的回应或者在输出事务的数据时相之后由功能部件返回(见图和图)。STALL表示功能部件不能传输或者接收数据或者不支持一个控制管道请求。在任何条件下都不允许主机返回STALL。STALL握手由设备用于在两个不同的场合之一。第一种情况是当设置了与端口相联系挂起特征(Haltfeature)的时候称为“功能STALL(functionalstall)”(挂起特征在这文档的第章中详细说明)。功能STALL的特殊情况是“命令STALL(commandedstall)”。如同在第章中详细叙述的那样命令STALL发生在主机显式地设置了端口的挂起特征的时候。如果功能部件的端口被挂起则功能部件必须继续返回STALL直到引起停止的条件通过主机干涉而被清除。如同在节中详细叙述的那样第二种情况称为“协议STALL(protocolstall)”。协议STALL对于控制管道是唯一的。协议STALL和功能STALL在意义和持续时间上是不同。协议STALL在控制传送(ControlTransfer)的数据或状态阶段(Stage)被返回并且STALL条件在下一个控制传送的开始终止(建立事务)。这节的剩下的部分将提到功能STALL的一般情况。握手回答(HandshakeResponse)传输和接收功能部件必须根据从表中到表详细叙述的优先顺序返回握手。不是所有的握手都是被允许依赖于事务类型和功能部件或主机是否发出握手。如果标记在传输到功能部件的阶段里发生了错误则功能部件将不以任何包回应直到下一个标记被收到并成功地译码。功能部件对输入事务回答表显示了功能部件作为对输入标记的反应而可能做的回答。如果由于停止或流控制条件,功能部件不能发送数据它将发出STALL或NAK握手。如果功能部件能发出数据它就发出数据。如果收到的标记被损坏则功能部件不应答。表功能部件对输入事务的回应收到的标记损坏功能部件的发送端口的挂起特征功能部件能发送数据采取的动作是不管不管不回应否置了位不管发送STALL握手否没置位否发送NAK握手否没置位能发送数据包主机对输入事务回答表显示了主机对输入事务回答。主机只能返回种类型的握手:ACK。如果主机收到了损坏的数据包它把数据丢弃且不应答。如果主机不能从功能部件接受数据则(出于类似内部缓冲溢出的问题)这条件被认为是错误并且主机不应答。主机能接受数据并且如果数据包是完整无错地被接收到则主机接受数据并发出ACK握手。表主机对输入事务的回应数据包损坏主机能接受数据主机返回的握手是NA丢弃数据不回应否否丢弃数据不回应否能接受数据发送ACK功能部件对输出事务回答对输出事务的握手回答由表表示。假设标记译码成功功能部件收到数据包后可以返回三种握手类型中的任何一种。如果数据包被损坏功能部件不返回握手。如果数据包是被完整无错地接收到而功能部件的接收端口被停止则功能部件返回STALL。如果事务正维持着时序位同步而探测到失配(在第节有详细描述)那么功能部件返回ACK并丢弃数据。如果功能部件能够接受数据并完整无错收到数据它返回ACK。如果由于流控制的原因功能部件不能接受数据包它返回NAK。表功能部件对输出处理的回应(按优先顺序)数据包损坏接收器的挂起特征时序位匹配功能部件可接收数据功能部件返回的握手是NANANA无否置了位NANASTALL否没置位否NAACK否没置位是可ACK否没置位是否NAK功能部件对建立事务的回答建立事务定义了特殊的主机功能部件的数据事务它允许主机初始化端口的同步位为主机的同步位。一收到建立标记功能部件就必须接受数据。功能部件不能对建立标记用STALL或NAK应答并且接收功能部件必须接受建立标记后的数据包。如果非控制端口收到建立标记它必须忽略事务且不应答。事务格式包事务格式根据端口类型而变化。有种端口类型:批处理(Bulk)控制(Control)中断(Interrupt)和同步(Isochronous)。批处理事务批处理事务类型的特点是以错误检测和重试的方式保证主机和功能部件之间的数据的无错发送的能力。如图所示批处理事务是由标记数据和握手包构成的三时相的事务。在某些流控制和挂起条件下数据时相被握手信号替换从而产生了没有数据传输的两时相的事务。图批处理事务格式当主机准备好了接收批处理数据的时候它发出输入标记。功能部件端口通过返回数据包或者如果不能返回数据则返回NAK或STALL握手作为应答。NAK表示功能部件暂时不能返回数据而STALL表示端口永久地被停止需要USB系统软件干涉。如果主机收到合法的的数据包则它用ACK握手来应答。如果收到数据时主机检测到错误它不返回握手包给功能部件。当主机准备好了传送成批数据的时候它首先发出一个后跟数据包的输出标记包。如果数据由功能部件无错地接收到那么它将返回三个握手中的一个:ACK表示数据包无错地接收到通知主机可以发送下一个包NAK表示数据被无错地收到但主机应该重新发送数据因为数据功能部件处于妨碍它接受数据的暂时的条件(例如缓冲满)中如果端口被停止则返回STALL以告诉主机不要重试传输因为功能部件上有错误条件。如果接收到的数据有CRC或者位填充错那么不返回任何握手。图说明了时序位和数据PID在成批读和写中的用法。数据包同步经数据时序切换位(SequenceToggleBit)和DATADATAPID的使用而达到。当端口经历配置事件(Configurationevent)(配置事件在节和中有解释)的时候批处理端口的切换时序被初始化为DATA。端口上的数据切换不是作为短包传送或IRP撤消的直接结果而被初始化的。图批处理读和写主机总是通过配置事件初始化总线传送的第一个事务为DATAPID。第二的事务使用DATAPID并且剩余的后继数据传送轮流切换。数据包发送器根据ACK的接收情况来切换而接收器根据数据包的接收(receipt)和验收(acceptance)的情况切换(参见第节)。控制传送控制传送最少有个事务阶段:建立和状态。控制传送可以有选择性地包括建立和状态阶段之间的数据阶段。在建立阶段里建立事务用于向功能部件的控制端口传输信息。建立事务在格式上类似于输出但是使用的是建立而不是输出的PID。图说明了建立事务的格式。建立总是在建立事务的数据时相上使用DATAPID。收到建立的功能部件必须接受建立数据并用ACK应答如果数据被损坏则丢弃数据且不返回握手。图控制建立事务控制传送的数据阶段如果有的话由一个以上的输入或输出事务构成遵守和批处理传送相同的协议规则。所有的数据阶段里的事务都必须有相同的方向(即全部输入或者全部输出)。在数据时相中要发送的数据的数量和其方向在建立阶段里被指定。如果数据的数量超过了先前确定的数据包大小数据在支持最大的包大小的多个事务中被发送(输入或者输出)。任何剩下的数据都作为剩余在最后的事务中被发送。控制传送的状态阶段是序列中的最后一个操作。状态阶段是以相对前面的阶段的数据流方向的变化来刻划的并且总是使用DATAPID。例如如果数据阶段由输出事务构成的状态是单一的输入事务。如果控制传送序列没有数据阶段那么它由建立阶段和其后的由输入事务构成的状态阶段构成。图说明了事务顺序数据时序位的值和控制读写序列的数据PID类型。时序位显示在括号中。图控制读写序列当控制端口在控制传送的数据和状态阶段中发送STALL握手的时候必须对以后所有对此端口访问返回STALL握手直到收到建立PID为止。端口收到建立PID之后不应返回STALL握手。汇报状态结果状态阶段向主机做汇报传送中的先前的建立和数据阶段的结果。可能返回三种结果:命令序列成功地完成了命令序列没能完成功能部件还在忙于完成指令。汇报状态总是从功能部件到主机的方向。表概括了每一种所需的应答类型。控制写传送在状态阶段的事务的数据时相返回状态信息。而对于控制读传送主机在状态阶段事务的数据时相中发出零长度的数据包之后功能部件在握手时相返回状态信息。表状态阶段的响应状态响应控制写传送(在数据时相发送)控制读传送(在握手时相发送)功能部件完成零长度的数据包ACK握手功能部件有一个错STALL握手STALL握手功能部件忙NAK握手NAK握手对于控制读主机向控制管道发送输出标记以启动状态阶段。主机在这一时相中只发送零长度的数据包但是功能部件可以把任何长度包作为合法的的状态查询接受下来。应答这个数据包的管道握手表明了现在的状态。NAK说明了功能部件还在事务指令并且主机应该继续状态阶段。ACK说明了功能部件完成指令准备好了接受新指令。STALL说明了功能部件现在有妨碍它完成指令的错误。对于控制写主机发送输入标记到控制管道用以启动状态阶段。功能部件使用握手或零长度的数据包应答以说明其现状。NAK说明功能部件还在事务指令并且主机应该继续状态阶段返回零长度的包表明指令正常完成而STALL表示功能部件不能完成指令。功能部件期待主机在状态阶段中对数据包以ACK应答。如果功能部件收不到ACK它仍处于指令的状态阶段中并且只要主机再发输入标记它将继续返回零长度的数据包。如果在数据阶段里指令管道被发送或者被请求返回比在建立时相(见节)中的约定更多的数据它应该返回STALL。如果控制管道在数据阶段里返回STALL对于那个控制传送将没有状态阶段。可变长度数据阶段控制管道可以放进可变长度的数据时相在可变长度的数据时相中主机请求比指定的数据结构中所能包含的更多的数据。当全部的数据结构被返回到主机的时候功能部件应该向管道返回一个短于包最大长度(MaxPacketSize)的包以表明数据阶段的结束。如果数据结构是数据是管道包最大长度(wMaxPacketSize)整数倍功能部件将返回零长度的包以表明数据阶段的结束。最后数据事务的出错处理(ErrorHandling)如果输入事务的ACK握手损坏功能部件和主机在事务是否成功上这个问题上将暂时不一致。如果此事务的后面跟着另一个输入事务切换重试机制(ToggleRetryMechanism)将检测失配并从错误中恢复原状。如果此ACK是数据阶段最后的输入事务上的则不能使用切换重试机制而必须使用另一种机制。成功收到最后输入数据的主机将会发送ACK然后主机将发出输出标记以启动传送的状态阶段。如果功能部件收不到结束数据阶段的ACK功能部件将好象主机成功地收到数据那样去解释状态阶段的开始。而控制写则没有这种模棱两可的情况。如果输出事务上的ACK握手损坏主机将不进入状态阶段而是重发最后的数据。节有重试策略的详细分析。控制管道返回的STALL握手控制管道具有在控制传送中根据功能部件的问题返回STALL握手的独特能力。如果设备不能完成指令它将在控制传送的数据和(或)状态阶段中返回STALL。与功能STALL的情况不同协议STALL并不表示设备错误。协议STALL条件一直持续到接受到下一个建立事务且功能部件将对于任何输入或输出事务返回STALL直到管道上的建立事务被收到为止。一般来说协议STALL表示请求或者其参数不能被设备所理解这样提供用来扩展USB请求的机制。另外控制管道也可以支持功能STALL但是不推荐使用。因为控制管道上的功能STALL表示它失去和主机通信的能力所以这是一种退化的情况。如果控制管道的确要支撑功能STALL它必须拥有能被主机设置或者清除的停止特征。第章详细叙述事务在控制管道上停止特征的特殊情况的方法。设计良好的设备将把其全部功能和停止特征,与非控制端口联系起来。而控制管道应该预留用于为USB请求提供服务。中断事务中断事务可由输入或输出构成。一收到输入标记功能部件便可返回数据NAK或STALL。如果端口没有新的中断信息(即没有等待事务的中断)可供返回功能部件在数据时相里返回NAK握手。如果中断端口的停止特征被设置了功能部件将返回STALL握手。如果中断是等待事务的功能部件象数据包那样返回中断信息。作为对数据包接收的反应主机如果数据无错地被接受则发出ACK握手或者如果数据包损坏则不返回握手。图说明了中断事务格式。图中断事务格式当端口为实际的中断数据使用中断传送机制的时候必须遵循数据切换协议。这使功能部件得知主机收到了数据并且事件条件被清除。这种“确保的”事件传送允许功能部件只发送中断信息直到它被主机接收而不是在USB系统软件清除中断条件之前每次数据功能部件被选中时就必须要发送中断数据。用于切换模式时中断端口被端口上的任何配置事件初始化为DATAPID其行为和图所示的批处理一样。另外中断端口可被用来为某些同步功能部件传达速率反馈信息。用于这种模式时在每个数据包被送到主机之后都不管握手包是否存在或类型如何数据切换位都应该改变。只有中断输入端口支持这种能力。同步事务如图所示同步(ISO)事务有标记和数据时相而没有握手时相。主机发出输入或输出标记,后跟着端口(输入)或主机(输出)传送数据的数据时相。ISO事务不支持握手时相或重试能力。图同步事务格式注解:设备或主机控制器都应该能接受DATA和DATA。设备或主机控制器应该只发送DATA。ISO事务不支持切换时序。数据切换同步和重试USB提供一种机制以保证多事务中数据发送器和接收器之间的数据序列同步。这种机制提供一种保证发送器和接收器正确地解释事务的握手时相的方法。同步通过DATA和DATAPID以及分别从属于数据发送器和接收器的切换时序位的使用而完成。仅在接收器能接受数据并且收到带有正确的数据PID的无错数据包的时候接收器时序位才切换。而仅在数据发送器收到合法的ACK握手的时候发送器时序位才切换。数据发送器和接收器必须在事务开始的时候同步它们的时序位。使用的同步机制随着事务类型而变化。ISO传送不支持数据切换同步。通过建立标记初始化控制传送使用建立标记初始化主机和功能部件的时序位。如图所示主机向功能部件发送建立包其后跟着输出事务。圆圈里的数代表发送器和接收器的时序位。功能部件必须接受数据并返回ACK。当功能部件接受事务的时候它必须设置其时序位以便主机和功能部件的时序位在建立事务的最后都等于。图建立初始化成功的数据事务图说明了有两个成功的事务的情况。对于数据发送器这表示它根据ACK的接收情况来切换其时序位。仅当接收器收到合法的的数据包并且包的数据PID和其时序位的当前值相匹配的时候才切换其时序位。发送器在它收到数据包的ACK时才切换其时序位。在每个事务中接收器比较发送器的时序位(在数据包PID中编码为DATA和DATA)接收器的时序位。如果数据不能被接受接收器必须发出NAK并且发送器和接收器的时序位保持不变。如果数据能被接受并且接收器的时序位和PID相匹配则数据被接受并且时序位被切换。没有数据包的两时相的事务不使得发送器和接收器改变其时序位。图连续的传送损坏或者不被接受数据如果数据不能被接受或者得到的数据包被损坏接收器将根据情况发出NAK或STALL握手或者超时(Timeout)并且接收器将不切换其时序位。图说明了事务被返回NAK然后被重试的情况。任何非ACK握手或是超时都将产生类似的重试动作。没有收到ACK握手的发送器将不切换其时序位。其结果是失败的数据包事务使得发送器和接收器的时序位同步并不切换。然后事务将被重试如果成功将引发发送器和接收器时序位的切换。图重试的不被确认的事务损坏的ACK握手发送器是根据其收到ACK握手确切地知道事务是否成功的最后并且唯一代理。如图所示丢失或者损坏的ACK握手使得发送器和接收器之间的暂时失去同步。这里发送器在发出合法的数据包且接收机成功地收到但是ACK握手损坏。图重试的ACK损坏的事务在事务i的最后由它们各自的时序位间的失配可看出发送器和接收器暂时失去了同步。接收器已经收到了正确的数据但是发送器不知道它是否成功地发送了数据。在下一个事务中发送器将重发使用DATAPID的先前的数据。接收器时序位和数据PID将不匹配于是接收器知道它以前接受了这个数据。从而它丢弃此数据包且不切换其时序位。然后接收器发放ACK使得发送器知道被重试的事务成功了。ACK的接收使得发送器切换其时序位。在事务i的开头其时序位被切换于是再一次同步了。数据发送器必须保证任何被重试的数据包都和先前的事务发送的包相同(相同长度和内容)。由于类似缓冲欠载(Underrun)条件等问题数据发送器不能传送和在先前的数据包中数据完全一样的数据中它必须通过产生一位填充违反(BitStuffingViolation)来中止事务。这将引起一个接收器的可检测的错误从而保证接收器不会将部分的包解释为好包。发送器不应该通过发送已知的坏的CRC在接收器产生一个错误。带有“坏”CRC的坏包会被接收器解释成好包。低速事务USB支持以两种速度发信号:以Mbs发信号的全速(Fullspeed)和以Mbs发信号的低速(Lowspeed)。在发全速下行(Downstream)信号中集线器禁止所有挂有低速设备的端口收到下行总线通信。这是出于EMI和防止低速设备将一个全速包曲解为包是发送给它的考虑。图说明了一个主机发出标记和握手并收到数据包的低速输入事务。图低速事务所有传送到低速设备的下行包都需要前同步信号(Preamble)。前同步信号由SYNC和其后的PRE(Preamble)PID构成二者都以全速发送。集线器必须解释PREPID所有其他的USB设备都可以忽略它把它当作未定义来处理它。在前同步信号PID的结束后主机必须等待至少个全速位时间(Bittime)而此间集线器必须完成启动和低速设备连接的端口上的重复器(Repeater)功能。在这个集线器建立的间隔里集线器必须把它们的全速和低速端口置于它们各自的空闲状态。集线器必须在集线器建立间隔结束之前准备好重复低速端口上所发的低速信号。低速连接规则概括如下:低速设备在连接过程中被识别并且连接它们的集线器端口被识别为低速所有的下行低速包必须用打开低速集线器端口上的输出缓冲区的前同步信号(全速发送)开始低速集线器端口输出缓冲区在接受到EOP时被关上并且直到前同步信号PID被检测到才再一次被打开上行连接不受集线器端口是全速还是低速的影响。低速信号是以主机用低速发送SYNC开始的后面跟着包的剩余部分。包的结束是通过EndofPacket(EOP)而被识别的此时所有的集线器都断开并禁止任何连接有低速设备端口。集线器不对上行信号切换端口低速端口对低速和全速信号在上行方向一直是允许的。低速和全速事务维持高度的协议通用性(Commonality)。不过低速信号确有某些限制这包括:数据有效负载(Payload)被限制在最多个字节的范围内只中断和控制类型的传送被支持低速设备不接受SOF包。错误检测和恢复USB允许可靠的端到端(Endtoend)的通信,这种通信容许产生物理信号层上的错误。这包括可靠地检测到大量可能的错误的能力和基于事务类型的从错误中恢复的能力。例如控制事务需要高度数据可靠性它通过使用错误检测和重试的方法支持端到端的数据完整性。出于同步事务的带宽(Bandwidth)和等待时间(Latency)的要求的原因它不允许进行重试且必须对未纠正的错误有较高的容忍程度。包错误种类USB使用种错误检测机制:位填充违反PID检验位和CRC。位填充违反在节中定义。PID错误在节中定义。CRC错误在节中定义。除SOF标记之外任何被收到的损坏的包都使得接收器忽略它并丢弃随包而来的数据或其他的字段信息。表列出了错误检测机制它们适用的包的种类和包接收器相应的反应。表包错误类型字段错误动作包标识符PID校验位填充忽略包地址位填充地址CRC忽略标记帧号位填充,帧号CRC忽略帧号字段数据位填充,数据CRC丢弃数据总线周转(Turnaround)时间设备和主机都不会发出指示以指出其收到的包有错误的。不作肯定答复则被认为是有错误的。作为这种错误汇报的方法的结果主机和USB功能部件需要知道从发送器发完包的时候算起直到它开始收到应答为止过了多少时间。这一段时间被称为总线周转时间。当EOP的SEto‘J’转换出现时计时器开始计数而当SOP的Idleto‘K’转换被检测到的时候停止计数。设备和主机都需要周转计时器(Timer)。设备总线周期时间定义为最坏情况下的往返延迟(Roundtripdelay)加上最大设备应答延迟(Maximumdeviceresponse)(见节)。如果发送器在最坏情况下的超时范围内没有收到应答则认为包传输失败。USB设备超时(Timeout)(从先前的EOP的结束算起)应不少于位的时间且不超过位的时间。如果主机想通过超时表示一个错误条件它必须在发出确保所有下行设备都超时的下一个标记之前最少要等待个位的时间。如图所示设备在标记和数据时相之间或数据和握手时相之间使用其总线周转计时器。主机在标记和数据时相之间或数据和握手时相之间使用其计时器。如果主机收到不可靠的数据包它必须在发出下一个标记之前等待。这一等待的间隔能确保主机不试图在错误的EOP之后立即发出标记。图总线周转计时器用法错误的EOP错误的EOP必须被处理以确保当前事务的包在主机或其它设备试图传输新包之前完成。如果发生这样的事件它将构成总线冲突并有能力损坏个连续的事务的。错误的EOP的检查依赖于这样的事实:被插入错误EOP的包将呈现为被截短的带有CRC失效的包。(包的最后的位是正确的CRC概率将非常低。)主机和设备以不同的方式处理错误EOP。当设备发现一个损坏的数据包时它不发出应答而是等待主机发送下一个标记。这保证了当主机还在传输数据包的时候设备不试图返回握手。如果发生错误的EOP主机数据包将最终结束而设备将能检测下一个标记。如果设备发出带有错误的EOP的被损坏的数据包主机将忽略此包并且不发出握手。期待从主机传来握手信号的设备将超时。如果主机收到损坏的数据包它假定可能发生了错误的EOP并等待位的时间来看是否有任何后继的上行(Upstream)通信量。如果主机在位间隔的范围内没有检测到总线转换并且总线处于空闲状态则主机可以发出下一个标记。否则主机将等待设备结束发送其包的剩余部分。等待个位的时间保证了个条件:第一个条件是确定了设备已结束发送它的包。这是由比最坏情况下位时间的位填充间隔更长的超时间隔(没有总线转换)保证的第二的条件是保证发送器的总线周转计时器终止。注意超时间隔是对事务速度敏感的。对于全速事务主机必须等待个全速位的时间对于低速事务它必须等待个低速位的时间。如果主机收到带有合法CRC的数据包则它假定包是完整并且没有必要在发出下一个标记的过程中延迟。超时干扰(Babble)和活动性丧失(LossofActivity)的恢复USB必须能检测使其无限期地等待一个EOP或使总线在帧的结尾时不处于空闲状态的条件并从中恢复。活动性丧失(LOA)描述为SOP发出之后总线缺乏活动性(Lackofbusactivity)(总线一直处于‘J’或‘K’)并且每帧结束时没有发出EOP超时干扰描述为SOP之后总线一直保持其活动性甚至超过了帧的结束。LOA和Babble会使总线陷入僵局或者破坏下一个帧开头。无论哪一个条件都是不可接受并且必须防止其发生。作为有责任控制连接的USB部件集线器有责任检查和恢复BabbleLOA。通过使最近的集线器禁止与USB设备相连的端口的方法防止所有不能在帧结束完成传输的USB设备传输超过一帧结束的数据。集线器BabbleLOA恢复机制的细节在节中涉及到。PAGE

职业精品

精彩专题

上传我的资料

热门资料

资料评价:

/ 18
所需积分:1 立即下载

意见
反馈

返回
顶部

Q