usb20 協(xié)議層 中文版_第1頁
usb20 協(xié)議層 中文版_第2頁
usb20 協(xié)議層 中文版_第3頁
usb20 協(xié)議層 中文版_第4頁
usb20 協(xié)議層 中文版_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、杭州電子科技大學(xué)畢業(yè)設(shè)計(論文)外文文獻翻譯 USB 2.0 協(xié)議 第八章 協(xié)議層這章從字段和包的定義開始,從底向上地展示萬用串列總線協(xié)議。接著是對不同事務(wù)類型的包事務(wù)格式的描述。然后是鏈路層流程控制和事務(wù)級的故障恢復(fù)。本章的最后將討論復(fù)執(zhí)同步化的恢復(fù)和高速網(wǎng)絡(luò)偵測協(xié)議的同步,超時干擾,總線活動喪失。8.1 位定序數(shù)據(jù)位被發(fā)送到總線的時候,首先最低有效位( LSb ),跟著是下一個最低有效位,最后是最高有效位( MSb )。在以后圖表中的,包以下列形式給出,即包中單個的位和字段從左到右的順序就是它們通過總線的順序。8.2同步字段 所有的包都從同步(同步)字段開始的,同步字段是產(chǎn)生最大的邊緣轉(zhuǎn)換

2、密度的編碼序列。同步字段被輸入電路用來以本地時鐘對齊輸入數(shù)據(jù)。對于全速/ 低速模式,最初的同步被定義為 8 字節(jié)的長度,而對于高速模式則定義為 32 字節(jié)的長度。正如第七章描述的那樣,標準的同步字段可以更加簡短。同步字段是用于同步的機制,在以后圖表當中將不被表示(參照節(jié) 7.1.10 )。同步字段里的最后 2 位是同步字段結(jié)束的記號,并且標志了包標識符( PID ,)的開始。8.3包字段格式在后面幾節(jié)將描述標記,數(shù)據(jù)和握手包的字段格式。包中位的定義是以未編碼的數(shù)據(jù)格式給出。為了清楚起見,在此不考慮 NRZI 編碼和位填充的影響。開始-小包的)和包結(jié)束分隔符的所有包都分別有包開始。包開始分隔符是

3、同步字段的一部分,而包結(jié)束( EOP )分隔符在第 7 章有所描述。8.3.1包標識符字段所有萬用串列總線包的同步字段后都緊跟著包標識符( PID )。如圖 8-1 所示,包標識符由 4 位的包類型字段和其后的 4 位的校驗字段構(gòu)成。包標識符指出了包的類型,并由此隱含地指出了包的格式和包上所用錯誤檢測的類型。包標識符的 4 位的校驗字段可以保證包標識符譯碼的可靠性,這樣包的余項也就能被正確地解釋。包標識符的校驗字段通過對包類型字段的二進制的求反碼產(chǎn)生的。如果 4 個 PID 檢驗位不是它們的各自包標識符位的補,則說明存在 PID 錯。圖 8-1 PID 格式主機和所有功能部件都必須對得到全部

4、PID 字段實行完整的譯碼。任何收到包標識符,如果含有失敗的校驗字段,或者經(jīng)譯碼得到未定義的值,則該包標識符被假定是被損壞的,而且包的余項將被包接收機忽略。如果一個功能部件收到了包含了它所不支持的事務(wù)類型或方向的合法包標識符,則不必應(yīng)答。例如,只能輸入的端口(IN-only Endpoint)必須忽略輸出標記。表 8-1 列出了包標識符類型,編碼及其描述。表 8-1 PID 類型PID 類型PID 名PID3:0描述標記(表征)出自)的輸出()的輸入(幀開始( SOF )建立(裝備)0001B1001B0101B1101B在主機到功能部件的事務(wù)中有地址+ 端口號在功能部件到主機的事務(wù)中有地址+

5、 端口號幀開始標記和幀號在主機到功能部件建立一個控制管道的事務(wù)中有地址+ 端口號數(shù)據(jù)(數(shù)據(jù))數(shù)據(jù) 0 ( DATA0 )數(shù)據(jù) 1 ( DATA1 )數(shù)據(jù) 2 ( DATA2 )MDATA0011B1011B0111B1111B偶數(shù)據(jù)包 PID奇數(shù)據(jù)包 PID高速寬帶同步傳輸幀數(shù)據(jù)包 PID (更多內(nèi)容請參見 5.9.2 章節(jié)部分)高速寬帶分段傳輸數(shù)據(jù)包 PID (更多內(nèi)容請參見 5.9.2,11.20 和 11.21 章節(jié)部分)握手(Handshake)確認( ACK )不確認( NAK )停止(STALL)無回應(yīng)( NYET )0010B1010B1110B0110B接收器收到無措數(shù)據(jù)包;接

6、收設(shè)備部不能接收數(shù)據(jù),或發(fā)送設(shè)備不能發(fā)送數(shù)據(jù);端口掛起,或一個控制管道請求不被支持。尚未從接收者獲得回應(yīng)。(更多內(nèi)容請參見 8.5.1 和 11.17-11.21 章節(jié)部分)專用(special)前同步( PRE )報錯(ERR)分段(SPLIT)偵測(PING)預(yù)留(Reserved)1100B1100B1000B0100B0000B(標記)主機發(fā)送的前同步字。打開到低速設(shè)備的下行總線通信。(握手)分段傳輸?shù)牟铄e握手(重新使用PRE量值)(標記)高速分段傳輸標記(參見8.4.2章節(jié)部分)(標記)對bulk/control模式下端口的高速數(shù)據(jù)流控制偵測(參見8.5.1章節(jié)部分)預(yù)留PID*注解

7、: PID 位以最高位在前的順序被表示。在萬用串列總線上被發(fā)送的時候,最右的位(位 0 )將被第一個發(fā)出。包標識符被分為 4 個編碼組:標記,數(shù)據(jù),握手和專用。包標識符傳送的前 2 位( PID<0 : 1> )指出了其屬于哪個組。這說明包標識符編碼的分布。8.3.2地址字段功能部件端口使用 2 個字段:功能部件地址字段和端口字段。功能部件對地址和端口字段都需要進行譯碼。不允許使用地址或端口別名( Aliasing ),并且任何一個字段不匹配,此標記都必須被忽略。另外,對未初始化的端口訪問將使得標記被忽略。8.3.2.1地址字段功能部件地址( ADDR )字段通過其地址指定功能部件

