全面認(rèn)識(shí)USB技術(shù)的精髓_第1頁(yè)
全面認(rèn)識(shí)USB技術(shù)的精髓_第2頁(yè)
全面認(rèn)識(shí)USB技術(shù)的精髓_第3頁(yè)
全面認(rèn)識(shí)USB技術(shù)的精髓_第4頁(yè)
全面認(rèn)識(shí)USB技術(shù)的精髓_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、全面認(rèn)識(shí)USB技術(shù)的精髓(一)當(dāng)Intel向業(yè)界宣布在USB 2.0協(xié)議中將USB的標(biāo)準(zhǔn)傳輸率提高到480Mbps的時(shí)候,你也許還在為USB是什么樣的東西而困惑。本文力圖從比較通俗的角度向你詳細(xì)介紹USB接口和USB協(xié)議方面的知識(shí)。 USB是Universal Serial Bus的簡(jiǎn)稱。它是一種可以同時(shí)處理計(jì)算機(jī)與具有USB接口的多種外設(shè)之間通信的電纜總線。這些連接到計(jì)算機(jī)上的外設(shè)共同分享USB的帶寬。USB的分時(shí)處理機(jī)制真正在硬件的意義上實(shí)現(xiàn)了計(jì)算機(jī)外設(shè)的即插即用。 如果留心一下當(dāng)前市場(chǎng)上的電腦外設(shè),大家會(huì)發(fā)現(xiàn)采用USB設(shè)備的產(chǎn)品正在逐漸增加。鍵盤、鼠標(biāo)、MODEM、游戲桿、音箱、掃描儀等

2、,以前插在串行、并行等外部擴(kuò)展接口上的部件,甚至一些以前要連接到電腦內(nèi)部擴(kuò)展槽上的設(shè)備,都開始以USB接口的界面出現(xiàn),USB設(shè)備的發(fā)展勢(shì)頭正如日中天。 本文將從技術(shù)的角度來(lái)探討一下USB,有關(guān)它的實(shí)用部分請(qǐng)參閱本刊1999年第5、7和11期的相關(guān)文章。 一個(gè)基于計(jì)算機(jī)的USB系統(tǒng)可以在系統(tǒng)層次上被分為三個(gè)部分:即USB主機(jī)(USB Host)、USB器件(USB Device)和USB的連接。所謂USB連接實(shí)際上是指一種USB器件和USB主機(jī)進(jìn)行通信的方法。它包括: 總線的拓?fù)?由一點(diǎn)分出多點(diǎn)的網(wǎng)絡(luò)形式):即外設(shè)和主機(jī)連接的模式;各層之間的關(guān)系:即組成USB系統(tǒng)的各個(gè)部分在完成一個(gè)特定的USB

3、任務(wù)時(shí),各自之間的分工與合作; 數(shù)據(jù)流動(dòng)的模式:即USB總線的數(shù)據(jù)傳輸方式; USB的“分時(shí)復(fù)用”:因?yàn)閁SB提供的是一種共享連接方式,因而為了進(jìn)行數(shù)據(jù)的同步傳輸,致使USB對(duì)數(shù)據(jù)的傳輸和處理必須采用分時(shí)處理的機(jī)制。 一、USB的總線拓?fù)銾SB的總線拓?fù)淙鐖D1所示,在USB的樹形拓?fù)渲?,USB集線器(HUB)處于節(jié)點(diǎn)(Node)的中心位置。而每一個(gè)功能部件都和USB主機(jī)形成唯一的點(diǎn)對(duì)點(diǎn)連接,USB的HUB為USB的功能部件連接到主機(jī)提供了擴(kuò)展的接口。利用這種樹形拓?fù)?,USB總線支持最多127個(gè)USB外設(shè)同時(shí)連接到主計(jì)算機(jī)系統(tǒng)。 圖1 USB的總線拓?fù)涫疽鈭D 一個(gè)USB系統(tǒng)僅可以有一個(gè)主機(jī),而為

4、USB器件連接主機(jī)系統(tǒng)提供主機(jī)接口的部件被稱為USB主機(jī)控制器。USB主機(jī)控制器是一個(gè)由硬件、軟件和固件(Firmware)組成的復(fù)合體。一塊具有USB接口的主板通常集成了一個(gè)稱為ROOT HUB的部件,它為主機(jī)提供一到多個(gè)可以連接其它USB外設(shè)的USB擴(kuò)展接口,我們通常在主板上見(jiàn)到的USB接口都是由ROOT HUB提供的。USB器件可以分為兩種:即USB HUB和USB功能器件(Function Device)。作為USB總線的擴(kuò)展部件,USB HUB(圖2)必須滿足以下特征: 為自己和其它外設(shè)的連接提供可擴(kuò)展的下行和上行(Downstream and Upstream)端口; 支持USB總

