【摘 要】 在USB2.0規(guī)范的基礎(chǔ)上,分析了USB描述符結(jié)構(gòu),提出了多功能USB設(shè)備的結(jié)構(gòu)模型,總結(jié)出設(shè)計(jì)多功能USB設(shè)備結(jié)構(gòu)的兩種基本方法。<!--摘要CH(結(jié)束)←-->
<!--→關(guān)鍵CH(開(kāi)始)--> 關(guān)鍵詞:通用串行總線,復(fù)合設(shè)備,組合設(shè)備,多功能
<!--關(guān)鍵EN(結(jié)束)←-->1 引 言
作為計(jì)算機(jī)的外部設(shè)備接口,USB接口已得到廣泛應(yīng)用。多功能USB設(shè)備是一種復(fù)雜的USB設(shè)備,它雖然只有一個(gè)USB接口,但是卻具有實(shí)現(xiàn)多種類(lèi)型設(shè)備的功能。具有多功能USB的設(shè)備被逐漸地應(yīng)用起來(lái),常見(jiàn)的設(shè)備有帶鼠標(biāo)的USB鍵盤(pán)、帶話筒的USB攝像頭等。因此,研究多功能USB設(shè)備的結(jié)構(gòu)設(shè)計(jì)十分必要。
2002年4月27日,康柏、惠普、英特爾、朗訊、微軟、NEC和菲利浦等數(shù)家公司聯(lián)合修訂了《UniversalSerial Bus Specification Revision 2.0》(這里簡(jiǎn)稱(chēng)USB2.0規(guī)范),本文的研究就是在這個(gè)規(guī)范的基礎(chǔ)上進(jìn)行的。
2 USB設(shè)備的設(shè)計(jì)原則
在USB系統(tǒng)中,USB主機(jī)(host)扮演主控(master)角色。除了設(shè)備的遠(yuǎn)程喚醒(remote wakeup)功能外,USB設(shè)備不會(huì)是事件的發(fā)起者,設(shè)備做到的只是響應(yīng)主機(jī)的請(qǐng)求。圖1所示是USB通信的請(qǐng)求響應(yīng)模型。
USB采用這種以主機(jī)為中心的模型的原因是節(jié)省花費(fèi)。通信中應(yīng)盡量將主機(jī)端智能化一些,使設(shè)備端簡(jiǎn)單一些,這樣,才能降低計(jì)算機(jī)外圍設(shè)備的花費(fèi)。因此,在設(shè)計(jì)USB設(shè)備,特別是設(shè)計(jì)多功能USB設(shè)備時(shí),應(yīng)使USB設(shè)備端處理通信時(shí)盡量簡(jiǎn)單。
3 USB規(guī)范中的幾種重要描述符
在列舉過(guò)程(enumeration process)中,主機(jī)使用控制傳輸方式從設(shè)備請(qǐng)求描述符。描述符包含了設(shè)備的基本信息。主要的描述符有:設(shè)備描述符(devicedescriptor)、配置描述符(configuration descriptor)、接口描述符(interface descriptor)以及端點(diǎn)描述符(endpoint descriptor)。
一個(gè)USB設(shè)備對(duì)應(yīng)一個(gè)設(shè)備描述符。一個(gè)USB設(shè)備可以有一個(gè)或多個(gè)配置,但在一個(gè)時(shí)刻內(nèi),只有一個(gè)配置是有效的(one ata time)。每個(gè)配置有一個(gè)或多個(gè)接口,只要配置有效,其所有的接口都是有效的(concurrently active)。每個(gè)接口可有多個(gè)端點(diǎn),一個(gè)端點(diǎn)(除端點(diǎn)0外)不可以在一個(gè)配置下的多個(gè)接口間共享,但可以在不同配置下的接口間共享。端點(diǎn)是一個(gè)USB設(shè)備的一個(gè)唯一的可尋址部分,用來(lái)作為主機(jī)和設(shè)備之間通信流的信息源或接收器。接口是端點(diǎn)的集合,是設(shè)備實(shí)現(xiàn)某種功能的最小載體。它們之間的結(jié)構(gòu)見(jiàn)圖2。圖2所示是USB描述符樹(shù)。
4 多功能USB設(shè)備的結(jié)構(gòu)模型
多功能USB設(shè)備通常是通過(guò)單個(gè)或多個(gè)USB控制器(USBcontroller)連接不同類(lèi)型的設(shè)備來(lái)實(shí)現(xiàn)的。當(dāng)然,將不同類(lèi)型的設(shè)備功能集成到USB控制器中去,來(lái)實(shí)現(xiàn)多功能USB設(shè)備也是可以的,因?yàn)閁SB規(guī)范討論的是USB主機(jī)與USB控制器(或者集線器)之間的通信協(xié)議,不涉及USB控制器與不同類(lèi)型設(shè)備(或芯片)的通信協(xié)議問(wèn)題。因?yàn)橛脙蓚(gè)設(shè)備實(shí)現(xiàn)多功能的USB設(shè)備與用多個(gè)設(shè)備來(lái)實(shí)現(xiàn)多功能的USB設(shè)備的原理相同,所以,本文以兩個(gè)設(shè)備為例來(lái)說(shuō)明多功能的USB設(shè)備的設(shè)計(jì)方法和結(jié)構(gòu)模型。因此,可以把多功能的USB設(shè)備抽象成如圖3的結(jié)構(gòu)(不同類(lèi)型設(shè)備用A和B類(lèi)設(shè)備表示)。
5 多功能USB設(shè)備的設(shè)計(jì)需要解決兩個(gè)主要問(wèn)題
多功能設(shè)備結(jié)構(gòu)模型(數(shù)據(jù)流)圖如圖3所示,多功能USB設(shè)備的設(shè)計(jì)需要解決兩個(gè)主要問(wèn)題:
首先需要確定USB主機(jī)與A設(shè)備和B設(shè)備如何通信的問(wèn)題(多功能USB設(shè)備的外部通信問(wèn)題)。包含的問(wèn)題有:設(shè)計(jì)是采用單個(gè)USB控制器還是多個(gè)USB控制器,其整體的結(jié)構(gòu)應(yīng)如何設(shè)計(jì);(2)是否采用USB的標(biāo)準(zhǔn)設(shè)備類(lèi)(涉及USB設(shè)備的驅(qū)動(dòng)能否被操作系統(tǒng)自動(dòng)加載的問(wèn)題)。
其次要解決USB控制器如何處理USB主機(jī)與A設(shè)備和B設(shè)備間的通信問(wèn)題(多功能USB設(shè)備的內(nèi)部通信問(wèn)題)。包含的問(wèn)題有:如何實(shí)現(xiàn)USB主機(jī)和A設(shè)備間的數(shù)據(jù)流與USB主機(jī)和B設(shè)備間的數(shù)據(jù)流區(qū)分問(wèn)題;選用何種控制器芯片能最大限度地支持與A設(shè)備之間接口的連接和B設(shè)備之間接口的連接。
6 USB結(jié)構(gòu)設(shè)計(jì)思路
總體說(shuō)來(lái),USB設(shè)備有兩種基本的設(shè)計(jì)方法:采用USB復(fù)合設(shè)備(compound device)的方法和采用USB組合設(shè)備(composite device)的方法。
6.1 復(fù)合設(shè)備設(shè)計(jì)方法
6.1.1 復(fù)合設(shè)備方法的特點(diǎn)
復(fù)合設(shè)備方法是采用三個(gè)USB控制器芯片,其中一個(gè)為USB集線器芯片,另外是連接設(shè)備A的USB控制器芯片和連接設(shè)備B的USB控制器芯片。該方法的實(shí)質(zhì)是將兩種功能獨(dú)立的USB設(shè)備通過(guò)內(nèi)部的USB集線器封裝在一起成為USB多功能設(shè)備。復(fù)合設(shè)備中的每一個(gè)USB設(shè)備模塊和內(nèi)部的USB集線器都有自己獨(dú)立的設(shè)備地址。復(fù)合設(shè)備在內(nèi)部采用多個(gè)USB控制器的方法,簡(jiǎn)單地解決了多功能USB設(shè)備與USB主機(jī)通信時(shí)內(nèi)部數(shù)據(jù)流(USB主機(jī)與設(shè)備A的數(shù)據(jù)流和USB主機(jī)與設(shè)備B的數(shù)據(jù)流)的區(qū)分問(wèn)題。該方法結(jié)構(gòu)清晰,復(fù)合設(shè)備結(jié)構(gòu)模型(數(shù)據(jù)流)如圖4所示。
復(fù)合設(shè)備結(jié)構(gòu)中,USB控制器A和B的設(shè)備描述符中定義了各自的設(shè)備類(lèi)代碼。如設(shè)備類(lèi)代碼是USB標(biāo)準(zhǔn)的設(shè)備類(lèi)代碼,USB主機(jī)與USB控制器A或B的通信按照相應(yīng)的USB設(shè)備類(lèi)規(guī)范進(jìn)行。如果是用戶自定義的設(shè)備類(lèi)代碼,則USB主機(jī)與USB控制器A或B的通信按照用戶自定義的協(xié)議進(jìn)行。