8、,至于是數(shù)據(jù)包的發(fā)出地還是目的地,則取決于標記 PID 的值。如圖 8-2 所示, ADDR<6 : 0> 指定了總共 128 個地址。地址字段被用于輸入,建立和輸出標記。由定義可知,每個 ADDR 值都定義了單一的功能部件。剛一復(fù)位和加電的時候,功能部件的地址默認值為零,并且必須由主機在枚舉過程中編程。功能部件地址零被用作為缺省地址,不可被分配作任何別的用途。圖 8-2 地址字段8.3.2.2端口字段如圖 8-3 所示,附加的 4 位的端口( ENDP )字段在功能部件需要一個以上端口時候允許更靈活的尋址。除了端口地址 0 之外,端口個數(shù)是由功能部件決定的。端口字段只對輸入,建立

9、和輸出標記 PID 有定義。所有的功能部件都必須在端口 0 提供一個控制管道(缺省控制管道)。對于低速設(shè)備,每個功能部件最多提供 3 個管道:在端口 0 的控制管道加上 2 個附加管道(或是 2 個控制管道,或是 1 個控制管道和 1 個中斷端口,或是 2 個中斷端口)。全速功能部件可以支持最多可達 16 個的任何類型的端口。圖 8-3 端口字段8.3.3幀號字段幀號字段是一個 11 位的字段,主機每過一幀就將其內(nèi)容加一。幀號字段達到其最大值 7 FFH 時歸零,且它僅每個幀最初時刻在 SOF 標記中被發(fā)送。8.3.4數(shù)據(jù)字段數(shù)據(jù)字段可以在 0 到 1,023 字節(jié)之間變動,但必須是整數(shù)個字節(jié)

10、。圖 8-4 為多字節(jié)顯示格式。每個字節(jié)的范圍內(nèi)的數(shù)據(jù)位移出時都是最低位( LSb )在前。圖 8-4 數(shù)據(jù)字段格式如同在第 5 章所描述的那樣,數(shù)據(jù)包大小隨著傳送類型而變化。8.3.5循環(huán)冗余校驗循環(huán)冗余校驗( CRC )被用來在標記和數(shù)據(jù)包中保護所有的非 PID 字段。在上下文中,這些字段被認為是保護字段。PID 不在含有 CRC 的包 CRC 校驗范圍內(nèi)。在位填充之前,在發(fā)送器中所有的 CRC 都由它們的各自字段產(chǎn)生。同樣地,在填充位被去除之后, CRC 在接收器中被譯碼。標記和數(shù)據(jù)包的 CRC 可 100% 判斷單位錯和雙位錯。失敗的 CRC 指出了保護字段中至少有一個字段被損壞,并導(dǎo)

11、致接收器忽略那些字段,且在大部分情況下忽略整個包。為了 CRC 的發(fā)生和校檢,發(fā)生器和檢驗器里的移位寄存器置成為全 1型。對于每個被發(fā)送或者被收到的數(shù)據(jù)位,當前余項的最高一位和數(shù)據(jù)位進行異或( XOR ),然后,余項是左移 1 位,并且,最低一位置零。如果異或的結(jié)果是 1 ,余項和生成多項式作異或。當檢查的字段最后的一位被發(fā)送的時候,發(fā)生器里的 CRC 被顛倒,再以最高位( MSb )在前發(fā)給檢驗器。當檢驗器收到 CRC 的最后一位, 且不發(fā)生錯誤的時候,余項將等于多項式的剩余。如果剩余與包接收器中最后計算出的檢驗和余項不匹配,則存在 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數(shù)據(jù) CRC數(shù)據(jù) CRC 是作用于數(shù)據(jù)包的數(shù)據(jù)字段上的 16 位多項式。產(chǎn)生的多項式是如下這個多項式的二進制位組合是 1000000000000101 B 。如果全部的數(shù)據(jù)和 CRC 位被準確無誤地收到, 16 位剩余將是 10

13、00000000001101 B 。8.4包格式這節(jié)展示標記,數(shù)據(jù)和握手包的包格式。這些圖將以位被挪動到總線上的順序顯示包內(nèi)的字段。8.4.1標記包圖 8-5 顯示了標記包的字段格式。標記由 PID , ADDR 和 ENDP 構(gòu)成,其中 PID 指定了包是輸入,輸出還是建立類型。而PING特殊標記包也有相同的構(gòu)成結(jié)構(gòu)。對于輸出和建立事務(wù),地址和端口字段唯一地確定了接下來將收到數(shù)據(jù)包的端口。對于輸入事務(wù)的,這些字段唯一地確定了哪個端口應(yīng)該傳送數(shù)據(jù)包。對于PING處理環(huán)節(jié),這些字段唯一地確定了發(fā)送數(shù)據(jù)包的端口。只有主機能發(fā)出標記包。輸入 PID 定義了從功能部件到主機的數(shù)據(jù)事務(wù)。輸出和建立 PI

14、D 定義了從主機到功能部件的數(shù)據(jù)事務(wù)。偵測PID定義了從功能部件到主機的握手處理環(huán)節(jié)。圖 8-5 標記包格式如上圖所示,標記包包括了覆蓋地址和端口字段的 5 位 CRC 。CRC 并不覆蓋 PID, 因為它有自己的校驗字段。標記和幀開始 (SOF) 包是由小包)界定的 3個個字節(jié)的包字段數(shù)據(jù)后面的包結(jié)束( EOP ,結(jié)束。如果包被譯碼為合法標記或 SOF ,但卻沒有在 3 個字節(jié)之后以 EOP 終止,則它被認為是無效的,并被接收器忽略。8.4.2 數(shù)據(jù)分割特殊標記包USB為數(shù)據(jù)分割傳輸定義了特殊的標記:SPLIT。與其他普通的三字節(jié)標記包不同,這是一個四字節(jié)的標記包。數(shù)據(jù)分割傳輸標記包提供了攜

15、帶額外特殊傳輸信息的更多的傳輸字節(jié)。數(shù)據(jù)分割傳輸標記用來支持主機控制器與處于高速運轉(zhuǎn)狀態(tài)的集線器之間數(shù)據(jù)分割傳輸,而這一高速運轉(zhuǎn)是集線器的下行端口與全速/低速設(shè)備之間進行的。有兩種數(shù)據(jù)分割傳輸被規(guī)定使用SPLIT特殊標記:始端數(shù)據(jù)分割傳輸(SSPLIT)和末端數(shù)據(jù)分割傳輸(CSPLIT)。如下面的章節(jié)所述,數(shù)據(jù)分割傳輸特殊標記的字段表明了特殊的數(shù)據(jù)分割傳輸。8.4.2.1 數(shù)據(jù)分割傳輸高速數(shù)據(jù)分割傳輸僅僅用于主機與連有全速/低速設(shè)備的集線器之間的傳輸。這種高速數(shù)據(jù)分割傳輸用來通過集線器和一些全速/低速設(shè)備端口初始化全速/低速傳輸。高速數(shù)據(jù)分割傳輸也允許重新從集線器獲得全速/低速傳輸?shù)耐瓿蔂顟B(tài)。