5、線的電源管理機(jī)制; 支持總線傳輸失敗的檢測(cè)和恢復(fù); 可以自動(dòng)檢測(cè)下行端口外設(shè)的連接和摘除,并向主機(jī)報(bào)告;支持低速外設(shè)和高速外設(shè)的同時(shí)連接。從以上要求出發(fā),USB HUB在硬件上由兩部分組成:HUB應(yīng)答器(HUB Repeater)和HUB控制器(HUB Controller)。HUB應(yīng)答器回應(yīng)主機(jī)對(duì)USB外設(shè)的設(shè)置,以及對(duì)連接到它下行端口的USB功能部件的連接和摘除(Attached and Detached)的檢測(cè)、分類,并將其端口信息傳送給主機(jī),它也負(fù)責(zé)如“總線傳輸失敗檢測(cè)”這樣的錯(cuò)誤處理;而HUB控制器則提供主機(jī)到HUB之間數(shù)據(jù)傳輸?shù)奈锢頇C(jī)制。如同我們所熟知的大多數(shù)計(jì)算機(jī)外設(shè)一樣,USB

6、 HUB也有一個(gè)用來(lái)向主機(jī)表明自己身份的“BIOS”系統(tǒng)。這塊位于USB HUB上的ROM,通過(guò)USB特征字使主機(jī)可以配置這個(gè)USB HUB,并監(jiān)控它的每一個(gè)端口。 USB功能器件即可以為主機(jī)系統(tǒng)提供某種功能的USB器件,如一個(gè)USB ISDN的調(diào)制解調(diào)器、或是一只USB接口的數(shù)字?jǐn)z像機(jī)、USB的鍵盤或鼠標(biāo)等。 圖2 USB HUB的結(jié)構(gòu) 圖3 一個(gè)典型的USB功能器件結(jié)構(gòu)框圖 USB的功能器件作為USB外設(shè)(USB Function),它必須保持和USB協(xié)議的完全兼容,并可以回應(yīng)標(biāo)準(zhǔn)的USB操作。同樣,用于表明自己身份的“BIOS”系統(tǒng)對(duì)于USB外設(shè)也是必不可少的,這在USB外設(shè)上被稱為協(xié)議

7、層。在物理機(jī)制上,一個(gè)USB外設(shè)可以由四部分構(gòu)成(圖3):用于實(shí)現(xiàn)和USB協(xié)議兼容的SIE部分; 用于存儲(chǔ)器件特征字、存儲(chǔ)實(shí)現(xiàn)外設(shè)特殊功能程序及廠家信息的協(xié)議層(ROM); 用于實(shí)現(xiàn)外設(shè)功能的傳感器及對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理的DSP部分;將外設(shè)連接到主機(jī)或USB HUB的接口部分。根據(jù)傳輸率的不同,USB器件被分為高速和低速兩種。低速外設(shè)的標(biāo)準(zhǔn)傳輸率為1.5Mbps,而高速外設(shè)的標(biāo)準(zhǔn)傳輸率為12Mbps。所有的USB HUB都為高速外設(shè),而功能部件則可以根據(jù)外設(shè)的具體情況設(shè)計(jì)成不同的傳輸率,如用于視頻、音頻傳輸?shù)耐庠O(shè)大都采用12Mbps的傳輸率,而像鍵盤、鼠標(biāo)這樣的點(diǎn)輸入設(shè)備則設(shè)計(jì)成低速外設(shè)。由于U

8、SB的數(shù)據(jù)傳輸采用數(shù)據(jù)包的形式,因而使得連接到主機(jī)的所有的USB外設(shè)可以同時(shí)工作而互不干擾。不幸的是,所有這些USB外設(shè)必須同時(shí)分享USB協(xié)議所規(guī)定的USB帶寬(這個(gè)帶寬在USB 1.0協(xié)議中為12Mbps),雖然USB的分時(shí)處理機(jī)制可以使有限的USB帶寬在各設(shè)備之間動(dòng)態(tài)地分配,但如果兩臺(tái)以上的高速外設(shè)同時(shí)使用這樣的連接方法,就會(huì)使它們都無(wú)法享用到最高的USB帶寬,從而降低了性能。這也正是Intel這樣的巨頭為什么要推出USB 2.0協(xié)議的原因(在USB 2.0協(xié)議中USB的總線帶寬一下子被提高到了480Mbps)。 用于實(shí)現(xiàn)外設(shè)到主機(jī)或USB HUB連接的是USB線纜(圖4)。從嚴(yán)格意義上講

9、,USB線纜應(yīng)屬于USB器件的接口部分。USB線纜由四根線組成,其中一根是電源線VBus,一根是地線GND,其余兩根是用于差動(dòng)信號(hào)傳輸?shù)臄?shù)據(jù)線(D+,D-)。將數(shù)據(jù)流驅(qū)動(dòng)成為差動(dòng)信號(hào)來(lái)傳輸?shù)姆椒梢杂行岣咝盘?hào)的抗干擾能力(EMI)。在數(shù)據(jù)線末端設(shè)置結(jié)束電阻的思路是非常巧妙的,以至對(duì)于HUB來(lái)判別所連接的外設(shè)是高速外設(shè)或是低速外設(shè),僅僅只需要檢測(cè)在外設(shè)被初次連接時(shí),D+或D-上的信號(hào)是高或是低即可。因?yàn)閷?duì)于USB協(xié)議來(lái)講,要求低速外設(shè)在其D-端并聯(lián)一個(gè)7.5k的接地電阻,而高速外設(shè)則在D+端接同樣的電阻。在加電時(shí),根據(jù)低速外設(shè)的D-線和高速外設(shè)的D+線所處的狀態(tài),HUB就很容易判別器件的種類,

