• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            usb2.0(usb2.0傳輸速度)

            更新時間:2023-03-02 20:18:09 閱讀: 評論:0

            一、USB體系簡介

            USB 是一種支持熱插拔的高速串行傳輸總線,它使用差分信號來傳輸數(shù)據(jù),最高速度可達480Mb/S。USB 支持“總線供電”和“自供電”兩種供電模式。在總線供電模式下,設(shè)備最多可以獲得500mA 的電流。USB2.0 被設(shè)計成為向下兼容的模式,當(dāng)有全速(USB 1.1)或者低速(USB 1.0)設(shè)備連接到高速(USB 2.0)主機時,主機可以通過分離傳輸來支持它們。一條USB 總線上,可達到的最高傳輸速度等級由該總線上最慢的“設(shè)備”決定,該設(shè)備包括主機、HUB 以及USB 功能設(shè)備。

            USB 體系包括“主機”、“設(shè)備”以及“物理連接”三個部分。其中主機是一個提供USB接口及接口管理能力的硬件、軟件及固件的復(fù)合體,可以是PC,也可以是OTG 設(shè)備。一個USB 系統(tǒng)中僅有一個USB 主機;設(shè)備包括USB 功能設(shè)備和USB HUB,最多支持127 個設(shè)備;物理連接即指的是USB 的傳輸線。在USB 2.0 系統(tǒng)中,要求使用屏蔽的雙絞線。

            一個USB HOST 最多可以同時支持128 個地址,地址0 作為默認(rèn)地址,只在設(shè)備枚舉期間臨時使用,而不能被分配給任何一個設(shè)備,因此一個USB HOST 最多可以同時支持127 個地址,如果一個設(shè)備只占用一個地址,那么可最多支持127 個USB 設(shè)備。在實際的USB 體系中,如果要連接127 個USB設(shè)備,必須要使用USB HUB,而USB HUB 也是需要占用地址的,所以實際可支持的USB 功能設(shè)備的數(shù)量將小于127。

            USB 體系采用分層的星型拓?fù)鋪磉B接所有USB 設(shè)備,如下圖所示:

            以HOST-ROOT HUB為起點, 最多支持7 層(Tier),也就是說任何一個USB 系統(tǒng)中最多可以允許5個USB HUB 級聯(lián)。一個復(fù)合設(shè)備(Compound Device)將同時占據(jù)兩層或更多的層。

            ROOT HUB 是一個特殊的USB HUB,它集成在主機控制器里,不占用地址。ROOT HUB 不但實現(xiàn)了普通USB HUB 的功能,還包括其他一些功能,具體在增強型主機控制器的規(guī)范中有詳細(xì)的介紹。“復(fù)合設(shè)備(Compound Device)”可以占用多個地址。所謂復(fù)合設(shè)備其實就是把多個功能設(shè)備通過內(nèi)置的USB HUB 組合而成的設(shè)備,比如帶錄音話筒的USB 攝像頭等。

            USB 采用輪詢的廣播機制傳輸數(shù)據(jù),所有的傳輸都由主機發(fā)起,任何時刻整個USB 體系內(nèi)僅允許一個數(shù)據(jù)包的傳輸,即不同物理傳輸線上看到的數(shù)據(jù)包都是同一被廣播的數(shù)據(jù)包。

            USB 采用“令牌包”-“數(shù)據(jù)包”-“握手包”的傳輸機制,在令牌包中指定數(shù)據(jù)包去向或者來源的設(shè)備地址和端點(Endpoint),從而保證了只有一個設(shè)備對被廣播的數(shù)據(jù)包/令牌包作出響應(yīng)。握手包表示了傳輸?shù)某晒εc否。

            數(shù)據(jù)包:USB 總線上數(shù)據(jù)傳輸?shù)淖钚挝唬⊿YNC、數(shù)據(jù)及EOP 三個部分。其中數(shù)據(jù)的格式針對不同的包有不同的格式。但都以8 位的PID 開始。PID 指定了數(shù)據(jù)包的類型(共16 種)。令牌包即指PID 為IN/OUT/SETUP 的包。端點(Endpoint):是USB 設(shè)備中的可以進行數(shù)據(jù)收發(fā)的最小單元,支持單向或者雙向的數(shù)據(jù)傳輸。設(shè)備支持端點的數(shù)量是有限制的,除默認(rèn)端點外低速設(shè)備最多支持2 組端點(2 個輸入,2 個輸出),高速和全速設(shè)備最多支持15 組端點。

            管道(Pipe)是主機和設(shè)備端點之間數(shù)據(jù)傳輸?shù)哪P停灿袃煞N類型的管道:無格式的流管道(Stream Pipe)和有格式的信息管道(Message Pipe)。任何USB 設(shè)備一旦上電就存在一個信息管道,即默認(rèn)的控制管道,USB 主機通過該管道來獲取設(shè)備的描述、配置、狀態(tài),并對設(shè)備進行配置。

            USB 設(shè)備連接到HOST 時,HOST 必須通過默認(rèn)的控制管道對其進行枚舉,完成獲得其設(shè)備描述、進行地址分配、獲得其配置描述、進行配置等操作方可正常使用。USB 設(shè)備的即插即用特性即依賴于此。

            枚舉:是USB 體系中一個很重要的活動,由一系列標(biāo)準(zhǔn)請求組成(若設(shè)備屬于某個子類,還包含該子類定義的特殊請求)。通過枚舉HOST 可以獲得設(shè)備的基本描述信息,如支持的USB 版本、PID、VID、設(shè)備分類(Class)、供電方式、最大消耗電流、配置數(shù)量、各種類型端點的數(shù)量及傳輸能力(最大包長度)。HOST 根據(jù)PID 和VID 加載設(shè)備驅(qū)動程序,并對設(shè)備進行合適的配置。只有經(jīng)過枚舉的設(shè)備才能正常使用。對于總線供電設(shè)備,在枚舉完成前最多可從總線獲取100mA 的電流。

            USB 體系定義了四種類型的傳輸,它們是:

            控制傳輸:主要用于在設(shè)備連接時對設(shè)備進行枚舉以及其他因設(shè)備而已的特定操作。中斷傳輸:用于對延遲要求嚴(yán)格、小量數(shù)據(jù)的可靠傳輸,如鍵盤、游戲手柄等。批量傳輸:用于對延遲要求寬松,大量數(shù)據(jù)的可靠傳輸,如U 盤等。同步傳輸:用于對可靠性要求不高的實時數(shù)據(jù)傳輸,如攝像頭、USB 音響等。

            注意:中斷傳輸并不意味這傳輸過程中,設(shè)備會先中斷HOST,繼而通知HOST 啟動傳輸。中斷傳輸也是HOST 發(fā)起的傳輸,采用輪詢的方式詢問設(shè)備是否有數(shù)據(jù)發(fā)送,若有則傳輸數(shù)據(jù),否則NAK 主機。

            不同的傳輸類型在物理上并沒有太大的區(qū)別,只是在傳輸機制、主機安排傳輸任務(wù)、可占用USB 帶寬的限制以及最大包長度有一定的差異。

            USB 設(shè)備通過管道和HOST 通信,在默認(rèn)控制管道上接受并處理以下三種類型的請求:

            標(biāo)準(zhǔn)請求:一共有11 個標(biāo)準(zhǔn)請求,如得到設(shè)備描述、設(shè)置地址、得到配置描述等。所有USB 設(shè)備均應(yīng)支持這些請求。HOST 通過標(biāo)準(zhǔn)請求來識別和配置設(shè)備。類(class)請求:USB 還定義了若干個子類,如HUB 類、大容量存儲器類等。不同的類又定義了若干類請求,該類設(shè)備應(yīng)該支持這些類請求。設(shè)備所屬類在設(shè)備描述符中可以得到。廠商請求:這部分請求并不是USB 規(guī)范定義的,而是設(shè)備生產(chǎn)商為了實現(xiàn)一定的功能而自己定義的請求。

            USB HUB 提供了一種低成本、低復(fù)雜度的USB 接口擴展方法。HUB 的上行PORT 面向HOST,下行PORT 面向設(shè)備(HUB 或功能設(shè)備)。在下行PORT 上,HUB 提供了設(shè)備連接檢測和設(shè)備移除檢測的能力,并給各下行PORT 供電。HUB 可以單獨使能各下行PORT,不同PORT 可以工作在不同的速度等級(高速/全速/低速)。

            HUB 由HUB 重發(fā)器(HUB Repeater)、轉(zhuǎn)發(fā)器(Transaction Translator)以及HUB 控制器(HUB Controller)三部分組成。HUB Repeater 是上行PORT 和下行PORT 之間的一個協(xié)議控制的開關(guān),它負(fù)責(zé)高速數(shù)據(jù)包的重生與分發(fā)。HUB 控制器負(fù)責(zé)和HOST的通信,HOST通過HUB 類請求和HUB 控制器通訊,獲得關(guān)于HUB 本身和下行PORT 的HUB 描述符,進行HUB 和下行PORT 的監(jiān)控和管理。轉(zhuǎn)發(fā)器提供了從高速和全速/低速通訊的轉(zhuǎn)換能力,通過HUB 可以在高速HOST 和全速/低速設(shè)備之間進行匹配。HUB 在硬件上支持Ret、Resume、Suspend。

            重生與分發(fā):指的是HUB Repeater 需要識別從上行(下行)PORT 上接收到的數(shù)據(jù),并分發(fā)到下行(上行)PORT。所謂分發(fā)主要是指從上行PORT 接收到的數(shù)據(jù)包需要向所有使能的高速下行PORT發(fā)送,即廣播。

            USB HOST 在USB 體系中負(fù)責(zé)設(shè)備連接/移除的檢測、HOST 和設(shè)備之間控制流和數(shù)據(jù)流的管理、傳輸狀態(tài)的收集、總線電源的供給。

            二、SB數(shù)據(jù)流模型

            USB 體系在實現(xiàn)時采用分層的結(jié)構(gòu),如下圖所示:

            在HSOT 端,應(yīng)用軟件(Client SW)不能直接訪問USB 總線,而必須通過USB系統(tǒng)軟件和USB主機控制器來訪問USB 總線,在USB總線上和USB 設(shè)備進行通訊。從邏輯上可以分為功能層、設(shè)備層和總線接口層三個層次。其中功能層完成功能級的描述、定義和行為;設(shè)備級則完成從功能級到傳輸級的轉(zhuǎn)換,把一次功能級的行為轉(zhuǎn)換為一次一次的基本傳輸;USB 總線接口層則處理總線上的Bit 流,完成數(shù)據(jù)傳輸?shù)奈锢韺訉崿F(xiàn)和總線管理。途中黑色箭頭代表真實的數(shù)據(jù)流,灰色箭頭代表邏輯上的通訊。

            物理上,USB 設(shè)備通過分層的星型總線連接到HOST,但在邏輯上HUB 是透明的,各USB 設(shè)備和HOST 直接連接,和HOST 上的應(yīng)用軟件形成一對一的關(guān)系。如下圖所示:

            各應(yīng)用軟件-功能設(shè)備對之間的通訊相互獨立,應(yīng)用軟件通過USB 設(shè)備驅(qū)動程序(USBD)發(fā)起IRQ 請求,請求數(shù)據(jù)傳輸。主機控制器驅(qū)動程序(HCD)接收IRQ 請求,并解析成為USB傳輸和傳輸事務(wù)(Transaction),并對USB 系統(tǒng)中的所有傳輸事務(wù)進行任務(wù)排定(因為可能同時有多個應(yīng)用軟件發(fā)起IRQ 請求)。主機控制器(Host Controller)執(zhí)行排定的傳輸任務(wù),在同一條共享的USB 總線上進行數(shù)據(jù)包的傳輸。如下圖所示

            USB 系統(tǒng)中數(shù)據(jù)的傳輸,宏觀的看來是在HOST 和USB 功能設(shè)備之間進行;微觀的看是在應(yīng)用軟件的Buffer 和USB 功能設(shè)備的端點之間進行。一般來說端點都有Buffer,可以認(rèn)為USB通訊就是應(yīng)用軟件Buffer 和設(shè)備端點Buffer之間的數(shù)據(jù)交換,交換的通道稱為管道。應(yīng)用軟件通過和設(shè)備之間的數(shù)據(jù)交換來完成設(shè)備的控制和數(shù)據(jù)傳輸。通常需要多個管道來完成數(shù)據(jù)交換,因為同一管道只支持一種類型的數(shù)據(jù)傳輸。用在一起來對設(shè)備進行控制的若干管道稱為設(shè)備的接口,這就是端點、管道和接口的關(guān)系。

            一個USB 設(shè)備可以包括若干個端點,不同的端點以端點編號和方向區(qū)分。不同端點可以支持不同的傳輸類型、訪問間隔以及最大數(shù)據(jù)包大小。除端點0 外,所有的端點只支持一個方向的數(shù)據(jù)傳輸。端點0 是一個特殊的端點,它支持雙向的控制傳輸。管道和端點關(guān)聯(lián),和關(guān)聯(lián)的端點有相同的屬性,如支持的傳輸類型、最大包長度、傳輸方向等。

            四種傳輸類型:

            1)控制傳輸

            控制傳輸是一種可靠的雙向傳輸,一次控制傳輸可分為三個階段。第一階段為從HOST 到Device 的SETUP 事務(wù)傳輸,這個階段指定了此次控制傳輸?shù)恼埱箢愋停坏诙A段為數(shù)據(jù)階段,也有些請求沒有數(shù)據(jù)階段;第三階段為狀態(tài)階段,通過一次IN/OUT 傳輸表明請求是否成功完成。

            控制傳輸通過控制管道在應(yīng)用軟件和Device 的控制端點之間進行,控制傳輸過程中傳輸?shù)臄?shù)據(jù)是有格式定義的,USB 設(shè)備或主機可根據(jù)格式定義解析獲得的數(shù)據(jù)含義。其他三種傳輸類型都沒有格式定義。

            控制傳輸對于最大包長度有固定的要求。對于高速設(shè)備該值為64Byte;對于低速設(shè)備該值為8;全速設(shè)備可以是8 或16 或32 或64。

            最大包長度表征了一個端點單次接收/發(fā)送數(shù)據(jù)的能力,實際上反應(yīng)的是該端點對應(yīng)的Buffer 的大小。Buffer 越大,單次可接收/發(fā)送的數(shù)據(jù)包越大,反之亦反。當(dāng)通過一個端點進行數(shù)據(jù)傳輸時,若數(shù)據(jù)的大小超過該端點的最大包長度時,需要將數(shù)據(jù)分成若干個數(shù)據(jù)包傳輸,并且要求除最后一個包外,所有的包長度均等于該最大包長度。這也就是說如果一個端點收到/發(fā)送了一個長度小于最大包長度的包,即意味著數(shù)據(jù)傳輸結(jié)束。

            控制傳輸在訪問總線時也受到一些限制,如:

            高速端點的控制傳輸不能占用超過20%的微幀,全速和低速的則不能超過10%。在一幀內(nèi)如果有多余的未用時間,并且沒有同步和中斷傳輸,可以用來進行控制傳輸。

            2)中斷傳輸

            中斷傳輸是一種輪詢的傳輸方式,是一種單向的傳輸,HOST通過固定的間隔對中斷端點進行查詢,若有數(shù)據(jù)傳輸或可以接收數(shù)據(jù)則返回數(shù)據(jù)或發(fā)送數(shù)據(jù),否則返回NAK,表示尚未準(zhǔn)備好。

            中斷傳輸?shù)难舆t有保證,但并非實時傳輸,它是一種延遲有限的可靠傳輸,支持錯誤重傳。

            對于高速/全速/低速端點,最大包長度分別可以達到1024/64/8 Bytes。

            高速中斷傳輸不得占用超過80%的微幀時間,全速和低速不得超過90%。

            中斷端點的輪詢間隔由在端點描述符中定義,全速端點的輪詢間隔可以是1~255mS,低速端點為10~255mS,高速端點為(2interval-1)*125uS,其中interval 取1到16 之間的值。

            除高速高帶寬中斷端點外,一個微幀內(nèi)僅允許一次中斷事務(wù)傳輸,高速高帶寬端點最多可以在一個微幀內(nèi)進行三次中斷事務(wù)傳輸,傳輸高達3072 字節(jié)的數(shù)據(jù)。

            所謂單向傳輸,并不是說該傳輸只支持一個方向的傳輸,而是指在某個端點上該傳輸僅支持一個方向,或輸出,或輸入。如果需要在兩個方向上進行某種單向傳輸,需要占用兩個端點,分別配置成不同的方向,可以擁有相同的端點編號。

            3)批量傳輸

            批量傳輸是一種可靠的單向傳輸,但延遲沒有保證,它盡量利用可以利用的帶寬來完成傳輸,適合數(shù)據(jù)量比較大的傳輸。

            低速USB 設(shè)備不支持批量傳輸,高速批量端點的最大包長度為512,全速批量端點的最大包長度可以為8、16、32、64。

            批量傳輸在訪問USB 總線時,相對其他傳輸類型具有最低的優(yōu)先級,USBHOST 總是優(yōu)先安排其他類型的傳輸,當(dāng)總線帶寬有富余時才安排批量傳輸。

            高速的批量端點必須支持PING 操作,向主機報告端點的狀態(tài),NYET 表示否定應(yīng)答,沒有準(zhǔn)備好接收下一個數(shù)據(jù)包,ACK 表示肯定應(yīng)答,已經(jīng)準(zhǔn)備好接收下一個數(shù)據(jù)包。

            4)同步傳輸

            同步傳輸是一種實時的、不可靠的傳輸,不支持錯誤重發(fā)機制。只有高速和全速端點支持同步傳輸,高速同步端點的最大包長度為1024,低速的為1023。

            除高速高帶寬同步端點外,一個微幀內(nèi)僅允許一次同步事務(wù)傳輸,高速高帶寬端點最多可以在一個微幀內(nèi)進行三次同步事務(wù)傳輸,傳輸高達3072 字節(jié)的數(shù)據(jù)。

            全速同步傳輸不得占用超過80%的幀時間,高速同步傳輸不得占用超過90%的微幀時間。

            同步端點的訪問也和中斷端點一樣,有固定的時間間隔限制。

            在主機控制器和USB HUB 之間還有另外一種傳輸——分離傳輸(Split Transaction),它僅在主機控制器和HUB 之間執(zhí)行,通過分離傳輸,可以允許全速/低速設(shè)備連接到高速主機。分離傳輸對于USB 設(shè)備來說是透明的、不可見的。

            分離傳輸:顧名思義就是把一次完整的事務(wù)傳輸分成兩個事務(wù)傳輸來完成。其出發(fā)點是高速傳輸和全速/低速傳輸?shù)乃俣炔幌嗟龋绻褂靡淮瓮暾氖聞?wù)來傳輸,勢必會造成比較長的等待時間,從而降低了高速USB 總線的利用率。通過將一次傳輸分成兩此,將令牌(和數(shù)據(jù))的傳輸與響應(yīng)數(shù)據(jù)(和握手)的傳輸分開,這樣就可以在中間插入其他高速傳輸,從而提高總線的利用率。

            三、SB協(xié)議層規(guī)范

            USB 采用little edian 字節(jié)順序,在總線上先傳輸一個字節(jié)的最低有效位,最后傳輸最高有效位,采用NRZI 編碼,若遇到連續(xù)的6 個1 要求進行為填充,即插入一個0。

            所有的USB 包都由SYNC 開始,高速包的SYNC 寬度為32bit,全速/低速包的SYNC段度為8bit。實際接收到的SYNC 產(chǎn)度由于USB HUB 的關(guān)系,可能會小于該值。

            USB 數(shù)據(jù)包的格式

            PID 表征了數(shù)據(jù)包的類型,分為令牌(Token)、數(shù)據(jù)(Data)、握手(Handshacke)以及特殊包4 大類,共16 種類型的PID。具體定義見英文協(xié)議第196 頁。

            對于令牌包來說,PID 之后是7 位的地址和4 位的端點號。令牌包沒有數(shù)據(jù)域,以5 位的CRC 校驗和結(jié)束。SOF 是一類特殊的令牌包,PID 后跟的是11 位的幀編號。

            對于數(shù)據(jù)包來說,PID 之后直接跟數(shù)據(jù)域,數(shù)據(jù)域的長度為N 字節(jié),數(shù)據(jù)域后以16 位的CRC 校驗和結(jié)束。

            握手包僅有PID 域,沒有數(shù)據(jù)也沒有校驗和。

            分離傳輸會用到一類特殊的包,Start-Split 和Complete-Split 包,格式如下:

            在Start-Split 和Complete-Split 包中主要指定了此次分離傳輸所在的HUB 的地址和下行端口編號以及端點類型(控制、中斷、批量、同步)。以及此次傳輸中數(shù)據(jù)包在整個數(shù)據(jù)中的位置(第一個包、中間的包、末尾的包)。

            握手包包括ACK,NAK,STALL以及NYET 四種,其中ACK表示肯定的應(yīng)答,成功的數(shù)據(jù)傳輸;NAK 表示否定的應(yīng)答,失敗的數(shù)據(jù)傳輸,要求重新傳輸;STALL 表示功能錯誤或端點被設(shè)置了STALL 屬性;NYET 表示尚未準(zhǔn)備好,要求等待。

            數(shù)據(jù)在USB 總線上的傳輸以包為單位,包只能在幀內(nèi)傳輸。高速USB 總線的幀周期為125uS,全速以及低速USB 總線的幀周期為1mS。幀的起始由一個特定的包(SOF 包)表示,幀尾為EOF。EOF 不是一個包,而是一種電平狀態(tài),EOF 期間不允許有數(shù)據(jù)傳輸。

            注意:雖然高速USB 總線和全速/低速USB 總線的幀周期不一樣,當(dāng)時SOF 包中幀編號的增加速度是一樣的,因為在高速USB 系統(tǒng)中,SOF 包中幀編號實際上取得是計數(shù)器的高11 位,最低三位作為微幀編號沒有使用,因此其幀編號的增加周期也為1mS。

            事務(wù)傳輸(Transaction)的流程

            1)批量事務(wù)傳輸

            圖中一個方框表示一個Packet,灰色的包表示主機發(fā)出的包,白色的包表示Device 發(fā)出的包。批量傳輸是可靠的傳輸,需要握手包來表明傳輸?shù)慕Y(jié)果。若數(shù)據(jù)量比較大,將采用多次批量事務(wù)傳輸來完成全部數(shù)據(jù)的傳輸,傳輸過程中數(shù)據(jù)包的PID 按照DATA0-DATA1-DATA0-…的方式翻轉(zhuǎn),以保證發(fā)送端和接收端的同步。USB 允許連續(xù)3 次以下的傳輸錯誤,會重試該傳輸,若成功則將錯誤次數(shù)計數(shù)器清零,否則累加該計數(shù)器。超過三次后,HOST 認(rèn)為該端點功能錯誤(STALL),放棄該端點的傳輸任務(wù)。

            一次批量傳輸(Transfer)由1 次到多次批量事務(wù)傳輸(Transaction)組成。

            翻轉(zhuǎn)同步:發(fā)送端按照DATA0-DATA1-DATA0-…的順序發(fā)送數(shù)據(jù)包,只有成功的事務(wù)傳輸才會導(dǎo)致PID 翻轉(zhuǎn),也就是說發(fā)送段只有在接收到ACK 后才會翻轉(zhuǎn)PID,發(fā)送下一個數(shù)據(jù)包,否則會重試本次事務(wù)傳輸。同樣,若在接收端發(fā)現(xiàn)接收到到的數(shù)據(jù)包不是按照此順序翻轉(zhuǎn)的,比如連續(xù)收到兩個DATA0,那么接收端認(rèn)為第二個DATA0 是前一個DATA0 的重傳。

            2)控制傳輸(Transaction)

            一次控制傳輸分為三(或兩個)個階段:建立(Setup)、數(shù)據(jù)(DATA)(可能沒有)以及狀態(tài)(Status)。每個階段都由一次或多次(數(shù)據(jù)階段)事務(wù)傳輸組成(Transaction)。

            左圖為建立階段的事務(wù)傳輸流程圖。可以看出:與批量傳輸相比,在流程上并沒有多大區(qū)別,區(qū)別只在于該事務(wù)傳輸發(fā)生的端點不一樣、支持的最大包長度不一樣、優(yōu)先級不一樣等這樣一些對用戶來說透明的東西。

            建立階段過后,可能會有數(shù)據(jù)階段,這個階段將會通過一次或多次控制傳輸事務(wù),完成數(shù)據(jù)的傳輸。同樣也會采用PID 翻轉(zhuǎn)的機制。建立階段,Device 只能返回ACK 包,或者不返回任何包。

            最后是狀態(tài)階段,通過一次方向與前一次相反的控制事務(wù)傳輸來表明傳輸?shù)某晒εc否。如果成功會返回一個長度為0 的數(shù)據(jù)包,否則返回NAK 或STALL。下圖為整個控制傳輸?shù)氖疽鈭D:

            3)中斷傳輸

            中斷傳輸在流程上除不支持PING 之外,其他的跟批量傳輸是一樣的。他們之間的區(qū)別也僅在于事務(wù)傳輸發(fā)生的端點不一樣、支持的最大包長度不一樣、優(yōu)先級不一樣等這樣一些對用戶來說透明的東西。

            主機在排定中斷傳輸任務(wù)時,會根據(jù)對應(yīng)中斷端點描述符中指定的查詢間隔發(fā)起中斷傳輸。中斷傳輸有較高的優(yōu)先級,僅次于同步傳輸。

            同樣中斷傳輸也采用PID 翻轉(zhuǎn)的機制來保證收發(fā)端數(shù)據(jù)同步。下圖為中斷傳輸?shù)牧鞒虉D。

            4)同步傳輸

            同步傳輸是不可靠的傳輸,所以它沒有握手包,也不支持PID 翻轉(zhuǎn)。主機在排定事務(wù)傳輸時,同步傳輸有最高的優(yōu)先級。

            USB 總線上的情形是怎樣的?

            包是USB 總線是數(shù)據(jù)傳輸?shù)淖钚挝唬荒鼙淮驍嗷蚋蓴_,否則會引發(fā)錯誤。若干個數(shù)據(jù)包組成一次事務(wù)傳輸,一次事務(wù)傳輸也不能打斷,屬于一次事務(wù)傳輸?shù)膸讉€包必須連續(xù),不能跨幀完成。一次傳輸由一次到多次事務(wù)傳輸構(gòu)成,可以跨幀完成。

            四、SB框架

            在USB 框架中,規(guī)范主要定義了USB 設(shè)備的各種狀態(tài)、常用操作、USB 設(shè)備請求、描述符、設(shè)備類等。

            下圖為USB 設(shè)備的狀態(tài)轉(zhuǎn)移圖:

            這里重點介紹下枚舉的過程。當(dāng)設(shè)備連接到主機時,按照以下順序進行枚舉:

            1. 連接了設(shè)備的HUB 在HOST 查詢其狀態(tài)改變端點時返回對應(yīng)的bitmap,告知HOST 某個PORT 狀態(tài)發(fā)生了改變。2. 主機向HUB 查詢該PORT 的狀態(tài),得知有設(shè)備連接,并知道了該設(shè)備的基本特性。3. 主機等待(至少100mS)設(shè)備上電穩(wěn)定,然后向HUB 發(fā)送請求,復(fù)位并使能該PORT。4. HUB 執(zhí)行PORT 復(fù)位操作,復(fù)位完成后該PORT 就使能了。現(xiàn)在設(shè)備進入到defalut狀態(tài),可以從Vbus 獲取不超過100mA 的電流。主機可以通過0 地址與其通訊。5. 主機通過0 地址向該設(shè)備發(fā)送get_device_descriptor 標(biāo)準(zhǔn)請求,獲取設(shè)備的描述符。6. 主機再次向HUB 發(fā)送請求,復(fù)位該PORT。7. 主機通過標(biāo)準(zhǔn)請求t_address 給設(shè)備分配地址。8. 主機通過新地址向設(shè)備發(fā)送get_device_descriptor 標(biāo)準(zhǔn)請求,獲取設(shè)備的描述符。9. 主機通過新地址向設(shè)備發(fā)送其他get_configuration 請求,獲取設(shè)備的配置描述符。10. 根據(jù)配置信息,主機選擇合適配置,通過t_configuration 請求對設(shè)備而進行配置。這時設(shè)備方可正常使用。

            USB 設(shè)備的常用操作包括:設(shè)備連接、設(shè)備移除、設(shè)備配置、地址分配、數(shù)據(jù)傳輸、設(shè)備掛起、設(shè)備喚醒等。

            USB 的請求包括標(biāo)準(zhǔn)請求、類請求以及廠商請求三類。所有的請求都通過默認(rèn)管道發(fā)送,按照控制傳輸?shù)娜齻€階段進行。首先HOST 通過一次控制事務(wù)傳輸向Device 發(fā)送一個8 字節(jié)的Setup 包,這個包說明了請求的具體信息,如請求類型、數(shù)據(jù)傳輸方向、接收目標(biāo)(Device/Interface/Endpoint 等)。具體定義參考USB2.0 Spec p248。

            USB 標(biāo)準(zhǔn)請求共包括11 個請求, 如清除特性( Clear_Feature )、得到配置(Get_Configuration)、得到描述(Get_Descriptor)、設(shè)置地址(Set_Address)等。具體參考USB 2.0 Spec p250

            5 USB HUB規(guī)范

            這一章描述了USB HUB 的架構(gòu),主要從HUB Repeater、HUB Controller 以及Transaction Translator 三個方面展開。另外還包括USB HUB 類的請求及描述符。

            從功能上來說,HUB 必須支持連接行為、電源管理、設(shè)備連接/移除檢測、總線錯誤檢測和恢復(fù)、高/全/低速設(shè)備支持。

            下圖為USB HUB 的架構(gòu)圖:

            USB HUB 自身的工作速度由上行PORT 的連接速度決定。從結(jié)構(gòu)上分,USB HUB 由HUBRepeater 、HUB Controller 及Transaction Translator 三部分組成。其中HUB Repeater 主要負(fù)責(zé)連接的建立和撤銷,即完成上行PORT 和下行PORT 工作在相同速度的連接管理。同時還支持錯誤的檢測與恢復(fù)以及設(shè)備連接/移除的檢測。HUB Controller負(fù)責(zé)與HOST 通訊,完成與HOST 的交互(請求的響應(yīng))、HUB 的控制及管理。TransactionTranslator 主要負(fù)責(zé)高速的分離傳輸,并把它們分發(fā)到連接了全/低速設(shè)備的下行PORT。Routing Logic 負(fù)責(zé)將下行PORT 連接到HUB Repeater 或者Transaction Translator(以后簡稱TT)。

            當(dāng)USB HUB 的上行PORT 連接在全速/低速時,TT 不工作,HUB Repeater 工作在全速/低速模式。當(dāng)USB HUB 的上行PORT 連接在高速時,TT 工作,HUB Repeater 工作在高速模式。

            數(shù)據(jù)的轉(zhuǎn)發(fā)

            下行方向上:USB HUB 采用廣播的方式向所有使能的、工作與上行PORT 相同速度的下行PORT 轉(zhuǎn)發(fā)來自上行PORT 的數(shù)據(jù)包。

            上行方向上:USB HUB 將在下行PORT 接收到的數(shù)據(jù)包,遞交到上行PORT,而不向其他PORT 轉(zhuǎn)發(fā)。

            喚醒信號的轉(zhuǎn)發(fā)

            喚醒信號(Resume)的轉(zhuǎn)發(fā)采用完全廣播的方式,在任何PORT 收到的喚醒信號USBHUB 都會向其他PORT 轉(zhuǎn)發(fā)。

            USB HUB的幀同步

            USB HUB 必須與HOST 保持同步,擁有和HOST 相同的幀周期,這是通過幀同步的操作來實現(xiàn)的。在USB HUB 內(nèi)有兩個計數(shù)器一個寄存器,計數(shù)器都是用USB HUB 的本地時鐘驅(qū)動的。其中一個計數(shù)器向上計數(shù),用來測量來自上行PORT 連續(xù)兩個SOF 包的時間間隔;寄存器用來存儲此時間間隔,每次SOF 包到來都會被更新;另一個計數(shù)器從測得的時間間隔開始向下計數(shù),計到0 時即認(rèn)為新的一幀開始了。然后加載寄存器中存儲的值,重新計數(shù)。

            由于USB HUB 檢測SOF 包也是需要時間的,所以實際發(fā)現(xiàn)SOF 包的時間要比該SOF 包在總線上出現(xiàn)的時間稍晚,如果不加以處理,USB HUB 內(nèi)部的幀時間會整體比總線上的幀時間推遲一些。該延遲由USB HUB 本身決定,所以對于USB HUB 來說是已經(jīng)的,為了排除此延遲,USB HUB 需要采取一定的方法來處理,如EOF 提前。即在向下計數(shù)器尚未計到0 時,提前認(rèn)為當(dāng)前幀結(jié)束。該提前量應(yīng)恰好等于USB HUB 檢測SOF 包的延遲。從而保證了在整個USB 系統(tǒng)中,所有部件的幀時間(幀頭和幀尾到來的時刻)除了在USB 傳輸線傳播帶來的傳播延遲之外都是一樣的。

            數(shù)字系統(tǒng)的時鐘抖動、計數(shù)器量化誤差都會帶來幀周期的抖動,為防止該抖動引起傳輸錯誤,USB 規(guī)范規(guī)定系統(tǒng)中所有部件引起的抖動必須在一定限制范圍內(nèi),并采取了一定的措施來預(yù)防該問題,如EOF1 和EOF2 時刻的引入。

            EOF1 和EOF2 是兩個安全時間,比實際的EOF 時間稍早。USB HUB 在轉(zhuǎn)發(fā)數(shù)據(jù)包時需要參考這兩個時間,晚于這兩個時間發(fā)送的包有可能因為抖動而產(chǎn)生EOF 期間的干擾。

            HUB Repeater

            顧名思義,HUB Repeater 將接收到數(shù)據(jù)Repeat 出去,這個repeat 是雙向的,既包括從上行PORT 到下行PORT 的repeat,又包括型下行PORT 到上行PORT 的repeat。需要用USBHUB 的本地時鐘從PORT 上接收數(shù)據(jù),然后再用本地時鐘將數(shù)據(jù)放到PORT 上去。下圖為HUB Repeater 的框圖。

            在我們的項目中,USB PHY 芯片完成了HUB Repeater 大部分的電氣層功能,如數(shù)據(jù)恢復(fù)、包檢測等。在高速連接中,USB 規(guī)范要求從上行PORT 到下行PORT 的連接在SOP(Startof Packet)到來時建立,且延遲不超過36bit time。實際實驗過程中發(fā)現(xiàn)即使USB HUB 的Repeater 延遲超過40bit time 也未導(dǎo)致功能失敗。HUB Repeater 的行為受到EOF1 和EOF2 時間的影響。

            HUB Controller

            下圖為HUB Controller 的邏輯結(jié)構(gòu)。

            圖中右上方是端點0,即默認(rèn)的控制端點,HOST 通過向該端點發(fā)送標(biāo)準(zhǔn)請求和HUB 類請求完成USB HUB的枚舉和控制。如復(fù)位某個下行PORT、使能某個下行PORT、給某個下行PORT 上電等。

            圖中左上方是一個中斷型的狀態(tài)改變端點,HOST 通過以固定的時間間隔向該端點發(fā)起IN的中斷傳輸查詢該HUB 自身和各下行PORT 的狀態(tài)是否改變。當(dāng)沒有狀態(tài)改變時,該端點返回NAK 的握手包;當(dāng)有狀態(tài)改變時返回一個反應(yīng)了HUB 自身和各下行PORT 狀態(tài)改變信息的Bitmap。每個PORT 映射到該Bitmap 中的一位,當(dāng)該PORT 的狀態(tài)有改變時,對應(yīng)的位置1,這是由USB HUB 硬件完成的。

            所謂狀態(tài)改變包括:設(shè)備連接、復(fù)位完成、設(shè)備移除、電流過流等,USB HUB 的硬件負(fù)責(zé)檢測這些事件的發(fā)生,并痛過置位反應(yīng)到Bitmap 中來。

            Transaction Translator

            TT 是USB HUB 中最復(fù)雜的一部分,這里我并不準(zhǔn)備詳細(xì)描述它,而只是從結(jié)構(gòu)和基本操作邏輯上展開介紹,更多的細(xì)節(jié)請在有必要時參考USB 2.0 Spec。

            前面已經(jīng)說過:TT 在USB HUB 中主要負(fù)責(zé)從高速到全/低速傳輸事務(wù)的轉(zhuǎn)發(fā),完成速度的匹配。從傳輸?shù)慕嵌葋碚f,主要就是完成分離事務(wù)傳輸(Split Transaction)。下圖為TT的基本結(jié)構(gòu)。

            和大部分速度匹配邏輯一樣,TT 也采用Buffer 的方式來完成速度匹配。Buffer 的一端是一個高速Handler,處理高速數(shù)據(jù)收發(fā);另一端是全速/ 低速Handler 處理全速/低速數(shù)據(jù)的收發(fā)。針對傳輸類型的不同,TT 采用多個Buffer 來緩存數(shù)據(jù)。其中同步傳輸和中斷傳輸?shù)腟tart-Split(S-Split)階段和Complete-Split(C-Split)階段分別用一個Buffer,批量傳輸和中斷傳輸?shù)腟-Split 和C-Split 不分開存儲,但是在一個TT 中至少有2 個用于批量傳輸和中斷傳輸?shù)腂uffer。

            分離傳輸僅在HOST 和HUB 之間發(fā)生,對于設(shè)備全速/低速設(shè)備來說是透明的。一個USB HUB 可以有多個TT,這在USB 協(xié)議中是允許的。

            按照處理方式的區(qū)別,TT 中的分離傳輸可以分為兩類——周期分離傳輸和非周期分離傳輸。周期分離傳輸指的是同步分離傳輸和中斷分離傳輸,非周期分離傳輸指的是批量分離傳輸和控制分離傳輸。

            同步傳輸和中斷傳輸被歸為周期傳輸是因為它們的傳輸是有周期的,HOST 以固定的間隔向同步端點和中斷端點發(fā)起傳輸。相對應(yīng)的,批量傳輸和控制傳輸沒有固定的周期。

            先來看OUT 型批量/中斷分離傳輸?shù)牧鞒蹋缦聢D所示:

            HOST 知道某個HUB 的某個下行PORT 上連接的是全速/低速設(shè)備(通過查詢HUB 的端口狀態(tài)得知)。當(dāng)HOST 要向該設(shè)備傳送數(shù)據(jù)時,它必須啟動一次OUT 型的分離傳輸。首先HOST 發(fā)送一個SSPLIT 包,表明:下面我要進行分離傳輸了。SSPLIT 包中指明了該分離傳輸所對應(yīng)的HUB 地址和PORT 編號,同時也指明了端點的類型(具體定義參考Start-Split 包的定義)。然后按照普通批量/中斷傳輸?shù)捻樞颍劝l(fā)送一個OUT/SETUP 的令牌包,然后發(fā)送一個數(shù)據(jù)包,并等待來自HUB 的握手包。如果沒問題,HUB 的TT 會在Buffer開辟一片緩存保存以上接收到的三個包后,并ACK 主機,表明已經(jīng)接收到Start-Split 階段的數(shù)據(jù)包。然后TT 根據(jù)SSPLIT 包中的信息,通過全速/低速Handler 向指定的下行PORT轉(zhuǎn)發(fā)令牌包和數(shù)據(jù)包,并接收來自設(shè)備的握手響應(yīng),同樣保存在Buffer 中,并更新此次分離傳輸?shù)臓顟B(tài)信息。

            主機在完成Start-Split 階段一段時間后,向HUB 發(fā)起Complete-Split 傳輸,查詢此次傳輸?shù)臓顟B(tài)。具體過程為,先發(fā)送一個CSPLIT 包,然后是OUT/SETUP 包,TT 根據(jù)這兩個包可以查詢到已經(jīng)存儲在Buffer 中的分離傳輸,如果查詢不到,則認(rèn)為傳輸錯誤,返回STALL握手包。如果查詢到了,但設(shè)備還沒有響應(yīng),則返回NYET 握手包,讓主機等待一段時間后重新查詢。如果傳輸已經(jīng)完成, 則TT 向HOST 轉(zhuǎn)發(fā)來自設(shè)備的握手包(STALL/ACK/NAK)。這時一次完整的分離傳輸完成。

            IN 型的批量/控制分離傳輸有相似的過程,只不過數(shù)據(jù)包的傳輸在C-Split 階段,下圖為其流程圖。

            周期型的分離傳輸基本過程和非周期的分離傳輸大致相同,但在細(xì)節(jié)上有很多不一樣的地方。如周期性的分離傳輸使用兩個Buffer 分別存放S-Split 和C-Split 階段的數(shù)據(jù),主機在安排S-Split 和C-Split 也和非周期分離傳輸有些不同,有較多的限制。

            TT 采用流水的方式處理周期型的分離傳輸,一次周期型的分離傳輸在TT 中共有四種狀態(tài):New、Pending、Ready 以及Old。一次分離傳輸依次經(jīng)歷這四種狀態(tài)。其中New 態(tài)為這次分離傳輸在TT 中建立的狀態(tài),是一個暫態(tài)、最長不能超過1 個微幀的時間;Pending為等待傳輸完成的狀態(tài),最長不能超過4 個微幀;Ready 為傳輸已經(jīng)完成,等待Host 取回結(jié)果的狀態(tài),最長不能超過2 個微幀;Old 表示傳輸已經(jīng)全部完成,TT 中該傳輸所占用的Buffer 可以重新利用。

            由于速度不匹配,在一個微幀里,最多可以在全速總線上傳輸188 字節(jié)的數(shù)據(jù),在傳輸?shù)臄?shù)據(jù)量較大的情況下,例如同步傳輸?shù)淖畲蟀L度為1023 字節(jié),如果等到整個包傳完再響應(yīng)HOST 的C-Split,不但要求TT 有更多的Buffer,并且會使HOST 浪費較多的時間在等待數(shù)據(jù)傳輸完成。因此TT 采用了如下的處理方式:

            上行方向上,即IN 型的傳輸:無論何時,只要TT 收到超過2 個字節(jié)的數(shù)據(jù),就響應(yīng)HOST 的C-Split,向HOST 發(fā)回數(shù)據(jù),并在PID 中以MDATA,DATA1/0 表明還有沒有未傳完的數(shù)據(jù)。如果還有數(shù)據(jù),則以MDATA 發(fā)送,否則以DATA1/0 發(fā)送。HOST 在收到MDATA后,應(yīng)繼續(xù)在下一個微幀里發(fā)起C-Split 傳輸,向HUB 請求數(shù)據(jù),知道收到一個DATA0/1的數(shù)據(jù)包。

            下行方向上,即OUT 型的傳輸:HOST 把一個大的數(shù)據(jù)包拆成最大188 字節(jié)的若干個小包,在連續(xù)的多個微幀里用S-Split 向TT 發(fā)送數(shù)據(jù)。

            如下圖所示:

            OUT 型中斷分離傳輸

            OUT 型的同步分離傳輸

            OUT 型的同步分離傳輸只有S-Split 階段,而沒有C-Split 階段,因為同步傳輸是不可靠的傳輸,HOST不需要確認(rèn)傳輸是否成功完成。

            IN 型的同步分離傳輸

            本文發(fā)布于:2023-02-28 21:26:00,感謝您對本站的認(rèn)可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1677759489113694.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:usb2.0(usb2.0傳輸速度).doc

            本文 PDF 下載地址:usb2.0(usb2.0傳輸速度).pdf

            標(biāo)簽:傳輸速度
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 最近中文字幕完整版2019| 国产一区二区日韩在线| 在线看无码的免费网站| 国产AV无码专区亚洲AV漫画| 日韩欧美精品suv| 国产91精品调教在线播放| 草草地址线路①屁屁影院成人| 国产精品多p对白交换绿帽| 亚洲中文在线观看午夜| 4hu四虎永久免费地址ww416| 少妇人妻av毛片在线看| 办公室强奷漂亮少妇视频| 国产永久免费高清在线| 9久久伊人精品综合| 人妻伦理在线一二三区| 国产成人无码a区在线观看导航| 性一交一乱一伦一| 在线观看美女网站大全免费| 国产精品播放一区二区三区| 国产老妇伦国产熟女老妇高清 | 无码成人AV在线一区二区| jαpαnesehd熟女熟妇伦| 风韵丰满熟妇啪啪区老老熟妇 | 久久久久久99精品热久久| 精品国产在天天线2019| 午夜福利日本一区二区无码| 亚洲成片在线看一区二区| 天堂亚洲免费视频| 亚洲av永久无码精品水牛影视| 亚洲精品一区二区三区中文字幕| 亚洲AⅤ乱码一区二区三区| 免费人成在线观看网站| 国产精品亚洲综合第一页| 暖暖 在线 日本 免费 中文| 一区二区三区四区亚洲自拍 | 最近国语高清免费观看视频| 亚洲综合一区二区三区视频| 色爱av综合网国产精品| 国产盗摄xxxx视频xxxx| 天天拍夜夜添久久精品大| 无码国内精品人妻少妇|