16、這一方式允許主機控制器先通過高速傳輸開始全速/低速傳輸,再繼續(xù)其他高速傳輸而無需等待全速/低速傳輸以較慢速度進行或完成。關(guān)于狀態(tài)機制和數(shù)據(jù)分割傳輸?shù)却齻鬏敹x的更多細節(jié)請見第11章節(jié)。高速數(shù)據(jù)分割傳輸有兩個部分:始端數(shù)據(jù)分割傳輸和末端數(shù)據(jù)分割傳輸。數(shù)據(jù)分割傳輸僅被定義用來完成主機控制器和集線器之間的傳輸。沒有其他高速、全速/低速設(shè)備使用數(shù)據(jù)分割傳輸。圖8-6 顯示了組成一般始端數(shù)據(jù)分割傳輸?shù)男畔?。狀態(tài)標記有兩個信息包:SSPLIT標記和全速/低速標記。狀態(tài)標記有選擇地跟隨一個信息包或者一個握手包,這取決于數(shù)據(jù)傳輸?shù)闹噶钜约芭c傳輸類型的握手是否被定義。始端數(shù)據(jù)分割傳輸可以2個、3個或4個信息包

17、,這取決于特定的傳輸類型和數(shù)據(jù)指令。 圖 8-6 始端數(shù)據(jù)分割傳輸?shù)男畔鼒D8-7 顯示了組成一般末端數(shù)據(jù)分割傳輸?shù)男畔顟B(tài)標記有兩個信息包:SSPLIT標記和全速/低速標記。狀態(tài)標記有選擇地跟隨一個信息包或者一個握手包,這取決于數(shù)據(jù)傳輸?shù)闹噶钜约芭c傳輸類型的握手是否被定義。末端數(shù)據(jù)分割傳輸可以2個或3個信息包,這取決于特定的傳輸類型和數(shù)據(jù)指令。 圖 8-7 末端數(shù)據(jù)分割傳輸?shù)男畔鼣?shù)據(jù)分割傳輸?shù)慕Y(jié)果是由末端數(shù)據(jù)分割傳輸返回的。圖8-8 用一個中斷 IN 傳輸?shù)睦诱f明了這一概念上的會話。主機先向集線器發(fā)出一個開始片段(用1表示),再就可以進行其他高速傳輸。一段時間后,開始片段使得集線器發(fā)

18、出一個全速/低速 IN 標記(用2表示)。設(shè)備用一個數(shù)據(jù)包回應(yīng) IN 標記(在這個例子中),集線器用一個握手回應(yīng)設(shè)備。最后,再過一段時間后,主機發(fā)出一個末端片段(用3表示)以再次獲得設(shè)備提供的數(shù)據(jù)。在例子中請注意:在末端片段以前集線器向設(shè)備端口提供了全速/低速握手(在這個例子中是ACK),而末端片段向集線器提供的不是高速握手。 圖 8-8 中斷IN傳輸與數(shù)據(jù)分割傳輸?shù)年P(guān)系常規(guī)的全速/低速OUT傳輸同樣在概念上“轉(zhuǎn)換”為始端分割傳輸和末端分割傳輸。圖8-9以中斷傳輸為例說明了這種“轉(zhuǎn)換”。主機發(fā)起一個始端片段事務(wù),它包括SSPLIT特殊標記,OUT標記和數(shù)據(jù)包。一段時間后,集線器在全速/低速總線

19、上發(fā)出OUT標記和數(shù)據(jù)包。設(shè)備用握手作出回應(yīng)。一段時間后,主機發(fā)起末端片段事務(wù),集線器用設(shè)備提供的結(jié)果(全速/低速數(shù)據(jù)或是握手)作出回應(yīng)。 圖 8-9 中斷OUT傳輸和高速分割OUT傳輸?shù)年P(guān)系接下來的兩部分描述的是組成具體始端分割標記包和末端分割標記包的字段。圖8-10和圖8-12說明了分割傳輸標記包中的字段。跟隨一般標記格式的SPLIT特殊標記以一個PID字段(在一個SYNC后)開始,并以一個CRC5字段(和EOP)結(jié)束。始端分割標記包和末端分割標記包都是4字節(jié)長。SPLIT傳輸必須僅來源于主機。始端標記在8.4.2.2章節(jié)被定義,末端標記在8.4.2.3被定義。8.4.2.2 始端分割傳輸

20、標記 圖8-10 始端片段(SSPLIT)標志集線器地址字段包含支持特定全速/低速設(shè)備全速/低速傳輸?shù)募€器的USB設(shè)備地址。這一字段與8.3.2.1章節(jié)中ADDR字段有相同的定義。帶有SC(始端/末端)字段被設(shè)定為0表明這是一個始端片段事務(wù)(SSPLIT)。端口字段包括接收全速/低速事務(wù)的目標集線器的端口號碼。正如圖8-11所示,所有128個端口用PORT<6:0>加以制定。主機必須正確地為單獨或多個TT集線器執(zhí)行設(shè)定端口字段。一個單獨TT集線器執(zhí)行可以忽略端口字段。 圖8-11 端口字段S(速度)字段按照如下規(guī)定制定中斷傳輸或控制傳輸速度:0全速1低速對于批量 IN/OUT和同

21、步 IN 的始端片段,S字段必須被設(shè)定為0。對于批量/控制 IN/OUT,中斷 IN/OUT,和同步 IN 的始端片段,E字段必須被設(shè)定為0。對于全速同步 OUT 始端片段,如表8-2所示,S(開始)字段和E(結(jié)束)字段為全速數(shù)據(jù)包確定全速數(shù)據(jù)有效載荷如何與數(shù)據(jù)相對應(yīng)。(此處的S位可以為這些編碼重新使用,但要求同步傳輸必須是低速的。)表8-2 同步 OUT 有效載荷附加編碼SE高速數(shù)據(jù)和全速數(shù)據(jù)的關(guān)系00高速數(shù)據(jù)在全速數(shù)據(jù)有效載荷的中間部分01高速數(shù)據(jù)在全速數(shù)據(jù)有效載荷的末尾部分10高速數(shù)據(jù)在全速數(shù)據(jù)有效載荷的始端部分11高速數(shù)據(jù)在全速數(shù)據(jù)有效載荷的全部部分為了使集線器發(fā)現(xiàn)各種各樣由于具有數(shù)據(jù)