10、從而為器件配置不同的信息。圖5表明了一個(gè)典型的高速外設(shè)的連接狀況。為提高數(shù)據(jù)傳輸?shù)目煽啃?、系統(tǒng)的兼容性及標(biāo)準(zhǔn)化程度,USB協(xié)議對(duì)用于USB的線纜提出了較為嚴(yán)格的要求。如用于高速傳輸?shù)腢SB線纜,其最大長(zhǎng)度不應(yīng)超過(guò)5米,而用于低速傳輸?shù)木€纜則最大長(zhǎng)度為兩米,每根數(shù)據(jù)線的電阻應(yīng)為標(biāo)準(zhǔn)的90。 USB系統(tǒng)可以通過(guò)USB線纜為其外設(shè)提供不高于+5V、500mA的總線電源。那些完全依靠USB線纜來(lái)提供電源的器件被稱為總線驅(qū)動(dòng)器件(Bus-powered device),而自帶電源的器件則被稱為自驅(qū)動(dòng)外設(shè)(Self-powered device)。需要注意的是,當(dāng)一個(gè)外設(shè)初次連接時(shí),器件的配置和分類并不使

11、用外設(shè)自帶的電源,而是通過(guò)USB線纜提供的電源來(lái)使外設(shè)處于Powered狀態(tài)。 無(wú)論在軟件還是硬件層次上,USB主機(jī)都處于USB系統(tǒng)的核心。主機(jī)系統(tǒng)(圖6)不僅包含了用于和USB外設(shè)進(jìn)行通信的USB主機(jī)控制器及用于連接的USB接口(SIE),更重要的是主機(jī)系統(tǒng)是USB系統(tǒng)軟件和USB客戶軟件的載體。總而言之,USB主機(jī)軟件系統(tǒng)可以分為三個(gè)部分: 客戶軟件部分(CSW),在邏輯上和外設(shè)的功能部件部分進(jìn)行數(shù)據(jù)的交換;USB系統(tǒng)軟件部分(即HCDI),在邏輯和實(shí)際中作為HCD和USBD之間的接口;USB主機(jī)控制器軟件部分(即HCD和USBD),用于對(duì)外設(shè)和主機(jī)的所有USB有關(guān)部分的控制和管理,包括外

12、設(shè)的SIE部分、USB數(shù)據(jù)發(fā)送接收器(Transreceiver)部分及外設(shè)的協(xié)議層等。圖4 USB線纜 圖5 高速外設(shè)的USB線纜和電阻的連接圖 圖6 USB主機(jī)系統(tǒng)的結(jié)構(gòu)及各部分之間的關(guān)系 二、USB的“分時(shí)復(fù)用”和電源管理當(dāng)一個(gè)USB外設(shè)初次接入一個(gè)USB系統(tǒng)時(shí),主機(jī)就會(huì)為該USB外設(shè)分配一個(gè)唯一的USB地址,并作為該USB外設(shè)的唯一標(biāo)識(shí)(USB系統(tǒng)最多可以分配這樣的地址127個(gè)),這稱為USB的總線列舉(Bus Enumeration)。USB使用總線列舉方法在計(jì)算機(jī)系統(tǒng)運(yùn)行期間動(dòng)態(tài)檢測(cè)外設(shè)的連接和摘除,并動(dòng)態(tài)地分配USB地址,從而在硬件意義上真正實(shí)現(xiàn)“即插即用”和“熱插拔”。 在所有

13、的USB信道之間動(dòng)態(tài)地分配帶寬是USB總線的特征之一。當(dāng)一臺(tái)USB外設(shè)在連接(Attached)并配置(Configuration)以后,主機(jī)即會(huì)為該USB外設(shè)的信道分配USB帶寬;而當(dāng)該USB外設(shè)從USB系統(tǒng)中摘除(Detached)或是處于掛起(Suspended)狀態(tài)時(shí),則它所占用的USB帶寬即會(huì)被釋放,并為其它的USB外設(shè)所分享。這種“分時(shí)復(fù)用”(Scheduling the USB)的帶寬分配機(jī)制大大地提高了USB帶寬利用率。 作為一種先進(jìn)的總線方式,USB提供了基于主機(jī)的電源管理系統(tǒng)。USB系統(tǒng)會(huì)在一臺(tái)外設(shè)長(zhǎng)時(shí)間(這個(gè)時(shí)間一般在3.0ms以上)處于非使用狀態(tài)時(shí)自動(dòng)將該設(shè)備掛起(Su

14、spend),當(dāng)一臺(tái)USB外設(shè)處于掛起狀態(tài)時(shí),USB總線通過(guò)USB線纜為該設(shè)備僅僅提供500A以下的電流,并把該外設(shè)所占用的USB帶寬分配給其它的USB外設(shè)。USB的電源管理機(jī)制使它支持如遠(yuǎn)程喚醒這樣的高級(jí)特性。當(dāng)一臺(tái)外設(shè)處于掛起狀態(tài)(Suspended Mode)時(shí),必須先通過(guò)主機(jī)使該設(shè)備“喚醒”(Resume),然后才可以執(zhí)行USB操作。 USB的這種智能電源管理機(jī)制,使得它特別適合如筆記本電腦之類的設(shè)備的應(yīng)用。三、USB的數(shù)據(jù)傳輸模式圖7 幀開始數(shù)據(jù)包在USB數(shù)據(jù)傳輸中的分布 圖8 USB的通信流及信道 圖9 同步字段 圖10 PID字段 我們知道,USB總線是一種串行總線,即它的數(shù)據(jù)是

