完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>
標簽 > USB總線
USB總線是為通用串行總線,USB接口位于PS/2接口和串并口之間,允許外設在開機狀態下熱插拔,最多可串接下來127個外設,傳輸速率可達480Mb/S,它可以向低壓設備提供5伏電源,同時可以減少PC機I/O接口數量。
USB總線是為通用串行總線,USB接口位于PS/2接口和串并口之間,允許外設在開機狀態下熱插拔,最多可串接下來127個外設,傳輸速率可達480Mb/S,它可以向低壓設備提供5伏電源,同時可以減少PC機I/O接口數量。
USB總線:
通用串行總線USB(universal serial bus)是由Intel、 Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等7家世界著名的計算機和通信公司共同推出的一種新型接口標準。它基于通用連接技術,實現外設的簡單快速連接,達到方便用戶、降低成本、擴展PC連接外設范圍的目的。它可以為外設提供電源,而不像普通的使用串、并口的設備需要單獨的供電系統。另外,快速是USB技術的突出特點之一,USB的最高傳輸率可達12Mbps比串口快100倍,比并口快近10倍,而且USB還能支持多媒體UBS通用串行總線的特性阻抗是90歐姆。
USB總線是為通用串行總線,USB接口位于PS/2接口和串并口之間,允許外設在開機狀態下熱插拔,最多可串接下來127個外設,傳輸速率可達480Mb/S,它可以向低壓設備提供5伏電源,同時可以減少PC機I/O接口數量。
USB總線:
通用串行總線USB(universal serial bus)是由Intel、 Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等7家世界著名的計算機和通信公司共同推出的一種新型接口標準。它基于通用連接技術,實現外設的簡單快速連接,達到方便用戶、降低成本、擴展PC連接外設范圍的目的。它可以為外設提供電源,而不像普通的使用串、并口的設備需要單獨的供電系統。另外,快速是USB技術的突出特點之一,USB的最高傳輸率可達12Mbps比串口快100倍,比并口快近10倍,而且USB還能支持多媒體UBS通用串行總線的特性阻抗是90歐姆。
USB基本架構與總線架構
如圖1所示,一般USB系統的基本架構可以分為3個主要的部分:
·USB主機控制器/根集線器;
·USB集線器;
·USB設備。
圖1 USB基本架構
1.USB主機控制器/根集線器
所有在USB系統上溝通都是在軟件控制下由PC主機激活的。主機硬件包括USB主機控制器(USB host controller)與USB根集線器(USB root hub)兩種。
如圖2所示,在用戶計算機上的系統屬性的“設各管理器”中所顯示的“通用串行總線控制器”內,包含了下列所示的兩組項目:
·Standard Universal PCI to USB H°st Controller——USB主機控制器;
·USB Root Hub——USB根集線器。
圖2 設備管理器下的USB所包含的項目
當然,大部分的計算機僅有一組而已。若在操作系統中,未涵蓋類似的設各信息畫面,則代表此主機并未支持USB接口。用戶可能就必須另外購置USB接口的擴充卡來加以使用。而筆記本電腦則須使用PCMCIA接口的擴充卡。相同的方式,若用戶須要將原先USB 1.1主機控制器的規范升級為USB 2.0,也同樣須購置USB 2.0的擴充卡。
如圖3所示,為Windows 2000下的“設各管理器”,在“通用串行總線控制器”所包含的USB 2.0主機控制器的項目。
圖3 “設備管理器凵下的“通用串行總線控制器”所包含的項目(USB 2.0)
而其相關的功能說明如下所列:
·USB主機控制器——負責激活USB系統上的處理動作,簡而言之,就是整個USB系統的大腦。目前依USB開發的進度,有“OHC—Open Host Controllet開放式主機控制器”與“UHC—Universal Host Controller通用式主機控匍器”兩種。這兩種主機控制器的功能完全是一樣的,只是內部的運作方法稍有不同而已。在Microsoft的Windows系統上,這兩種主機控制器都被支持,用戶只須知道有這兩種控制器就行了。在新的USB 2.0規范下,則應用上述所提及的增強型主機控制器(Enhanced Host Controller Interface,EHCI)。
·USB根集線器——提供USB連接端口(俗稱USB Port)給USB設各或USB集線器來使用。一部計算機可以同時連接127個USB設各,當然不可能由主機控制器去搜尋某個設備的地址,所以USB系統運用類似計算機存儲數據的概念,有“根目錄”、“子目錄”、“次子目錄”等分層方式;而主機控制器只要對根集線器下命令,然后再由根集線器傳到正確的設各地址即可。
2.USB集線器
若僅靠USB根集線器則不可能同時連接上127個USB外圍設備,所以除了根集線器外,USB系統還支持額外的集線器。這些集線器的功用主要是提供另外的USB連接端口給用戶串接設備,有點像網絡的HUB集線器—樣;而整個USB連接設備方式,有點像金字塔型的架構。每一個連接器上,呈現了一個USB接口。
對于1.x規范集線器來說,重復地接收在PC主機與設各兩端的USB數據流,整合處理了電源管理,以及負責對各種狀態與控制信息的響應。再者,也避免讓全速的數據傳輸至低速的設各上。但是對于2.0規范集線器來說,做的事情就要比1.x規范的更多,更復雜了。當然,2.0規范集線器支持了高速的特性。此外,不僅只是重復地接收數據外,還必須負責切換低速、全速和高速的傳輸速率,以及執行其他的功能以確保總線的時間是充分有效地被運用分享。如圖4所示,是USB 2.0集線器的示意圖,其中,通過路由邏輯來連接設備至適當的路徑上。此外,傳輸翻譯器(TransactionTranslator,簡稱TT)掌握了低速/全速的數據交易,且用來激活數據交易分割的程序。其中,包含了兩種分割數據交易的動作:起始分割與完成分割。對前者而言,主機會告訴集線器來起始全速/低速的數據交易;而后者則是主機詢問集線器前面的全速/低速數據交易的結果。
圖4 USB 2.0集線器的架構
3.USB設備
USB設備,顧名思義,就是指各種類型的USB外圍設各。依照目前USB產品的規范,可以將USB設各分為以下三種類型。
·全速設備(full-speed device):如OCD、移動硬盤等設備。這些USB設備的傳輸速率最高為12 Mbps。
·低速設備(low speed device):如鍵盤、鼠標等設各。這些USB設備的傳輸速率
最高為1.5 Mbps。除了速度低于全/高速設各之外,低速設各在某些USB的支持上也受限制,例如:當主機控制器在執行高速處理動作時,低速設備是沒有反應的,此點可以避免高速的信號被送到低速的集線器上。
·高速設備(high speed device):USB 2,0所提出的新規范,也應用在如CCD、移動硬盤等設各上。這些USB設各的傳輸速率最高為480 Mbps。
在這里,有些重要的觀念要理清。通常所謂設各的定義是具備一種功能或集線器,但在此有些例外的情形存在,就是復合式(composrte)設各,它同時包含了集線器以及一個或更多的功能。基本上,主機即可視為這種復合式設備,因其集線器與其功能是具有個別實體設各的。由于每一個設各在該總線上擁有其獨立的地址,因此對這種復合
式設備,它的每一個集線器與功能都有獨立的地址。
另一個重要的設各是多元式(compound)設各。它是多功能的設各,具各了多重、獨立的接口,且僅具各一個獨立的地址,但是,這種設各卻可以根據不同的接口而擁有主機上不同的設備驅動程序。以下,做個簡單的比較。
1.復合式設備(composite device)
多組接口,每一個接口相互獨立,且都具各不同的驅動程序;但僅具各一個USB地址。例如,具備CCD與照相機功能的USB復合式設各。
2.多元式設備(compound device)
分別功能的集合,每一個具各不同的USB地址,且連接至內部的集線器。例如,將鍵盤與軌跡球整合在一個產品的包裝下。
全面認識USB的技術精髓
本文將從技術的角度來探討一下USB,有關它的實用部分請參閱本刊1999年第5、7和11期的相關文章。
一個基于計算機的USB系統可以在系統層次上被分為三個部分:即USB主機(USB Host)、USB器件(USB Device)和USB的連接。
所謂USB連接實際上是指一種USB器件和USB主機進行通信的方法。它包括:
●總線的拓撲(由一點分出多點的網絡形式):即外設和主機連接的模式;
●各層之間的關系:即組成USB系統的各個部分在完成一個特定的USB任務時,各自之間的分工與合作;
●數據流動的模式:即USB總線的數據傳輸方式;
●USB的“分時復用”:因為USB提供的是一種共享連接方式,因而為了進行數據的同步傳輸,致使USB對數據的傳輸和處理必須采用分時處理的機制。
一、USB的總線拓撲
USB的總線拓撲如圖1所示,在USB的樹形拓撲中,USB集線器(HUB)處于節點(Node)的中心位置。而每一個功能部件都和USB主機形成唯一的點對點連接,USB的HUB為USB的功能部件連接到主機提供了擴展的接口。利用這種樹形拓撲,USB總線支持最多127個USB外設同時連接到主計算機系統。
圖1 USB的總線拓撲示意圖
一個USB系統僅可以有一個主機,而為USB器件連接主機系統提供主機接口的部件被稱為USB主機控制器。USB主機控制器是一個由硬件、軟件和固件(Firmware)組成的復合體。一塊具有USB接口的主板通常集成了一個稱為ROOT HUB的部件,它為主機提供一到多個可以連接其它USB外設的USB擴展接口,我們通常在主板上見到的USB接口都是由ROOT HUB提供的。
USB器件可以分為兩種:即USB HUB和USB功能器件(Function Device)。
作為USB總線的擴展部件,USB HUB(圖2)必須滿足以下特征:
●為自己和其它外設的連接提供可擴展的下行和上行(Downstream and Upstream)端口;
●支持USB總線的電源管理機制;
●支持總線傳輸失敗的檢測和恢復;
●可以自動檢測下行端口外設的連接和摘除,并向主機報告;
●支持低速外設和高速外設的同時連接。
從以上要求出發,USB HUB在硬件上由兩部分組成:HUB應答器(HUB Repeater)和HUB控制器(HUB Controller)。HUB應答器回應主機對USB外設的設置,以及對連接到它下行端口的USB功能部件的連接和摘除(Attached and Detached)的檢測、分類,并將其端口信息傳送給主機,它也負責如“總線傳輸失敗檢測”這樣的錯誤處理;而HUB控制器則提供主機到HUB之間數據傳輸的物理機制。如同我們所熟知的大多數計算機外設一樣,USB HUB也有一個用來向主機表明自己身份的“BIOS”系統。這塊位于USB HUB上的ROM,通過USB特征字使主機可以配置這個USB HUB,并監控它的每一個端口。
USB功能器件即可以為主機系統提供某種功能的USB器件,如一個USB ISDN的調制解調器、或是一只USB接口的數字攝像機、USB的鍵盤或鼠標等。
圖2 USB HUB的結構
圖3 一個典型的USB功能器件結構框圖
USB的功能器件作為USB外設(USB Function),它必須保持和USB協議的完全兼容,并可以回應標準的USB操作。同樣,用于表明自己身份的“BIOS”系統對于USB外設也是必不可少的,這在USB外設上被稱為協議層。在物理機制上,一個USB外設可以由四部分構成(圖3):
●用于實現和USB協議兼容的SIE部分;
●用于存儲器件特征字、存儲實現外設特殊功能程序及廠家信息的協議層(ROM);
●用于實現外設功能的傳感器及對數據進行簡單處理的DSP部分;
●將外設連接到主機或USB HUB的接口部分。
根據傳輸率的不同,USB器件被分為高速和低速兩種。低速外設的標準傳輸率為1.5Mbps,而高速外設的標準傳輸率為12Mbps。所有的USB HUB都為高速外設,而功能部件則可以根據外設的具體情況設計成不同的傳輸率,如用于視頻、音頻傳輸的外設大都采用12Mbps的傳輸率,而像鍵盤、鼠標這樣的點輸入設備則設計成低速外設。由于USB的數據傳輸采用數據包的形式,因而使得連接到主機的所有的USB外設可以同時工作而互不干擾。不幸的是,所有這些USB外設必須同時分享USB協議所規定的USB帶寬(這個帶寬在USB 1.0協議中為12Mbps),雖然USB的分時處理機制可以使有限的USB帶寬在各設備之間動態地分配,但如果兩臺以上的高速外設同時使用這樣的連接方法,就會使它們都無法享用到最高的USB帶寬,從而降低了性能。這也正是Intel這樣的巨頭為什么要推出USB 2.0協議的原因(在USB 2.0協議中USB的總線帶寬一下子被提高到了480Mbps)。
用于實現外設到主機或USB HUB連接的是USB線纜(圖4)。從嚴格意義上講,USB線纜應屬于USB器件的接口部分。USB線纜由四根線組成,其中一根是電源線VBus,一根是地線GND,其余兩根是用于差動信號傳輸的數據線(D+,D-)。將數據流驅動成為差動信號來傳輸的方法可以有效提高信號的抗干擾能力(EMI)。在數據線末端設置結束電阻的思路是非常巧妙的,以至對于HUB來判別所連接的外設是高速外設或是低速外設,僅僅只需要檢測在外設被初次連接時,D+或D-上的信號是高或是低即可。因為對于USB協議來講,要求低速外設在其D-端并聯一個7.5kΩ的接地電阻,而高速外設則在D+端接同樣的電阻。在加電時,根據低速外設的D-線和高速外設的D+線所處的狀態,HUB就很容易判別器件的種類,從而為器件配置不同的信息。圖5表明了一個典型的高速外設的連接狀況。為提高數據傳輸的可靠性、系統的兼容性及標準化程度,USB協議對用于USB的線纜提出了較為嚴格的要求。如用于高速傳輸的USB線纜,其最大長度不應超過5米,而用于低速傳輸的線纜則最大長度為兩米,每根數據線的電阻應為標準的90Ω。
USB系統可以通過USB線纜為其外設提供不高于+5V、500mA的總線電源。那些完全依靠USB線纜來提供電源的器件被稱為總線驅動器件(Bus-powered device),而自帶電源的器件則被稱為自驅動外設(Self-powered device)。需要注意的是,當一個外設初次連接時,器件的配置和分類并不使用外設自帶的電源,而是通過USB線纜提供的電源來使外設處于Powered狀態。
無論在軟件還是硬件層次上,USB主機都處于USB系統的核心。主機系統(圖6)不僅包含了用于和USB外設進行通信的USB主機控制器及用于連接的USB接口(SIE),更重要的是主機系統是USB系統軟件和USB客戶軟件的載體。
總而言之,USB主機軟件系統可以分為三個部分:
●客戶軟件部分(CSW),在邏輯上和外設的功能部件部分進行數據的交換;
●USB系統軟件部分(即HCDI),在邏輯和實際中作為HCD和USBD之間的接口;
●USB主機控制器軟件部分(即HCD和USBD),用于對外設和主機的所有USB有關部分的控制和管理,包括外設的SIE部分、USB數據發送接收器(Transreceiver)部分及外設的協議層等。
圖4 USB線纜
圖5 高速外設的USB線纜和電阻的連接圖
圖6 USB主機系統的結構及各部分之間的關系
二、USB的“分時復用”和電源管理
當一個USB外設初次接入一個USB系統時,主機就會為該USB外設分配一個唯一的USB地址,并作為該USB外設的唯一標識(USB系統最多可以分配這樣的地址127個),這稱為USB的總線列舉(Bus Enumeration)。USB使用總線列舉方法在計算機系統運行期間動態檢測外設的連接和摘除,并動態地分配USB地址,從而在硬件意義上真正實現“即插即用”和“熱插拔”。
在所有的USB信道之間動態地分配帶寬是USB總線的特征之一。當一臺USB外設在連接(Attached)并配置(Configuration)以后,主機即會為該USB外設的信道分配USB帶寬;而當該USB外設從USB系統中摘除(Detached)或是處于掛起(Suspended)狀態時,則它所占用的USB帶寬即會被釋放,并為其它的USB外設所分享。這種“分時復用”(Scheduling the USB)的帶寬分配機制大大地提高了USB帶寬利用率。
作為一種先進的總線方式,USB提供了基于主機的電源管理系統。USB系統會在一臺外設長時間(這個時間一般在3.0ms以上)處于非使用狀態時自動將該設備掛起(Suspend),當一臺USB外設處于掛起狀態時,USB總線通過USB線纜為該設備僅僅提供500μA以下的電流,并把該外設所占用的USB帶寬分配給其它的USB外設。USB的電源管理機制使它支持如遠程喚醒這樣的高級特性。當一臺外設處于掛起狀態(Suspended Mode)時,必須先通過主機使該設備“喚醒”(Resume),然后才可以執行USB操作。
USB的這種智能電源管理機制,使得它特別適合如筆記本電腦之類的設備的應用。
三、USB的數據傳輸模式
圖7 幀開始數據包在USB數據傳輸中的分布
圖8 USB的通信流及信道
圖9 同步字段
圖10 PID字段
我們知道,USB總線是一種串行總線,即它的數據是一個bit一個bit來傳送的。雖然USB總線是把這些bit形式的數據打成數據包來傳送,但數據的同步也是必不可少的。USB 1.0/1.1協議規定,USB的標準脈沖時鐘為12MHz,而其總線時鐘為1ms,即每隔1ms,USB器件應為USB線纜產生一個時鐘脈沖序列。這個脈沖序列稱為幀開始數據包(SOF,如圖7所示),主機利用SOF來同步USB數據的發送和接收。由此可見,對于一個數據傳輸率為12Mbps的外設而言,它每一幀的長度為12000bit;而對于低速外設而言,它每一幀的長度僅有1500bit。USB總線并不關心外設的數據采集系統及其處理的速率,無論對于怎樣的數據產生或是接收,它總是以外設所事先規定的USB標準傳輸率來傳輸數據。這就要求外設廠商必須在數據采集或接收系統和USB協議系統(SIE)之間,設置大小合適的先入先出模式(FIFO)來對數據進行緩存。
在USB系統中,數據是通過USB線纜采用USB數據包從主機傳送到外設或是從外設傳送到主機的。在USB協議中,把基于外設的數據源和基于主機的數據接收軟件(或者方向相反)之間的數據傳輸模式稱為信道(Pipe)。信道分為流模式的信道(Stream Pipe)和消息模式的信道(Message Pipe)兩種。信道和外設所定義的數據帶寬、數據傳輸模式以及外設的功能部件的特性(如緩存大小、數據傳輸的方向等)相關。只要一個USB外設一經連接,就會在主機和外設之間建立信道。對于任何的USB外設,在它連接到一個USB系統中,并被USB主機經USB線纜加電使其處于Powered狀態時,都會在USB主機和外設的協議層(ROM)之間首先建立一個稱為Endpoint 0的消息信道,這個信道又稱為控制信道,主要用于外設的配置(Configuration)、對外設所處狀態的檢測及控制命令的傳送等。信道方式的結構使得USB系統支持一個外設擁有多個功能部件(用Endpoint 0、Endpoint 1.。.Endpoint n這樣的方法進行標識),這些功能部件可以同時地、以不同的數據傳輸方向在同一條USB線纜上進行數據傳輸而互不影響(圖8)。比如一個USB的ISDN MODEM,就可以同時擁有一個上傳的信道和一個下載的信道,并能同時很好地工作。
為實現多外設、多信道地同時工作,USB總線使用數據包的方式來傳輸數據和控制信息。
USB數據傳輸中的每一個數據包都以一個同步字段開始(圖9),它的最后兩個bit作為PID字段開始的標志。緊跟在同步字段之后的一段8bit的脈沖序列稱為PID(數據包標識字段,如圖10所示),PID字段的前四位用來標記該數據包的類型,后四位則作為對前四位的校驗。PID字段被分為標記PID(共有IN、OUT、SETUP或SOF四種)、數據PID(DATA0或DATA1)、握手PID(ACK、NAK或STALL)及特殊PID等。主機根據PID字段的類型來判斷一個數據包中所包含的數據類型,并執行相應的操作。
當一個USB外設初次連接時,USB系統會為這臺外設分配唯一的USB地址,這個地址通過地址寄存器(ADDR)來標記,以保證數據包不會傳送到別的USB外設。7bit的ADDR使得USB系統最大尋址為127臺設備(ADDR字段,如圖11所示)。由于一臺USB外設可能具有多個信道,因而在ADDR字段后會有一個附加的端點字段(Endpoint Field,簡標為ENDP)來標記不同的信道(圖12)。所有的USB外設都必須支持Endpoint 0信道,用0000來標記。對于高速設備,可以最大支持16個信道,而低速設備在Endpoint 0之外僅能有一個信道。
數據字段作為一次USB數據傳輸的中心目的,在一個USB數據包中可以包含0~1203Byte的數據(圖13)。而幀數量字段則包含在幀開始數據包中,對有的應用場合,可以用幀數量字段作為數據的同步信號。
為保證控制、塊傳送及中斷傳送中數據包的正確性,CRC校驗字段被引用到如標記、數據、幀開始(SOF)這樣的數據包中。CRC校驗(數據冗余校驗)可以給予數據以100%的正確性檢驗。
圖11 數據包的ADDR字段
圖12 端點(Endpoint)字段
圖13 USB的數據字段
《下》
本文介紹USB總線的數據傳輸模式、USB數據包的格式,以及USB外設的組成與結構等內容。
一、USB數據包的格式
在USB系統中,有四種形式的數據包--標記數據包(Token Packets)、DATA數據包(DATA Packets)、幀開始數據包(SOF Packets)和握手數據包(Handshake Packets)。
1.標記數據包由PID、ADDR、ENDP和CRC5四個字段組成(圖1)。它因為PID字段的不同而分為輸入類型(IN)、輸出類型(OUT)和設置類型(SETUP)三種。標記數據包處于每一次USB傳輸的DATA數據包前面,以指明這次USB操作的類型(PID字段標記)、操作的對象(在ADDR和ENDP字段中指明)等信息。5bit的CRC校驗位用來確保標記數據包的正確性。
2.我們已經指出,USB主機會每隔1ms在USB總線上產生一個SOF的USB幀同步信號,SOF數據包包含了這個脈沖序列的實際內容(圖2),它由SOF格式的PID字段、幀數量字段和5bit的CRC校驗碼組成。主機利用SOF數據包來同步數據的傳送和接收。
3.用于傳輸真正數據的DATA數據包(圖3),因為PID的不同可以分為DATA0和DATA1兩種。DATA0為偶數據包,DATA1為奇數據包。DATA數據包的奇偶性分類易于數據的雙流水處理,而用于控制傳輸的DATA數據包總是以DATA0來傳送數據。
4.握手數據包僅僅包含一個PID字段(圖4),ACK形式的PID表明此次USB傳輸沒有發生錯誤,數據已經成功的傳輸;而NAK形式的握手數據包則向主機表明此次USB傳輸因為CRC校驗錯誤或別的原因而失敗了,從而使得主機可以進行數據的重新傳輸;STALL形式的回應向主機報告外設此刻正處于掛起狀態而無法完成數據的傳輸。
需要指出的是,每個數據包的結束都會有兩個bit寬的EOP字段作為數據包結束的標志(圖5),EOP在差模信號中表現為D+和D-都處于“0”狀態。對于高速USB外設而言,這個脈沖寬度在160~175ns之間,而低速設備則在1.25~1.50μs之間。無論其后是否有其它的數據包,USB線纜都會在EOP字段后緊跟1bit的總線空閑位。USB主機或外設利用EOP來判斷一個數據包的結束。
圖1 標記數據包的組成
圖2 SOF數據包的格式
圖3 DATA數據包的格式
圖4 握手數據包
圖5 EOP字段在差模信號中的電壓表現
二、USB總線的數據傳輸模式
在前面我們已經提到,每一個USB信道對應著一個特定的USB傳輸模式,根據不同的需要,USB外設可以為USB信道指定不同的USB傳輸模式。USB總線支持四種數據傳輸模式:
1.控制傳輸模式(圖6),控制傳輸用于在外設初次連接時對器件進行配置;對外設的狀態進行實時檢測;對控制命令的傳送等;也可以在器件配置完成后被客戶軟件用于其它目的。Endpoint 0信道只可以采用控制傳送的方式。
2.塊傳送模式(圖7),塊傳送用于進行批量的、非實時的數據傳輸。如一臺USB掃描儀即可采用塊傳送的模式,以保證數據連續地、在硬件層次上的實時糾錯地傳送。采用塊傳送方式的信道所占用的USB帶寬,在實時帶寬分配中具有最高的優先級。
3.同步傳輸模式(圖8),同步傳輸適用于那些要求數據連續地、實時地、以固定的數據傳輸率產生、傳送并消耗的場合,如數字錄像機等。為保證數據傳輸的實時性,同步傳輸不進行數據錯誤的重試,也不在硬件層次上回應一個握手數據包,這樣有可能使數據流中存在數據錯誤的隱患。為保證在同步傳輸數據流中致命錯誤的幾率小到可以容忍的程度,而數據傳輸的延遲又不會對外設的性能造成太大的影響,廠商必須為使用同步傳輸的信道選擇一個合適的帶寬(即必須在速度和品質之間做出權衡)。
4.中斷傳輸模式(圖9),對于那些小批量的、點式、非連續的數據傳輸應用的場合,如用于人機交互的鼠標、鍵盤、游戲桿等,中斷傳輸的方式是最適合的。
圖7 塊傳送的流程
圖8 同步傳輸的流程
圖9 中斷傳輸的流程
三、USB外設的組成與結構
本文無意詳細論述USB外設(本部分所說的USB外設如無特別說明均指USB功能器件)的設計細節,而只想介紹USB功能器件的一般組成,以此來幫助讀者了解USB外設的基本軟硬件構成,以便了解USB外設的工作過程和原理。
組成外設的傳感器件和DSP因為外設的具體應用各異而有所不同。如對于一臺CMOS數字攝像機(如Creative的WebCam),它的CMOS光電耦合器及其DSP部分并不因為使用什么樣的接口方式而有所改變(如早期的電腦眼皆采用ECP的并口增強模式來進行圖像數據的傳輸,而現在幾乎都是USB接口)。因而本文的重點是闡述USB外設接口的部分,即USB Device Microcontroller(USB器件微控制器)。圖10表明了一個USB外設總線接口的詳細組成框圖。
USB總線是以差模驅動的方式來進行數據傳輸的,但在數據包發送之前,USB協議規定必須使用NRZI的編碼方式來對數據進行編碼。當然,在USB外設中,用于解碼的器件對外設來說也是必不可少的。NRZI的編碼協議其實很簡單,它采用的是逢“1”保持,逢“0”跳變的原則(圖11),而NRZI的解碼則采用相反的操作。
為保證數據流中有足夠的信號變化,USB協議規定了Bit stuffing(加填充位)的原則,即如果信號流中連續出現六位以上的數據“1”,則每隔六位,必須插入一個“0”,然后才進入NRZI編碼。圖12是一串原始數據及其加填充位后和NRZI編碼后的數據格式對比。
圖10 USB外設總線接口的詳細組成框圖
圖11 NRZI數據編碼
圖12 原始數據和加填充位后及NRZI編碼后的數據格式對比
SIE(Serial interface Engine)是USB外設最重要的硬件組成部分之一,它主要由四部分組成:
1.硬件上用來完成NRZI編/解碼和加/去填充位操作的,NRZI/Bit Buffing和NRZO/Bit Unstuffing的部分;
2.硬件上產生數據的CRC校驗碼并對數據包進行CRC校驗的CRC check & Generator部分;
3.用來將并行數據轉化成USB串行數據的并/串轉換部分(Packet Encode),將主機發送的USB數據包轉化成可以識別的并行數據的串/并轉換部分(Packet Decode);
4.檢測和產生SOP(即每個數據包的同步字段)和EOP信號的部分。
USB外設使用一片ROM來存儲關于該外設工作的一些重要信息,這被稱為USB的協議層(Protocol Layer),它不僅存儲了諸如廠家識別號、該外設所屬的類型(是HUB還是Function,是低速還是高速設備)、電源管理等常規信息,更重要的是還存儲了外設的設備類型、器件配置信息、功能部件的描述、接口信息等,其存儲方式都采用特征字(Descriptors)的方式。USB主機通過在外設的協議層和主機之間建立Endpoint 0信道、采用控制傳輸的方式對這些信息進行存取。特征字采用USB協議所規定的結構和代碼排列(關于特征字的詳細信息請參閱USB協議標準)。廠家也可以在該ROM的剩余空間中存儲特定的程序或信息,以幫助外設完成特定的工作。協議層是一臺USB外設能夠被主機正確識別和配置,并正常工作的前提。可以說,協議層是一臺USB外設的固件(Firmware)中心。
我們知道,數據采樣率因采樣精度和使用的不同場合而不同,如對于音頻應用,就可以采用22.05kHz或44.1kHz的采樣率,而這個時鐘并不和USB標準時鐘對應。因而在實際應用中,為保證采集到的數據無丟失地打包和傳送,必須在SIE和數據采集部件(對諸如音箱或打印機等外設則為數據消耗部件)之間設立FIFOs,以便對數據進行緩存。對于采用塊傳送和同步傳送的外設而言,FIFOs的作用顯得尤為重要。例如一臺采用同步傳輸的USB數字攝像機(現在市場上有很多這種類型的產品),我們假設它的CCD為400×300像素,那么為保證數據正確地壓縮、傳輸和接收,直到以后的解壓縮及處理,在動態采集中,FIFOs至少要存儲一幀圖像,即要求FIFOs有400×300=12KB的容量。
在USB外設中,用于實現和USB線纜無縫連接的USB傳輸接收部分(Transreceiver)是必不可少的,它不僅要在電氣和物理層面上實現和USB線纜的連接,而且要完成對數據包的差模驅動或分離的操作。
以上我們簡述了USB外設接口的硬件組成,那么在完成USB數據傳輸的過程中,這些硬件又是如何配合工作并和位于主機的軟硬件交互,以完成數據傳輸的呢?
前面已經提到,USB總線采用總線列舉的方法來標記和管理外設所處的狀態,當一臺USB外設初次連接到USB系統中后,通過8個步驟來完成它的初始化:
1.USB外設所連接的HUB(ROOT HUB或擴展HUB)檢測到所連接的USB外設并自動通知主機,以及它的端口狀態的變化,這時外設還處于禁止(Disabled)狀態;
2.主機通過對HUB的查詢以確認外設的連接;
3.現在,主機已經知道有一臺新的USB外設連接到了USB系統中,然后,它激活(Enabled)這個HUB的端口,并向HUB發送一個復位(Reset)該端口的命令;
4.HUB將復位信號保持10ms,為連接到該端口的外設提供100mA的總線電流,這時該外設處于Powered狀態,它的所有寄存器被清空并指向默認的地址;
5.在外設分配到唯一的USB地址以前,他的默認信道均使用主機的默認地址。然后主機通過讀取外設協議層的特征字來了解該外設的默認信道所使用的實際的最大數據有效載荷寬度(即外設在特征字中所定義的在DATA0數據包中數據字段的長度)。
6.主機分配一個唯一的USB地址給該外設,并使它處于Addressed狀態;
7.主機開始使用Endpoint 0信道讀取外設ROM中所存儲的器件配置特征字,這可能會花去幾幀的時間;
8.基于器件配置特征字,主機為該外設指定一個配置值,這時,外設即處于配置(Configured)狀態了,它所有的端點(Endpoint)這時也處于配置值所描述的狀態。從外設的角度來看,這時該外設已處于準備使用的狀態。
在一臺外設能被使用之前,它必須被配置。“配置”即主機根據外設的配置特征字來定義器件的配置寄存器,以便規定外設的所有Endpoint的工作環境。如某信道所采用的數據傳輸方式,該外設所屬的器件“基類(Class)”、“派生類(SubClass)”和C++等,從而通過基于主機的USB系統軟件或客戶軟件對外設進行控制。
當一臺USB外設配置好以后,即會進入到掛起(Suspend)狀態,直到它開始被使用。
必須指出的是,一臺USB外設一旦配置好,它的每一個特定的信道只能使用一種數據傳輸方式。Endpoint 0信道只能采用控制傳送的方式,主機通過Endpoint 0來傳送標準的USB命令,完成諸如讀取器件配置特征字、控制外設對數據的采集、處理和傳送等任務,并可以通過Endpoint 0來檢測和改變外設所處的狀態(如對外設的遠端喚醒、掛起和恢復等)。
對于一臺采用同步傳輸的數字攝像機來說,數據傳輸的過程如下:
1.應用軟件(CSW)在內存中開辟數據緩沖區,并通過標準USB命令字向外設發出數據請求(IRPs);
2.主機USB系統軟件通過對該IRPs的翻譯形成Token數據包發送到外設,這時主機進入等待狀態;
3.外設對數據包進行NRZI解碼和Bit Unstuffing操作及CRC校驗,確認后接收主機PID字段中所包含的命令并開始采集數據。
4.采集到的并行數據首先進入FIFOs,并通過并/串轉換部件形成串行脈沖;
5.根據器件配置寄存器的要求對數據進行符合條件的分割,配置數據包的PID字段等以形成原始數據包。
6.通過CRC校驗產生器對每一個數據包生成CRC校驗碼字段,SOP & EOP信號產生器為該數據包加入同步字段頭和數據包結束符;
7.數據包的NRZI編碼和Bit Stuffing操作;
8.使用收發器(Transreceiver)將數據流驅動到USB線纜上。
9.主機控制器將USB數據轉化成為普通的“純”圖像數據送到數據緩沖區以進行數據的進一步處理;如果是控制傳輸、塊傳輸或中斷傳輸方式,在數據被成功傳送后,主機還會向外設發送ACK的握手數據包作為回應。
圖13簡單描繪了非同步數據傳輸的請求和傳送過程(在同步傳輸中沒有Handshake部分)。
圖13 非同步數據傳輸的請求和傳送過程
四、結束語
至此,我們已從幾個方面較詳細地介紹了USB系統的軟硬件構成及USB的數據傳輸協議。USB可以說是開辟了計算機外設接口的新紀元。它把人們從繁雜的連線、不同的接口標準和惱人的中斷沖突中解放出來;
使“PnP”和“熱插拔”這樣的特性不再只是口號;它大大擴展了計算機可連接的外設數目;它的智能電源管理有效地降低了手持電腦的電源損耗……USB正在成為市場的熱點,越來越多的外設生產廠家將自己的產品轉向USB接口。而USB 2.0協議的推出,無疑對USB技術的發展起到了推波助瀾的作用。
在如鼠標、鍵盤、手寫板或是游戲桿等人機交互的應用場合;如掃描儀、數碼相機、移動存貯設備、數字攝像機等數據輸入應用場合,USB無疑是替代傳統串/并口的最佳接口方式,它們使得USB的優點得到了充分發揮。但對諸如視頻或音頻輸出這樣的場合,USB也真的適用嗎?我們知道,像Sound Blaster Live!這樣的聲卡正是因為它在硬件上實現了波表合成和EAX環境音效等高級特性,才使我們在幾乎小于1%的資源占用率下就能聽到“天籟之音”,同時又能在美侖美奐的3D環境中飚車。然而USB也并非萬能,例如我們看到在市場上熱賣的“USB音箱”號稱可以“省掉一塊聲卡!”。但由于USB接口并不對數據進行任何處理,因而數據處理的任務完全交給了CPU和軟件,從而這種音箱造成了驚人的資源占用率,且從聲音的表現上看也與聲卡有著天壤之別。所以說,USB并不是“包治百病”的。
USB總線自面世第一代開始,就對電氣性能的要求特別高,特別是信號完整性。隨著USB總線的不斷升級,速率也是成倍的增長,從當年USB1.0的1.5Mbps...
USB總線自面世第一代開始,就對電氣性能的要求特別高,特別是信號完整性。隨著USB總線的不斷升級,速率也是成倍的增長,從當年USB1.0的1.5Mbps...
USB設備進入正常工作狀態即是激活(ACTIVE)狀態,此時USB設備的各項功能應可以正常工作。激活狀態時USB設備的一個最基本的工作狀態。
USB TYPE-C規范里面,還規定了一種帶Emark 芯片的Cable,這種Cable的CC2上,有一個1K的下拉電阻,用來告知DFP端的CC識別芯片...
2019-07-26 標簽:USB總線Raspberry Pi樹莓派 1.0萬 0
什么是USB HOST、USB Slave和USB OTG?它們之間有什么區別?
什么是USB HOST、USB Slave和USB OTG?它們之間有什么區別? USB(通用串行總線)是一種用于連接設備的通信接口標準,它允許設備之間...
USB數據在【主機軟件】與【USB設備特定的端點】間被傳輸。【主機軟件】與【USB設備特定的端點】間的關聯叫做【pipes】。一個USB設備可以有多個管...
CH344是一款USB總線的轉接芯片,實現USB轉四個異步串口UART0/1/2/3功能,用于為計算機擴展異步串口,或者將普通的串口設備或者MCU直接升...
產品型號:USB-1603(USB2.0) 產品優點: 1、USB2.0總線,驅動支持XP/WIN7/WIN10/Linux; 2、16路模擬量16位2...
本文以光柵位移傳感器檢測系統的設計背景,詳細介紹了系統的硬件、軟件設計方法。光柵位移傳感器是進行高精度位移測量的光電轉換器,它將位移微變量轉換為多路正弦光柵信號
編輯推薦廠商產品技術軟件/工具OS/語言教程專題
電機控制 | DSP | 氮化鎵 | 功率放大器 | ChatGPT | 自動駕駛 | TI | 瑞薩電子 |
BLDC | PLC | 碳化硅 | 二極管 | OpenAI | 元宇宙 | 安森美 | ADI |
無刷電機 | FOC | IGBT | 逆變器 | 文心一言 | 5G | 英飛凌 | 羅姆 |
直流電機 | PID | MOSFET | 傳感器 | 人工智能 | 物聯網 | NXP | 賽靈思 |
步進電機 | SPWM | 充電樁 | IPM | 機器視覺 | 無人機 | 三菱電機 | ST |
伺服電機 | SVPWM | 光伏發電 | UPS | AR | 智能電網 | 國民技術 | Microchip |
開關電源 | 步進電機 | 無線充電 | LabVIEW | EMC | PLC | OLED | 單片機 |
5G | m2m | DSP | MCU | ASIC | CPU | ROM | DRAM |
NB-IoT | LoRa | Zigbee | NFC | 藍牙 | RFID | Wi-Fi | SIGFOX |
Type-C | USB | 以太網 | 仿真器 | RISC | RAM | 寄存器 | GPU |
語音識別 | 萬用表 | CPLD | 耦合 | 電路仿真 | 電容濾波 | 保護電路 | 看門狗 |
CAN | CSI | DSI | DVI | Ethernet | HDMI | I2C | RS-485 |
SDI | nas | DMA | HomeKit | 閾值電壓 | UART | 機器學習 | TensorFlow |
Arduino | BeagleBone | 樹莓派 | STM32 | MSP430 | EFM32 | ARM mbed | EDA |
示波器 | LPC | imx8 | PSoC | Altium Designer | Allegro | Mentor | Pads |
OrCAD | Cadence | AutoCAD | 華秋DFM | Keil | MATLAB | MPLAB | Quartus |
C++ | Java | Python | JavaScript | node.js | RISC-V | verilog | Tensorflow |
Android | iOS | linux | RTOS | FreeRTOS | LiteOS | RT-THread | uCOS |
DuerOS | Brillo | Windows11 | HarmonyOS |