22、有效載荷并需要多重始端片段的端點缺少接收始端分割事務(wù)而產(chǎn)生的錯誤,同步 OUT 始端分割事務(wù)使用了這些編碼。舉例來說,大量的高速數(shù)據(jù)有效載荷可能需要三個始端分割事務(wù):始端片段/開始,始端片段/中部,始端片段/結(jié)束。如果任何的這些事務(wù)沒有別集線器接收到,集線器或者會忽略這次全速傳輸(如果始端片段/開始沒有被接收到),或者會為相應(yīng)的全速傳輸強加一個錯誤(如果另外兩個事務(wù)的一個沒有被接收到)。其他錯誤情形可以根據(jù)在一微幀中沒有接收到始端片段來加以發(fā)現(xiàn)。ET(端點類型)字段確定了全速/低速傳輸?shù)亩它c類型,如表8-3所示。表8-3 分割特殊標記的端點類型量值ET量值端點類型00控制傳輸01同步傳輸10批

23、量傳輸11中斷傳輸這一字段告訴集線器使用哪個分割傳輸狀態(tài)機完成全速/低速傳輸。全速/低速設(shè)備的地址和端點號碼信息包含在跟隨在SPLIT特殊標記包后的常規(guī)的標記包中。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一次的額定速率發(fā)出幀開始( SOF )包。如圖 8-13 中所示, SOF 包是由指示包類型的 PID 和其后的 11 位的幀號字段構(gòu)成。 圖 8-13 幀開始包SOF 標記組成了僅有標記的事務(wù)(它被用來分配SOF標記)和伴隨的幀數(shù)的事務(wù)(相應(yīng)于每幀的開始以準確時間間隔進行)。包括集線器的所有全速功能部件都可收到 SOF 包。SOF 標記不會使得接收功能部件產(chǎn)生返回包;因此,不能保證向任何給定的功能部件發(fā)送的 SOF 都能被收到。SOF 包發(fā)送 2 個時間調(diào)配信息。當功能部件探測到 SOF 的 PID 的時候,它被告知發(fā)生 SOF 。對幀時間敏感而不需要追蹤幀數(shù)(例如集線器)的功

25、能部件,僅需對 SOF 的 PID 譯碼;可忽略幀數(shù)和其 CRC 。如果功能部件需要追蹤幀數(shù),它必須對 PID 和時間標志都進行譯碼。對總線時間調(diào)配信息的沒有特別需要的全速設(shè)備可以忽略 SOF 包。8.4.3.1 USB幀和微幀對于全速傳輸,USB定義了每個都由幀開始標志(SOF)標記的1ms幀時間,并且每1ms周期都有約定的跑動公差。對于高速傳輸,USB也定義了以125微秒為幀時間、具有相應(yīng)跑動公差的幀(參見第七章)。對于全速連接,SOF包每1ms產(chǎn)生一次(由主機控制 圖8-14 微幀和幀之間的關(guān)系器或HUB事務(wù)轉(zhuǎn)換器發(fā)出)。對于高速傳輸,SOF包也是在接下來的七個125微秒周期后產(chǎn)生的。圖

26、8-14顯示了微幀和幀之間的關(guān)系。 在1ms的時間內(nèi),高速USB設(shè)備將看到同一個SOF令牌包八次,且它們有相同的幀號。如果需要的話,高速設(shè)備可以通過檢測與原有SOF包有不同幀號的幀和將它作為第0個微幀處理來自己確定一個特殊微幀號。接下來的七個具有相同幀號的SOF包可以被當作微幀1-7來處理。8.4.4數(shù)據(jù)包如圖 8-15 所示,數(shù)據(jù)包由 PID ,包括至少 0 個字節(jié)數(shù)據(jù)的數(shù)據(jù)區(qū)和 CRC 構(gòu)成。有 4 種類型的數(shù)據(jù)包,根據(jù)不同的 PID : DATA0, DATA1,DATA2和MDATA 來識別。2種數(shù)據(jù)包 PID (DATA0 和DATA1)是為了支持數(shù)據(jù)切換同步(在第 8.6 節(jié)提到)

27、而定義的。所有四種數(shù)據(jù)PID被用在高帶寬高速同步端點的PID序列中(在第5.9節(jié)提到)。三種數(shù)據(jù)PID(MDATA,DATA0,DATA1)被用在分割傳輸事務(wù)中(在11.17-11.21章節(jié)中提到)。圖 8-15 數(shù)據(jù)包格式數(shù)據(jù)必須以整數(shù)的字節(jié)數(shù)發(fā)出。數(shù)據(jù) CRC 僅通過對包中的數(shù)據(jù)字段計算而得到,而不包括 PID ,它有自己的校驗字段。低速設(shè)備的最大數(shù)據(jù)有效載荷是8字節(jié)。全速設(shè)備的最大數(shù)據(jù)載荷是1023字節(jié)。高速設(shè)備的最大數(shù)據(jù)載荷是1024字節(jié)。8.4.5握手包如圖 8-16 所示,握手包僅由 PID 構(gòu)成。握手包用來報告數(shù)據(jù)事務(wù)的狀態(tài),能還在表示數(shù)據(jù)成功接收,命令的接收或拒絕,流控制和停止

28、條件。只有支持流控制的事務(wù)類型才能返回握手信號。握手總是在事務(wù)的握手時相中被返回,也可在數(shù)據(jù)時相代替數(shù)據(jù)被返回。握手包由 1 個字節(jié)的包字段后的 EOP 確定界限。如果包被解讀為合法的握手信號,但沒有以 1 個字節(jié)后面的 EOP 終止,則它被認為是無效的,且被接收機忽略。圖 8-16 握手包l 有 4 種類型的握手包和一種特殊握手包:l ACK 表示數(shù)據(jù)包沒有位填充或數(shù)據(jù)字段上的 CRC 錯,并且數(shù)據(jù) PID 被正確收到。ACK 在下列的情況下被發(fā)放,當時序列位匹配且接收器能接受數(shù)據(jù)的時候,或者當時序位失配,但發(fā)送方和接收器互相之間必須再同步(詳見第 8.6 節(jié))的時候。ACK 握手信號只適用