15、一個(gè)bit一個(gè)bit來(lái)傳送的。雖然USB總線是把這些bit形式的數(shù)據(jù)打成數(shù)據(jù)包來(lái)傳送,但數(shù)據(jù)的同步也是必不可少的。USB 1.0/1.1協(xié)議規(guī)定,USB的標(biāo)準(zhǔn)脈沖時(shí)鐘為12MHz,而其總線時(shí)鐘為1ms,即每隔1ms,USB器件應(yīng)為USB線纜產(chǎn)生一個(gè)時(shí)鐘脈沖序列。這個(gè)脈沖序列稱為幀開始數(shù)據(jù)包(SOF,如圖7所示),主機(jī)利用SOF來(lái)同步USB數(shù)據(jù)的發(fā)送和接收。由此可見(jiàn),對(duì)于一個(gè)數(shù)據(jù)傳輸率為12Mbps的外設(shè)而言,它每一幀的長(zhǎng)度為12000bit;而對(duì)于低速外設(shè)而言,它每一幀的長(zhǎng)度僅有1500bit。USB總線并不關(guān)心外設(shè)的數(shù)據(jù)采集系統(tǒng)及其處理的速率,無(wú)論對(duì)于怎樣的數(shù)據(jù)產(chǎn)生或是接收,它總是以外設(shè)所事

16、先規(guī)定的USB標(biāo)準(zhǔn)傳輸率來(lái)傳輸數(shù)據(jù)。這就要求外設(shè)廠商必須在數(shù)據(jù)采集或接收系統(tǒng)和USB協(xié)議系統(tǒng)(SIE)之間,設(shè)置大小合適的先入先出模式(FIFO)來(lái)對(duì)數(shù)據(jù)進(jìn)行緩存。在USB系統(tǒng)中,數(shù)據(jù)是通過(guò)USB線纜采用USB數(shù)據(jù)包從主機(jī)傳送到外設(shè)或是從外設(shè)傳送到主機(jī)的。在USB協(xié)議中,把基于外設(shè)的數(shù)據(jù)源和基于主機(jī)的數(shù)據(jù)接收軟件(或者方向相反)之間的數(shù)據(jù)傳輸模式稱為信道(Pipe)。信道分為流模式的信道(Stream Pipe)和消息模式的信道(Message Pipe)兩種。信道和外設(shè)所定義的數(shù)據(jù)帶寬、數(shù)據(jù)傳輸模式以及外設(shè)的功能部件的特性(如緩存大小、數(shù)據(jù)傳輸?shù)姆较虻?相關(guān)。只要一個(gè)USB外設(shè)一經(jīng)連接,就會(huì)

17、在主機(jī)和外設(shè)之間建立信道。對(duì)于任何的USB外設(shè),在它連接到一個(gè)USB系統(tǒng)中,并被USB主機(jī)經(jīng)USB線纜加電使其處于Powered狀態(tài)時(shí),都會(huì)在USB主機(jī)和外設(shè)的協(xié)議層(ROM)之間首先建立一個(gè)稱為Endpoint 0的消息信道,這個(gè)信道又稱為控制信道,主要用于外設(shè)的配置(Configuration)、對(duì)外設(shè)所處狀態(tài)的檢測(cè)及控制命令的傳送等。信道方式的結(jié)構(gòu)使得USB系統(tǒng)支持一個(gè)外設(shè)擁有多個(gè)功能部件(用Endpoint 0、Endpoint 1.Endpoint n這樣的方法進(jìn)行標(biāo)識(shí)),這些功能部件可以同時(shí)地、以不同的數(shù)據(jù)傳輸方向在同一條USB線纜上進(jìn)行數(shù)據(jù)傳輸而互不影響(圖8)。比如一個(gè)USB的

18、ISDN MODEM,就可以同時(shí)擁有一個(gè)上傳的信道和一個(gè)下載的信道,并能同時(shí)很好地工作。 為實(shí)現(xiàn)多外設(shè)、多信道地同時(shí)工作,USB總線使用數(shù)據(jù)包的方式來(lái)傳輸數(shù)據(jù)和控制信息。USB數(shù)據(jù)傳輸中的每一個(gè)數(shù)據(jù)包都以一個(gè)同步字段開始(圖9),它的最后兩個(gè)bit作為PID字段開始的標(biāo)志。緊跟在同步字段之后的一段8bit的脈沖序列稱為PID(數(shù)據(jù)包標(biāo)識(shí)字段,如圖10所示),PID字段的前四位用來(lái)標(biāo)記該數(shù)據(jù)包的類型,后四位則作為對(duì)前四位的校驗(yàn)。PID字段被分為標(biāo)記PID(共有IN、OUT、SETUP或SOF四種)、數(shù)據(jù)PID(DATA0或DATA1)、握手PID(ACK、NAK或STALL)及特殊PID等。主機(jī)

