<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > USB數(shù)據(jù)流的模式與管線的概念

          USB數(shù)據(jù)流的模式與管線的概念

          作者: 時(shí)間:2011-07-15 來源:網(wǎng)絡(luò) 收藏
          在USB規(guī)范標(biāo)準(zhǔn)中也定義了兩種外圍設(shè)各:①單機(jī)設(shè)備,如鼠標(biāo)等;②復(fù)合性設(shè)備,如數(shù)碼照相機(jī)和音頻處理器共享一個(gè)USB通信端口等。每個(gè)接口設(shè)各都具有“端點(diǎn)(endpoint)”地址,它是由令牌封包內(nèi)的4位字段(ENDP)所構(gòu)成的。而主機(jī)與端點(diǎn)的通信,是經(jīng)過“虛擬管線(virtual plpe)”所完成的。而一旦虛擬管線建立好之后,每個(gè)端點(diǎn)就會傳回“描述(descriptor)”此設(shè)備的相關(guān)信息(即描述符)給主機(jī)。這種“描述”信息內(nèi)含了:群組特性、傳輸類別、最大封包大小與帶寬等關(guān)于此外圍設(shè)備的重要信息。目前USB的數(shù)據(jù)傳輸類別有4種類型:控制、中斷(interrupt)、批量(bulk)與等時(shí)(1-sochronous)。稍后的章節(jié)中,將會對傳輸類型與描述符做更深人的說明。

          USB對于與設(shè)各之間的通信提供了特殊的協(xié)議。雖然USB系統(tǒng)的總線是呈階梯式星形的結(jié)構(gòu),但實(shí)際USB主機(jī)與設(shè)備的連接方式卻是如圖1所示的一對一形式,用戶稱之為USB設(shè)各的邏輯連接;而數(shù)據(jù)流的模式則是以這些邏輯連接為基本的架構(gòu)。

            圖1 USB設(shè)備的邏輯連接   

          對于USB的通信,用戶可以將其視為一種虛擬,如圖2所示。在整個(gè)USB的通信中包含了一個(gè)大的虛擬管線(12 Mbps)以及高達(dá)127個(gè)小的虛擬管線,而每一個(gè)小的虛擬管線可比擬為USB的設(shè)各。這是由于在USB令牌封包中都含有7個(gè)用來尋址的位(位于令牌封包的地址數(shù)據(jù)域ADDR),因此最多可尋址到128個(gè)設(shè)各。但是由于地址0是預(yù)設(shè)地址,且用來指定給所有剛連上的設(shè)各,這也就是為什么USB總線上最多能連接到127個(gè)設(shè)備的原因。

            圖2 虛擬   

          每一個(gè)連接到設(shè)備的小虛擬管線又可再細(xì)分為許多的微虛擬管線。這些微虛擬管線可比擬為端點(diǎn)(endpoint)。由于在令牌封包中,包含了4個(gè)位的端點(diǎn)地址(位于端點(diǎn)數(shù)據(jù)域,ENDP)以及一個(gè)位于端點(diǎn)描述符中的輸人/輸出方向(IN/OUT)位,所以在一個(gè)單獨(dú)的小虛擬管線內(nèi)最多可再分割成16組微虛擬管線(端點(diǎn)),也就是可對16個(gè)輸人/輸出的端點(diǎn)(共32個(gè)端點(diǎn))尋址,并可將USB的令牌封包中定義為IN(設(shè)備至主機(jī))或OUT(主機(jī)至設(shè)備)兩類型令牌封包。如果設(shè)備收到了一個(gè)IN令牌封包,它將會傳送數(shù)據(jù)給主機(jī);反之如果收到了一個(gè)OUT令牌封包,則它將會從主機(jī)接收到數(shù)據(jù)。當(dāng)然,如圖2所示的架構(gòu)是一種“虛擬”的,用戶需要有一點(diǎn)想像的空間   這種端點(diǎn)(或微虛擬管線)的概念非常重要,對于全速或高速的設(shè)備而言,更是這樣。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();