29、于數(shù)據(jù)被傳送且期待握手信號的事務(wù)中。對于輸入事務(wù), ACK 由主機返回,而對于輸出、建立或PING事務(wù)則由功能部件返回;l NAK 表示功能部件不會從主機接受數(shù)據(jù)(對于輸出事務(wù)),或者功能部件沒有傳輸數(shù)據(jù)到主機(對于輸入事務(wù))。NAK 僅由功能部件在輸入事務(wù)的數(shù)據(jù)時相返回,或在輸出或PING事務(wù)的握手時相返回。主機決不能發(fā)出 NAK 。出于流控制的目的, NAK 用于表示功能部件暫時不能傳輸,或者接收數(shù)據(jù),但是最終還是能夠在不需主機干涉的情況下而傳輸或接收數(shù)據(jù);l STALL 作為輸入標記的回應(yīng),或者在輸出事務(wù)的數(shù)據(jù)時相之后由功能部件返回,或者作為PING事務(wù)的回應(yīng)(見圖 8-30 和圖 8-

30、38 )。停頓表示功能部件不能傳輸,或者接收數(shù)據(jù),或者不支持一個控制管道請求。功能部件在返回一個STALL后的狀態(tài)(對于除了默認端點的任何端點)是不被定義的。在任何條件下都不允許主機返回STALL。停頓握手由設(shè)備用于在兩個不同的場合之一。第一種情況,是當設(shè)置了與端口相聯(lián)系掛起特征的時候,稱為為特色" 功能停頓" (掛起特征在這文檔的第 9 章中詳細說明)。功能停頓的特殊情況是 " 命令停頓" 。如同在第 9 章中詳細敘述的那樣,命令停頓發(fā)生在主機顯式地設(shè)置了端口的掛起特征的時候。如果功能部件的端口被掛起,則功能部件必須繼續(xù)返回停頓,直到引起停止的條件通過

31、主機干涉而被清除。如同在8.5.3 節(jié)中詳細敘述的那樣,第二種情況稱為 " 協(xié)議停頓" 。協(xié)議停頓對于控制管道是唯一的。協(xié)議停頓和功能停頓在意義和持續(xù)時間上是不同。協(xié)議停頓在控制傳送的數(shù)據(jù)或狀態(tài)階段被返回,并且,停頓條件在下一個控制傳送的開始終止(建立事務(wù))。這節(jié)的剩下部分將提到功能停頓的一般情況。l NYET 是高速傳輸僅有的在兩種情況下能被返回的握手。作為將要在這一章接著被介紹的PING協(xié)議的一部分,它將被高速端點返回。當全速/低速傳輸沒有完成或者集線器不能控制分割傳輸時,作為對分割傳輸?shù)幕貞?yīng),NYET也可以被集線器返回。更多細節(jié)見于第十一章。l ERR 是高速傳輸僅有

32、的允許高速集線器在全速/低速總線上被返回以報告錯誤的握手。它僅作為分割傳輸協(xié)議的一部分被高速集線器返回。更多細節(jié)見于第十一章。8.4.6握手回答傳輸和接收功能部件必須根據(jù)從表 8-4 中到表 8-6 詳細敘述的優(yōu)先順序返回握手。不是所有的握手都是被允許,依賴于事務(wù)類型和功能部件或主機是否發(fā)出握手。如果標記在傳輸?shù)焦δ懿考碾A段里發(fā)生了錯誤,則功能部件將不以任何包回應(yīng),直到下一個標記被收到并成功地譯碼。8.4.6.1功能部件對輸入事務(wù)回答表 8-4 顯示了功能部件作為對輸入標記的反應(yīng)而可能做的回答。如果由于停止或流控制條件, 功能部件不能發(fā)送數(shù)據(jù),它將發(fā)出STALL或 NAK 握手。如果功能部件

33、能發(fā)出數(shù)據(jù),它就發(fā)出數(shù)據(jù)。如果收到的標記被損壞,則功能部件不應(yīng)答。表8-4 功能部件對輸入事務(wù)的回應(yīng)收到的標記損壞功能部件的發(fā)送端口的掛起特征功能部件能發(fā)送數(shù)據(jù)采取的動作是不管不管不回應(yīng)否置了位不管發(fā)送停止握手否沒置位否發(fā)送 NAK 握手否沒置位能發(fā)送數(shù)據(jù)包8.4.6.2主機對輸入事務(wù)回答表 8-5 顯示了主機對輸入事務(wù)回答。主機只能返回 1 種類型的握手: ACK 。如果主機收到了損壞的數(shù)據(jù)包,它把數(shù)據(jù)丟棄且不應(yīng)答。如果主機不能從功能部件接受數(shù)據(jù),則(出于類似內(nèi)部緩沖溢出的問題)這條件被認為是錯誤,并且主機不應(yīng)答。主機能接受數(shù)據(jù),并且如果數(shù)據(jù)包是完整無錯地被接收到,則主機接受數(shù)據(jù)并發(fā)出 AC

34、K 握手。表 8-5 主機對輸入事務(wù)的回應(yīng)數(shù)據(jù)包損壞主機能接受數(shù)據(jù)主機返回的握手是N/一丟棄數(shù)據(jù),不回應(yīng)否否丟棄數(shù)據(jù),不回應(yīng)否能接受數(shù)據(jù),發(fā)送 ACK8.4.6.3功能部件對輸出事務(wù)回答對輸出事務(wù)的握手回答由表 8-4 表示。假設(shè)標記譯碼成功,功能部件收到數(shù)據(jù)包后,可以返回三種握手類型中的任何一種。如果數(shù)據(jù)包被損壞,功能部件不返回握手。如果數(shù)據(jù)包是被完整無錯地接收到,而功能部件的接收端口被停止,則功能部件返回停止。如果事務(wù)正維持著時序位同步而探測到失配(在第 8.6 節(jié)有詳細描述),那么功能部件返回 ACK ,并丟棄數(shù)據(jù)。如果功能部件能夠接受數(shù)據(jù)并完整無錯收到數(shù)據(jù),它返回 ACK 。如果由于流