19、根據(jù)PID字段的類型來(lái)判斷一個(gè)數(shù)據(jù)包中所包含的數(shù)據(jù)類型,并執(zhí)行相應(yīng)的操作。 當(dāng)一個(gè)USB外設(shè)初次連接時(shí),USB系統(tǒng)會(huì)為這臺(tái)外設(shè)分配唯一的USB地址,這個(gè)地址通過(guò)地址寄存器(ADDR)來(lái)標(biāo)記,以保證數(shù)據(jù)包不會(huì)傳送到別的USB外設(shè)。7bit的ADDR使得USB系統(tǒng)最大尋址為127臺(tái)設(shè)備(ADDR字段,如圖11所示)。由于一臺(tái)USB外設(shè)可能具有多個(gè)信道,因而在ADDR字段后會(huì)有一個(gè)附加的端點(diǎn)字段(Endpoint Field,簡(jiǎn)標(biāo)為ENDP)來(lái)標(biāo)記不同的信道(圖12)。所有的USB外設(shè)都必須支持Endpoint 0信道,用0000來(lái)標(biāo)記。對(duì)于高速設(shè)備,可以最大支持16個(gè)信道,而低速設(shè)備在Endpoi

20、nt 0之外僅能有一個(gè)信道。數(shù)據(jù)字段作為一次USB數(shù)據(jù)傳輸?shù)闹行哪康?,在一個(gè)USB數(shù)據(jù)包中可以包含01203Byte的數(shù)據(jù)(圖13)。而幀數(shù)量字段則包含在幀開始數(shù)據(jù)包中,對(duì)有的應(yīng)用場(chǎng)合,可以用幀數(shù)量字段作為數(shù)據(jù)的同步信號(hào)。 為保證控制、塊傳送及中斷傳送中數(shù)據(jù)包的正確性,CRC校驗(yàn)字段被引用到如標(biāo)記、數(shù)據(jù)、幀開始(SOF)這樣的數(shù)據(jù)包中。CRC校驗(yàn)(數(shù)據(jù)冗余校驗(yàn))可以給予數(shù)據(jù)以100%的正確性檢驗(yàn)。 圖11 數(shù)據(jù)包的ADDR字段 圖12 端點(diǎn)(Endpoint)字段 圖13 USB的數(shù)據(jù)字段 全面認(rèn)識(shí)USB技術(shù)的精髓(二)本文介紹USB總線的數(shù)據(jù)傳輸模式、USB數(shù)據(jù)包的格式,以及USB外設(shè)的組成

21、與結(jié)構(gòu)等內(nèi)容。一、USB數(shù)據(jù)包的格式在USB系統(tǒng)中,有四種形式的數(shù)據(jù)包-標(biāo)記數(shù)據(jù)包(Token Packets)、DATA數(shù)據(jù)包(DATA Packets)、幀開始數(shù)據(jù)包(SOF Packets)和握手?jǐn)?shù)據(jù)包(Handshake Packets)。1.標(biāo)記數(shù)據(jù)包由PID、ADDR、ENDP和CRC5四個(gè)字段組成(圖1)。它因?yàn)镻ID字段的不同而分為輸入類型(IN)、輸出類型(OUT)和設(shè)置類型(SETUP)三種。標(biāo)記數(shù)據(jù)包處于每一次USB傳輸?shù)腄ATA數(shù)據(jù)包前面,以指明這次USB操作的類型(PID字段標(biāo)記)、操作的對(duì)象(在ADDR和ENDP字段中指明)等信息。5bit的CRC校驗(yàn)位用來(lái)確保標(biāo)記

22、數(shù)據(jù)包的正確性。2.我們已經(jīng)指出,USB主機(jī)會(huì)每隔1ms在USB總線上產(chǎn)生一個(gè)SOF的USB幀同步信號(hào),SOF數(shù)據(jù)包包含了這個(gè)脈沖序列的實(shí)際內(nèi)容(圖2),它由SOF格式的PID字段、幀數(shù)量字段和5bit的CRC校驗(yàn)碼組成。主機(jī)利用SOF數(shù)據(jù)包來(lái)同步數(shù)據(jù)的傳送和接收。3.用于傳輸真正數(shù)據(jù)的DATA數(shù)據(jù)包(圖3),因?yàn)镻ID的不同可以分為DATA0和DATA1兩種。DATA0為偶數(shù)據(jù)包,DATA1為奇數(shù)據(jù)包。DATA數(shù)據(jù)包的奇偶性分類易于數(shù)據(jù)的雙流水處理,而用于控制傳輸?shù)腄ATA數(shù)據(jù)包總是以DATA0來(lái)傳送數(shù)據(jù)。4.握手?jǐn)?shù)據(jù)包僅僅包含一個(gè)PID字段(圖4),ACK形式的PID表明此次USB傳輸沒(méi)有

