USB體系結(jié)構(gòu)概述
??? 本章主要內(nèi)容是關(guān)于USB的概述和一些關(guān)鍵的概念。USB是一種電纜總線,支持在主機和各式各樣的即插即用的外設(shè)之間進行數(shù)據(jù)傳輸。由主機預(yù)定的標準的協(xié)議使各種設(shè)備分享USB帶寬,當其它設(shè)備和主機在運行時,總線允許添加、設(shè)置、使用以及拆除外設(shè)。
??? 后續(xù)章節(jié)將著重描述USB的細節(jié)。
USB系統(tǒng)的描述
??? 一個USB系統(tǒng)主要被定義為三個部分:
??? ?USB的互連;
??? ?USB的設(shè)備;
??? ?USB的主機。
????? USB的互連是指USB設(shè)備與主機之間進行連接和通信的操作,主要包括以下幾方面:
??? ?總線的拓撲結(jié)構(gòu):USB設(shè)備與主機之間的各種連接方式;
??? ?內(nèi)部層次關(guān)系:根據(jù)性能疊置,USB的任務(wù)被分配到系統(tǒng)的每一個層次;
??? ?數(shù)據(jù)流模式:描述了數(shù)據(jù)在系統(tǒng)中通過USB從產(chǎn)生方到使用方的流動方式;
??? ?USB的調(diào)度:USB提供了一個共享的連接。對可以使用的連接進行了調(diào)度以支持同步數(shù)據(jù)傳輸,并且避免的優(yōu)先級判別的開銷。
??? USB的設(shè)備及主機的細節(jié)將講述于后。
總線布局技術(shù)
??? USB連接了USB設(shè)備和USB主機,USB的物理連接是有層次性的星型結(jié)構(gòu)。每個網(wǎng)絡(luò)集線器是在星型的中心,每條線段是點點連接。從主機到集線器或其功能部件,或從集線器到集線器或其功能部件,從圖3-1中可看出USB的拓撲結(jié)構(gòu)。
3.1.1.1? USB的主機
??? 在任何USB系統(tǒng)中,只有一個主機。USB和主機系統(tǒng)的接口稱作主機控制器,主機控
圖3-1 總線的拓撲結(jié)構(gòu)
制器可由硬件、固件和軟件綜合實現(xiàn)。根集線器是由主機系統(tǒng)整合的,用以提供更多的連接點。關(guān)于主機更多的內(nèi)容可參見4.9節(jié)和第9章。
4.1.1.2? USB的設(shè)備
??? USB的設(shè)備如下所示:
??? ?網(wǎng)絡(luò)集線器,向USB提供了更多的連接點;
??? ?功能器件:為系統(tǒng)提供具體功能,如ISDN的連接,數(shù)字的游戲桿或揚聲器。
??? USB設(shè)備提供的USB標準接口的主要依據(jù):
??? ?對USB協(xié)議的運用;
??? ?對標準USB操作的反饋,如設(shè)置和復(fù)位;
??? ?標準性能的描述性信息;
??? 關(guān)于USB設(shè)備的更多信息請參見3.8節(jié)和第8章。
物理接口
USB的物理接口的電氣特性在第六章,機械特性在第五章詳細介紹。
?
3.2.1電氣特性
USB傳送信號和電源是通過一種四線的電纜,圖3-2中的兩根線是用于發(fā)送信號。
?? 存在兩種數(shù)據(jù)傳輸率:
圖3-2 USB 的電纜
??USB的高速信號的比特率定為12Mbps;
??? ?低速信號傳送的模式定為1.5Mbps;
??? 低速模式需要更少的EMI保護。兩種模式可在用同一USB總線傳輸?shù)那闆r下自動地動態(tài)切換。因為過多的低速模式的使用將降低總線的利用率,所以該模式只支持有限個低帶寬的設(shè)備(如鼠標)。時鐘被調(diào)制后與差分數(shù)據(jù)一同被傳送出去,時鐘信號被轉(zhuǎn)換成NRZI碼,并填充了比特以保證轉(zhuǎn)換的連續(xù)性,每一數(shù)據(jù)包中附有同步信號以使得收方可還原出原時鐘信號。
??? 電纜中包括VBUS?、GND二條線,向設(shè)備提供電源 。VBUS?使用+5V電源。USB對電纜長度的要求很寬,最長可為幾米。通過選擇合適的導(dǎo)線長度以匹配指定的IR drop和其它一些特性,如設(shè)備能源預(yù)算和電纜適應(yīng)度。為了保證足夠的輸入電壓和終端阻抗。重要的終端設(shè)備應(yīng)位于電纜的尾部。在每個端口都可檢測終端是否連接或分離,并區(qū)分出高速,或低速設(shè)備。
3.2.2? 機械特性
??? 電纜和連接器的機械特性將在第5章詳述。所有設(shè)備都有一個上行的連接。上行連接器和下行連接器是不可簡單的互換,這樣就避免了集線器間的非法的循環(huán)往復(fù)的連接,電纜中有四根導(dǎo)線:一對互相纏繞的標準規(guī)格線,一對符合標準的電源線,連接器有四個方向,具有屏蔽層,以避免外界干擾,并有易拆裝的特性。
電源
??? 主要包括兩方面:
??? ?電源分配:即USB的設(shè)備如何通過USB分配得到由主計算機提供的能源;
??? ?電源管理:即通過電源管理系統(tǒng),USB的系統(tǒng)軟件和設(shè)備如何與主機協(xié)調(diào)工作。
電源分配
??? 每個USB單元通過電纜只能提供有限的能源。主機對那種直接相連的USB設(shè)備提供電源供其使用。并且每個USB設(shè)備都可能有自己的電源。那些完全依靠電纜提供能源的設(shè)備稱作“總線供能”設(shè)備。相反,那些可選擇能源來源的設(shè)備稱作“自供電”設(shè)備。而且,集線器也可由與之相連的USB設(shè)備提供電源。受一定布局限制的帶有“總線供能”集線器的體系結(jié)構(gòu)將在第十章討論。在圖4-4(位于3.8)中,鍵盤,輸入筆和鼠標均為“總線供能”設(shè)備。
3.3.2? 電源管理
??? USB主機與USB系統(tǒng)有相互獨立的電源管理系統(tǒng)。USB的系統(tǒng)軟件可以與主機的能源管理系統(tǒng)結(jié)合共同處理各種電源子件如掛起、喚醒,并且有特色的是,USB設(shè)備應(yīng)用特有的電源管理特性,可讓系統(tǒng)軟件和控制其電源管理。
??? USB的電源分配和電源管理特性使之可以被設(shè)計在電源傳感系統(tǒng)中,如采用電池的筆記本電腦。
USB總線協(xié)議
??? USB總線屬一種輪訊方式的總線,主機控制端口初始化所有的數(shù)據(jù)傳輸。
??? 每一總線執(zhí)行動作最多傳送三個數(shù)據(jù)包。按照傳輸前制定好的原則,在每次傳送開始時,主機控制器發(fā)送一個描述傳輸運作的種類、方向,USB設(shè)備地址和終端號的USB數(shù)據(jù)包,這個數(shù)據(jù)包通常稱為標志包(token packet)。USB設(shè)備從解碼后的數(shù)據(jù)包的適當位置取出屬于自己的數(shù)據(jù)。數(shù)據(jù)傳輸方向不是從主機到設(shè)備就是從設(shè)備到主機。在傳輸開始時,由標志包來標志數(shù)據(jù)的傳輸方向,然后發(fā)送端開始發(fā)送包含信息的數(shù)據(jù)包或表明沒有數(shù)據(jù)傳送。接收端也要相應(yīng)發(fā)送一個握手的數(shù)據(jù)包表明是否傳送成功。發(fā)送端和接收端之間的USB數(shù)據(jù)傳輸,在主機和設(shè)備的端口之間,可視為一個通道。存在兩種類型的通道:流和消息。流的數(shù)據(jù)不像消息的數(shù)據(jù),它沒有USB所定義的結(jié)構(gòu),而且通道與數(shù)據(jù)帶寬、傳送服務(wù)類型,端口特性(如方向和緩沖區(qū)大?。┯嘘P(guān)。多數(shù)通道在USB設(shè)備設(shè)置完成后即存在。USB中有一個特殊的通道——缺省控制通道,它屬于消息通道,當設(shè)備一啟動即存在,從而為設(shè)備的設(shè)置、查詢狀況和輸入控制信息提供一個入口。
??? 事務(wù)預(yù)處理允許對一些數(shù)據(jù)流的通道進行控制,從而在硬件級上防止了對緩沖區(qū)的高估或低估,通過發(fā)送不確認握手信號從而阻塞了數(shù)據(jù)的傳輸速度。當不確認信號發(fā)過后,若總線有空閑,數(shù)據(jù)傳輸將再做一次。這種流控制機制允許靈活的任務(wù)安排,可使不同性質(zhì)的流通道同時正常工作,這樣多種流通??稍诓煌g隔進行工作,傳送不同大小的數(shù)據(jù)包。
健壯性
??? USB健壯性的特征在于:
??? ?使用差分的驅(qū)動接收和防護,以保證信號完整性;
??? ?在數(shù)據(jù)和控制信息上加了循環(huán)冗余碼(CRC);
??? ?對裝卸的檢測和系統(tǒng)級資源的設(shè)置;
??? ?對丟失或損壞的數(shù)據(jù)包暫停傳輸、利用協(xié)議自我恢復(fù);
??? ?對流數(shù)據(jù)進行控制,以保證同步信號和硬件緩沖管理的安全;
??? ?數(shù)據(jù)和控制通道的建立,使功能部件的相互不利的影響?yīng)毩㈤_,消除了負作用。
3.5.1? 錯誤檢測
??? USB傳輸介質(zhì)產(chǎn)生的錯誤率是與自然界的異?,F(xiàn)象的概率相吻合,是瞬時一現(xiàn)的,因此就要在每個數(shù)據(jù)包中加入檢測位來發(fā)現(xiàn)這些瞬時的錯誤,并且提供了一系列硬件和軟件設(shè)施來保證數(shù)據(jù)的正確性。
??? 協(xié)議中對每個包中的控制和數(shù)據(jù)位都提供了循環(huán)冗余碼校驗,若出現(xiàn)了循環(huán)冗余碼的錯誤則被認為是該數(shù)據(jù)包已被損壞,循環(huán)冗余碼可對一位或兩位的錯誤進行100%的修復(fù)。
3.5.2? 錯誤處理
??? 協(xié)議在硬件或軟件級上提供對錯誤的處理。硬件的錯誤處理包括匯報并重新進行上一次失敗的傳輸、傳輸中若遇到錯誤,USB主機控制器將重新進行傳輸,最多可再進行三次。若錯誤依然存在,則對客戶端軟件報告錯誤,客戶端軟件可用一種特定的方法進行處理。
系統(tǒng)設(shè)置
??? USB設(shè)備可以隨時的安裝和折卸,因此,系統(tǒng)軟件在物理的總線布局上必須支持這種動態(tài)變化。
3.6.1? USB設(shè)備的安裝
??? 所有的USB設(shè)備都是通過端口接在USB上,網(wǎng)絡(luò)集線器知道這些指定的USB設(shè)備,集線器有一個狀態(tài)指示器指明在其某個端口上,USB設(shè)備是否被安裝或拆除了,主機將所有的集線器排成隊列以取回其狀態(tài)指示。在USB設(shè)備安裝后,主機通過設(shè)備控制通道激活該端口并以預(yù)設(shè)的地址值給USB設(shè)備。
??? 主機對每個設(shè)備指定唯一的USB地址。并檢測這種新裝的USB設(shè)備是集線器還是功能部件。主機為USB設(shè)備建立了控制通道,使用指定的USB的地址和零號端口。
??? 如果安裝的USB設(shè)備是集線器,并且USB設(shè)備連在其端口上,那上述過程對每個USB設(shè)備的安裝都要做一遍。
??? 如果安裝的設(shè)備是功能部件,那么主機中關(guān)于該設(shè)備的軟件將因設(shè)備的連接而被引發(fā)。
3.6.2? USB設(shè)備的拆卸
??? 當USB設(shè)備從集線器的端口拆除后,集線器關(guān)閉該端口,并且向主機報告該設(shè)備已不存在。USB的系統(tǒng)軟件將準確進行處理,如果去除的USB設(shè)備上集線器,USB的系統(tǒng)軟件將對集線器反連在其上的所有設(shè)備進行處理。
3.6.3? 總線標號
??? 總線標號就是對連接在總線上的設(shè)備指定唯一的地址的一種動作,因為USB允許USB設(shè)備在任何時刻從USB上安裝或拆卸,所以總線標號是USB的系統(tǒng)軟件始終要作的動作,而且總線標號還包括對拆除設(shè)備的檢測和處理。
數(shù)據(jù)流種類
??? 數(shù)據(jù)和控制信號在主機和USB設(shè)備間的交換存在兩種通道:單向和雙向。USB的數(shù)據(jù)傳送是在主機軟件和一個USB設(shè)備的指定端口之間。這種主機軟件和USB設(shè)備的端口間的聯(lián)系稱作通道??偟膩碚f,各通道之間的數(shù)據(jù)流動是相互獨立的。一個指定的USB設(shè)備可有許多通道。例如,一個USB設(shè)備存在一個端口,可建立一個向其它USB設(shè)備的端口,發(fā)送數(shù)據(jù)的通道,它可建立一個從其它USB設(shè)備的端口接收數(shù)據(jù)的通道。
USB的結(jié)構(gòu)包含四種基本的數(shù)據(jù)傳輸類型:
?控制數(shù)據(jù)傳送:在設(shè)備連接時用來對設(shè)備進行設(shè)置,還可對指定設(shè)備進行控制,如通道控制;
??? ?批量數(shù)據(jù)傳送:大批量產(chǎn)生并使用的數(shù)據(jù),在傳輸約束下,具有很廣的動態(tài)范圍;
??? ?中斷數(shù)據(jù)的傳送:用來描述或匹配人的感覺或?qū)μ卣鞣磻?yīng)的回饋。
??? ?同步數(shù)據(jù)的傳送:由預(yù)先確定的傳送延遲來填滿預(yù)定的USB帶寬。
??? 對于任何對定的設(shè)備進行設(shè)置時一種通道只能支持上述一種方式的數(shù)據(jù)傳輸,數(shù)據(jù)流模式的更多細節(jié)在第四章中詳述。
3.7.1? 控制數(shù)據(jù)傳送
??? 當USB設(shè)備初次安裝時,USB系統(tǒng)軟件使用控制數(shù)據(jù)對設(shè)備進行設(shè)置,設(shè)備驅(qū)動程序通過特定的方式使用控制數(shù)據(jù)來傳送,數(shù)據(jù)傳送是無損性的。
3.7.2? 批量數(shù)據(jù)傳送
??? 批量數(shù)據(jù)是由大量的數(shù)據(jù)組成,如使用打印機和掃描儀時,批量數(shù)據(jù)是連續(xù)的。在硬件級上可使用錯誤檢測可以保證可靠的數(shù)據(jù)傳輸,并在硬件級上引入了數(shù)據(jù)的多次傳送。此外根據(jù)其它一些總線動作,被大量數(shù)據(jù)占用的帶寬可以相應(yīng)的進行改變。
3.7.3? 中斷數(shù)據(jù)傳輸
??? 中斷數(shù)據(jù)是少量的,且其數(shù)據(jù)延遲時間也是有限范圍的。這種數(shù)據(jù)可由設(shè)備在任何時刻發(fā)送,并且以不慢于設(shè)備指定的速度在USB上傳送。
??? 中斷數(shù)據(jù)一般由事件通告,特征及座標號組成,只有一個或幾個字節(jié)。匹配定點設(shè)備的座標即為一例,雖然精確指定的傳輸率不必要,但USB必須對交互數(shù)據(jù)提供一個反應(yīng)時間的最低界限。
3.7.4? 同步傳輸
??? 同步數(shù)據(jù)的建立、傳送和使用時是連續(xù)且實時的,同步數(shù)據(jù)是以穩(wěn)定的速率發(fā)送和接收實時的信息,同步數(shù)據(jù)要使接收者與發(fā)送者保持相同的時間安排,除了傳輸速率,同步數(shù)據(jù)對傳送延遲非常敏感。所以同步通道的帶寬的確定,必須滿足對相關(guān)功能部件的取樣特性。不可避免的信號延遲與每個端口的可用緩沖區(qū)數(shù)有關(guān)。
??? 一個典型的同步數(shù)據(jù)的例子是語音,如果數(shù)據(jù)流的傳送率不能保持,數(shù)據(jù)流是否丟失將取決于緩沖區(qū)的大小和損壞的程度。即使數(shù)據(jù)在USB硬件上以合適的速率傳送,軟件造成的傳送延遲將對那些如電話會議等實時系統(tǒng)的應(yīng)用造成損害。
??? 實時的傳送同步數(shù)據(jù)肯定會發(fā)生潛在瞬時的數(shù)據(jù)流丟失現(xiàn)象,換句話說,即使許多硬件機制,如重傳的引入也不能避免錯誤的產(chǎn)生。實際應(yīng)用中,USB的數(shù)據(jù)出錯率小到幾乎可以忽略不計。從USB的帶寬中,給USB同步數(shù)據(jù)流分配了專有的一部分以滿足所想得到的傳速率,USB還為同步數(shù)據(jù)的傳送設(shè)計了最少延遲時間。
3.7.5? 指定USB帶寬
??? USB的帶寬分配給各個通道,當一個通道建立后,USB就分配給它一定的帶寬,USB設(shè)備需要提供一些數(shù)據(jù)緩沖區(qū)。若USB提供了更多帶寬,則需更多的緩沖區(qū)。USB的體系要保證緩沖引導(dǎo)的硬件的延遲限定在幾毫秒內(nèi)。
USB的帶寬容量可以容納多種不同的數(shù)據(jù)流,因此保證USB上可以連接大量設(shè)備,如可以容納從1B+D直到T1速率范圍的電信設(shè)備。同時USB支持在同一時刻不同設(shè)備具有不同比特率,并具有一個動態(tài)變動的范圍。
??? USB規(guī)范對總線的每類轉(zhuǎn)輸規(guī)定的具體的原則。
USB設(shè)備
??? USB設(shè)備分為諸如集線器、分配器或文本設(shè)備等種類。集線器類指的是一種提供USB連接點的設(shè)備(詳見第十章),USB設(shè)備需要提供自檢和屬性設(shè)置的信息,USB設(shè)備必須在任何時刻執(zhí)行與所定義的USB設(shè)備的狀態(tài)相一致的動態(tài)。
3.8.1? 設(shè)備特性
??? 當設(shè)備被連接、編號后,該設(shè)備就擁有一個唯一的USB地址。設(shè)備就是通過該USB地址被操作的,每一個USB設(shè)備通過一個或多個通道與主機通訊。所有USB設(shè)備必須在零號端口上有一指定的通道,每個USB設(shè)備的USB控制通道將與之相連。通過此控制通道,所有的USB設(shè)備都列入一個共同的準入機制,以獲得控制操作的信息。
??? 在零號端口上,控制通道中的信息應(yīng)完整的描述USB設(shè)備、此類信息主要有以下幾類:
??? ?標準信息:這類信息是對所有USB設(shè)備的共同性的定義,包括一些如廠商識別、設(shè)備種類、電源管理等的項目。設(shè)備設(shè)置、接口及終端的描述在此給出。關(guān)于這些具體的描述信息在第九章給出;
??? ?類別信息:此類信息給出了不同USB的設(shè)備類的定義,主要反映其不同點。
??? ?USB廠商信息:USB設(shè)備的廠商可自由的提供各種有關(guān)信息,其格式不受該規(guī)范制約。此外,每個USB設(shè)備均提供USB的控制和狀態(tài)信息。
3.8.2? 設(shè)備描述
??? 主要分為兩種設(shè)備類:集線器和功能部件。只有集線器可以提供更多的USB的連接點,功能部件為主機提供了具體的功能。
3.8.2.1? 集線器
在即插即用的USB的結(jié)構(gòu)體系中,集線器是一種重要設(shè)備。圖3-3所示是
圖3 –3? 典型集線器
一種典型的集線器。從用戶的觀點出發(fā),集線器極大簡化了USB的互連復(fù)雜性,而且以很低的價格和高易用性提供了設(shè)備的健壯性。
?
?? 集線器串接在集中器上,可讓不同性質(zhì)的設(shè)備連接在USB上,連接點稱作端口。每個集線器將一個連接點轉(zhuǎn)化成許多的連接點。并且該體系結(jié)構(gòu)支持多個集線器的連接。
??? 每個集線器的上游端口向主機方向進行連接。每個集線器的下游端口允許連接另外的集線器或功能部件,集線器可檢測每個下游端口的設(shè)備的安裝或拆卸,并可對下游端口的設(shè)備分配能源,每個下游端口都具有獨立的能力,不論高速或低速設(shè)備均可連接。集線器可將低速和高速端口的信號分開。
??? 一個集線器包括兩部分:集線控制器(Controller)和集線放大器(Repeater)。集線放大器是一種在上游端口和下游端口之間的協(xié)議控制開關(guān)。而且硬件上支持復(fù)位、掛起、喚醒的信號。集線控制器提供了接口寄存器用于與主機之間的通信、集線器允許主機對其特定狀態(tài)和控制命令進行設(shè)置,并監(jiān)視和控制其端口。
功能部件
??? 功能部件是一種通過總線進行發(fā)送接收數(shù)據(jù)和控制信息的USB設(shè)備,通過一根電纜連接在集線器的某個端口上,功能設(shè)備一般是一種相互無關(guān)的外設(shè)。然而一個物理單元中可以有多個功能部件和一個內(nèi)置集線器,并利用一根USB電纜,這通常被稱為復(fù)合設(shè)備,即一個集線器連向主機,并有一個或多個不可拆卸的USB設(shè)備連在其上。
??? 每個功能設(shè)備都包含設(shè)置信息,來描述該設(shè)備的性能和所需資源。主機要在功能部件
圖4 –4? 臺式機環(huán)境下的 集線器
使用前對其進行設(shè)置。設(shè)置信息包括USB帶寬分配,選擇設(shè)備的設(shè)置信息等。
??? 下機列舉了一些功能部件:
??? ?定位設(shè)備:如鼠標或光筆;
??? ?輸入設(shè)備:如鍵盤;
??? ?電信適配器:如ISDN。
USB主機:硬件和軟件
??? USB的主機通過主機控制器與USB設(shè)備進行交互。主機功能如下:
??? ?檢測USB設(shè)備的安裝和拆卸
??? ?管理在主機和USB設(shè)備之間的控制流;
??? ?管理在主機和USB設(shè)備之間的數(shù)據(jù)流;
??? ?收集狀態(tài)和動作信息;
??? ?提供能量給連接的USB設(shè)備。
??? 主機上USB的系統(tǒng)軟件管理USB設(shè)備和主機上該設(shè)備軟件之間的相互交互,USB系統(tǒng)軟件與設(shè)備軟件間有三種相互作用方式:
??? ?設(shè)備編號和設(shè)置;
??? ?同步數(shù)據(jù)傳輸;
??? ?異步數(shù)據(jù)傳輸;
??? ?電源管理
??? ?設(shè)備和總線管理信息。
??? 只要可能,USB系統(tǒng)軟件就會使用目前的主機軟件接口來管理上述幾種方式。
體系結(jié)構(gòu)的擴充
??? USB的體系結(jié)構(gòu)包含主機控制驅(qū)動器和USB驅(qū)動器之間的接口的擴展,使多個主機控制器和主機控制驅(qū)動器的使用成為可能。
評論