35、控制的原因,功能部件不能接受數(shù)據(jù)包,它返回 NAK 。表8-6 功能部件對輸出事務(wù)的回應(yīng)(按優(yōu)先順序)數(shù)據(jù)包損壞接收器的掛起特征時序位匹配功能部件可接收數(shù)據(jù)功能部件返回的握手是N/一N/一N/一無否置了位N/一N/一停止否沒置位否N/一ACK否沒置位是可ACK否沒置位是否NAK8.4.6.4功能部件對建立事務(wù)的回答建立事務(wù)定義了特殊的主機- 功能部件的數(shù)據(jù)事務(wù),它允許主機初始化端口的同步位為主機的同步位。一收到建立標記,功能部件就必須接受數(shù)據(jù)。功能部件不能對建立標記用STALL或 NAK 應(yīng)答,并且,接收功能部件必須接受建立標記后的數(shù)據(jù)包。如果非控制端口收到建立標記,它必須忽略事務(wù)且不應(yīng)答。8

36、.5事務(wù)格式包事務(wù)格式根據(jù)端口類型而變化。有 4 種端口類型:批處理,控制,中斷和同步。為滿足各種傳輸?shù)臅r序要求,主機控制器和設(shè)備各自需要不同的狀態(tài)機制。一些章節(jié)中的圖顯示了在各種傳輸類型中定義正確時序包的狀態(tài)機制。圖表不應(yīng)該認為是必需的執(zhí)行,但指定了必需的行為。圖8-17顯示了狀態(tài)機制圖表的圖例。三線圓表明是提及了另外一個(分等級的)狀態(tài)機。兩線圓表明是一個初始狀態(tài)。單線圓表明是簡單狀態(tài)。圖8-17 狀態(tài)機制的圖例帶箭頭的“突出”圖形表示狀態(tài)機制的出口或入口(在各自的圖例中)。在狀態(tài)機機制中,出口或入口與狀態(tài)機中處于更高級別的另一狀態(tài)有關(guān)。菱形(連接)用來將幾個過渡連接成一個普通的點。連接允

37、許有單個輸入過渡而有多個輸出過渡或者是有多個輸入過渡而有單個輸出過渡。為了路徑能夠被獲取,所有與連接有關(guān)的過渡情形都要為真。路徑僅僅是包括一個或更多的連接的過渡的序列。過渡附加了一個方框,它里面的中間有一條線,將方框分為上下兩部分,上面是條件,下面是行為。若想進行這一過渡,則需條件為真。行為和條件的句法是符合VHDL的。如果過渡得以進行,那么行為也將可以施行。圓圈包括一個黑體的名字,可以包含一個或多個進入狀態(tài)時施行的行為。主機控制器和設(shè)備狀態(tài)機正是工作在如圖8-18所示的環(huán)境下的。主機控制器其將和設(shè)備的某端點之間進行的下一個事務(wù)處理,并想主機控制器狀態(tài)機發(fā)出命令(HC_cmd)。這使得主機控制

38、器狀態(tài)機向下行總線發(fā)出一個或多個信息包(HSD1)。設(shè)備從總線(HSD2)獲得這些信息包,對收到的信息包作出反應(yīng),并通過相應(yīng)的設(shè)備端點(在“端點陣列”中)和其功能單元進行通信。之后,設(shè)備可能向上行總線(HSU1)返回一個信息包。主機控制器狀態(tài)機能夠從總線(HSU2)收到一個新版并把該事務(wù)的處理結(jié)果提供給USB主控制器(HC_resp)??偩€上什么包被發(fā)送的細節(jié)決定于端點的傳輸類型和狀態(tài)機遵守什么樣的總線活動規(guī)則。狀態(tài)機是以分等級的形式存在的。圖8-19顯示了主機控制器的頂層狀態(tài)機。這一章的余下部分將討論無分割傳輸。分割傳輸狀態(tài)機(HC_Do_start 和HC_Do_complete)將在第十

39、一章進行描述和說明。 圖8-18 狀態(tài)機環(huán)境概述 圖8-19 主控制器頂層事務(wù)狀態(tài)機分層概況主機控制器狀態(tài)機位于主機控制器內(nèi)部。主機控制器負責向下行總線(標志為HSD1)發(fā)送信息包和從上行總線(標志為HSU2)接收信息包。設(shè)備狀態(tài)機位于設(shè)備內(nèi)部。設(shè)備負責向上行總線(標志為HSU1)和從下行總線(標志為HSD2)接收信息包。主機控制器具有告知接下來為端點發(fā)起什么事務(wù)的命令。主機控制器跟蹤幾個端點的事務(wù)。主機控制器狀態(tài)機時序決定了接下來需要為現(xiàn)在的端點做什么。設(shè)備對于任意它的端點都有一個狀態(tài)。設(shè)備狀態(tài)機時序決定了對于事務(wù)設(shè)備作出怎樣的反應(yīng)。附錄包括了一些用于組成狀態(tài)機、可能對于理解狀態(tài)機的額外細節(jié)

40、有所幫助的聲明。還有數(shù)個偽代碼程序和函數(shù)作為條件和行為。在附錄中還包含對它們的簡單描述。圖8-20顯示了無分割傳輸類型主機控制器總體狀態(tài)機分層的概況。圖8-21顯示了設(shè)備狀態(tài)機的分層。首先介紹的是端點類型的普通狀態(tài)機。最低級別的端點類型特殊狀態(tài)機將在以下的各種端點類型的章節(jié)中分別進行介紹。 圖8-20 主機控制器無分割傳輸狀態(tài)機分層概況 圖8-21 設(shè)備傳輸狀態(tài)機分層概況 圖8-22 設(shè)備頂層狀態(tài)機 圖8-23 Device_process_Trans狀態(tài)機制 圖8-24 Dev_do_OUT 狀態(tài)機制 圖8-25 Dev_do_IN 狀態(tài)機制 圖8-26 HC_Do_nonsplit狀態(tài)機制

41、8.5.1通過PING流控制的無應(yīng)答限制全速/低速設(shè)備可以具有批量傳輸/控制傳輸端點,它們要花費時間處理它們的數(shù)據(jù),并且,因此用無應(yīng)答握手回應(yīng)OUT事務(wù)。這一握手回應(yīng)說明端點因為沒有數(shù)據(jù)空間而不接收數(shù)據(jù)。在未來的端點有可用空間的時侯,主機控制器被期望重新進行這一傳輸事務(wù)。不幸的是,等到端點發(fā)生無應(yīng)答時,大多數(shù)全速/低速總線的事務(wù)時間已經(jīng)被使用了。這意味著,當無應(yīng)答OUT事務(wù)高頻率發(fā)生時全速/低速總線具有低利用率。高速設(shè)備必須支持改進的無應(yīng)答機制,以實現(xiàn)批量OUT傳輸和控制傳輸端點和事務(wù)??刂贫它c必須支持支持這一協(xié)議,以實現(xiàn)數(shù)據(jù)和狀態(tài)階段的OUT事務(wù)??刂平㈦A段不支持PING協(xié)議。這一機制允許

