第八章 协议层
这章从字段(Field)和包(Packet)的定义开始,从底向上地展示USB(Univeral
Serial Bus)协议。接着是对不同事务(Transaction)类型的包事务格式的描述。然后是链
路层(Link layer)流程控制(Flow Control)和事务级别的故障恢复(Fault recovery)。
本章的最后将讨论复执同步化(Retry synchronization),超时干扰(Babble)和总线活动
丧失(Loss of bus activity)的恢复。
8.1 位定序
数据位被发送到总线的时候,首先最低有效位(LSb),跟着是下一个最低有效位,最后是最
高有效位(MSb)。在以后图表中的,包以下列形式给出,即包中单个的位和字段从左到右的
顺序就是它们通过总线的顺序。
8.2同步字段
所有的包都从同步(SYNC)字段开始的,同步字段是产生最大的边缘转换密度(Edge
TransitionDensity)的编码序列。同步字段作为空闲状态出现在总线上,后面跟着以NRZI编码
的二进制串“KJKJKJKK”。通过被定义为8位长的二进制串,输入电路以本地时钟对齐输入数据。
同步字段是用于同步的机制,在以后图表当中将不被表示(参照节7.1.10)。同步字段里的最
后的2位是同步字段结束的记号,并且标志了包标识符(PID,Packet Identifer)的开始。
8.3包字段格式
在后面几节将描述标记,数据和握手包的字段格式。包中位的定义是以未编码的数据格式给出。
为了清楚起见,在此不考虑NRZI编码和位填充(Bit Stuffing)的影响。所有的包都分别有包开
始(Start-of-Packet)和包结束(End-of-Packet)分隔符。包开始(SOP)分隔符是同步字段
的一部分,而包结束(EOP)分隔符在第7章有所描述。
8.3.1包标识符字段
所有USB包的同步字段后都紧跟着包标识符(PID)。如图8-1所示,包标识符由4位的包类型
字段和其后的4位的校验字段构成。包标识符指出了包的类型,并由此隐含地指出了包的格式
和包上所用错误检测的类型。包标识符的4位的校验字段可以保证包标识符译码的可靠性,这
样包的余项也就能被正确地解释。包标识符的校验字段通过对包类型字段的二进制的求反码产
生的。如果4 个PID检验位不是它们的各自的包标识符位的补,则说明存在PID错。
图8-1 PID 格式
主机和所有功能部件都必须对得到全部PID字段实行完整的译码。任何收到包标识符,如果含
有失败的校验字段,或者经译码得到未定义的值,则该包标识符被假定是被损坏的,而且包的
余项将被包接收机忽略(Ignore)。如果一个功能部件(Function)收到了包含了它所不支持的
事务类型或方向的合法包标识符,则不必应答。例如,只能输入的端口(IN-only Endpoint)必
须忽略输出标记(Token)。表8-1列出了包标识符类型,编码及其描述。
1
- 1
- 2
- 3
前往页