23、發(fā)生錯(cuò)誤,數(shù)據(jù)已經(jīng)成功的傳輸;而NAK形式的握手?jǐn)?shù)據(jù)包則向主機(jī)表明此次USB傳輸因?yàn)镃RC校驗(yàn)錯(cuò)誤或別的原因而失敗了,從而使得主機(jī)可以進(jìn)行數(shù)據(jù)的重新傳輸;STALL形式的回應(yīng)向主機(jī)報(bào)告外設(shè)此刻正處于掛起狀態(tài)而無(wú)法完成數(shù)據(jù)的傳輸。需要指出的是,每個(gè)數(shù)據(jù)包的結(jié)束都會(huì)有兩個(gè)bit寬的EOP字段作為數(shù)據(jù)包結(jié)束的標(biāo)志(圖5),EOP在差模信號(hào)中表現(xiàn)為D+和D-都處于0狀態(tài)。對(duì)于高速USB外設(shè)而言,這個(gè)脈沖寬度在160175ns之間,而低速設(shè)備則在1.251.50s之間。無(wú)論其后是否有其它的數(shù)據(jù)包,USB線纜都會(huì)在EOP字段后緊跟1bit的總線空閑位。USB主機(jī)或外設(shè)利用EOP來(lái)判斷一個(gè)數(shù)據(jù)包的結(jié)束。圖1

24、 標(biāo)記數(shù)據(jù)包的組成圖2 SOF數(shù)據(jù)包的格式圖3 DATA數(shù)據(jù)包的格式圖4 握手?jǐn)?shù)據(jù)包圖5 EOP字段在差模信號(hào)中的電壓表現(xiàn)二、USB總線的數(shù)據(jù)傳輸模式在前面我們已經(jīng)提到,每一個(gè)USB信道對(duì)應(yīng)著一個(gè)特定的USB傳輸模式,根據(jù)不同的需要,USB外設(shè)可以為USB信道指定不同的USB傳輸模式。USB總線支持四種數(shù)據(jù)傳輸模式:1.控制傳輸模式(圖6),控制傳輸用于在外設(shè)初次連接時(shí)對(duì)器件進(jìn)行配置;對(duì)外設(shè)的狀態(tài)進(jìn)行實(shí)時(shí)檢測(cè);對(duì)控制命令的傳送等;也可以在器件配置完成后被客戶軟件用于其它目的。Endpoint 0信道只可以采用控制傳送的方式。2.塊傳送模式(圖7),塊傳送用于進(jìn)行批量的、非實(shí)時(shí)的數(shù)據(jù)傳輸。如一臺(tái)

25、USB掃描儀即可采用塊傳送的模式,以保證數(shù)據(jù)連續(xù)地、在硬件層次上的實(shí)時(shí)糾錯(cuò)地傳送。采用塊傳送方式的信道所占用的USB帶寬,在實(shí)時(shí)帶寬分配中具有最高的優(yōu)先級(jí)。3.同步傳輸模式(圖8),同步傳輸適用于那些要求數(shù)據(jù)連續(xù)地、實(shí)時(shí)地、以固定的數(shù)據(jù)傳輸率產(chǎn)生、傳送并消耗的場(chǎng)合,如數(shù)字錄像機(jī)等。為保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,同步傳輸不進(jìn)行數(shù)據(jù)錯(cuò)誤的重試,也不在硬件層次上回應(yīng)一個(gè)握手?jǐn)?shù)據(jù)包,這樣有可能使數(shù)據(jù)流中存在數(shù)據(jù)錯(cuò)誤的隱患。為保證在同步傳輸數(shù)據(jù)流中致命錯(cuò)誤的幾率小到可以容忍的程度,而數(shù)據(jù)傳輸?shù)难舆t又不會(huì)對(duì)外設(shè)的性能造成太大的影響,廠商必須為使用同步傳輸?shù)男诺肋x擇一個(gè)合適的帶寬(即必須在速度和品質(zhì)之間做出權(quán)衡)

26、。4.中斷傳輸模式(圖9),對(duì)于那些小批量的、點(diǎn)式、非連續(xù)的數(shù)據(jù)傳輸應(yīng)用的場(chǎng)合,如用于人機(jī)交互的鼠標(biāo)、鍵盤、游戲桿等,中斷傳輸?shù)姆绞绞亲钸m合的。圖7 塊傳送的流程圖8 同步傳輸?shù)牧鞒虉D9 中斷傳輸?shù)牧鞒倘SB外設(shè)的組成與結(jié)構(gòu)本文無(wú)意詳細(xì)論述USB外設(shè)(本部分所說(shuō)的USB外設(shè)如無(wú)特別說(shuō)明均指USB功能器件)的設(shè)計(jì)細(xì)節(jié),而只想介紹USB功能器件的一般組成,以此來(lái)幫助讀者了解USB外設(shè)的基本軟硬件構(gòu)成,以便了解USB外設(shè)的工作過(guò)程和原理。組成外設(shè)的傳感器件和DSP因?yàn)橥庠O(shè)的具體應(yīng)用各異而有所不同。如對(duì)于一臺(tái)CMOS數(shù)字?jǐn)z像機(jī)(如Creative的WebCam),它的CMOS光電耦合器及其DSP部