42、設(shè)備告知主機控制器它是否對于下一個OUT事務(wù)足夠的端點空間。如果設(shè)備端點不具有空間,主機控制器可以決定為這個端點延遲一個事務(wù)嘗試,同時可以嘗試其他事務(wù)。這就可以完成改進的總線實現(xiàn)。這一機制避免了在主機控制器知道端點有數(shù)據(jù)空間前使用發(fā)送數(shù)據(jù)的總線時間。主機控制器用PING特殊標記查詢高速設(shè)備的端點。PING特殊標記是普通的標記包,正如圖8-5所示。端點或者用一個NAK握手或者用一個ACK握手回應(yīng)PING。NAK握手表明端點沒有“最大數(shù)據(jù)包”數(shù)據(jù)有效載荷的空間。主機控制器將在未來的某個時間重新嘗試PING以再次查詢端點。設(shè)備可以長時間的用NAK回應(yīng)PING。NAK回應(yīng)并不是主機控制器重新傳輸請求的

43、原因。如果設(shè)備在(微)幀中用NAK作出回應(yīng),主機控制器可以在下一個bInteval中特別為端點發(fā)出下一個事務(wù)。然而,設(shè)備必須準備好以連續(xù)事務(wù)的形式接收PINGs,例如,一個立刻接著另一個。ACK握手表明具有“最大數(shù)據(jù)包”數(shù)據(jù)有效載荷的空間。主機控制器必須以數(shù)據(jù)相產(chǎn)生OUT事務(wù)以作為端點的下一個事務(wù)。主機控制器在此端點的OUT/DATA事務(wù)之前可以為其他端點產(chǎn)生其他事務(wù)。如果端點用ACK握手對OUT/DATA事務(wù)作出回應(yīng),這就意味著端點成功接收了數(shù)據(jù)并且具有“最大數(shù)據(jù)包”數(shù)據(jù)有效載荷的空間。只要主機控制器有事務(wù)產(chǎn)生,它就繼續(xù)OUT/DATA事務(wù)(對于總線上的下一個事務(wù)這是需要的)。如果端點以NY

44、ET握手回應(yīng)OUT/DATA事務(wù),這就意味著端點接收了數(shù)據(jù)但不再具有“最大數(shù)據(jù)包”數(shù)據(jù)有效載荷的空間。直到端點聲明具有空間,主機控制器才可以重新使用PING標記。 圖8-27 主機高速批量OUT/Control PING狀態(tài)機制8.5.1.1PING協(xié)議中對OUT/DATA的NAK回應(yīng)端點也可以用NAK握手回應(yīng)OUT/DATA事務(wù)。這意味著此時端點不接收數(shù)據(jù)并且不具有“最大數(shù)據(jù)包”數(shù)據(jù)有效載荷的空間。直到端點聲明具有空間,主機控制器才可以重新使用PING標記。NAK回應(yīng)被認為是異常事件。高速批量傳輸/控制傳輸端點必須在端點描述符中明確最大的NAK率。端點最多被允許在一個vInterval周期發(fā)

45、生一次NAK。一個NAK說明端點用不恰當?shù)奈帐只貞?yīng)先前的OUT/PING,或者端點轉(zhuǎn)入了一個(臨時)不能接收數(shù)據(jù)的狀態(tài)。端點可以使用一個bInterval的0表明它從不發(fā)生NAK。端點必須總是能夠從主機接收PING,即使它從不發(fā)生NAK。如果數(shù)據(jù)相以后發(fā)生了超時,主機必須重新使用PING標記。注意回到PING狀態(tài)的轉(zhuǎn)變并不影響傳輸數(shù)據(jù)相的切換狀態(tài)。圖8-27 說明了PING、OUT/DATA標記與被允許的PING機制的ACK、NAK和NYET握手之間相互作用和轉(zhuǎn)換的主機控制器狀態(tài)機制。圖8-29說明了端點緩沖空間可用的PING的設(shè)備端點狀態(tài)機制。 圖8-28 Dev_HS_ping 狀態(tài)機制

46、圖8-29 設(shè)備高速批量OUT/Control狀態(tài)機制全速/低速設(shè)備/端點不支持PING協(xié)議。主機控制器對于全速/低速設(shè)備也不支持PING協(xié)議。注意:PING協(xié)議也不包含在分割傳輸協(xié)議的定義中。一些分割傳輸有相當?shù)牟皇褂肞ING的流控制。其他分割傳輸像定義的那樣無法受益于PING。在任何情形下,可以返回NAK握手的分割傳輸具有較小的數(shù)據(jù)有效載荷,而這也就會對高速總線具有較小的沖擊。集線器必須在它們的控制端點支持PING,但是對于用于被集線器所支持的全速/低速設(shè)備之間通信的分割傳輸,PING是不被定義的。8.5.2批處理事務(wù)批處理事務(wù)類型的特點是具有以錯誤檢測和重試的方式保證主機和功能部件之間的

47、數(shù)據(jù)無錯發(fā)送的能力。如圖 8-30 所示,批處理事務(wù)是由標記,數(shù)據(jù)和握手包構(gòu)成的三時相的事務(wù)。在某些流控制和掛起條件下,數(shù)據(jù)時相被握手信號替換,從而產(chǎn)生了沒有數(shù)據(jù)傳輸?shù)膬蓵r相的事務(wù)。PING包和NYET包僅僅使用在工作在高速狀態(tài)的設(shè)備上。圖 8-30 批處理事務(wù)格式當主機準備好了接收批處理數(shù)據(jù)的時候,它發(fā)出輸入標記。功能部件端口通過返回數(shù)據(jù)包,或者如果不能返回數(shù)據(jù),則返回 NAK 或STALL握手作為應(yīng)答。NAK 表示功能部件暫時不能返回數(shù)據(jù),而STALL表示端口永久地被停止,需要USB系統(tǒng)軟件干涉。如果主機收到合法的數(shù)據(jù)包,則它用 ACK 握手來應(yīng)答。如果收到數(shù)據(jù)時主機檢測到錯誤,它不返回握

48、手包給功能部件。當主機準備好了傳送成批數(shù)據(jù)的時候,它首先發(fā)出一個后跟數(shù)據(jù)包的輸出標記包(或者PING標記包,參見8.5.1章節(jié))。如果數(shù)據(jù)由功能部件無錯地接收到,那么它將返回三個握手中的一個:l ACK 表示數(shù)據(jù)包無錯地接收到,通知主機可以發(fā)送下一個包;l NAK 表示數(shù)據(jù)被無錯地收到,但主機應(yīng)該重新發(fā)送數(shù)據(jù)因為數(shù)據(jù)功能部件處于妨礙它接受數(shù)據(jù)的暫時條件(例如緩沖滿)中;l 如果端口被停止,則返回STALL(停止)以告訴主機不要重試傳輸,因為功能部件上有錯誤條件。如果接收到的數(shù)據(jù)有 CRC 或者位填充錯誤,那么不返回任何握手。圖8-31和圖8-32分別說明了主機和設(shè)備批量傳輸、控制傳輸和中斷傳輸

49、OUT全速/低速事務(wù)的狀態(tài)機制。圖8-27、圖8-28和圖8-29說明高速傳輸事務(wù)的狀態(tài)機制。圖8-33和圖8-34分別說明了主機和設(shè)備批量傳輸、控制傳輸和中斷傳輸IN事務(wù)的狀態(tài)機制。 圖8-31 批量/控制/中斷OUT事務(wù)主機狀態(tài)機制圖8-32 批量/控制/中斷OUT事務(wù)設(shè)備狀態(tài)機制 圖8-33 批量/控制/中斷IN事務(wù)主機狀態(tài)機制圖8-34 批量/控制/中斷IN事務(wù)設(shè)備狀態(tài)機制圖 8-35 說明了時序位和數(shù)據(jù) PID 在成批讀和寫中的用法。數(shù)據(jù)包同步經(jīng)數(shù)據(jù)時序切換位和 DATA0/ DATA1 PID 的使用而達到。當端口經(jīng)歷配置事件(配置事件在節(jié) 9.1.1.5 和 9.4.5 中有解釋

50、)的時候,批事務(wù)端口的切換時序被初始化為 DATA0 。端口上的數(shù)據(jù)切換不是作為短包傳送或 IRP 撤消的直接結(jié)果而被初始化的。圖 8-35 批事務(wù)讀和寫主機總是通過配置事件初始化總線傳送的第一個事務(wù)為 DATA0 PID 。第二的事務(wù)使用 DATA1 PID ,并且,剩余的后繼數(shù)據(jù)傳送輪流切換。數(shù)據(jù)包發(fā)送器根據(jù) ACK 的接收情況來切換而接收器根據(jù)數(shù)據(jù)包的接收的情況切換(參見第 8.6 節(jié))。8.5.3控制傳送控制傳送最少有 2 個事務(wù)階段:建立和狀態(tài)。控制傳送可以有選擇性地包括建立和狀態(tài)階段之間的數(shù)據(jù)階段。在建立階段里,建立事務(wù)用于向功能部件的控制端口傳輸信息。建立事務(wù)在格式上類似于輸出,

51、但是使用的是建立而不是輸出的 PID 。圖 8-36 說明了建立事務(wù)的格式。建立總是在建立事務(wù)的數(shù)據(jù)時相上使用 DATA0 PID 。收到建立的功能部件必須接受建立數(shù)據(jù)并用 ACK 應(yīng)答,如果數(shù)據(jù)被損壞,則丟棄數(shù)據(jù)且不返回握手。圖 8-36 控制建立事務(wù)控制傳送的數(shù)據(jù)階段,如果有的話,由一個以上的輸入或輸出事務(wù)構(gòu)成,遵守和批量事務(wù)傳送相同的協(xié)議規(guī)則。所有的數(shù)據(jù)階段里的事務(wù)都必須有相同的方向(即全部輸入或者全部輸出)。在數(shù)據(jù)時相中要發(fā)送的數(shù)據(jù)數(shù)量和其方向在建立階段里被指定。如果數(shù)據(jù)的數(shù)量超過了先前確定的數(shù)據(jù)包大小,數(shù)據(jù)在支持最大的包大小的多個事務(wù)中被發(fā)送(輸入或者輸出)。任何剩下的數(shù)據(jù)都作為剩余

52、在最后的事務(wù)中被發(fā)送??刂苽魉偷臓顟B(tài)階段是序列中的最后一個操作。狀態(tài)階段是以相對前面的階段數(shù)據(jù)流方向的變化來描述的,并且總是使用 DATA1 PID 。例如,如果數(shù)據(jù)階段由輸出事務(wù)構(gòu)成的,狀態(tài)是單一的輸入事務(wù)。如果控制傳送序列沒有數(shù)據(jù)階段,那么它由建立階段和其后的由輸入事務(wù)構(gòu)成的狀態(tài)階段構(gòu)成。圖 8-37 說明了事務(wù)順序,數(shù)據(jù)時序位的值和控制讀寫序列的數(shù)據(jù) PID 類型。時序位顯示在括號中。圖 8-37 控制讀寫序列當控制端口在控制傳送的數(shù)據(jù)和狀態(tài)階段中發(fā)送停止握手的時候,必須對以后所有對此端口訪問返回停止握手,直到收到建立 PID 為止。端口收到建立 PID 之后,不應(yīng)返回停止握手。對于默認

53、端點,如果對于建立事務(wù)返回了一個ACK握手,主機就認為端點已經(jīng)自動從導(dǎo)致停止的情況下恢復(fù)了并且端點一定正常工作了。8.5.3.1匯報狀態(tài)結(jié)果狀態(tài)階段向主機做匯報傳送中的先前建立和數(shù)據(jù)階段的結(jié)果。可能返回三種結(jié)果:l 命令序列成功地完成了;l 命令序列沒能完成;l 功能部件還在忙于完成指令。匯報狀態(tài)總是從功能部件到主機的方向。表 8-7 概括了每一種所需的應(yīng)答類型??刂茖憘魉驮跔顟B(tài)階段的事務(wù)數(shù)據(jù)時相返回狀態(tài)信息。而對于控制讀傳送,主機在狀態(tài)階段事務(wù)的數(shù)據(jù)時相中發(fā)出零長度的數(shù)據(jù)包之后,功能部件在握手時相返回狀態(tài)信息。表8-7 狀態(tài)階段的響應(yīng)狀態(tài)響應(yīng)控制寫傳送(在數(shù)據(jù)時相發(fā)送)控制讀傳送(在握手時相發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論