27、分并不因?yàn)槭褂檬裁礃拥慕涌诜绞蕉兴淖?如早期的電腦眼皆采用ECP的并口增強(qiáng)模式來(lái)進(jìn)行圖像數(shù)據(jù)的傳輸,而現(xiàn)在幾乎都是USB接口)。因而本文的重點(diǎn)是闡述USB外設(shè)接口的部分,即USB Device Microcontroller(USB器件微控制器)。圖10表明了一個(gè)USB外設(shè)總線接口的詳細(xì)組成框圖。USB總線是以差模驅(qū)動(dòng)的方式來(lái)進(jìn)行數(shù)據(jù)傳輸?shù)?,但在?shù)據(jù)包發(fā)送之前,USB協(xié)議規(guī)定必須使用NRZI的編碼方式來(lái)對(duì)數(shù)據(jù)進(jìn)行編碼。當(dāng)然,在USB外設(shè)中,用于解碼的器件對(duì)外設(shè)來(lái)說(shuō)也是必不可少的。NRZI的編碼協(xié)議其實(shí)很簡(jiǎn)單,它采用的是逢1保持,逢0跳變的原則(圖11),而NRZI的解碼則采用相反的操作。為

28、保證數(shù)據(jù)流中有足夠的信號(hào)變化,USB協(xié)議規(guī)定了Bit stuffing(加填充位)的原則,即如果信號(hào)流中連續(xù)出現(xiàn)六位以上的數(shù)據(jù)1,則每隔六位,必須插入一個(gè)0,然后才進(jìn)入NRZI編碼。圖12是一串原始數(shù)據(jù)及其加填充位后和NRZI編碼后的數(shù)據(jù)格式對(duì)比。圖10 USB外設(shè)總線接口的詳細(xì)組成框圖圖11 NRZI數(shù)據(jù)編碼圖12 原始數(shù)據(jù)和加填充位后及NRZI編碼后的數(shù)據(jù)格式對(duì)比 SIE(Serial interface Engine)是USB外設(shè)最重要的硬件組成部分之一,它主要由四部分組成:1.硬件上用來(lái)完成NRZI編/解碼和加/去填充位操作的,NRZI/Bit Buffing和NRZO/Bit Uns

29、tuffing的部分;2.硬件上產(chǎn)生數(shù)據(jù)的CRC校驗(yàn)碼并對(duì)數(shù)據(jù)包進(jìn)行CRC校驗(yàn)的CRC check & Generator部分; 3.用來(lái)將并行數(shù)據(jù)轉(zhuǎn)化成USB串行數(shù)據(jù)的并/串轉(zhuǎn)換部分(Packet Encode),將主機(jī)發(fā)送的USB數(shù)據(jù)包轉(zhuǎn)化成可以識(shí)別的并行數(shù)據(jù)的串/并轉(zhuǎn)換部分(Packet Decode);4.檢測(cè)和產(chǎn)生SOP(即每個(gè)數(shù)據(jù)包的同步字段)和EOP信號(hào)的部分。USB外設(shè)使用一片ROM來(lái)存儲(chǔ)關(guān)于該外設(shè)工作的一些重要信息,這被稱為USB的協(xié)議層(Protocol Layer),它不僅存儲(chǔ)了諸如廠家識(shí)別號(hào)、該外設(shè)所屬的類型(是HUB還是Function,是低速還是高速設(shè)備)、電源管理

30、等常規(guī)信息,更重要的是還存儲(chǔ)了外設(shè)的設(shè)備類型、器件配置信息、功能部件的描述、接口信息等,其存儲(chǔ)方式都采用特征字(Descriptors)的方式。USB主機(jī)通過(guò)在外設(shè)的協(xié)議層和主機(jī)之間建立Endpoint 0信道、采用控制傳輸?shù)姆绞綄?duì)這些信息進(jìn)行存取。特征字采用USB協(xié)議所規(guī)定的結(jié)構(gòu)和代碼排列(關(guān)于特征字的詳細(xì)信息請(qǐng)參閱USB協(xié)議標(biāo)準(zhǔn))。廠家也可以在該ROM的剩余空間中存儲(chǔ)特定的程序或信息,以幫助外設(shè)完成特定的工作。協(xié)議層是一臺(tái)USB外設(shè)能夠被主機(jī)正確識(shí)別和配置,并正常工作的前提。可以說(shuō),協(xié)議層是一臺(tái)USB外設(shè)的固件(Firmware)中心。我們知道,數(shù)據(jù)采樣率因采樣精度和使用的不同場(chǎng)合而不同,

31、如對(duì)于音頻應(yīng)用,就可以采用22.05kHz或44.1kHz的采樣率,而這個(gè)時(shí)鐘并不和USB標(biāo)準(zhǔn)時(shí)鐘對(duì)應(yīng)。因而在實(shí)際應(yīng)用中,為保證采集到的數(shù)據(jù)無(wú)丟失地打包和傳送,必須在SIE和數(shù)據(jù)采集部件(對(duì)諸如音箱或打印機(jī)等外設(shè)則為數(shù)據(jù)消耗部件)之間設(shè)立FIFOs,以便對(duì)數(shù)據(jù)進(jìn)行緩存。對(duì)于采用塊傳送和同步傳送的外設(shè)而言,F(xiàn)IFOs的作用顯得尤為重要。例如一臺(tái)采用同步傳輸?shù)腢SB數(shù)字?jǐn)z像機(jī)(現(xiàn)在市場(chǎng)上有很多這種類型的產(chǎn)品),我們假設(shè)它的CCD為400300像素,那么為保證數(shù)據(jù)正確地壓縮、傳輸和接收,直到以后的解壓縮及處理,在動(dòng)態(tài)采集中,F(xiàn)IFOs至少要存儲(chǔ)一幀圖像,即要求FIFOs有400300=12KB的容量

32、。在USB外設(shè)中,用于實(shí)現(xiàn)和USB線纜無(wú)縫連接的USB傳輸接收部分(Transreceiver)是必不可少的,它不僅要在電氣和物理層面上實(shí)現(xiàn)和USB線纜的連接,而且要完成對(duì)數(shù)據(jù)包的差模驅(qū)動(dòng)或分離的操作。以上我們簡(jiǎn)述了USB外設(shè)接口的硬件組成,那么在完成USB數(shù)據(jù)傳輸?shù)倪^(guò)程中,這些硬件又是如何配合工作并和位于主機(jī)的軟硬件交互,以完成數(shù)據(jù)傳輸?shù)哪?前面已經(jīng)提到,USB總線采用總線列舉的方法來(lái)標(biāo)記和管理外設(shè)所處的狀態(tài),當(dāng)一臺(tái)USB外設(shè)初次連接到USB系統(tǒng)中后,通過(guò)8個(gè)步驟來(lái)完成它的初始化:1.USB外設(shè)所連接的HUB(ROOT HUB或擴(kuò)展HUB)檢測(cè)到所連接的USB外設(shè)并自動(dòng)通知主機(jī),以及它的端口

33、狀態(tài)的變化,這時(shí)外設(shè)還處于禁止(Disabled)狀態(tài);2.主機(jī)通過(guò)對(duì)HUB的查詢以確認(rèn)外設(shè)的連接;3.現(xiàn)在,主機(jī)已經(jīng)知道有一臺(tái)新的USB外設(shè)連接到了USB系統(tǒng)中,然后,它激活(Enabled)這個(gè)HUB的端口,并向HUB發(fā)送一個(gè)復(fù)位(Reset)該端口的命令;4.HUB將復(fù)位信號(hào)保持10ms,為連接到該端口的外設(shè)提供100mA的總線電流,這時(shí)該外設(shè)處于Powered狀態(tài),它的所有寄存器被清空并指向默認(rèn)的地址;5.在外設(shè)分配到唯一的USB地址以前,他的默認(rèn)信道均使用主機(jī)的默認(rèn)地址。然后主機(jī)通過(guò)讀取外設(shè)協(xié)議層的特征字來(lái)了解該外設(shè)的默認(rèn)信道所使用的實(shí)際的最大數(shù)據(jù)有效載荷寬度(即外設(shè)在特征字中所定義

34、的在DATA0數(shù)據(jù)包中數(shù)據(jù)字段的長(zhǎng)度)。6.主機(jī)分配一個(gè)唯一的USB地址給該外設(shè),并使它處于Addressed狀態(tài);7.主機(jī)開始使用Endpoint 0信道讀取外設(shè)ROM中所存儲(chǔ)的器件配置特征字,這可能會(huì)花去幾幀的時(shí)間;8.基于器件配置特征字,主機(jī)為該外設(shè)指定一個(gè)配置值,這時(shí),外設(shè)即處于配置(Configured)狀態(tài)了,它所有的端點(diǎn)(Endpoint)這時(shí)也處于配置值所描述的狀態(tài)。從外設(shè)的角度來(lái)看,這時(shí)該外設(shè)已處于準(zhǔn)備使用的狀態(tài)。在一臺(tái)外設(shè)能被使用之前,它必須被配置。配置即主機(jī)根據(jù)外設(shè)的配置特征字來(lái)定義器件的配置寄存器,以便規(guī)定外設(shè)的所有Endpoint的工作環(huán)境。如某信道所采用的數(shù)據(jù)傳輸方式,該外設(shè)所屬的器件基類(Class)、派生類(SubClass)和C+等,從而通過(guò)基于主機(jī)的USB系統(tǒng)軟件或客戶軟件對(duì)外設(shè)進(jìn)行控制。當(dāng)一臺(tái)USB外設(shè)配置好以后,即會(huì)進(jìn)入到掛起(Suspend)狀態(tài),直到它開始被使用。必須指出的是,一臺(tái)USB外設(shè)一旦配置好,它的每一個(gè)特定的信道只能使用一種數(shù)據(jù)傳輸方式。Endpoint 0信道只能采用控制傳送的方式,主機(jī)通過(guò)Endpoint 0來(lái)傳送標(biāo)準(zhǔn)的USB命令,完成諸如讀取器件配置特征字、控制外設(shè)對(duì)數(shù)據(jù)的采集、處理和傳送等任務(wù),并可以通過(guò)Endpoint 0來(lái)檢測(cè)和改變外設(shè)所處的狀態(tài)(如對(duì)外設(shè)的遠(yuǎn)端喚醒、掛起和恢復(fù)等)。對(duì)于一臺(tái)采用

溫馨提示

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

評(píng)論

0/150

提交評(píng)論