亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

將多功能設備以usb組合設備呈現(xiàn)給主機的方法、裝置及應用的制作方法

文檔序號:6486484閱讀:243來源:國知局
將多功能設備以usb組合設備呈現(xiàn)給主機的方法、裝置及應用的制作方法
【專利摘要】本發(fā)明提供了一種將多功能設備以USB組合設備呈現(xiàn)給主機的方法、裝置及應用。本發(fā)明能夠使多功能設備實現(xiàn)無軟件安裝即插既用,并使各功能設備可以獨立地進行插拔。本發(fā)明通過引入多地址包識別及端口號轉(zhuǎn)換使得一個USB設備處理器可以為多個USB設備進行包處理并完成與主機的會話;在接入主機時先將設備枚舉成一個集線器,再以集線器的身份將其它功能設備一一接入主機從而將多功能設備以組合設備形式呈現(xiàn)給主機。本發(fā)明提供了一種智能設備的系統(tǒng)結(jié)構(gòu)。這一系統(tǒng)結(jié)構(gòu)使得通用CPU生產(chǎn)商和手機芯片生產(chǎn)商可以繞過應用處理器的復雜性而更容易加入到智能設備如智能手機的競爭中來。
【專利說明】將多功能設備以USB組合設備呈現(xiàn)給主機的方法、裝置及應用
【技術(shù)領域】
[0001]本發(fā)明涉及一種USB設備處理器,特別涉及一種將多功能設備以USB組合設備呈現(xiàn)給主機的方法、USB設備處理器以及包含該USB設備處理器的智能設備。
【背景技術(shù)】
[0002]現(xiàn)有的多功能設備,例如手機或多功能打印機,在通過USB接口連接到計算機時都可以提供多種功能。例如手機可以是調(diào)制解調(diào)器(modem)、U盤以及攝像頭等。多功能打印機可以是打印機、掃描儀以及傳真機等。目前,這些多功能設備都是以合成設備(composite device)的形式呈現(xiàn)給主機的。也就是說這些功能是合成在一個USB設備里的,在主機端必須有一個合成設備驅(qū)動程序?qū)⒏鞴δ芊蛛x出來后才能進一步使用各功能設備的驅(qū)動程序。目前,大多數(shù)功能設備的驅(qū)動程序已有標準通用版,不必為各具體設備另寫。但由于多功能設備的差異性很大,以及USB規(guī)范在合成設備定義方面的缺陷,還沒有能夠?qū)崿F(xiàn)通用水平的合成設備驅(qū)動程序。這使得多功能設備都必須自帶合成設備驅(qū)動程序,從而使得多功能設備無法做到無軟件安裝即插即用。這給多功能設備的使用帶來了麻煩。另外,一個合成設備里所含有的功能模塊不能獨立地增加或減少,功能模塊的配置必須在USB設備接入主機時確定。只有在重新將USB設備接入主機時才能改變,而不能在保持某一功能模塊與主機聯(lián)接的情況下改變其它功能模塊的配置。這使得USB不能用于復雜的應用,例如在智能手機里,操作系統(tǒng)可以運行在一個純CPU或CPU+顯示的環(huán)境里,而所有其它外部設備如鍵盤、大容量存儲、modem、攝像頭等都可以通過USB來接入,但以合成設備的形式來將它們整合起來再接入操作系統(tǒng)就不能被接受,原因就是合成設備缺乏管理上的靈活性。
[0003]USB標準定義了另一種將多功能設備接入主機的結(jié)構(gòu):組合設備(compounddevice).它是用集線器(HUB)連接起來的多個USB設備(相當于一棵USB子樹).每個功能以一個獨立USB設備(也被稱作功能設備)的形式接入主機。由于組合設備的每一功能是一個獨立的USB設備,可以直接使用主機的功能設備驅(qū)動程序,因而組合設備沒有合成設備驅(qū)動程序的問題,可以做到無軟件安裝即插即用,在對各功能設備的管理上也有相當?shù)撵`活性,可以用來整合多個外部設備并將它們接入操作系統(tǒng)。但如將每個功能做成獨立的USB設備顯然有成本上的問題。
[0004]對于通訊中的基本問題:如何在一條物理線路上傳輸多路邏輯上獨立的數(shù)據(jù)流,USB的方案是:定義一個單向數(shù)據(jù)傳輸?shù)幕締卧岸丝凇?endpoint),端口包含一個數(shù)據(jù)緩沖區(qū),由主機以輪詢的方式,以會話(transaction)為單位將數(shù)據(jù)由設備的端口數(shù)據(jù)緩沖區(qū)讀入主機(即輸入),或?qū)?shù)據(jù)由主機寫入設備的端口數(shù)據(jù)緩沖區(qū)(即輸出,USB的數(shù)據(jù)傳輸方向總是以主機為參考點而定義的)。USB的會話是由硬件實現(xiàn)的,程序只要將數(shù)據(jù)放入端口的數(shù)據(jù)緩沖區(qū)或直接從端口的數(shù)據(jù)緩沖區(qū)讀取數(shù)據(jù)就可以了。因此,由包(packet)處理直至會話處理的會話控制器就構(gòu)成了 USB硬件的主要部分。端口在USB系統(tǒng)中由一個三元組< USB設備地址,端口號(endpoint number),端口數(shù)據(jù)方向>唯一尋址,每個設備由主機設定一個唯一的設備地址并可有至多16個端口號即32個端口,這樣,各個設備的各個端口的獨立數(shù)據(jù)流就復用了同一條物理USB線。
[0005]會話總是由主機發(fā)起的,通常包含2至3個包。一個典型的輸入會話是這樣的:主機發(fā)出會話啟動包(IN,設備地址,端口號),設備如無數(shù)據(jù)發(fā)往主機,則回一包(NAK),會話結(jié)束;設備如有數(shù)據(jù)發(fā)往主機,則回以數(shù)據(jù)包(DATA,數(shù)據(jù)),主機收到數(shù)據(jù)后回以一確認包(ACK),表示數(shù)據(jù)已收到,可從設備的端口數(shù)據(jù)緩沖區(qū)中除去。會話是USB數(shù)據(jù)交換的最小單位,一定是一個會話接一個會話順序地進行的,屬于不同會話的包是不會交叉在一起的(USB3 SuperSpeed除外)。因此,一個USB設備雖然可有多個端口,卻只需要一個會話控制器.[0006]USB會話的這一順序特征隱含的另一性質(zhì)是:如果需要,一個會話控制器可以為所有USB系統(tǒng)中的設備處理會話。有些發(fā)明正是基于這一點試圖通過復用會話控制器來使一個USB設備擁有多于一個設備的功能。但是到目前為止,這些方案都只滿足于使用一個會話控制器來實現(xiàn)多于一個USB設備的功能,而對已有的USB設備處理器技術(shù)卻未加利用,因此,從所提的技術(shù)方案來看,其實施難度相當于重新設計一個USB設備處理器,成本較高。這些難以實施的技術(shù)方案反過來又使人們忽略了將多功能設備以USB組合設備呈現(xiàn)給主機這一技術(shù)方案,使之至今沒有得到很好的應用。
[0007]圖1是帶USB接口的多功能設備的常規(guī)模型,圖1中只標出了與USB相關(guān)的部分,其它外部設備也掛在總線上并通過CPU與USB發(fā)生聯(lián)系,出于簡潔的原因它們沒有被標出。USB收發(fā)器(transceiver) 101 一面與USB連接線連接,將USB連接線上的串行信號轉(zhuǎn)換成以字節(jié)為單位的并行數(shù)據(jù)流以提供給另一面的UMTI / ULPI界面或非標準的私有界面。USB 設備處理器(handler,有些文獻稱為 SIE,Serial Interface Engine)102 基于 UMTI /ULPI界面或非標準的私有界面提供的數(shù)據(jù)流實現(xiàn)設備與主機之間的會話,并按端口在主機與設備之間對應的端口緩沖區(qū)之間傳送數(shù)據(jù)。因此,端口和它的緩沖區(qū)構(gòu)成了程序與USB處理器的主要界面。在中央處理器(CPU) 103上運行的USB棧(USB stack)程序104基于應用程序105的要求操作USB設備處理器102及USB收發(fā)器101,以實現(xiàn)USB標準所定義的功能并向應用程序報告USB設備處理器102及USB收發(fā)器101所發(fā)生的事件(包括各端口緩沖區(qū)中數(shù)據(jù)的收發(fā)事件)。
[0008]圖1中的USB設備處理器102在USB2時可以進一步用圖2來說明,它由四個部分構(gòu)成:包緩沖區(qū)240,用于暫存從USB線路收到的包,包緩沖區(qū)邏輯上包含所收包所含的各種信息,但物理上不一定擁有與所收包一樣的結(jié)構(gòu);一組物理端口 206至208 (每個標號代表一個端口號,含輸入和輸出2個端口),用于與多功能設備的界面I禹合并暫存由主機發(fā)來的或?qū)⒁l(fā)往主機的數(shù)據(jù);包識別機構(gòu)268,用于判斷一個帶地址的包是否與本多功能設備相關(guān)并提供端口號;工作電路205,用于實現(xiàn)USB規(guī)范指定的包處理并完成與主機的會話.工作電路205包含了 USB設備處理器95%以上的復雜性,是USB設備處理器的主要部分。工作電路205對包緩沖區(qū)240中的包進行處理,當包中不含地址時,工作電路205可以獨立地完成對包的處理,當包中含有地址時,工作電路通過信號217請求包識別機構(gòu)268對該包是否與本多功能設備相關(guān)進行判斷,判斷結(jié)果通過信號210返回給工作電路205,如果該包與本多功能設備無關(guān),工作電路205將丟棄該包,如果該包與本多功能設備相關(guān),包識別機構(gòu)268還將包中的端口號域203通過信號209 —并提供給工作電路205,工作電路205根據(jù)所提供的端口號以及包中的數(shù)據(jù)方向信息(例如通過包名215)確定一個端口并繼續(xù)對該包進行處理,例如包緩沖區(qū)240中的端口號可能指向端口號207,而工作電路205則可以進一步確定其中的一個端口作為操作對象,工作電路205還可以向主機發(fā)送應發(fā)送的包以實現(xiàn)與主機的會話從而將主機發(fā)來的數(shù)據(jù)存入對應物理端口的緩沖區(qū)或?qū)?shù)據(jù)從對應物理端口的緩沖區(qū)發(fā)往主機。
[0009]包識別機構(gòu)268包括:地址寄存器201,用于存放設備的USB地址;地址比較器204,用于比較地址寄存器201中的地址和包緩沖區(qū)240中的地址域202中的地址,端口號形成電路(圖2中為一條直通的連線)將端口號由包緩沖區(qū)240中的端口號域203取出并直接通過信號209提供給工作電路205。在收到工作電路205的請求(信號217)時,地址比較器204工作,并將比較結(jié)果通過信號210輸出,如果地址相等,則該包與本多功能設備相關(guān);如果不等,則無關(guān)。USB地址是7位二進制數(shù),在地址寄存器201和地址比較器204之間以及地址比較器204與包緩沖區(qū)240的地址域202之間是7根線的連接。端口號是一個4位二進制數(shù),USB會話控制器(即工作電路)205與包緩沖區(qū)240的端口號域203之間是4根線的連接。
[0010]USB3的SuperSpeed (以下簡稱USB3)與USB2的不同之處是:USB3的上下行數(shù)據(jù)在獨立的物理通道中傳輸,因而上下行數(shù)據(jù)可以獨立地傳輸;每個由主機發(fā)往設備的包都含有設備地址(除了一個類似于USB2的SOF包的均勻傳輸時標包ITP為廣播包因而不含地址外);而且設備發(fā)往主機的包也含設備地址,并且有時不因主機的詢問而產(chǎn)生。USB3的包都有一個16字節(jié)的包頭,從主機發(fā)出的包頭中含有路由信息,因此HUB不再向其所有下行端口(downstream port)廣播由主機來的包(除ITP包外),而是根據(jù)包頭中的路由信息只向路由中的下行端口轉(zhuǎn)發(fā)由主機來的包;另外,USB2的HUB可以有多至126個下行端口,而USB3的HUB最多只能有15個下行端口。雖然USB3的會話不再嚴格地順序進行,USB3設備處理器中也可能有多個會話控制器,但由于與會話相關(guān)的包都含有USB設備地址,因此與USB2類似結(jié)構(gòu)仍然存在。
[0011]圖3是USB3設備處理器的基本結(jié)構(gòu),圖3中與圖2標有相同標號的構(gòu)件與USB2時具有相同的含義。與USB2設備處理器的圖2相比它只有很小的變化,這是因為與圖2 —樣,大部分的復雜性都被隱藏在工作電路205里了。與USB2的圖2相比,包識別機構(gòu)268多了一個向工作電路205提供設備USB地址的信號218 ;包緩沖區(qū)240中多了一些內(nèi)容,包括一個HUB深度域231和一個路由表域230。工作電路205在向主機發(fā)送包時需要設備的USB地址用以填寫包頭。USB3與USB2的一個內(nèi)在的差別是,各端口可以有自己的會話控制自動機來管理與主機的會話,因而不同端口與主機的會話在時間上可能重疊,各會話控制自動機可能并發(fā)地形成發(fā)往主機的包,從而導致并發(fā)地通過信號218讀取設備的USB地址,但這些并發(fā)地形成的將發(fā)往主機的包會由一個電路順序地發(fā)往主機。包緩沖區(qū)240中的路由表域230含有每級HUB應向下轉(zhuǎn)發(fā)該包的下行端口,HUB深度域231則給出當前HUB在路由表中的位置。在主機發(fā)出包時,HUB深度域231為0,每級HUB在轉(zhuǎn)發(fā)包時會將HUB深度域加1.由于USB3的HUB不向所有下行端口廣播由主機發(fā)來的包,這使得USB設備更容易進入睡眠狀態(tài)從而節(jié)省電能。
[0012]由于每個USB設備處理器都有一個USB地址寄存器,而且必須能夠?qū)⑵渑c包中的地址相比較,因此圖2和圖3的模型對于現(xiàn)有技術(shù)的USB設備處理器普遍適用。
[0013]內(nèi)容可尋址存儲器(Content-Addressable Memory, CAM)是一種可以對所存內(nèi)容進行快速搜索的存儲器,被廣泛用于CPU的高速緩存(cache)的管理。內(nèi)容可尋址存儲器的存儲單元含二個部分:標識(tag)部分和數(shù)據(jù)部分。除了可以像普通存儲器一樣可以通過地址對這兩部分進行讀寫外,內(nèi)容可尋址存儲器還有一個內(nèi)容尋址通道,它由一個標識尋址輸入,一個內(nèi)容尋址命中輸出和一個內(nèi)容尋址輸出構(gòu)成。在進行內(nèi)容尋址時,標識尋址輸入將被同時與所有存儲單元中的標識部分比較。如有一個單元的標識部分與標識尋址輸入相等,則內(nèi)容尋址命中輸出為命中,同時,內(nèi)容尋址輸出為命中單元的數(shù)據(jù)部分。如果沒有一個單元的標識部分與標識尋址輸入相等,則內(nèi)容尋址命中輸出為不命中,內(nèi)容尋址輸出沒有定義。如有多個單元的標識部分與標識尋址輸入相等,則內(nèi)容尋址命中輸出為命中,但這時內(nèi)容尋址輸出的內(nèi)容取決于內(nèi)容可尋址存儲器的具體設計。由于每個內(nèi)容可尋址存儲器的存儲單元都含有一個標識部分與標識尋址輸入的比較器,因此內(nèi)容可尋址存儲器較復雜,成本也較高。
[0014]USB是以連接主機與外部設備為目的而設計的,自提出以來已獲得了極大的成功,幾乎所有設備都有現(xiàn)成的基于USB的驅(qū)動程序,因而可以通過USB連接到主機上。因此USB是有著巨大應用優(yōu)勢的連接方式。但USB還難以被用在系統(tǒng)的內(nèi)部總線上,主要原因就是它在連接多功能設備時缺少靈活性。
[0015]現(xiàn)有的智能設備(如智能手機等)使用一個功能強大的應用處理器(ApplicationPrOCeSSOr,AP)。它自己就幾乎是一臺獨立的計算機,幾乎所有外部設備都可以直接掛載在其上。AP有一個強大的中央處理器(CPU),帶有一條強大的總線(bus)以及掛載在總線上的各種外部設備的適配器。但這一系統(tǒng)結(jié)構(gòu)一方面在硬件上非常復雜,另一方面為使通用操作系統(tǒng)如Windows,Linux等在其上運行,所須開發(fā)的驅(qū)動程序也既多且非常復雜,因此智能設備的核心部件一AP被少數(shù)幾家公司所控制。以智能手機為例來看,目前的手機芯片在智能手機中只能成為調(diào)制解調(diào)器(modem),并以外部設備的身份接在應用處理器上。而目前的手機芯片本來也相當于AP,也能掛載各種外設,只是它的CPU性能還不夠強大,而且通用操作系統(tǒng)如Windows, Linux等也不適合于與現(xiàn)有的無線系統(tǒng)所用的實時系統(tǒng)在同一 CPU上運行,因此向智能手機發(fā)展時增加一個性能強大的CPU是必須的。但如果像現(xiàn)有智能手機的系統(tǒng)結(jié)構(gòu)去增加AP,則目前的手機芯片上的許多外部設備管理功能都沒用了,其價值被大打折扣,而且通用CPU廠商由于沒有AP也不能參與到智能設備的生產(chǎn)鏈中來。
[0016]因此,現(xiàn)有的智能手機的系統(tǒng)結(jié)構(gòu)使得通用處理器廠商和手機芯片廠商都不能夠充分發(fā)揮他們的能力。這個局面是通用處理器廠商和手機芯片廠商都不愿意接受的。一種能讓通用處理器廠商和手機芯片廠商重新加入智能手機競爭的系統(tǒng)結(jié)構(gòu)將是非常受歡迎的。

【發(fā)明內(nèi)容】

[0017]本發(fā)明要解決的技術(shù)問題是提供一種將多功能設備以USB組合設備呈現(xiàn)給主機的方法及相應的USB設備處理器,它能將多功能設備以組合設備的形式呈現(xiàn)給主機,從而使多功能設備做到無軟件安裝即插既用,并且可以對多功能設備中的各功能設備做到獨立插拔。[0018]為解決上述技術(shù)問題,本發(fā)明提供了一種通過一個USB設備處理器將多個功能設備以獨立USB設備的身份接入主機的方法,還提供了一種實現(xiàn)該方法所需的USB設備處理器,更進一步地將該方法及USB設備處理器應用于智能設備而提供了一種智能設備的系統(tǒng)結(jié)構(gòu)。
[0019]本發(fā)明通過在USB設備處理器中的包識別機構(gòu)里設置多個地址寄存器及地址比較器,從而使得包識別機構(gòu)可以為多個USB設備進行包識別;通過提供一個邏輯端口號至物理端口號轉(zhuǎn)換器將包中屬于不同功能設備的可能重復的邏輯端口號(例如邏輯端口號O)轉(zhuǎn)換成唯一的物理端口號再提供給工作電路,從而使得一個USB設備處理器可以為多個USB設備進行包處理并實現(xiàn)會話。
[0020]本發(fā)明通過如下步驟將多個功能設備以獨立USB設備的身份接入主機:
[0021]步驟a,在將多功能設備接入主機時的枚舉過程中,聲明多功能設備是集線器,并按USB規(guī)范實現(xiàn)虛擬集線器,并虛擬地實現(xiàn)出各下行端口的狀態(tài)(status);
[0022]步驟b,通過模擬產(chǎn)生所述虛擬集線器的一個下行端口的狀態(tài)變化并在主機詢問時報告給主機,從而模擬出一個新設備接入該下行端口的事件,以使主機啟動對該新接入設備的枚舉過程;
[0023]步驟C,在主機指令所述虛擬集線器對一個模擬的新接入設備進行重置后,將該新接入的功能設備加入USB設備處理器,以使USB設備處理器可以為該新接入的功能設備處理會話;
[0024]步驟d,由主機對所述經(jīng)重置的新接入的功能設備進行枚舉直至主機為其設置USB地址;
[0025]重復步驟b.至d.直至將所有應接入主機的功能設備接入主機。
[0026]本發(fā)明提供的智能設備的系統(tǒng)結(jié)構(gòu)由中央處理模塊和外設管理模塊二部分構(gòu)成,二模塊之間通過USB進行連接.中央處理模塊基本上就是一個功能強大的CPU,用于運行通用操作系統(tǒng)例如Windows、Linux等;而外設管理模塊基本上就是一個現(xiàn)有的手機芯片,用于管理各種外部設備并通過USB將各種外部設備以組合設備的形式呈現(xiàn)給中央處理模塊。
[0027]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
[0028]( I)無軟件安裝即插即用,與目前通常使用的USB設備處理器相比,本發(fā)明可以將一個多功能設備以一個USB組合設備的形式呈現(xiàn)給主機,從而做到無軟件安裝即插即用,并且可以對多功能設備中的各功能設備做到獨立插拔。
[0029](2)容易實施,與現(xiàn)有的類似技術(shù)相比,本發(fā)明實施起來更容易,相對于目前通常使用的USB設備處理器,實施本發(fā)明所須的改動主要集中在包識別機構(gòu)里,不必重新設計整個USB設備處理器。
[0030](3)兼容性,與現(xiàn)有的類似技術(shù)相比,本發(fā)明可以做到與目前通常使用的USB設備處理器的完全兼容,現(xiàn)有軟件不經(jīng)改動可以應用于本發(fā)明的USB設備處理器。
[0031](4)構(gòu)造沒有AP的智能設備,本發(fā)明提出的智能設備的系統(tǒng)結(jié)構(gòu)繞開了應用處理器的復雜性而使得現(xiàn)有技術(shù)可以很快應用于智能設備如智能手機和平板電腦等。這一基于USB的系統(tǒng)結(jié)構(gòu)還可以繼承大量基于USB的設備驅(qū)動程序從而使得通用操作系統(tǒng)可以很方便地運行起來?!緦@綀D】

【附圖說明】
[0032]圖1是現(xiàn)有技術(shù)中帶USB接口的設備的常規(guī)結(jié)構(gòu)框圖。
[0033]圖2是現(xiàn)有技術(shù)中USB2設備處理器的結(jié)構(gòu)框圖。
[0034]圖3是現(xiàn)有技術(shù)中USB3設備處理器的結(jié)構(gòu)框圖。
[0035]圖4是本發(fā)明實施例的USB2設備處理器的模型。
[0036]圖5是本發(fā)明實施例的包處理方法的流程圖。
[0037]圖6是本發(fā)明實施例的USB3設備處理器的模型。
[0038]圖7是對于USB3的另一種地址識別方法的流程圖。
[0039]圖8是本發(fā)明實施例的一種USB2設備處理器的結(jié)構(gòu)框圖。
[0040]圖9是本發(fā)明實施例的一種USB3設備處理器的結(jié)構(gòu)框圖。
[0041]圖10是本發(fā)明實施例的另一種USB2設備處理器的結(jié)構(gòu)框圖。
[0042]圖11是本發(fā)明實施例的另一種USB3設備處理器的結(jié)構(gòu)框圖。
[0043]圖12是本發(fā)明實施例的接入方法的流程圖。
[0044]圖13是本發(fā)明實施例的一種智能設備的系統(tǒng)結(jié)構(gòu)框圖。
[0045]圖14是本發(fā)明實施例的一種含OTG及內(nèi)存共享的智能設備的結(jié)構(gòu)框圖。
[0046]圖15是本發(fā)明實施例的一種USB主機/設備直接連接的時序圖。
【具體實施方式】
[0047]下面結(jié)合具體實施例和附圖對本發(fā)明作進一步說明,但不應以此限制本發(fā)明的保護范圍。
[0048]將多功能設備以USB組合設備的形式呈現(xiàn)給主機的方法包含兩個部分:包處理方法和接入方法。包處理方法作用于包識別機構(gòu),其目的是要使得一個USB設備處理器能為多個USB功能設備進行包處理并實現(xiàn)與主機的會話,包處理方法可以由硬件方式實現(xiàn),本發(fā)明實施例的裝置部分就是包處理方法的硬件實現(xiàn)。接入方法作用于整個USB設備處理器,它模擬實現(xiàn)一個HUB并在接入主機時先將多功能設備以HUB的身份接入主機,然后再通過該HUB將應接入主機的各功能設備一一接入主機,從而將多功能設備以USB組合設備的形式呈現(xiàn)給主機,接入方法可以在USB棧中以軟件的方式實現(xiàn)。
[0049]雖然HUB通常是以一個特殊的物理USB設備的形式出現(xiàn)的,但從USB規(guī)范的角度來看,它與其它USB設備是完全一樣的。通過USB處理器去模擬實現(xiàn)一個使主機看不出差別的HUB屬于已知的現(xiàn)有技術(shù)。以下將按照包處理方法、實現(xiàn)包處理方法的裝置、接入方法、應用了本發(fā)明技術(shù)方案的USB設備處理器的智能設備的系統(tǒng)結(jié)構(gòu)等幾個部分介紹本發(fā)明的【具體實施方式】。
[0050]現(xiàn)有技術(shù)的USB設備處理器中的工作電路(圖2中的205)與設備的USB地址無關(guān),因此是獨立于USB設備的。只要外部能準確地告訴它哪些帶地址的包應該被處理并提供端口號,它就可以實現(xiàn)與主機的會話并在端口與主機之間傳送數(shù)據(jù)。因此該工作電路具有為多個USB設備工作的潛力,只要外部能告訴它哪些帶地址的包應該被處理并提供端口號。為多個設備識別一個帶地址的包該不該被處理可以通過一張地址表來完成,地址表中含有相關(guān)USB設備的地址,如果一個包中的地址出現(xiàn)在地址表里,則該包應被處理,否則該包應被丟棄。對于端口號,情況會復雜一些。由于每個USB設備都必須使用端口號0,因此不同設備的端口號O會發(fā)生相互干擾。因此必須將不同設備的邏輯端口號O轉(zhuǎn)換成不同的物理端口號以避免沖突。引入邏輯端口號至物理端口號轉(zhuǎn)換的另一個收獲是物理端口號的數(shù)量可以突破USB規(guī)范的16個端口號的限制從而使得一個多功能設備的USB處理器可以擁有多于16個物理端口號。
[0051]圖4是本發(fā)明實施例的USB2設備處理器的模型。與現(xiàn)有技術(shù)相比擁有類似的結(jié)構(gòu),都包括包緩沖區(qū)240、一組物理端口 206至208、包識別機構(gòu)268、工作電路205等,只是包識別機構(gòu)268的內(nèi)部結(jié)構(gòu)有所不同。
[0052]在圖4所提供的模型中,包識別機構(gòu)268含有多地址包識別器241和邏輯端口號至物理端口號轉(zhuǎn)換器242。該多地址包識別器241還含有設備地址表245,設備地址表中含有相關(guān)功能設備的USB地址,通過比較包緩沖中的USB設備地址202與設備地址表245中的所有地址以確定包緩沖中的包是否與本多功能設備相關(guān),識別結(jié)果一方面通過信號210提供給工作電路205,另一方面,如果發(fā)生了地址匹配,通過標識信號358向端口號轉(zhuǎn)換器242報告是哪個地址表單元發(fā)生了地址匹配;邏輯端口號至物理端口號轉(zhuǎn)換器242通過邏輯端口號與物理端口號關(guān)系表將各功能設備的邏輯端口號轉(zhuǎn)換成對應的物理端口號。由于有了端口號轉(zhuǎn)換,物理端口號不再受限于16個,因此信號209可以是d (d大于4)條線,d的具體數(shù)字在具體實施時確定,例如,當d為5時,最多可有32個物理端口號。
[0053]邏輯端口號與物理端口號關(guān)系表存有各功能設備的邏輯端口號與物理端口號的對應關(guān)系,以便通過功能設備及其邏輯端口號獲得對應的物理端口號。USB設備的地址是由主機設定的,每個USB設備在接入主機時都首先使用臨時地址O與主機通訊,這一過程叫枚舉。枚舉過程結(jié)束時主機將為該設備設定地址,因此設備地址表245在多功能設備剛接入主機時不能含有所有應接入主機的功能設備的地址。設備地址將被一個一個地加入,在剛接入主機時,地址表中只有一個O地址,用于模擬實現(xiàn)的HUB的枚舉過程。當HUB接入主機后,將為其設置由主機設定的非O地址,再通過HUB將各功能設備一個一個地接入主機,每接入一個功能設備,地址表中就將增加一個設備的USB地址。在任何時刻,地址表中含有所有已接入主機的功能設備的地址和最多一個正在接入主機(處于枚舉過程)的功能設備的地址(地址O)。
[0054]設備地址表和邏輯端口號與物理端口號關(guān)系表是由接入方法維護的,接入方法將多功能設備的各個功能以功能設備的形式一個一個地接入主機。在將一個功能設備接入主機時,接入方法要在包識別機構(gòu)268中增加一個功能設備,為此,它先在地址表中分配一個單元,根據(jù)功能設備所需的端口的類型為該功能設備分配物理端口,為各物理端口號確定對應的邏輯端口號,邏輯端口號可以是O至15的任意值,但必須有一個控制類型的物理端口號對應于邏輯端口號O。接入方法將所確定的邏輯端口號與物理端口號的對應關(guān)系填入邏輯端口號與物理端口號關(guān)系表,表中含有的功能設備的信息不一定是該功能設備的USB地址,可以是該功能設備在設備地址表中的位移或其它可以代表設備地址表單元的信息,從而使得當所分配的地址表單元與包中地址發(fā)生匹配時,包中的邏輯端口號可以通過邏輯端口號與物理端口號關(guān)系表確定所對應的物理端口號。接入方法先為新接入主機的功能設備設置地址O以開始枚舉過程,當主機為該功能設備設置地址時,接入方法將為該功能設備設置新地址以取代原地址O。
[0055]圖5是本發(fā)明的包處理方法的流程圖(參照圖4的模型)。包處理方法作用于包識別機構(gòu)268,它使用由接入方法維護的設備地址表和邏輯端口號與物理端口號關(guān)系表,在工作電路請求包識別機構(gòu)對含地址的包進行識別時啟動,包含如下步驟:
[0056]步驟501:收到含地址的包,信號217為有效;
[0057]步驟502:地址識別,將包緩沖區(qū)中的設備地址與設備地址表中的地址同時進行比較,以便立刻確定包中地址是否出現(xiàn)在地址表中,如果包中地址出現(xiàn)在地址表中,該包與本組合設備相關(guān),轉(zhuǎn)至步驟503,否則轉(zhuǎn)至步驟504 ;
[0058]步驟503:端口號轉(zhuǎn)換,將包中的邏輯端口號結(jié)合所匹配的地址表單元通過邏輯端口號與物理端口號關(guān)系表轉(zhuǎn)換成物理端口號,將所得物理端口號作為信號209,識別結(jié)果作為信號210 —并輸出,轉(zhuǎn)至步驟505 ;
[0059]步驟504:該包與本多功能設備無關(guān),設置信號210為該包與本多功能設備無關(guān);
[0060]步驟505:包處理方法結(jié)束。
[0061]由于包識別必須在很短的時間內(nèi)完成,因此通常使用多個比較器同時比較的方式進行包識別,但對于簡單的應用,如果功能設備的數(shù)量不大,也可以通過對地址表中地址進行順序比較的方式進行包識別。
[0062]圖6是本發(fā)明的USB3設備處理器的模型。該模型與圖4的USB2的模型相似,包處理方法也類似,不同之處在于包識別機構(gòu)268中多了一個用以獲取設備地址及邏輯端口號的轉(zhuǎn)換器243,該轉(zhuǎn)換器243用于為發(fā)往主機的包提供設備地址及邏輯端口號。根據(jù)具體設計,轉(zhuǎn)換器243可以是物理端口至設備地址及邏輯端口號轉(zhuǎn)換器,也可以是物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器。如果為了充分利用系統(tǒng)資源從而允許將一個物理端口號的兩個物理端口為兩個功能設備所用,就不能由物理端口號唯一地確定對應的設備地址及邏輯端口號,這時就必須使用物理端口至設備地址及邏輯端口號轉(zhuǎn)換器通過物理端口去確定對應的設備地址及邏輯端口號;如果在設計時規(guī)定一個物理端口號的兩個物理端口只能為同一功能設備所用,這樣可能造成一些浪費,但只要通過物理端口號就能唯一地確定對應的設備地址及邏輯端口號,可以使用物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器通過物理端口號去確定對應的設備地址及邏輯端口號。用物理端口去轉(zhuǎn)換要比用物理端口號去轉(zhuǎn)換復雜一倍。
[0063]該轉(zhuǎn)換器243可以通過一物理端口與設備地址和邏輯端口號關(guān)系表,用于存放各物理端口與所屬功能設備的設備地址及邏輯端口號的對應關(guān)系,實現(xiàn)自物理端口至設備地址及邏輯端口號的轉(zhuǎn)換;也可以通過一物理端口號與設備地址及邏輯端口號關(guān)系表,用于存放各物理端口號與所屬功能設備的設備地址及邏輯端口號的對應關(guān)系,實現(xiàn)自物理端口號至設備地址及邏輯端口號的轉(zhuǎn)換;該轉(zhuǎn)換器243還可以通過邏輯端口號至物理端口號轉(zhuǎn)換器242中的邏輯端口號與物理端口號關(guān)系表實現(xiàn)自物理端口號至設備地址及邏輯端口號的轉(zhuǎn)換。該轉(zhuǎn)換器243在收到物理端口或物理端口號輸入時(信號219,在用物理端口號轉(zhuǎn)換時含d條線,在用物理端口轉(zhuǎn)換時含d+Ι條線,這里用d+Ι表示包含端口號和端口數(shù)據(jù)方向兩種信息),可以輸出該物理端口所屬功能設備的設備地址(信號218)和對應的邏輯端口號(信號229)。
[0064]圖6中的工作電路205與現(xiàn)有技術(shù)的工作電路的不同之處主要在于,在生成發(fā)往主機的包時,圖6中的工作電路205不直接從信號218讀取設備地址用于填寫包頭,也不用物理端口號來填寫包頭,而是將物理端口或物理端口號輸出,由轉(zhuǎn)換器243將其轉(zhuǎn)換成設備地址和邏輯端口號后,再用所獲得的設備地址(信號218)及邏輯端口號(信號229)來填寫包頭。若轉(zhuǎn)換器243中含有物理端口與設備地址和邏輯端口號關(guān)系表或物理端口號與設備地址及邏輯端口號關(guān)系表,該表也將由接入方法維護。該表與邏輯端口號至物理端口號轉(zhuǎn)換器242中的邏輯端口號與物理端口號關(guān)系表含有相似的信息但作用不同,該表用于由物理端口或物理端口號獲得設備地址及邏輯端口號,而后者則是由設備及邏輯端口號獲得物理端口號。因此,接入方法可以同時維護這兩張表。由于也可以用邏輯端口號與物理端口號關(guān)系表進行物理端口號至設備地址及邏輯端口號的轉(zhuǎn)換,因此使用一張表就能支持兩種轉(zhuǎn)換操作,但使用兩張表便于優(yōu)化轉(zhuǎn)換的實施。
[0065]由于USB3可以有多個USB會話控制器并發(fā)地工作,因此,可能會發(fā)生多個會話控制器同時生成發(fā)往主機的包的情況,但圖6中的轉(zhuǎn)換器243不能同時響應兩個或更多個轉(zhuǎn)換請求。這一問題可以通過將轉(zhuǎn)換請求順序化來解決。有兩種方法可以將轉(zhuǎn)換請求順序化,第一種方法是讓多個USB會話控制器并發(fā)地產(chǎn)生多個轉(zhuǎn)換請求,通過一排隊器將這些并發(fā)的轉(zhuǎn)換請求順序化;第二種方法是當會話控制器在生成發(fā)往主機的包時,并不立刻往包頭中填寫設備地址及邏輯端口號,而是將物理端口號暫時寫入包頭中的設備地址域。如果設備地址域不夠存放物理端口號(物理端口號的數(shù)量> 128),則可將物理端口號寫入設備地址域+邏輯端口號域中,當順序發(fā)送包時,如果該包是發(fā)往主機的,則在發(fā)送前將物理端口號和端口數(shù)據(jù)方向從包頭中取出,通過轉(zhuǎn)換器243獲得設備地址及邏輯端口號,用所得設備地址及邏輯端口號更新包頭后再將包發(fā)出。
[0066]前面介紹的包處理方法中的地址識別步驟將包中的設備地址與地址表中的每一個地址進行比較以確定該包是否與本多功能設備相關(guān),這一方法適用于USB2,也適用于USB3。由于USB3的HUB最多只能有15個下行端口,當有多于15個功能設備需要同時接入主機時,就必須模擬實現(xiàn)多個HUB。多個HUB之間按層進行組織,最上層的HUB在多功能設備接入主機時第一個接入主機,其它HUB通過上一層HUB以類似于接入一個普通功能設備的方式接入主機。接入方法可以通過每個HUB向主機引入至多15個功能設備或下一級HUB。在使用上述地址識別方法時,HUB和功能設備的分層結(jié)構(gòu)完全是邏輯上的,與地址表的組織沒有任何關(guān)系,因而具有很大的靈活性。
[0067]在USB3時,還有一種利用包中路由信息(圖6中231,230)對包中地址進行識別的方法,可以不必對地址表中每個地址進行比較。使用這種方法時地址表須按組進行組織,每組地址含3至16個地址,對應于一個HUB和它下掛的至多15個功能設備,每組的第一個地址單元(位移為O的地址單元)用于模擬實現(xiàn)一個擁有k-1 (k為3至16是該組中所含的地址單元數(shù))個下行端口的HUB,位移為i (i為I至k-Ι)的地址單元用于連接于該HUB下行端口 i的功能設備。如果一個多功能設備需要同時接入主機的功能設備不超過15個,則只需用一個地址組,否則應使用多個地址組。有多個地址組時將分層對地址組進行組織,其中一組為最上層,其HUB將在多功能設備接入主機時第一個接入主機,其它組的HUB將通過上層組的HUB作為一個功能設備接入主機并占用上層組的一個地址單元(相當于占用上層HUB的一個下行端口),每個組中的其它功能設備將通過該組的HUB接入主機。當?shù)刂繁?某一組)中一個地址單元用于一個功能設備(位移為O的那個HUB也被看作是一個功能設備)時,該地址單元存有該功能設備的USB地址;當?shù)刂繁碇幸粋€地址單元用于連接下一級HUB時,該地址單元存放的不是USB地址而是用于確定所連接的下一級HUB所在地址單元組的信息。
[0068]圖7是對于USB3的另一種地址識別方法的流程圖,地址表中的地址單元存放擴展的USB地址,除USB設備地址外,還可以存放如該地址單元是否已分配,該地址單元是用于一功能設備或用于連接下一級HUB等信息,包含如下步驟:
[0069]步驟701:將第一個接入主機的HUB所屬的地址單元組設定為當前地址單元組;
[0070]步驟702:以包緩沖區(qū)中的HUB深度(圖6中231)為位移去讀包緩沖區(qū)中的路由表(圖6中230),再以從路由表讀得的值為位移去讀當前地址單元組;
[0071]步驟703:判斷所讀地址單元是否未被使用,若未被使用,轉(zhuǎn)至步驟707 ;
[0072]步驟704:判斷所讀地址單元是否用于連接下一級HUB,如果所讀地址單元用于連接下一級HUB,轉(zhuǎn)至步驟708,否則所讀地址單元含有USB地址;
[0073]步驟705:比較所讀地址單元所含地址和包緩沖區(qū)中的地址(圖6中202),若比較結(jié)果為不等,則轉(zhuǎn)至步驟707;
[0074]步驟706:包緩沖區(qū)中的包與本多功能設備相關(guān),輸出識別結(jié)果之后轉(zhuǎn)至步驟711
[0075]步驟707:該包與本多功能設備無關(guān),輸出識別結(jié)果之后轉(zhuǎn)至步驟711 ;
[0076]步驟708:用由該地址單元所讀得的信息確定下一級HUB所在地址單元組;將所確定的下一級HUB所在地址單元組設定為當前地址單元組;將包緩沖區(qū)中的HUB深度加I ;
[0077]步驟709:如果加I后HUB深度大于或等于5,則轉(zhuǎn)至步驟710,否則轉(zhuǎn)至步驟702。
[0078]步驟710:該包與本多功能設備無關(guān),輸出識別結(jié)果;
[0079]步驟711:地址識別方法結(jié)束。
[0080]如果只有一個地址組,則所有地址單元都含有設備地址,不存在下一級HUB的情況,因此步驟704是一個確定步驟,判斷可以省略,步驟708和709也可以省略。
[0081]關(guān)于如何確定一具體地址單元是用于一功能設備或用于連接下一級HUB,以及如何確定下一級地址單元組其用途是連接下一級HUB,除了可以象上述實施例一樣使用擴展地址位及地址單元所存內(nèi)容外,也可以在具體設計時就確定某些地址單元固定地用于連接下一級HUB并使用確定的下一級地址單元組,例如,有兩個地址單元組,在設計時規(guī)定第一個地址單元組中的位移為I的地址單元只能用于連接下一級HUB,而下一級HUB則使用第二個地址單元組,這樣,當?shù)谝粋€地址單元組為當前地址單元組時,如果從路由表中讀出1,則已經(jīng)可以確定應到第二個地址單元組的下一級HUB中去繼續(xù)包識別,還可以將這兩種方式結(jié)合起來用以確定一地址單元的用途及確定下一級地址單元組如果其用途是連接下一級HUB。
[0082]圖8是本發(fā)明實施例的USB2設備處理器的一種實現(xiàn),它以硬件方式實現(xiàn)了包處理方法。與現(xiàn)有技術(shù)的USB設備處理器相比,改動主要發(fā)生在包識別機構(gòu)268內(nèi)。包識別機構(gòu)268主要包括兩個部分:端口號轉(zhuǎn)換器242和其余的地址識別電路(多地址包識別器)。地址識別電路含有多個地址識別單元419至420,可以有3至127個地址識別單元。每個地址識別單元包含地址寄存器404、地址比較器405以及使能控制電路403。地址寄存器404用于存放功能設備的USB地址,使能控制電路403包含可由程序讀寫的使能狀態(tài)寄存器從而控制該地址識別單元的使能(enab I e )或不使能(di sab I e )狀態(tài),至多可有一個地址識別單元不含使能控制電路而始終處于使能狀態(tài)。地址比較器405在使能狀態(tài)時并且當包識別機構(gòu)268收到工作電路205的包識別請求信號217時才工作,用于比較地址寄存器404中的地址和包緩沖區(qū)240中的地址202。使能控制電路403的另一種實現(xiàn)方法是使用擴展地址寄存器并通過地址比較器起作用,例如使用8位的擴展地址寄存器,其最高位用作使能狀態(tài)寄存器,O為使能,I為不使能,低7位仍為地址寄存器;地址比較器405也為8位,其比較輸入的另一端的低7位仍與包緩沖中的地址域連接,而最高位則接在一個恒定值O上;這樣,當該地址寄存器為使能時,地址比較器405的輸出結(jié)果是地址的比較結(jié)果,而當該地址寄存器為不使能時,由于最高位不一樣,不論擴展地址寄存器中的地址部分為何值,地址比較器405的輸出都將為不等,因此不會對整個包識別機構(gòu)268的識別結(jié)果產(chǎn)生影響,從而起到不使能的效果。
[0083]每個地址識別單元可以用于實現(xiàn)一個功能設備,因此地址識別單元的數(shù)量就是可同時接入主機的功能設備(包括HUB)的數(shù)量。所有地址識別單元的地址寄存器合起來構(gòu)成了包處理方法所需的地址表,通過控制各地址識別單元的使能狀態(tài)可以控制地址表的大小。所有地址識別單元的地址比較器的輸出通過匯合電路311匯合成包識別機構(gòu)268的識別輸出信號210。該匯合電路311的功能是當至少有一個地址比較器(例如405)比較出地址寄存器(例如404)的內(nèi)容等于包緩沖區(qū)240中的地址時,產(chǎn)生該包與本多功能設備相關(guān)的信號。例如,假設包與本設備相關(guān)的信號為邏輯1,當?shù)刂废嗟葧r地址比較器405的輸出也為邏輯1,則該匯合電路311是邏輯或電路,用于將所有地址比較器405的輸出通過邏輯或操作匯合成包識別輸出信號。
[0084]每個地址識別單元419至420還對應地包括標識信號發(fā)生器385至386。標識信號發(fā)生器385、386含有標識信號寄存器360和開關(guān)361。當?shù)刂纷R別單元的地址寄存器404的內(nèi)容與包中地址相等時,對應標識信號發(fā)生器輸出標識信號358,用于標識是哪個地址識別單元發(fā)生了地址相等的情況,并參加端口號轉(zhuǎn)換器242的操作。
[0085]端口號轉(zhuǎn)換器242在地址識別電路識別出某個包與本多功能設備相關(guān)時工作,它的一個輸入從標識信號358獲得關(guān)于功能設備的信息,另一輸入從包緩沖區(qū)240的邏輯端口號域203獲得邏輯端口號,將它們轉(zhuǎn)換成對應的物理端口號后由信號209提供給工作電路 205。
[0086]端口號轉(zhuǎn)換器242包括可由程序讀寫的存儲器357。該存儲器357的每個存儲單元的地址代表一個功能設備的邏輯端口號,而存儲單元所存的內(nèi)容為該邏輯端口號所對應的物理端口號,將物理端口號從代表某個邏輯端口號的存儲單元讀出就實現(xiàn)了邏輯端口號至物理端口號的轉(zhuǎn)換。
[0087]端口號轉(zhuǎn)換器242還包括地址形成電路355,用于將地址識別電路所產(chǎn)生的地址識別單元的標識信號358和包中的邏輯端口號域203轉(zhuǎn)換成相應的存儲單元地址。圖中376是一個參考點,用于表示端口號轉(zhuǎn)換器242所產(chǎn)生的物理端口號。根據(jù)具體的設計,存儲器357的地址與邏輯端口號的對應關(guān)系、地址形成電路355以及標識信號寄存器360的內(nèi)容等可以有不同的配置,例如:
[0088]配置1,將存儲器357的存儲單元以固定的方式分配給各地址識別單元,各個地址識別單元擁有相同數(shù)量的存儲單元(例如η個),則標識信號寄存器360的內(nèi)容可以是對應地址識別單元的編號(例如記為i),地址形成電路355就是產(chǎn)生地址i*n+p的電路,這里p為包中的邏輯端口號域203的內(nèi)容,這時,標識信號就是一個與地址寄存器相關(guān)的常數(shù)。
[0089]配置2,將存儲器357的存儲單元以固定的方式分配給各地址識別單元,各個地址識別單元擁有相同或不同數(shù)量的存儲單元,則標識信號寄存器360的內(nèi)容可以是一個常數(shù)(例如記為b),其數(shù)值為分配給對應地址識別單元的存儲單元片的起始地址,地址形成電路355就是產(chǎn)生地址b+p的電路,這里P為包中的邏輯端口號域203的內(nèi)容,這時,標識信號也是一個與地址寄存器相關(guān)的常數(shù)。
[0090]配置3,將存儲器357的存儲單元在啟用一個地址識別單元時動態(tài)地分配給該地址識別單元,每次分配所需數(shù)量的存儲單元,則標識信號寄存器360的內(nèi)容為動態(tài)寫入的所分配給對應地址識別單元的存儲單元片的起始地址例如記為b,地址形成電路355就是產(chǎn)生地址b+p的電路,這里P為包中的邏輯端口號域203的內(nèi)容,這時,標識信號就是一個動態(tài)設定的數(shù)值。動態(tài)地分配存儲器357可以最大限度地減少所需存儲單元的數(shù)量,當存儲器中出現(xiàn)碎片而不能滿足一個新功能設備時,可以通過移動已分配的存儲器單元來獲得足夠大的連續(xù)地址以滿足新功能設備的要求。大約有n+k個存儲單元就夠了,η為物理端口號的數(shù)量,k為設計時確定的用于移動已分配的存儲器單元所需的單元數(shù),例如k=16 (還應考慮一個端口號的兩個端口為不同功能設備使用的可能性)。
[0091]圖8中的端口號轉(zhuǎn)換器242中的存儲器357可以在運行中被動態(tài)地設置,從而保證了邏輯端口號至物理端口號轉(zhuǎn)換的靈活性及對物理端口使用的靈活性,但它需要在運行中進行維護,對于一些簡單的應用,地址寄存器可以在設計時固定地分配給各功能設備(或可能的功能設備),物理端口也可以根據(jù)各功能設備(或可能的功能設備)的需要在設計時固定地分配給各功能設備(或可能的功能設備),因此,在邏輯端口號與物理端口號的對應關(guān)系中如果以可以標識地址寄存器的值,例如地址寄存器的編號,來表示功能設備,則邏輯端口號與物理端口號的對應關(guān)系是在設計時就確定并固定下來的,無須在運行中維護,這時端口號轉(zhuǎn)換器242中的存儲器357可以用一映射邏輯電路來取代,映射邏輯電路的輸入為代表地址寄存器的信號,例如地址寄存器的編號,及邏輯端口號,其輸出為對應的物理端口號,映射邏輯電路根據(jù)設計時確定的對應關(guān)系將由某一地址寄存器代表的功能設備的邏輯端口號轉(zhuǎn)換為物理端口號,當輸入的代表地址寄存器的信號及邏輯端口號超出設計時確定的范圍時,映射邏輯電路可以報錯。當使用映射邏輯電路時,標識信號358應為代表發(fā)生匹配的地址寄存器的值,例如它的編號。映射邏輯電路能簡化端口號轉(zhuǎn)換器。這里的映射邏輯電路包括用只讀存儲器(ROM)替代端口號轉(zhuǎn)換器242中的存儲器357的情形,因為使用ROM后沒有了狀態(tài)變化,端口號轉(zhuǎn)換器242就是一個邏輯電路。
[0092]由于多功能設備將以組合設備的形式接入主機,每個功能設備只用于一個功能,相對比較簡單,不需要使用16個邏輯端口號,因此根據(jù)具體設計可以將每個功能設備可能擁有的最多邏輯端口號的數(shù)量設定為一個小于16的數(shù)值,這樣用于傳輸邏輯端口號的信號的線數(shù)也可以相應減少,例如,當限定每個功能設備最多能有8個端口號時,用于傳輸邏輯端口號的線數(shù)可以減為3。
[0093]圖8的USB設備處理器的方案相對于現(xiàn)有技術(shù)的USB設備處理器的改動主要在包識別機構(gòu)268里.對于其它部分的改動包括:
[0094]( I)根據(jù)具體設計的需要增加物理端口的數(shù)量。由于有了端口號轉(zhuǎn)換,物理端口號的數(shù)量不再受最多16個的限制,可以設置更多物理端口號,特別要增加控制型端口的數(shù)量,并檢查控制型端口是否與端口號O相關(guān),如果是,則除去那些與端口號O的相關(guān)。
[0095](2)根據(jù)新設物理端口號的數(shù)量,增加用于傳輸物理端口號信息的線數(shù),檢查并消除工作電路中其它關(guān)于端口號小于16的限制。
[0096](3)檢查并保證SPLIT將會被丟棄,接入方法將保證所有功能設備都擁有與HUB相同的速度,因此模擬實現(xiàn)的HUB不處理SPLIT包,也不應為該包所干擾。
[0097]圖8所示的USB設備處理器的工作過程大致是這樣的:當要在USB設備處理器里增加一個功能設備時,它先為該功能設備在包識別機構(gòu)268里分配一個地址識別單元,然后根據(jù)功能設備的要求分配物理端口,其中包括一個控制型端口號的輸入和輸出兩個端口,該物理端口號將被用于邏輯端口號0,為所分配的各物理端口號確定對應的邏輯端口號,除了必須有一個邏輯端口號O對應于一個控制型物理端口號外,其余的物理端口號可以在可能的范圍內(nèi)任意對應邏輯端口號。將所確定的邏輯端口號與物理端口號的對應關(guān)系寫入端口號轉(zhuǎn)換器242的存儲器357。例如,假設對應于所分配的地址識別單元的存儲單元片的起始地址為b,則將對應于邏輯端口號i的物理端口號寫入地址為b+i的存儲單元里。接入方法將在主機要求HUB對新功能設備進行重置(reset)后,將地址O寫入所分配地址識別單元的地址寄存器404并使能該地址識別單元,當主機為該設備設定地址時將所設定地址寫入地址寄存器以取代原先的地址O。當工作電路205在處理帶地址的包時將通過信號217請求包識別機構(gòu)268對包進行識別,這時包識別機構(gòu)中的所有使能的地址識別單元將同時將所含的地址寄存器404中的地址與包緩沖區(qū)240中的地址進行比較,如果有一個比較結(jié)果為相等,則該包與所對應的功能設備(包括HUB)相關(guān),對應的標識寄存器的內(nèi)容將被讀出,根據(jù)前面的假設,它是端口號轉(zhuǎn)換存儲器357對應的存儲單元片地起始地址b,如果這時包緩沖區(qū)240中的邏輯端口號為i,則端口號轉(zhuǎn)換存儲器357的地址為b+i的單元將被讀出作為物理端口號,并通過信號209與識別結(jié)果信號210 —并返回給工作電路205。由于所有使能的地址識別單元對應于那些已經(jīng)接入主機的功能設備(擁有由主機指定的非O地址)和至多一個正在接入主機的功能設備(擁有地址0),而主機所設的地址是唯一的,因此每次至多只可能有一個地址識別單元發(fā)生地址比較相等的情況,不會發(fā)生地址識別單元標識信號沖突的情況。
[0098]圖8中的地址識別電路是通過將所有使能的地址寄存器404中的地址與包緩沖區(qū)240中的地址同時進行比較來進行識別的,這種地址識別方式既適用于USB2,也適用于USB3。圖8中的端口號轉(zhuǎn)換是通過存儲器的一次映射來完成的,這種映射式的端口號轉(zhuǎn)換也同時適用于USB2和USB3。本發(fā)明實施例的技術(shù)方案應用于USB3時的最大不同(相對于USB2)在于,擁有物理端口至設備地址和邏輯端口號轉(zhuǎn)換器,以用于為生成發(fā)往主機的包提供設備地址和邏輯端口號。
[0099]USB含地址的包中所含的是端口的邏輯地址(設備地址/邏輯端口號/端口數(shù)據(jù)方向),現(xiàn)只依據(jù)設備地址對包進行識別,則對于邏輯端口號的正確性全依賴于主機的可靠性。對于這一點也有改進的可能,例如,可以給每個功能設備限定一個最大邏輯端口號數(shù)(例如8個),則邏輯端口號為3位二進制數(shù),可將包緩沖區(qū)240中邏輯端口號域203的最高位接在檢錯器上,如為1,則報錯。另外,在設置端口號轉(zhuǎn)換器的存儲器357時,將未被使用的邏輯端口號所對應的存儲單元設為一個特殊的不對應任何物理端口號的值,當端口號轉(zhuǎn)換時如轉(zhuǎn)換出的物理端口號為該值則可報錯。采用這種邏輯端口號檢錯方法后地址識別的最終輸出也應與檢錯結(jié)果相關(guān)起來。
[0100]圖9是本發(fā)明實施例的USB3設備處理器的一種實現(xiàn)。與USB2的實現(xiàn)類似,相對于現(xiàn)有技術(shù)的改動主要在包識別機構(gòu)268內(nèi)。這里的端口號轉(zhuǎn)換器242與圖8中的一樣, 這里的地址識別電路使用了內(nèi)容可尋址存儲器350來實現(xiàn)。這里的物理端口至設備地址和 邏輯端口號轉(zhuǎn)換器由另一使用存儲器的映射式轉(zhuǎn)換器完成。
[0101 ] 內(nèi)容可尋址存儲器本質(zhì)上是一種通過同時進行比較而完成識別的器件,因此這種 地址識別電路同時適用于USB2和USB3。圖9中的內(nèi)容可尋址存儲器350使用8位二進制 的擴展USB地址作為其標識部分,最高位用于使能控制,例如I表示不使能,0表示使能。標 識尋址輸入的最高位351接在表示使能的恒定信號上,低7位352與包緩沖區(qū)240中的地 址域202相連。這樣,當一個存儲單元的標識的最高位為不使能值時由于該最高位與標識 尋址輸入不同,該單元不會發(fā)生命中的情況,從而不論低7位的地址部分為何值都不會對 地址識別產(chǎn)生影響。內(nèi)容尋址命中輸出356用于包識別機構(gòu)268的識別輸出;內(nèi)容尋址輸 出353作為設備標識信號358參加端口號轉(zhuǎn)換。根據(jù)具體設計,內(nèi)容尋址輸出可以是一個 與命中單元相關(guān)的常數(shù)、發(fā)生命中的USB設備地址、或一個可由程序動態(tài)設置的數(shù)據(jù)。在用 于USB3時,根據(jù)具體設計,內(nèi)容可尋址存儲器350還可以設一個標識數(shù)據(jù)的第二讀取通道 (圖9中354),用于為物理端口至設備地址和邏輯端口號轉(zhuǎn)換器讀取設備地址,用于USB2時 則不需該第二讀取通道。
[0102]使用內(nèi)容可尋址存儲器實現(xiàn)的地址識別電路可以和使用地址比較器的地址識別 單元結(jié)合起來使用,這樣可以做到與現(xiàn)有USB設備處理器的兼容,就像圖10將要討論的方 案那樣。
[0103]圖9中的物理端口至設備地址和邏輯端口號轉(zhuǎn)換器使用一個擁有n個單元的存儲 器243,n為物理端口的數(shù)量,每個存儲單元存有兩部分內(nèi)容:邏輯端口號和用于獲得設備 地址的信息。將物理端口從0開始編號,存儲器243的地址為i的存儲單元則存有對應于 物理端口 i的邏輯端口號和可獲得其設備地址的信息。根據(jù)具體設計,可以有不同的獲取 設備地址的方法,例如:
[0104]方法1:存儲器243中直接存放設備地址,讀出后就可作為信號218提供給工作電 路 205。
[0105]方法2:存儲器243中存有對應地址寄存器的地址,通過地址寄存器的第二讀取通 道獲得設備地址(圖9)。
[0106]方法3:使用第二地址寄存器另存一份設備地址,存儲器243中存有對應設備在該 第二地址寄存器中的地址,通過間接訪問獲得對應物理端口的設備地址。
[0107]圖9中的物理端口至設備地址和邏輯端口號轉(zhuǎn)換器中的存儲器243是由接入方法 在設置端口號轉(zhuǎn)換器242中的存儲器357時一起設置的。物理端口至設備地址和邏輯端口 號轉(zhuǎn)換器在信號219有效時工作,轉(zhuǎn)換結(jié)果以信號218和229的形式返回工作電路205。
[0108]在USB3時,如果邏輯端口號至物理端口號轉(zhuǎn)換器使用的是映射邏輯電路,則物理 端口至設備地址和邏輯端口號轉(zhuǎn)換器也可以使用一個映射邏輯電路,物理端口至設備地址 和邏輯端口號轉(zhuǎn)換器的映射邏輯電路也是根據(jù)設計時確定的地址寄存器及物理端口的分 配方案確定的,其輸入為物理端口,輸出為可用于獲得設備地址的值,例如地址寄存器的編 號,和邏輯端口號,使用映射邏輯電路也使得物理端口至設備地址和邏輯端口號轉(zhuǎn)換器無 須在運行時進行維護。
[0109]本發(fā)明實施例在應用于USB3時對于現(xiàn)有技術(shù)的改動除包識別機構(gòu)外,還包括如下改動(USB2時已經(jīng)提到的改動沒有列入):
[0110](I)在工作電路205中設置可由程序讀寫的設備地址寄存器用于存放向主機發(fā)送 設備報告包(DEV NOTIFICATION)時所需的設備地址,該包是以設備名義發(fā)往主機的,只含 設備地址,不含端口信息。當向主機發(fā)送該設備報告包時,由該地址寄存器獲得設備地址以 用于填寫包頭。
[0111](2)在工作電路205中增加一設備地址及端口號形成電路,它由設置在各生成發(fā) 往主機的包的電路處的設備地址及端口號獲取電路構(gòu)成,用于當填寫發(fā)往主機的包時獲取 填寫包頭所須的設備USB地址和邏輯端口號,各設備地址及端口號獲取電路將現(xiàn)有的設備 地址及端口號填寫過程改為:由物理端口號和端口數(shù)據(jù)方向生成物理端口的編號;將物理 端口編號通過信號219輸出以請求轉(zhuǎn)換成設備地址和邏輯端口號;用由信號218所得的設 備地址和由信號229所得的邏輯端口號填寫包頭,如有多個生成發(fā)往主機的包的電路并發(fā) 地工作,還應增加一排隊電路用以將并發(fā)的對信號219的使用順序化。
[0112](3)在工作電路205填寫發(fā)往主機的包時,如有多個生成發(fā)往主機的包的電路并 發(fā)地工作,則還可以使用另一種設備地址及端口號形成電路,這種電路先將填寫過程改為: 各生成發(fā)往主機的包的電路只將物理端口號填入包頭中設備地址域,如放不下,則填入包 頭中設備地址域+邏輯端口號域(照舊填寫端口數(shù)據(jù)方向),不填寫設備地址;然后在工作 電路的另一處的包順序發(fā)送電路里增加如下處理:當將要發(fā)送的包中含設備地址和端口信 息時,從包頭中的設備地址域(或設備地址+邏輯端口號域)獲取物理端口號,結(jié)合包頭中 的端口數(shù)據(jù)方向生成物理端口的編號;將物理端口編號通過信號219輸出以請求轉(zhuǎn)換成設 備地址和邏輯端口號;用由信號218所得的設備地址和由信號229所得的邏輯端口號更新 包頭后再將包發(fā)出。
[0113]如果限制每個物理物理端口號的兩個物理端口必須用于同一個功能設備,則可使 用物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器來取代物理端口至設備地址及邏輯端口號 轉(zhuǎn)換器,這樣,轉(zhuǎn)換器中的存儲器的大小可以減少一半。物理端口號至設備地址及邏輯端口 號轉(zhuǎn)換器和邏輯端口號至物理端口號轉(zhuǎn)換器還可以共同由一個內(nèi)容可尋址存儲器分別通 過地址尋址及內(nèi)容尋址來實現(xiàn)??梢杂袃煞N方案:
[0114]方案一,以地址尋址實現(xiàn)映射式邏輯端口號至物理端口號轉(zhuǎn)換器,以內(nèi)容尋址實 現(xiàn)物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器。這時內(nèi)容可尋址存儲器的標識部分為物理 端口號,數(shù)據(jù)部分為可用于獲得設備地址的數(shù)據(jù)及邏輯端口號,內(nèi)容可尋址存儲器的地址 和它的標識部分構(gòu)成一個前面提到過的映射式邏輯端口號至物理端口號轉(zhuǎn)換器;數(shù)據(jù)部分 用于存放與標識部分的物理端口號相對應的可用于獲得設備地址的數(shù)據(jù)及邏輯端口號,用 物理端口號進行內(nèi)容尋址,所得輸出就可以用于獲得相應的設備地址及邏輯端口號,未使 用的存儲單元的標識部分應使用一個不可能成為物理端口號的值加以填充,內(nèi)容尋址部分 構(gòu)成物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器。
[0115]方案二,以地址尋址實現(xiàn)映射式物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器,以 內(nèi)容尋址實現(xiàn)邏輯端口號至物理端口號轉(zhuǎn)換器。這時內(nèi)容可尋址存儲器含n個單元,n為 物理端口號的數(shù)量,標識部分為既能表示設備地址寄存器又能用于獲得設備地址的值例如 地址寄存器的編號等及邏輯端口號,數(shù)據(jù)部分為標識部分所對應的物理端口號,這時多地 址包識別器所產(chǎn)生的標識信號應為與發(fā)生匹配的地址寄存器相關(guān)的值例如地址寄存器的編號等。內(nèi)容可尋址存儲器的地址和它的標識部分構(gòu)成一個映射式物理端口號至設備地址 及邏輯端口號轉(zhuǎn)換器;用標識信號提供的與發(fā)生匹配的地址寄存器相關(guān)的值及包緩沖中的 邏輯端口號進行內(nèi)容尋址,所得輸出就是對應的物理端口號,因此內(nèi)容尋址部分就構(gòu)成了 邏輯端口號至物理端口號轉(zhuǎn)換器,這時,多地址包識別器的識別輸出還應與內(nèi)容可尋址存 儲器的命中輸出關(guān)聯(lián)起來,以便在檢出錯時(內(nèi)容可尋址存儲器不命中時)不繼續(xù)并報錯。
[0116]由于邏輯端口號至物理端口號的轉(zhuǎn)換只對于邏輯端口號0是必須的,對于簡單的 應用可以簡化端口號轉(zhuǎn)換而只對邏輯端口號0進行轉(zhuǎn)換,非0邏輯端口號不經(jīng)轉(zhuǎn)換直接使 用(邏輯端口號=物理端口號)。
[0117]前面公開的兩個本發(fā)明的實現(xiàn)方案尚未考慮兼容性問題,即現(xiàn)有應用程序和USB 棧程序如何在含有本發(fā)明實施例的USB處理器上運行。下一個實現(xiàn)方案將處理兼容性問 題。圖10是本發(fā)明實施例的另一種用于USB2的實現(xiàn),加上物理端口至設備地址和邏輯端 口號轉(zhuǎn)換器后可用于USB3。與前兩種實現(xiàn)方案類似,本方案對于現(xiàn)有技術(shù)的改動主要在于 包識別機構(gòu)268。本方案保留了現(xiàn)有技術(shù)中的地址寄存器201和地址比較器204使其仍作 為一個地址識別單元(它沒有使能控制電路而總處于使能狀態(tài)),當該地址識別單元發(fā)生地 址匹配時,包緩沖區(qū)240中的邏輯端口號203通過開關(guān)375不經(jīng)轉(zhuǎn)換直接到達物理端口號 參考點376(邏輯端口號=物理端口號),其它新增部分為多個地址識別和端口號轉(zhuǎn)換器320 至 321。
[0118]每個地址識別和端口號轉(zhuǎn)換器可以用于實現(xiàn)一個功能設備,它含有一個與圖8結(jié) 構(gòu)中的地址識別單元419等一樣的地址識別電路,包含地址寄存器404、地址比較器405和 使能控制電路403。各新增地址比較器405等的比較結(jié)果經(jīng)邏輯電路311匯合后再與現(xiàn)有 技術(shù)中的地址比較器204的輸出經(jīng)另一邏輯電路214匯合而形成包識別輸出信號210。端 口號轉(zhuǎn)換器仍可以是使用存儲器的映射式轉(zhuǎn)換器,但存儲器被分為小塊后分配給各地址識 別和端口號轉(zhuǎn)換器320等,小塊的存儲器409等由包緩沖區(qū)240中的邏輯端口號直接尋址, 并在相應的地址比較器檢出地址相等時工作,讀出的物理端口號經(jīng)參考點376輸出。對應 到圖8的地址識別電路,這相當于產(chǎn)生的地址標識信號為地址比較器的輸出。在上電時所 有新增地址識別和端口號轉(zhuǎn)換器320至321的使能狀態(tài)都為不使能,因而對USB設備處理 器不產(chǎn)生影響,整個USB設備處理器將像現(xiàn)有技術(shù)的USB設備處理器一樣工作,這樣,不知 新增電路存在的原有USB棧程序和應用程序?qū)⒖梢哉粘9ぷ鲝亩WC了兼容性。
[0119]圖11是本發(fā)明的一種使用USB3包頭中路由信息進行地址識別的USB設備處理器 的結(jié)構(gòu),與已經(jīng)介紹的幾種實現(xiàn)方案一樣,相對于現(xiàn)有技術(shù)的USB設備處理器的改動主要 在包識別機構(gòu)268里。相對于圖9的實現(xiàn)方案,端口號轉(zhuǎn)換器242是一樣的;物理端口至設 備地址和邏輯端口號轉(zhuǎn)換器243也是基本一樣的,除了出于簡化圖形的目的,這里設備地 址沒有通過地址寄存器的第二讀取通道獲得,而是直接從轉(zhuǎn)換器的存儲單元獲得,圖中包 識別機構(gòu)268中除242和243以外的部分為地址識別電路;與圖9的差別主要在于地址識 別電路。圖11中的包識別機構(gòu)268中的包識別電路包括一個或多個設備地址識別組801 至802,地址比較電路830以及控制電路821。每個地址識別組含3至16個地址寄存器的 地址寄存器組811和對應的標識信號寄存器組812,每組地址寄存器用于實現(xiàn)一個擁有k-1 個下行端口的HUB和連接在其下行端口上的功能設備,k為該組中地址寄存器的數(shù)量,每組 地址寄存器中位移為0的地址寄存器用于實現(xiàn)HUB,若有多個地址寄存器組,則其它地址寄存器可用于實現(xiàn)功能設備或用于連接表示下一級HUB的其它地址寄存器組,若只有一個地 址寄存器組,則所有其它地址寄存器都用于功能設備。地址識別電路中的地址寄存器被分 成一組或多組視具體設計而定,當應同時接入主機的功能設備多于15時,應使用多個地址 寄存器組,否則可使用一個地址寄存器組。
[0120]圖11中的地址寄存器組811的每個地址寄存器可以采用9位二進制的擴展USB 地址,其最高位用于表示該地址寄存器的使能狀態(tài),次高位用于表示該寄存器的用途,用于 一功能設備或用于連接下一級HUB。若該地址寄存器組811用于一功能設備,則其低7位含 設備地址,若該地址寄存器組811用于連接下一級HUB,則其低7位含尋址下一級HUB所在 地址寄存器組的信息。標識信號寄存器組812用于存放對應地址寄存器組811的用于端口 號轉(zhuǎn)換的標識信號,標識信號與前面幾個實施例一樣,可以是設計時設定常數(shù)或運行時動 態(tài)設置的值。控制電路821接收各方信息并產(chǎn)生各種控制信號,其中包括當擁有多個地址 寄存器組時產(chǎn)生指定當前地址寄存器組的選擇信號822至823,圖11中特別將擴展地址的 最高兩位重復以信號834和835畫出以示特別提示。比較電路830包括:地址暫存器831, 用于暫存從地址寄存器組811讀出的內(nèi)容;地址比較器832,用于比較暫存器831中的地址 和包緩沖區(qū)240中的設備地址202,其比較結(jié)果833將作為包識別機構(gòu)的識別信號210。
[0121]圖11中的地址識別電路的工作過程包含如下步驟:
[0122](I)當包識別機構(gòu)268收到工作電路205的包識別請求信號217時,控制電路821 將當前地址寄存器組設置為含有第一個接入主機的HUB的組,例如801 ;
[0123](2)讀包緩沖區(qū)240中HUB深度域231,并以所讀值為位移讀包緩沖區(qū)240中路由 表230,再以從路由表所讀得的值840為位移讀當前地址寄存器組,例如811,中的地址寄存 器,將所讀內(nèi)容存入比較電路中的暫存器831 ;
[0124](3)判斷擴展地址的使能位以確定所讀地址寄存器是否使能,若不使能,輸出該包 與本多功能設備無關(guān)并結(jié)束;
[0125](4)若為使能,判斷擴展地址用途位,若該地址寄存器用于功能設備,啟動地址比 較器832以比較所讀地址和包緩沖區(qū)中的地址,若不等,則輸出該包與本多功能設備無關(guān) 并結(jié)束;若相等,則以從路由表所讀得的值840為位移讀當前地址寄存器組所在地址識別 組中的標識信號寄存器組,例如812,將所讀標識信號輸出至端口號轉(zhuǎn)換器參加端口號轉(zhuǎn) 換,將所得物理端口號和地址比較器輸出一起返回工作電路205并結(jié)束。
[0126](5)若該地址寄存器用于連接下級HUB,則通過所讀地址信息確定下級HUB所在的 地址寄存器組并將其設置為當前組,將包緩沖區(qū)240中HUB深度域231加1,若加I后大于 或等于5,輸出該包與本多功能設備無關(guān)并結(jié)束;否則轉(zhuǎn)至步驟(2)。
[0127]圖11的USB設備處理器可以有幾種簡單變化,第一種變化:當多功能設備需同時 接入主機的功能設備的數(shù)量不超過15時,可以只是用一個地址寄存器組,這是一種簡化的 情形,擴展地址只需8位(無需地址寄存器用途位),識別過程也無需循環(huán),一遍就夠了。第 二種變化:可以不用一個擴展地址位來標識一個地址寄存器的用途,而是在具體設計時固 定某些地址寄存器可以用于連接下一級HUB,另一些可以用于功能設備,也就是說,通過地 址寄存器在組中的位置可以判斷其用途,這樣,控制電路821只要通過當前地址寄存器組 和由路由表所讀得的值840就可以確定所讀地址寄存器的用途;還可以在具體設計時確定 某些地址寄存器在用于連接下一級HUB時固定使用確定的地址寄存器組,這樣,控制電路821只要通過當前地址寄存器組和由路由表所讀得的值840不但可以確定一地址寄存器的 用途,而且當該地址寄存器在用于連接下一級HUB時還可以確定下一級HUB所在的地址寄 存器組;當然還可以將上述幾種方案結(jié)合起來使用。
[0128]圖11中的擴展地址的最高位被用于該地址的使能控制,使能控制在這種利用 USB3包頭中路由信息進行包識別的方案中不是必須的,如果相信主機不會犯錯,則可以不 用使能控制,使用使能控制可以增強檢錯能力。
[0129]以上公開的幾種USB設備處理器和它們的一些變形都可以為多個功能設備進行 包處理和會話處理,條件是這些功能設備已經(jīng)通過枚舉過程獲得主機設置的USB非0地址, 至多可有一個功能設備在主機許可的情況下使用0地址正與主機處于枚舉過程。但當多功 能設備接入主機時,主機只能枚舉出一個設備,主機不知道其它功能設備的存在因而不會 和它們發(fā)生通訊,它們也不能被加入USB設備處理器因為它們還沒有USB地址。為此需要 有一個接入方法將多功能設備的各個功能設備一一接入主機。
[0130]將多個功能設備接入主機的方法包括:先模擬實現(xiàn)一個HUB并讓多功能設備以 HUB的身份接入主機,然后通過控制HUB的下行端口(downstream port)的狀態(tài)(status) 的變化,并在主機詢問時報告給主機來模擬一個設備接入該下行端口的事件。主機在收到 這樣的事件后就會指令HUB對新接入的設備進行重置(reset),之后,主機就會通過USB地 址0對新接入的設備發(fā)起枚舉。這時,主機就已經(jīng)在與新接入的設備在直接通訊了,因此可 以將新接入的功能設備加入USB設備處理器從而讓前面實施例中的技術(shù)方案發(fā)揮作用。在 枚舉結(jié)束后,主機會給新接入的功能設備設置一個非0的USB地址,用該非0地址替換該功 能設備的地址寄存器中的0地址,接著,可以重復以上步驟去接入下一個功能設備直至所 有應接入主機的功能設備都被接入主機。
[0131]圖12是本發(fā)明的接入方法的流程圖,該接入方法包含如下步驟:
[0132]步驟1201,多功能設備接入主機;
[0133]步驟1202,在將多功能設備接入主機時的枚舉過程中,聲明自己是一個HUB并按 USB的規(guī)范實現(xiàn)一個虛擬HUB,特別是虛擬地實現(xiàn)出各下行端口的狀態(tài);
[0134]步驟1203,判斷是否還有功能設備要接入主機,如果沒有則轉(zhuǎn)至步驟1207結(jié)束, 如果有則轉(zhuǎn)至步驟1204 ;
[0135]步驟1204,通過模擬產(chǎn)生所述虛擬HUB的一個下行端口的狀態(tài)變化并在主機詢問 時報告給主機,從而模擬出一個新設備接入該下行端口的事件,以使主機啟動對該新接入 設備的枚舉過程;
[0136]步驟1205,在主機指令所述虛擬HUB對所述模擬的新接入設備進行重置后,將所 述新接入的功能設備加入USB設備處理器,以使USB設備處理器可以為該新接入的功能設 備處理會話;
[0137]步驟1206,由主機對新接入的設備進行枚舉直至主機為其設置USB地址;
[0138]之后重復步驟1203至1206直至將所有應接入主機的功能設備接入主機。
[0139]以上步驟1205中“將所述新接入的功能設備加入USB設備處理器”的操作進一步 包含如下步驟:
[0140]( I)在設備地址表中分配一個單元,并將所分配的地址單元設為地址0 ;
[0141](2)根據(jù)功能設備的要求分配物理端口 ;[0142](3)確定物理端口的物理端口號與邏輯端口號的對應關(guān)系,其中一個控制型物理 端口號將對應邏輯端口號0 ;
[0143](4)根據(jù)所確定的邏輯端口號與物理端口號的對應關(guān)系以及所分配的地址表單元 設置邏輯端口號與物理端口號關(guān)系表,以保證當所分配的地址表單元中的設備地址與包中 USB地址相等時,包緩沖區(qū)中的邏輯端口號能轉(zhuǎn)換出對應的物理端口號;
[0144](5)在USB3時,根據(jù)所確定的邏輯端口號與物理端口號的對應關(guān)系、物理端口的 數(shù)據(jù)方向以及所分配的地址表單元設置物理端口至設備地址和邏輯端口號關(guān)系表,以保證 通過物理端口可以獲得對應的設備地址和邏輯端口號;
[0145](6)當主機為所述新接入的功能設備設置USB地址時,將該地址寫入步驟(I)所分 配的地址表單元。
[0146]在具體實施中,如果規(guī)定一個物理端口號的兩個端口只能為同一功能設備所使 用,則步驟(2 )應為分配物理端口號,步驟(5 )也應為設置物理端口號至設備地址和邏輯端 口號關(guān)系表以便通過物理端口號獲得設備地址和邏輯端口號。
[0147]在步驟(3 )確定物理端口號與邏輯端口號的對應關(guān)系時,可以為每個物理端口號 任意設定0至15的對應邏輯端口號,唯一限制條件是必須有一個控制型物理端口號對應邏 輯端口號O。
[0148]圖12所示的接入方法使用的邏輯端口號與物理端口號關(guān)系表及物理端口至設備 地址和邏輯端口號關(guān)系表都是可改變的表格,這保證了系統(tǒng)的靈活性及對物理端口的充分 利用,但對于一些簡單的應用,沒有必要去維護這些表格,可以在設計時將它們確定并固定 下來。這時,地址表單元被固定地分配給各所需實現(xiàn)的功能設備,物理端口也被,按各功能 設備的需要,固定地分配給各所需實現(xiàn)的功能設備,各功能設備的邏輯端口號也被固定下 來,因此,如果用能標識設備地址表單元的值,例如該單元在表中的位移,來表示功能設備, 則邏輯端口號與物理端口號關(guān)系表就是一張確定的無須維護的不可變的表格。這樣可以簡 化系統(tǒng),但在運作時會更復雜些,例如,在為一功能設備分配地址單元時,不能只考慮地址 單元是否可用,還應考慮該地址單元所對應的物理端口是否包含所有所需的物理端口。在 USB3時,如果邏輯端口號與物理端口號關(guān)系表是一張不可變的表格,則用以通過物理端口 獲得設備地址和邏輯端口號的物理端口與設備地址和邏輯端口號關(guān)系表也將是一張無須 維護的不可變的表格,并且在設計時就已確定,但從物理端口與設備地址和邏輯端口號關(guān) 系表中只能直接獲得可以獲得設備地址的信息,例如地址表單元在表中的位移,必須通過 進一步操作以獲得設備地址。
[0149]接入方法可以在USB棧中以程序的方式實現(xiàn)。每個HUB的下行端口可以用于接入 一個功能設備,因此所模擬的HUB應擁有足夠多的下行端口用于同時接入所需個數(shù)的功能 設備。
[0150]在USB2時,由于HUB沒有最大下行端口數(shù)的限制,所有功能設備可由一個HUB接 入主機,所述HUB應擁有k-1個下行端口,k為地址表的最大單元數(shù),其中一個被用于所述 HUB。
[0151]在USB3時,由于HUB最多只能擁有15個下行端口,當應同時接入主機的功能設 備數(shù)超過15時,就必須使用二級(也可為更多級,但非必須)HUB來接入所有功能設備,方法 是:由一個已接入主機的HUB將另一個HUB像接入一個功能設備一樣接入主機作為下一級HUB,再由該下一級HUB將其它功能設備接入主機。
[0152]在USB3時,由于發(fā)往主機的包中含有設備的USB地址和相關(guān)的端口信息,而當工 作電路生成發(fā)往主機的包時只擁有物理端口的信息,因此需要通過物理端口至設備地址和 邏輯端口號關(guān)系表以獲得與一物理端口相對應的設備地址和邏輯端口號,以用于填寫發(fā)往 主機的包頭。接入方法在維護邏輯端口號與物理端口號關(guān)系表時擁有這些信息,因此接入 方法可以同時維護這兩張表。
[0153]在將上述接入方法應用于本發(fā)明的USB設備處理器時,“設備地址表”對應于地址 寄存器集合,分配一個地址表單元意味著找到一個不使能的地址識別單元,并在主機指令 對其所對應的功能設備重置后將其使能,由于USB設備處理器里至少有一個設備(例如最 初接入主機的HUB),因此可有一個地址識別單元不受使能控制而總處于使能狀態(tài)。
[0154]“邏輯端口號與物理端口號關(guān)系表”對應于邏輯端口號至物理端口號轉(zhuǎn)換器242中 的存儲器357或一映射邏輯電路(當邏輯端口號與物理端口號關(guān)系表為不可變時)。USB3時 的“物理端口至設備地址和邏輯端口號關(guān)系表”對應于物理端口至設備地址及邏輯端口號 轉(zhuǎn)換器的存儲器243或另一映射邏輯電路。
[0155]由上述接入方法不難得出動態(tài)地將一個功能設備接入主機和將一個功能設備動 態(tài)地從主機拔除的方法,從而做到功能設備的動態(tài)插拔。接入方法(圖12)中步驟1204至 1206可用于動態(tài)地將一個功能設備接入主機;而將一個功能設備動態(tài)地從主機拔除可以 通過如下步驟實現(xiàn):
[0156](I)將待拔除的功能設備從USB設備處理器中刪除,包括從地址表中刪除(不使能 對應的地址寄存器),從邏輯端口號與物理端口號關(guān)系表中刪除(釋放對應的存儲單元);若 是USB3,還要從物理端口至設備地址和邏輯端口號關(guān)系表中刪除(釋放對應的存儲單元); 之后釋放所占用物理端口。
[0157](2)改變HUB的對應下行端口的狀態(tài)以模擬出設備拔除的事件并在主機詢問時報
告主機。
[0158]在將上述的拔除功能設備的方法應用于本發(fā)明實施例的USB設備處理器時,將設 備"從地址表中刪除"意味著將對應的地址識別單元不使能。
[0159]圖12所示的接入方法的流程圖還可以有一種變化但不產(chǎn)生實際影響,那就是在 步驟1204向主機報告有新功能設備接入時不是模擬新功能設備一個一個地接入的過程, 而是向主機報告有多個新功能設備同時接入,但主機仍然會一個一個順序地指令HUB對新 接入的功能設備進行重置并對被重置的功能設備發(fā)起枚舉,接入過程仍將是一個功能設備 一個功能設備順序地進行。
[0160]圖13是一種智能設備的系統(tǒng)結(jié)構(gòu)。這種系統(tǒng)結(jié)構(gòu)將智能設備主要分為兩大模塊: 中央處理模塊501和外部設備控制模塊502。中央處理模塊501包括功能強大的通用中央處 理器(CPU),該CPU通過總線連接一個USB主機處理器(USB host handher)以及一些輔助電 路,如時鐘及定時電路、DMA控制電路、中斷控制電路和一定數(shù)量的通用輸入輸出線(GPIO) 等(未在圖中標出)。
[0161]中央處理模塊501用來運行通用操作系統(tǒng)(像Windows, Linux和Android等)。所 有外部設備都將通過USB主機處理器接入。由于Windows和Linux都已有大多數(shù)設備的基 于USB的驅(qū)動程序,讓它們運行在一個如圖13所示的中央處理模塊501上是比較容易的。[0162]外部設備控制模塊502包括中央處理器(CPU)通過總線連接兩個USB設備處理器 (USB device handler)以及各種外部設備的適配器。這兩個USB設備處理器都是任意一種 可以將多功能設備以USB組合設備的形式呈現(xiàn)給主機的USB設備處理器,例如本發(fā)明上述 實施例所公開的USB設備處理器,從而將外部設備控制模塊502當作多功能設備以USB組 合設備的形式呈現(xiàn)給USB主機并使每個由外部設備控制模塊502管理的外部設備都可以以 獨立USB設備的形式接入USB主機并可以獨立地插拔,此處USB主機包括中央處理模塊中 的USB主機及智能設備之外的USB主機。
[0163]外部設備控制模塊502中的一個USB設備處理器用來與中央處理模塊501中的 USB主機處理器通過一條總線503連接,該總線是執(zhí)行USB規(guī)范的,包括所有連接USB主機 處理器和USB設備處理器所需的電路,包括使用和不使用USB收發(fā)器的情形,以便將外部設 備控制模塊502所管理的設備呈現(xiàn)給在中央處理模塊501上運行的操作系統(tǒng);另一個USB 設備處理器經(jīng)過UTMI / UPLI介面(或其它私有界面)與一個USB收發(fā)器(USB transceiver) 連接后可以與外部主機通過USB線連接。
[0164]設備控制模塊502與目前的手機芯片十分相似,可以管理的外部設備包括大容量 存儲器(SD flash),攝像頭(Camera),鍵盤(Keyboard)以及無線通訊設備(GSM RF)等,圖 中其它設備(Other devices)代表了所有其它設備如WiFi,顯示,藍牙和近場無線連接NFC
坐 寸o
[0165]雖然目前還沒有顯示卡是以USB界面提供給系統(tǒng)的,要通過USB進行顯示還是不 難做得到的。在Windows里有遠程登錄(remote login)的功能,它能使一臺PC可以通過 網(wǎng)絡登錄到另一臺PC的Windows上,并像使用本地Windows —樣使用遠程的Windows。這 說明Windows可以將顯示通過網(wǎng)絡輸出到遠程去,而USB網(wǎng)卡驅(qū)動程序卻是現(xiàn)成的,因此可 以將Windows的顯示通過USB網(wǎng)卡驅(qū)動程序輸出到設備控制模塊502。接著,只要在設備 控制模塊上實現(xiàn)Windows的顯示就行了。Linux的顯示可以通過稱為X的界面通過網(wǎng)絡傳 給遠程終端。因此,只要在設備控制模塊502上實現(xiàn)X服務器(X server),再讓X經(jīng)由USB 網(wǎng)卡驅(qū)動程序就可以將Linux的顯示轉(zhuǎn)移到外部設備控制模塊。
[0166]中央處理模塊501和設備控制模塊502之間的USB連接電路503用于連接USB主 機處理器和USB設備處理器,可以有多種選擇,包括標準USB連接(使用收發(fā)器),芯片間USB (HSIC,使用收發(fā)器)、UTMI主機/設備橋接器(并行數(shù)據(jù)連接,無須收發(fā)器)、ULPI主機/設 備橋接器(并行數(shù)據(jù)連接,無須收發(fā)器)等,它還可以是一個專門設計的USB主機/設備直接 連接器(USB Host Device Direct Link UHDDL),從而實現(xiàn)無需收發(fā)器的USB主機/設備直 接并行數(shù)據(jù)連接,這可以比UTMI和ULPI都大為簡化因為它們是面向USB收發(fā)器設計的,以 上所例舉的可能選擇不應理解為對本發(fā)明保護范圍的限制。
[0167]一種可用于圖13實施例的USB主機/設備直接連接器(UHDDL)是一條并行數(shù)據(jù) 總線,包含:一條或多條,單向或雙向的以字節(jié)為單位的并行數(shù)據(jù)線Data,為每條并行數(shù)據(jù) 線配備的一條與對應并行數(shù)據(jù)線同方向的USB包指示線Packet,以及為每條并行數(shù)據(jù)線配 備的一條與對應并行數(shù)據(jù)線同方向的同步線Strobe。當Packet線為0時,并行數(shù)據(jù)總線處 于待機狀態(tài)(Idle),沒有數(shù)據(jù)傳輸;當Packet線為I時表示正在傳輸一個包,此時Strobe 起到時鐘的同步作用,它的每個周期將傳輸一組并行數(shù)據(jù),在Strobe的上升沿數(shù)據(jù)被放入 總線,在Strobe的下降沿數(shù)據(jù)被從總線上讀出,當Packet線再落回0時,一個USB包的傳輸結(jié)束。并行數(shù)據(jù)線的條數(shù)及數(shù)據(jù)方向是由USB規(guī)范確定的,USB2時為I條雙向并行數(shù)據(jù) 線,雙向并行數(shù)據(jù)線在某一時刻的數(shù)據(jù)方向是由USB規(guī)范確定的,USB3Superspeed時為2 條單向并行數(shù)據(jù)線。如果并行數(shù)據(jù)線的寬度超過一個字節(jié),還應配備相應的與并行數(shù)據(jù)線 同方向的數(shù)據(jù)寬度指示線,用以指示每組傳輸數(shù)據(jù)的寬度,若并行數(shù)據(jù)線為16位,則數(shù)據(jù) 寬度指示線需要I條線,當數(shù)據(jù)寬度指示線為0時,并行數(shù)據(jù)線上所傳數(shù)據(jù)為8位,當數(shù)據(jù) 寬度指示線為I時,并行數(shù)據(jù)線上所傳數(shù)據(jù)為16位;若并行數(shù)據(jù)線為32位,則數(shù)據(jù)寬度指 示線需要2條線,當數(shù)據(jù)寬度指示線為(0,0),(0,1),(1,0),(1,1)時分別表示并行數(shù)據(jù)線 上所傳數(shù)據(jù)為8位,16位,24位和32位。圖15是上述并行數(shù)據(jù)總線的時序圖。如果使用 DDR技術(shù)(Double Data Rate數(shù)據(jù)倍速),則可以在Strobe的上升沿和下降沿都傳輸數(shù)據(jù)。 在另一種實施例中,Strobe可由時鐘信號替代,時鐘可來自主機,設備或獨立于主機和設備 的機構(gòu)。
[0168]出于簡明的原因,圖13中只使用了一條USB連接電路503來連接中央處理模塊 501和設備控制模塊502。但在具體實施中可以根據(jù)數(shù)據(jù)流量的要求使用多條USB連接電 路,即在中央處理模塊501中設多個USB主機處理器,在設備控制模塊502中設多個對應 USB設備處理器,用多條USB連接電路分別連接各對USB主機/設備模塊。
[0169]本發(fā)明所提出的智能設備的系統(tǒng)結(jié)構(gòu)的特別之處就在于將外部設備的管理從主 操作系統(tǒng)的運行環(huán)境中分離出來,用另外一個模塊來實現(xiàn),而使這一想法經(jīng)濟有效的關(guān)鍵 是使用已被通用操作系統(tǒng)廣泛支持的USB來連接這兩個模塊,這樣可以省掉大量在主操作 系統(tǒng)上的驅(qū)動程序的開發(fā),而使USB可以擔當此任的關(guān)鍵,就是要能將多功能設備以USB組 合設備的形式呈現(xiàn)給主機。任何一種能將多功能設備以USB組合設備的形式呈現(xiàn)給主機的 USB設備處理器技術(shù),包括可能還沒有發(fā)明出來的技術(shù),在此都能起到同樣的效果。因此,應 用“將多功能設備以USB組合設備的形式呈現(xiàn)給主機”這一技術(shù)特征是本發(fā)明的要點,而如 何實現(xiàn)這一技術(shù)特征則不是。因此,將任何一種具有技術(shù)特征“將多功能設備以USB組合設 備的形式呈現(xiàn)給主機”的USB設備處理器技術(shù)應用于本發(fā)明提出的智能設備的系統(tǒng)結(jié)構(gòu)都 應認為屬于本發(fā)明的范圍。
[0170]本發(fā)明提出智能設備的系統(tǒng)結(jié)構(gòu)的基本想法是要盡可能利用現(xiàn)有技術(shù)去構(gòu)造中 央處理和外設管理兩個模塊,并將這兩個模塊通過USB進行連接,以避開應用處理器(AP) 的復雜性?,F(xiàn)有技術(shù)中的有些通用CPU已經(jīng)集成了顯示卡和顯示加速器,因此,在中央處理 模塊501中不必限制只擁有CPU和USB主機處理器,也可以擁有顯示和顯示加速模塊。更 一般地,任何與主操作系統(tǒng)密切相關(guān)并且集成在中央處理模塊中可以顯著提高系統(tǒng)整體性 能的外設都可以被加入中央處理模塊。更一般地,系統(tǒng)中也不限于只有一個設備控制模塊 502,在實施中可以根據(jù)具體的需要以及現(xiàn)有技術(shù)的可能設置多個設備控制模塊,通過多條 USB線分別與中央處理模塊連接,但在多個設備控制模塊的情形,同時只能有一個設備控制 模塊管理的外部設備可以和本智能設備以外的USB主機連接,如何選擇不屬于本發(fā)明的范 圍。
[0171]圖13中的中央處理模塊501和設備控制模塊502可以被放在同一管芯(die)上, 也可以處于不同管芯但封裝在同一芯片(chip)里,還可以處于不同的芯片通過印刷線路板連接。
[0172]圖13所示的智能設備的系統(tǒng)結(jié)構(gòu)還有一個優(yōu)點,那就是中央處理模塊501和設備控制模塊502可以分別獨立地進行開發(fā)和測試,中央處理模塊501可以使用通常的USB設 備進行測試,而設備控制模塊502則可以接入PC進行測試。
[0173]圖14是本發(fā)明所提出的智能設備的另一種更為實用的實施方案,包括了適應于 圖13所提出的系統(tǒng)結(jié)構(gòu)的USB OTG (On The Go)方案,中央處理模塊501和設備控制模塊 502的內(nèi)存共享,以及將顯示處理(Display)及圖形加速(DSP)移至中央處理模塊501。與 通常的OTG不同的是,USB的主機處理器和設備模塊不在一起,它們分別處于中央處理模塊 501和設備控制模塊502中。在中央處理模塊501中增加了第二 USB主機處理器606用于 OTG的主機功能。
[0174]中央處理模塊501中的第二 USB主機處理器606和設備控制模塊502中的第二 USB設備處理器605通過雙通電子開關(guān)604與USB收發(fā)器607以UTMI / ULPI界面(或其 它非標準界面)連接。中央處理模塊501通過第二 USB主機處理器606實現(xiàn)USB主機的角 色,而設備控制模塊502則通過第二 USB設備處理器605實現(xiàn)USB設備的角色。
[0175]當外部裝置通過收發(fā)器接入時,在根據(jù)USB OTG的規(guī)范確定本系統(tǒng)所應扮演的角 色后(確定過程可能有USB處理器參與),電子開關(guān)604將收發(fā)器連接到相應的處理模塊。若 應扮演主機的角色,則連接到中央處理模塊的第二 USB主機處理器606去;若應扮演設備的 角色,則連接到設備控制模塊的第二 USB設備處理器605去。
[0176]圖14所示的實施例還包含了中央處理模塊501和設備控制模塊502的內(nèi)存共享 的部分,中央處理模塊501中的內(nèi)存管理器610 —方面與外接內(nèi)存RAM連接,為中央處理模 塊501中的CPU及其它部分提供內(nèi)存訪問通道,另一方面,內(nèi)存管理器610也為外部環(huán)境 提供了訪問內(nèi)存的通道,在設備控制模塊502中有一個對應的內(nèi)存適配器611,內(nèi)存管理器 610和內(nèi)存適配器611之間通過芯片間內(nèi)存連接電路612連接,已經(jīng)存在一些標準接口提供 這一類的芯片間內(nèi)存連接服務,例如,芯片間接口(Chip to Chip Interface,C2C)和MIPI 聯(lián)盟的低延遲接口(Low Latency Interface, LLI)等,也可以采用特別設計的芯片間內(nèi)存 共享方案來實現(xiàn)圖14中的610,611和612。設備控制模塊502中的CPU和其它部件可以通 過內(nèi)存適配器611共享連接在中央處理模塊501的內(nèi)存RAM,就象它是連接在設備控制模塊 502 一樣。
[0177]使設備控制模塊502和中央處理模塊501共享內(nèi)存RAM為USB的進一步改進提供 了需求,而這種改進可以大大提高系統(tǒng)的性能,例如,對于像U盤這類大數(shù)據(jù)量的設備,使 用現(xiàn)行USB規(guī)范的讀過程是:1.將數(shù)據(jù)由外設讀到內(nèi)存RAM,2.由內(nèi)存RAM讀到USB設備 處理器,3.由USB設備處理器通過USB傳至USB主機處理器,4.再由USB主機處理器將數(shù) 據(jù)寫到內(nèi)存RAM以供應用程序使用。通過定義一個新的U盤子類,USB主機處理器可以指 令USB設備處理器直接將數(shù)據(jù)讀到內(nèi)存RAM中指定的位置上以供應用程序使用,這就省去 了現(xiàn)行讀數(shù)據(jù)的過程中步驟2,3,4,從而使得讀數(shù)據(jù)的過程和將U盤直接連接在中央處理 模塊501上的過程相近。這也說明,本發(fā)明提供的智能設備的系統(tǒng)結(jié)構(gòu)可以達到與使用應 用處理器AP時近似的性能。
[0178]由于本發(fā)明提出了一種只需對現(xiàn)有USB設備處理器作局部修改而使其能為多個 USB設備工作的方案,其應用范圍并不限于將多功能設備以組合設備的形式呈現(xiàn)給主機,任 何一個USB設備處理器經(jīng)改造后都可以成為一個組合設備而獲得更強的功能。例如,HUB中 的控制器(controller)就含有一個USB設備處理器,如果用本發(fā)明對其進行改造,可以使其成為邏輯上(在主機看來)為多個HUB串聯(lián)而成的一個組合HUB,這樣做的好處是使得主 機對接在該HUB上的設備可以容忍更長的信號延遲從而可以使用超出規(guī)范長度的電纜或 進行更長距離的無線通訊連接。由于經(jīng)本發(fā)明改造后的USB設備處理器還可以與原設備處 理器兼容,另一個應用的例子是給USB鍵盤增加一個HUB的轉(zhuǎn)發(fā)器(r印eater)及下行端口 電路后為其增加一個HUB的下行端口,當該下行端口為空置時,鍵盤以一個USB設備的形式 接入主機,當有設備插入該下行端口時,模擬一個拔出后再插入的操作,但重新接入時則是 以組合設備的形式將鍵盤與新接入的設備一并呈現(xiàn)給主機。
[0179]本發(fā)明雖然以較佳實施例公開如上,但其并不是用來限定本發(fā)明,任何本領域技 術(shù)人員在不脫離本發(fā)明權(quán)利要求的精神和范圍內(nèi),都可以做出可能的變動和修改,它們也 應屬于本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種將多功能設備以USB組合設備形式呈現(xiàn)給主機的方法,作用于所述多功能設備的USB設備處理器,其特征在于,所述USB設備處理器包括: 包緩沖區(qū),用于暫存從USB線路收到的包所含的信息; 一組物理端口,用于作為與所述多功能設備的界面,并暫存由所述主機發(fā)來的或?qū)⒁l(fā)往所述主機的數(shù)據(jù); 包識別機構(gòu),用于判斷所述包緩沖區(qū)中帶地址的包是否與所述多功能設備相關(guān),并提供與所述包相關(guān)的物理端口號,所述包識別機構(gòu)使用設備地址表和邏輯端口號與物理端口號關(guān)系表,所述設備地址表用于存放所述多功能設備中各功能設備的USB地址,所述邏輯端口號與物理端口號關(guān)系表用于建立各功能設備的邏輯端口號與物理端口號之間的對應關(guān)系,在任何時刻,所述設備地址表含有所述多功能設備的已經(jīng)接入所述主機的功能設備的USB地址和至多一個正在接入所述主機的功能設備的O地址; 工作電路,用于實現(xiàn)USB規(guī)范指定的包處理并完成與所述主機的會話,所述工作電路對所述包緩沖區(qū)中的包進行處理,當所述包中不含地址時,所述工作電路獨立地完成對所述包的處理,當所述包中含有地址時,所述工作電路請求所述包識別機構(gòu)對所述包進行判斷,如果該包與本多功能設備無關(guān),所述工作電路丟棄該包,如果該包與所述多功能設備相關(guān),所述包識別機構(gòu)將所述包中的邏輯端口號轉(zhuǎn)換成物理端口號一并提供給所述工作電路,所述工作電路根據(jù)所提供的物理端口號以及該包中除所述邏輯端口號之外的其它信息確定物理端口并繼續(xù)對該包進行處理,所述工作電路向所述主機發(fā)送應發(fā)送的包以實現(xiàn)與所述主機的會話,從而將所述主機發(fā)來的數(shù)據(jù)存入對應物理端口的緩沖區(qū)或?qū)?shù)據(jù)從對應物理端口的緩沖區(qū)發(fā)往所述主機; 所述方法包括接入方法和包處理方法,所述包處理方法作用于所述包識別機構(gòu),所述包處理方法包括: 使用所述設備地址表及所述邏輯端口號與物理端口號關(guān)系表實現(xiàn)對所述包的多地址識別,并將所述包中的邏輯端口號轉(zhuǎn)換成物理端口號以提供給所述工作電路,使得所述USB設備處理器為多個USB設備工作; 所述接入方法作用于所述USB設備處理器,所述接入方法包含如下步驟: 步驟a,在將所述多功能設備接入所述主機時的枚舉過程中,聲明所述多功能設備是集線器,并按USB規(guī)范實現(xiàn)虛擬集線器,并虛擬地實現(xiàn)出各下行端口的狀態(tài); 步驟b,通過模擬產(chǎn)生所述虛擬集線器的一個或多個下行端口的狀態(tài)變化并在所述主機詢問時報告給所述主機,從而模擬出一個或多個新設備接入所述下行端口的事件,以使所述主機啟動對所述新設備的枚舉過程; 步驟C,在所述主機指令所述虛擬集線器對一個所述模擬的新接入設備進行重置后,將所述被重置的功能設備加入所述USB設備處理器,以使所述USB設備處理器可以為所述被重置的功能設備處理會話; 步驟d,由所述主機對所述被重置的新接入的功能設備進行枚舉直至所述主機為其設置USB地址; 重復所述步驟b.至d.直至將所有應接入所述主機的功能設備接入主機。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接入方法中將新接入的功能設備加入所述USB設備處理器進一步包含如下步驟:步驟al,在所述設備地址表中分配地址單元,并將所分配的地址單元設為地址O ; 步驟bl,根據(jù)功能設備的要求分配物理端口 ; 步驟Cl,確定所述物理端口的端口號與邏輯端口號的對應關(guān)系,其中一個控制型物理端口號對應邏輯端口號O ; 步驟dl,根據(jù)所確定的邏輯端口號與物理端口號的對應關(guān)系以及所分配的地址單元設置所述邏輯端口號與物理端口號關(guān)系表,以保證當所分配的地址單元中的設備地址與所述包緩沖區(qū)中USB地址相等時,所述包緩沖區(qū)中的邏輯端口號能轉(zhuǎn)換出對應的物理端口號; 步驟el,當所述主機為所述正在枚舉的功能設備設置USB地址時,將該USB地址寫入所述步驟al所分配的地址單元; 所述包處理方法在所述工作電路請求所述包識別機構(gòu)對所述包緩沖區(qū)中的含地址的包進行識別時啟動,包含如下步驟: 步驟a2,地址識別,將所述包緩沖區(qū)中的設備地址與所述設備地址表中的所有地址進行比較,以便確定所述包緩沖區(qū)中的設備地址是否出現(xiàn)在所述設備地址表中,如果所述包緩沖區(qū)中的設備地址不在所述設備地址表中,則轉(zhuǎn)至步驟c2,否則該包與本組合設備相關(guān),轉(zhuǎn)至步驟b2 ; 步驟b2,端口號轉(zhuǎn)換,將所述包緩沖區(qū)中的邏輯端口號根據(jù)所匹配的地址單元通過所述邏輯端口號與物理端口號關(guān)系表轉(zhuǎn)換成物理端口號,將所得的物理端口號和識別結(jié)果一并作為所述包識別機構(gòu)的輸出并結(jié)束; 步驟c2,該包與本多功能設備無關(guān),使所述包識別機構(gòu)輸出該包與本多功能設備無關(guān)的結(jié)果并結(jié)束。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在應用于USB3 SuperSpeed時,所述方法還包括使用物理端口與設備地址和邏輯端口號關(guān)系表,用于建立物理端口與所述功能設備的設備地址和邏輯端口號的對應關(guān)系,以便通過物理端口獲得對應的設備地址和對應的邏輯端口號;所述方法還包括發(fā)送包處理方法,為發(fā)往所述主機的包獲取設備地址及邏輯端口號,所述發(fā)送包處理方法在為發(fā)往主機的包填寫設備地址及端口號時作用于所述工作電路; 所述接入方法中將新接入的功能設備加入所述USB設備處理器的步驟進一步包含如下步驟: 步驟a3,在所述設備地址表中分配地址單元,并將所分配的地址單元設為地址O ; 步驟b3,根據(jù)功能設備的要求分配物理端口 ; 步驟c3,確定所述物理端口的端口號與邏輯端口號的對應關(guān)系,其中一個控制型物理端口號對應邏輯端口號O ; 步驟d3,根據(jù)所確定的邏輯端口號與物理端口號的對應關(guān)系以及所分配的地址單元設置所述邏輯端口號與物理端口號關(guān)系表,以保證當所分配的地址單元中的設備地址與所述包緩沖區(qū)中USB地址相等時,所述包緩沖區(qū)中的邏輯端口號能轉(zhuǎn)換出對應的物理端口號; 步驟e3,根據(jù)所確定的物理端口號與邏輯端口號的對應關(guān)系、物理端口的數(shù)據(jù)方向以及所分配的地址表單元設置所述物理端口與設備地址和邏輯端口號關(guān)系表,以便通過所述物理端口能從該物理端口與設備地址和邏輯端口號關(guān)系表中獲得對應的設備地址和邏輯端口號;步驟f3,當所述主機為所述正在枚舉的功能設備設置USB地址時,將該USB地址寫入所述步驟a3所分配的地址單元; 所述發(fā)送包處理方法在所述工作電路生成發(fā)往主機的包時啟動,取自下列兩種情形之 發(fā)送包處理方法之一,作用于所述工作電路各發(fā)往主機的包的生成點,包含如下步驟: 步驟a4,將用于填寫發(fā)往主機的包的物理端口號與端口數(shù)據(jù)方向合并形成物理端口 ;步驟b4,用所得物理端口通過所述物理端口與設備地址和邏輯端口號關(guān)系表獲取與該物理端口對應的設備地址及邏輯端口號; 步驟c4,用所獲得的設備地址和邏輯端口號填寫所述發(fā)往主機的包; 發(fā)送包處理方法之二,作用于所述工作電路各發(fā)往主機的包的生成點及順序發(fā)送包處,包含如下步驟: 步驟a5,在所述各發(fā)往主機的包的生成點將物理端口號及端口數(shù)據(jù)方向填寫在所述包頭中,不在所述包頭中填寫設備地址和邏輯端口號; 步驟b5,在所述順序發(fā)送包處并在發(fā)送發(fā)往主機的包之前,從所述包頭中獲取物理端口號及端口數(shù)據(jù)方向以形成物理端口; 步驟c5,用所得物理端口通過所述物理端口與設備地址和邏輯端口號關(guān)系表獲取與該物理端口對應的設備地址及邏輯端口號; 步驟d5,用所獲得的設備地址及 邏輯端口號填寫所述發(fā)往主機的包。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在應用于USB3 SuperSpeed時,所述方法還包括使用物理端口號與設備地址和邏輯端口號關(guān)系表,用于建立物理端口號與所述功能設備的設備地址和邏輯端口號的對應關(guān)系,以便通過物理端口號獲得對應的設備地址和對應的邏輯端口號;所述方法還包括發(fā)送包處理方法,為發(fā)往所述主機的包獲取設備地址及邏輯端口號,所述發(fā)送包處理方法在為發(fā)往主機的包填寫設備地址及端口號時作用于所述工作電路; 所述接入方法中將新接入的功能設備加入所述USB設備處理器的步驟進一步包含如下步驟: 步驟a6,在所述設備地址表中分配地址單元,并將所分配的地址單元設為地址O ; 步驟b6,根據(jù)功能設備的要求分配物理端口號; 步驟c6,確定所述物理端口號與邏輯端口號的對應關(guān)系,其中一個控制型物理端口號對應邏輯端口號O ; 步驟d6,根據(jù)所確定的邏輯端口號與物理端口號的對應關(guān)系以及所分配的地址單元設置所述邏輯端口號與物理端口號關(guān)系表,以保證當所分配的地址單元中的設備地址與所述包緩沖區(qū)中USB地址相等時,所述包緩沖區(qū)中的邏輯端口號能轉(zhuǎn)換出對應的物理端口號;步驟e6,根據(jù)所確定的物理端口號與邏輯端口號的對應關(guān)系以及所分配的地址表單元設置所述物理端口號與設備地址和邏輯端口號關(guān)系表,以便通過所述物理端口號能從該物理端口號與設備地址和邏輯端口號關(guān)系表中獲得對應的設備地址和邏輯端口號; 步驟f6,當所述主機為所述正在枚舉的功能設備設置USB地址時,將該USB地址寫入所述步驟a6所分配的地址單元;所述發(fā)送包處理方法在所述工作電路生成發(fā)往主機的包時啟動,取自下列兩種情形之 發(fā)送包處理方法之一,作用于所述工作電路各發(fā)往主機包的生成點,包含如下步驟:步驟a7,將用于填寫發(fā)往主機的包的物理端口號通過所述物理端口號與設備地址和邏輯端口號關(guān)系表獲取與該物理端口號對應的設備地址及邏輯端口號; 步驟b7,用所獲得的設備地址及邏輯端口號填寫所述發(fā)往主機的包; 發(fā)送包處理方法之二,作用于所述工作電路各發(fā)往主機的包的生成點及順序發(fā)送包處,包含如下步驟: 步驟a8,在所述各發(fā)往主機包的生成點將物理端口號及端口數(shù)據(jù)方向填寫在所述包頭中,不在所述包頭中填寫設備地址和邏輯端口號; 步驟b8,在所述順序發(fā)送包處并在發(fā)送發(fā)往主機的包之前,從所述包頭中獲取物理端□號; 步驟c8,用所得物理端口號通過所述物理端口號與設備地址和邏輯端口號關(guān)系表獲取與該物理端口號對應的設備地址及邏輯端口號; 步驟d8,用所獲得的設備地址及邏輯端口號填寫所述發(fā)往主機的包。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在應用于USB3SuperSpeed時,所述方法還包括發(fā)送包處理方法,為發(fā)往所述主機的包獲取設備地址及邏輯端口號,所述發(fā)送包處理方法在為發(fā)往主機的包填寫設備地址及端口號時作用于所述工作電路; 所述接入方法中將新接入的功能設備加入所述USB設備處理器的步驟進一步包含如下步驟:` 步驟a9,在所述設備地址表中分配地址單元,并將所分配的地址單元設為地址O ; 步驟b9,根據(jù)功能設備的要求分配物理端口號; 步驟c9,確定所述物理端口號與邏輯端口號的對應關(guān)系,其中一個控制型物理端口號對應邏輯端口號O ; 步驟d9,根據(jù)所確定的邏輯端口號與物理端口號的對應關(guān)系以及所分配的地址單元設置所述邏輯端口號與物理端口號關(guān)系表,以保證當所分配的地址單元中的設備地址與所述包緩沖區(qū)中USB地址相等時,所述包緩沖區(qū)中的邏輯端口號能轉(zhuǎn)換出對應的物理端口號;并且使用物理端口號也能通過所述邏輯端口號與物理端口號關(guān)系表轉(zhuǎn)換出對應的設備地址表單元進而獲得設備地址及對應的邏輯端口號; 步驟e9,當所述主機為所述正在枚舉的功能設備設置USB地址時,將該USB地址寫入所述步驟a9所分配的地址單元; 所述發(fā)送包處理方法在所述工作電路生成發(fā)往主機的包時啟動,取自下列兩種情形之 發(fā)送包處理方法之一,作用于所述工作電路各發(fā)往主機包的生成點,包含如下步驟:步驟alO,將用于填寫發(fā)往主機的包的物理端口號通過所述邏輯端口號與物理端口號關(guān)系表獲取與該物理端口號對應的設備地址及邏輯端口號; 步驟blO,用所獲得的設備地址和邏輯端口號填寫所述發(fā)往主機的包; 發(fā)送包處理方法之二,作用于所述工作電路各發(fā)往主機包的生成點及順序發(fā)送包處,包含如下步驟:步驟all,在所述各發(fā)往主機包的生成點將物理端口號及端口數(shù)據(jù)方向填寫在所述包頭中,不在所述包頭中填寫設備地址和邏輯端口號; 步驟bll,在所述順序發(fā)送包處并在發(fā)送發(fā)往主機的包之前,從所述包頭中獲取物理端□號; 步驟Cl I,用所得物理端口號通過所述邏輯端口號與物理端口號關(guān)系表獲取與該物理端口號對應的設備地址及邏輯端口號; 步驟dl I,用所獲得的設備地址及邏輯端口號填寫所述發(fā)往主機的包。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述物理端口在設計時固定地分配給各所述設備地址表單元,所述邏輯端口號與物理端口號關(guān)系表是在設計時確定并固定下來的,所述邏輯端口號與物理端口號關(guān)系表中的功能設備部分由標識所述設備地址表單元的值表示; 所述接入方法中將新接入的功能設備加入所述USB設備處理器的步驟進一步包含如下步驟: 步驟al2,根據(jù)功能設備對物理端口的要求以及設計時確定的物理端口與設備地址表單元的對應關(guān)系分配地址單元及物理端口,并將所分配的地址單元設為地址O ; 步驟bl2,當所述主機為所述正在枚舉的功能設備設置USB地址時,將該USB地址寫入所述步驟al2.所分配的地址單元; 在應用于USB3SuperSpeed時,所述方法還包括使用物理端口與設備地址和邏輯端口號關(guān)系表,用于建立物理端口與所`述功能設備的設備地址和邏輯端口號的對應關(guān)系,所述物理端口與設備地址和邏輯端口號關(guān)系表也是在設計時確定并固定下來的,以便通過物理端口獲得對應的設備地址和對應的邏輯端口號;所述方法還進一步包括發(fā)送包處理方法,為發(fā)往所述主機的包獲取設備地址及邏輯端口號,所述發(fā)送包處理方法在為發(fā)往主機的包填寫設備地址及端口號時作用于所述工作電路,所述發(fā)送包處理方法在所述工作電路生成發(fā)往主機的包時啟動,取自下列兩種情形之一: 發(fā)送包處理方法之一,作用于所述工作電路各發(fā)往主機包的生成點,包含如下步驟:步驟al3,將用于填寫發(fā)往主機的包的物理端口號及端口數(shù)據(jù)方向合并成物理端口,通過所述物理端口與設備地址和邏輯端口號關(guān)系表獲取與該物理端口對應的設備地址及邏輯端口號; 步驟bl3,用所獲得的設備地址和邏輯端口號填寫所述發(fā)往主機的包; 發(fā)送包處理方法之二,作用于所述工作電路各發(fā)往主機包的生成點及順序發(fā)送包處,包含如下步驟: 步驟al4,在所述各發(fā)往主機包的生成點將物理端口號及端口數(shù)據(jù)方向填寫在所述包頭中,不在所述包頭中填寫設備地址和邏輯端口號; 步驟bl4,在所述順序發(fā)送包處并在發(fā)送發(fā)往主機的包之前,從所述包頭中獲取物理端口號及端口數(shù)據(jù)方向以合并成物理端口; 步驟cl4,用所得物理端口通過所述物理端口與設備地址和邏輯端口號關(guān)系表獲取與該物理端口對應的設備地址及邏輯端口號; 步驟dl4,用所獲得的設備地址及邏輯端口號填寫所述發(fā)往主機的包。
7.根據(jù)權(quán)利要求3至6任意一項所述的方法,其特征在于,所述包處理方法在所述工作電路請求所述包識別機構(gòu)對所述包緩沖區(qū)中的含地址的包進行識別時啟動,包含如下步驟: 步驟al5,地址識別,將所述包緩沖區(qū)中的設備地址與所述設備地址表中的所有地址進行比較,以便確定所述包緩沖區(qū)中的設備地址是否出現(xiàn)在所述設備地址表中,如果所述包緩沖區(qū)中的設備地址出現(xiàn)在所述設備地址表中,該包與本組合設備相關(guān),轉(zhuǎn)至步驟bl5,否則轉(zhuǎn)至步驟cl5 ; 步驟bl5,端口號轉(zhuǎn)換,將所述包緩沖區(qū)中的邏輯端口號根據(jù)所匹配的地址單元通過所述邏輯端口號與物理端口號關(guān)系表轉(zhuǎn)換成物理端口號,將所得的物理端口號和識別結(jié)果一并作為所述包識別機構(gòu)的輸出并結(jié)束; 步驟cl5,該包與本多功能設備無關(guān),使所述包識別機構(gòu)輸出該包與本多功能設備無關(guān)的結(jié)果并結(jié)束。
8.根據(jù)權(quán)利要求3至6任意一項所述的方法,其特征在于,在應用于USB3SuperSpeed時,所述設備地址表按組進行組織,每組含3至16個地址單元,每組中位移為O的單元用于擁有k-Ι個下行端口的集線器,其中k為該組所含地址單元的數(shù)量,位移為i的地址單元用于邏輯上連接于該集線器下行端口 i的功能設備或用于連接下一級集線器,其中i為I至k-Ι ;當所述設備地址表中一個地址單元用于一個功能設備時,該地址單元存有該功能設備的USB地址;所述設備地址表擁有一個或多個所述地址單元組; 所述包處理方法在所述工作電路請求所述包識別機構(gòu)對所述包緩沖區(qū)中的含地址的包進行識別時啟動,包含如下步驟: 步驟al6,地址識別,判斷所述包緩沖區(qū)中的設備地址是否出現(xiàn)在所述設備地址表中,如果所述包中的地址出現(xiàn)在所述設備地址表中,該包與本組合設備相關(guān),轉(zhuǎn)至步驟bl6,否則轉(zhuǎn)至步驟cl6 ; 步驟bl6,端口號轉(zhuǎn)換,將所述包緩沖區(qū)中的邏輯端口號根據(jù)所匹配的地址單元通過所述邏輯端口號與物理端口號關(guān)系表轉(zhuǎn)換成物理端口號,將所得的物理端口號和識別結(jié)果一并作為所述包識別機構(gòu)的輸出并結(jié)束; 步驟cl6,該包與本多功能設備無關(guān),使所述包識別機構(gòu)輸出該包與本多功能設備無關(guān)的結(jié)果并結(jié)束; 所述步驟al6進一步包含如下步驟: 步驟al7,將第一個接入主機的集線器所屬的地址單元組設定為當前地址單元組; 步驟bl7,以所述包緩沖區(qū)中的集線器深度為位移讀取所述包緩沖區(qū)中的路由表,設所讀得的值為C ; 步驟cl7,判斷當前地址單元組中位移為C的地址單元是用于一功能設備或用于連接下一級集線器; 步驟dl7,如果所述位移為C的地址單元用于連接下一級集線器,轉(zhuǎn)至步驟Π7,否則所述位移為C的地址單元含有USB地址; 步驟el7,將所述位移為C的地址單元的USB地址與所述包緩沖區(qū)中的設備地址進行比較,若比較結(jié)果為不等,則該包與本多功能設備無關(guān),轉(zhuǎn)至步驟gl7,若地址比較結(jié)果為相等,則該包與本多功能設備相關(guān),轉(zhuǎn)至步驟gl7 ; 步驟Π7,確定下一級集線器所在地址單元組,將所確定的下一級集線器所在地址單元組設定為當前地址單元組,將所述包緩沖區(qū)中的集線器深度加1,轉(zhuǎn)至所述步驟bl7 ; 步驟gl7,地址識別結(jié)束。
9.一種用于多功能設備的USB設備處理器,其特征在于,所述USB設備處理器能為多個USB設備實現(xiàn)與主機的會話,所述USB設備處理器包括: 包緩沖區(qū),用于暫存從USB線路收到的包所含的信息; 一組物理端口,用于作為與所述多功能設備的界面,并暫存由所述主機發(fā)來的或?qū)⒁l(fā)往所述主機的數(shù)據(jù); 包識別機構(gòu),用于判斷所述包緩沖區(qū)中帶地址的包是否與所述多功能設備相關(guān),并提供與所述包相關(guān)的物理端口號; 工作電路,用于實現(xiàn)USB規(guī)范指定的包處理并完成與所述主機的會話,所述工作電路對所述包緩沖區(qū)中的包進行處理,當所述包中不含地址時,所述工作電路獨立地完成對所述包的處理,當所述包中含有地址時,所述工作電路請求所述包識別機構(gòu)對所述包進行判斷,如果該包與本多功能設備無關(guān),所述工作電路丟棄該包,如果該包與本多功能設備相關(guān),所述包識別機構(gòu)還將所述包中的邏輯端口號轉(zhuǎn)換成物理端口號一并提供給所述工作電路,所述工作電路根據(jù)所提供的物理端口號以及該包中除所述邏輯端口號之外的其它信息確定物理端口并繼續(xù)對該包進行處理,所述工作電路還向所述主機發(fā)送應發(fā)送的包以實現(xiàn)與主機的會話,從而將所述主機發(fā)來的數(shù)據(jù)存入對應物理端口的緩沖區(qū)或?qū)?shù)據(jù)從對應物理端口的緩沖區(qū)發(fā)往所述主機;所述包識別機構(gòu)進一步包括: 多地址包識別器,所述多地址包識別器含有3至127個USB設備地址寄存器,所述USB設備地址寄存器用于存放本多功能設備的各USB功能設備的USB地址,在收到所述工作電路的識別請求時,將所述包緩沖區(qū)中的設備地址與所述多個地址寄存器中所存的設備地址進行比較,以確定所述包緩沖區(qū)`中的包是否與本多功能設備相關(guān); 邏輯端口號至物理端口號轉(zhuǎn)換器,所述邏輯端口號至物理端口號轉(zhuǎn)換器含有存儲器或映射邏輯電路,所述存儲器或所述映射邏輯電路用于建立各功能設備的邏輯端口號與物理端口號之間的對應關(guān)系,當所述多地址包識別器識別出與本多功能設備相關(guān)的包時,將所述包緩沖區(qū)中的邏輯端口號通過所建立的邏輯端口號與物理端口號的對應關(guān)系轉(zhuǎn)換成物理端口號,并將所得物理端口號提供給所述工作電路。
10.根據(jù)權(quán)利要求9所述的USB設備處理器,其特征在于,所述包識別機構(gòu)的多地址包識別器還進一步包含: 多個地址比較器,分別連接于每個所述地址寄存器與所述包緩沖區(qū)中的地址域之間,以在收到所述工作電路的包識別請求時,將所述包緩沖區(qū)中的地址與所有地址寄存器中的地址同時進行比較; 匯合電路,用于將所述地址比較器的比較輸出匯合成一個信號作為所述包識別機構(gòu)的識別輸出,當至少有一個所述地址比較器的比較輸出為相等時,所述識別輸出為該包與本多功能設備相關(guān),否則所述識別輸出為該包與本多功能設備不相關(guān); 使能控制電路,通過使能狀態(tài)寄存器動態(tài)地控制各地址寄存器參加或不參加包識別過程,當一地址寄存器對應的使能狀態(tài)為不使能時,所對應的地址比較器不工作或其輸出對所述匯合電路的輸出不產(chǎn)生影響,從而使對應的地址寄存器不參加包識別過程; 地址寄存器標識信號發(fā)生器,在一地址比較器發(fā)生相等時產(chǎn)生標識信號以指示是哪個地址寄存器發(fā)生了地址匹配。
11.根據(jù)權(quán)利要求10所述的的USB設備處理器,其特征在于,所述使能狀態(tài)寄存器選自下列形式之一: 所述使能狀態(tài)寄存器是物理寄存器或分布于多個物理寄存器中的一個或多個位的總和; 所述使能狀態(tài)寄存器是分布于對應的地址寄存器中的一個或多個擴展位的總和,通過對應的地址比較器發(fā)生作用。
12.根據(jù)權(quán)利要求10所述的的USB設備處理器,其特征在于,所述標識信號為所述發(fā)生地址匹配的地址比較器的輸出、在設計時確定的與所述發(fā)生地址匹配的地址寄存器相關(guān)的常數(shù)、或動態(tài)設定的數(shù)值。
13.根據(jù)權(quán)利要求9所述的USB設備處理器,其特征在于,所述包識別機構(gòu)的多地址包識別器中的一個或多個所述地址寄存器通過內(nèi)容可尋址存儲器實現(xiàn),所述內(nèi)容可尋址存儲器的標識部分存放含擴展位的設備地址,所述擴展位用以控制所在存儲單元是否對所述確定包緩沖區(qū)中的包是否與本多功能設備相關(guān)的過程產(chǎn)生影響,所述內(nèi)容可尋址存儲器的數(shù)據(jù)部分存放標識信號用以指示是哪個地址寄存器發(fā)生了地址匹配。
14.根據(jù)權(quán)利要求9所述的USB設備處理器,其特征在于,在用于USB3SuperSpeed時,所述包識別機構(gòu)的多地址包識別器中所述多個USB設備地址寄存器按組進行組織,每組含3至16個地址寄存器,擁有一個或多個地址寄存器組;若將一組地址寄存器中的USB設備地址寄存器以O至k-1 (k為該組所含地址寄存器的數(shù)量)進行編址,則地址為O的地址寄存器用于實現(xiàn)擁有k-ι個下行端口的集線器,地址為i (i為I至k-ι)的地址寄存器用于連接于該集線器第i個下行端口的功能設備或用于連接下一級集線器,當所述地址寄存器用于一個功能設備時,該地址寄存器存有所述功能設備的USB地址; 所述多地址包識別器通過如下步驟判斷所述包緩沖區(qū)中的包是否與本多功能設備相關(guān)并產(chǎn)生包識別信號: 步驟al8,將第一個用于接入主機的地址寄存器所在的所述地址寄存器組設為當前地址寄存器組; 步驟bl8,讀取所述包緩沖區(qū)中的集線器深度域的內(nèi)容; 步驟cl8,以所述步驟bl8所讀內(nèi)容為位移去讀所述包緩沖區(qū)中的路由表,設所讀值為A ; 步驟dl8,判斷所述當前地址寄存器組中地址為A的地址寄存器是用于連接下一級集線器還是用于一功能設備,如果所述地址為A的地址寄存器為用于連接下一級集線器則轉(zhuǎn)至步驟el8,如果所述地址為A的地址寄存器是用于一功能設備,則將該地址寄存器的內(nèi)容與所述包緩沖區(qū)中的USB地址進行比較,如果比較結(jié)果為相等,則所述包緩沖區(qū)中的包與本多功能設備相關(guān),識別過程結(jié)束;如果比較結(jié)果為不相等,則所述包緩沖區(qū)中的包與本多功能設備不相關(guān),識別過程結(jié)束; 步驟el8,確定所述當前地址寄存器組中地址為A的地址寄存器所對應的下一級集線器所在的地址寄存器組并將其設為當前地址寄存器組,將所述包緩沖區(qū)中集線器深度域的內(nèi)容加I,轉(zhuǎn)至所述步驟b 18 ; 所述包識別機構(gòu)的多地址包識別器還進一步包含標識信號發(fā)生器,用于當識別出所述包緩沖區(qū)中帶地址的包與本多功能設備相關(guān)時產(chǎn)生標識信號以指示是哪一個地址寄存器的內(nèi)容與所述包緩沖區(qū)中的USB地址相等。
15.根據(jù)權(quán)利要求14所述的USB設備處理器,其特征在于,所述標識信號發(fā)生器是一組與所述地址寄存器相關(guān)聯(lián)的信號發(fā)生器,其中每個信號發(fā)生器產(chǎn)生用以指認所對應的地址寄存器的標識信號,當一個地址寄存器的內(nèi)容被讀出并與所述包緩沖區(qū)中的USB地址相等時,將所述與該地址寄存器相對應的信號發(fā)生器產(chǎn)生的標識信號作為所述標識信號發(fā)生器的輸出,所述標識信號為在設計時確定的與所述對應地址寄存器相關(guān)的常數(shù)、或動態(tài)設定的數(shù)值。
16.根據(jù)權(quán)利要求9所述的USB設備處理器,其特征在于,所述包識別機構(gòu)的含存儲器的邏輯端口號至物理端口號轉(zhuǎn)換器是使用存儲器的映射式端口號轉(zhuǎn)換器,所述存儲器的地址代表功能設備及邏輯端口號,所述存儲器的存儲單元所存的內(nèi)容代表與該存儲單元地址所代表的邏輯端口號所對應的物理端口號,將數(shù)據(jù)從代表功能設備D及邏輯端口號L的地址單元讀出,如果該數(shù)據(jù)代表物理端口號P,就實現(xiàn)了從功能設備D的邏輯端口號L到物理端口號P的轉(zhuǎn)換。
17.根據(jù)權(quán)利要求16所述的USB設備處理器,其特征在于,所述存儲器的地址與其所代表的功能設備及邏輯端口號的關(guān)系是下列情形之一: 所述存儲器的地址按組劃分,每組含I至16個存儲單元,每一組對應一個地址寄存器,所述地址寄存器用于一個功能設備,而所述存儲器組中的位移i代表對應地址寄存器所用于的功能設備的邏輯端口號i,其中i為O至k-1,k為該組中存儲單元的數(shù)量; 每個地址寄存器對應一個基地址B,地址B+i代表基地址B所對應地址寄存器所用于的功能設備的邏輯端口號i,其中i為O至15 ; 在使能一個地址寄存器時動態(tài)地賦予該地址寄存器一個基地址B,地址B+i代表基地址B所對應地址寄存器所用于的功能設備的邏輯端口號i,其中i為O至15。
18.根據(jù)權(quán)利要求9至17任意一項所述的USB設備處理器,其特征在于,在用于USB3SuperSpeed并且當所述包識別機構(gòu)擁有含存儲器的邏輯端口號至物理端口號轉(zhuǎn)換器時,還包含物理端口至設備地址和邏輯端口號轉(zhuǎn)換器,用于通過物理端口獲取對應的設備地址及邏輯端口號;以及發(fā)往主機包的設備地址及邏輯端口號形成電路,用以形成填寫發(fā)往主機的包所需的設備地址及邏輯端口號;所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器包括: 具有n個單元的存儲器,其中η為所述USB設備處理器所擁有的物理端口的數(shù)量,所述存儲器的地址代表物理端口,所述存儲器的存儲單元所存內(nèi)容為用于獲得該存儲單元的地址所代表的物理端口所屬的功能設備的USB地址的信息和該物理端口所對應的邏輯端口號; 所述發(fā)往主機包的設備地址及端口號形成電路為下列兩種結(jié)構(gòu)之一: 結(jié)構(gòu)之一,在所述工作電路中每個生成發(fā)往主機的包的電路處配置設備地址及端口號獲取電路,用以將用于填寫包頭的物理端口號及端口數(shù)據(jù)方向合并成物理端口,通過所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,再用所獲得的設備地址及邏輯端口號填寫包頭;當有多個所述生成發(fā)往主機的包的電路并發(fā)地工作時,還包括排隊電路用以將各所述設備地址及邏輯端口號獲取電路并發(fā)產(chǎn)生的對所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器的訪問順序化; 結(jié)構(gòu)之二,所述設備地址及端口號形成電路包括并行工作部分和串行工作部分,所述設備地址及端口號形成電路包括一個或多個所述并行工作部分和一個所述串行工作部分,所述并行工作部分在各所述生成發(fā)往主機的包的電路生成發(fā)往主機的包時將物理端口號及端口數(shù)據(jù)方向填入待發(fā)送包的包頭,而不填寫設備地址;所述串行工作部分在所述工作電路順序發(fā)送包時將發(fā)往主機的包的包頭中的物理端口號及端口數(shù)據(jù)方向取出以形成物理端口,再通過所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,用所獲得的設備地址及邏輯端口號更新包頭。
19.根據(jù)權(quán)利要求9至17任意一項所述的USB設備處理器,其特征在于,在用于USB3SuperSpeed并且當所述包識別機構(gòu)擁有含存儲器的邏輯端口號至物理端口號轉(zhuǎn)換器時,還包含物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器,用于通過物理端口號獲取對應的設備地址及邏輯端口號;以及發(fā)往主機包的設備地址及邏輯端口號形成電路,用以形成填寫發(fā)往主機的包所需的設備地址及邏輯端口號;所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器包括: 具有n個單元的存儲器,其中η為所述USB設備處理器所擁有的物理端口號的數(shù)量,所述存儲器的地址代表物理端口號,所述存儲器的存儲單元所存內(nèi)容為用于獲得該存儲單元的地址所代表的物理端口號所屬的功能設備的USB地址的信息和該物理端口號所對應的邏輯端口號; 所述發(fā)往主機包的設備地址及端口號形成電路為下列兩種結(jié)構(gòu)之一: 結(jié)構(gòu)之一,在所述工作電路中每個生成發(fā)往主機的包的電路處配置設備地址及端口號獲取電路,用以將用于填寫包頭的物理端口號通過所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏`輯端口號,再用所獲得的設備地址及邏輯端口號填寫包頭;當有多個所述生成發(fā)往主機的包的電路并發(fā)地工作時,還包括排隊電路用以將各所述設備地址及邏輯端口號獲取電路并發(fā)產(chǎn)生的對所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器的訪問順序化; 結(jié)構(gòu)之二,所述設備地址及端口號形成電路包括并行工作部分和串行工作部分,所述設備地址及端口號形成電路包括一個或多個所述并行工作部分,和一個所述串行工作部分路,所述并行工作部分在各所述生成發(fā)往主機的包的電路生成發(fā)往主機的包時將物理端口號及端口數(shù)據(jù)方向填入待發(fā)送包的包頭,而不填寫設備地址;所述串行工作部分在所述工作電路順序發(fā)送包時將發(fā)往主機的包的包頭中的物理端口號取出,再通過所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,用所獲得的設備地址及邏輯端口號更新包頭。
20.根據(jù)權(quán)利要求9至15任意一項所述的USB設備處理器,其特征在于,在用于USB3SuperSpeed并且當所述包識別機構(gòu)擁有含存儲器的邏輯端口號至物理端口號轉(zhuǎn)換器時,還包含物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器,用于通過物理端口號獲取對應的設備地址及邏輯端口號,所述包識別機構(gòu)的邏輯端口號至物理端口號轉(zhuǎn)換器以及所述物理端口號至設備地址及邏輯端口號轉(zhuǎn)換器共同由一個內(nèi)容可尋址存儲器分別通過地址尋址及內(nèi)容尋址來實現(xiàn);所述工作電路還進一步包含發(fā)往主機包的設備地址及邏輯端口號形成電路,用以形成填寫發(fā)往主機的包所需的設備地址及邏輯端口號;所述發(fā)往主機包的設備地址及端口號形成電路為下列兩種結(jié)構(gòu)之一: 結(jié)構(gòu)之一,在所述工作電路中每個生成發(fā)往主機的包的電路處配置設備地址及端口號獲取電路,用以將用于填寫包頭的物理端口號通過所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,再用所獲得的設備地址及邏輯端口號填寫包頭;當有多個所述生成發(fā)往主機的包的電路并發(fā)地工作時,還包括排隊電路用以將各所述設備地址及邏輯端口號獲取電路并發(fā)產(chǎn)生的對所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器的訪問順序化; 結(jié)構(gòu)之二,所述設備地址及端口號形成電路包括并行工作部分和串行工作部分,所述設備地址及端口號形成電路包括一個或多個所述并行工作部分和一個所述串行工作部分,所述并行工作部分在各所述生成發(fā)往主機的包的電路生成發(fā)往主機的包時將物理端口號及端口數(shù)據(jù)方向填入待發(fā)送包的包頭,而不填寫設備地址;所述串行工作部分在所述工作電路順序發(fā)送包時將發(fā)往主機的包的包頭中的物理端口號取出,再通過所述物理端口號至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,用所獲得的設備地址及邏輯端口號更新包頭。
21.根據(jù)權(quán)利要求9至15任意一項所述的USB設備處理器,其特征在于,在用于USB3SuperSpeed并且當所述包識別機構(gòu)擁有含映射邏輯電路的邏輯端口號至物理端口號轉(zhuǎn)換器時,還包含物理端口至設備地址及邏輯端口號轉(zhuǎn)換器,用于通過物理端口獲取對應的設備地址及邏輯端口號,所述物理端口至設備地址及邏輯端口號轉(zhuǎn)換器包含另一個映射邏輯電路,記為B,所述映射邏輯電路B建立各物理端口與表示功能設備的用于標識地址寄存器的值及邏輯端口號之間的對應關(guān)系,以便通過物理端口獲得對應的設備地址及邏輯端口號;所述工作電路還進一步包含發(fā)往主機包的設備地址及邏輯端口號形成電路,用以形成填寫發(fā)往主機的包所需的設備地址及邏輯端口號; 所述發(fā)往主機包的設備地址及端口號形成電路為下列兩種結(jié)構(gòu)之一: 結(jié)構(gòu)之一,在所述工作電路中每個生成發(fā)往主機的包的電路處配置設備地址及端口號獲取電路,用以將用于填寫包頭的物理端口通過所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,再用所獲得的設備地址及邏輯端口號填寫包頭;當有多個所述生成發(fā)往主機的包的電路并發(fā)地工作時,還包括排隊電路用以將各所述設備地址及邏輯端口號獲取電路并發(fā)產(chǎn)生的對所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器的訪問順序化; 結(jié)構(gòu)之二,所述設備地址及端口號形成電路包括并行工作部分和串行工作部分,所述設備地址及端口號形成電路包括一個或多個所述并行工作部分和一個所述串行工作部分,所述并行工作部分在各所述生成發(fā)往主機的包的電路生成發(fā)往主機的包時將物理端口號及端口數(shù)據(jù)方向填入待發(fā)送包的包頭,而不填寫設備地址;所述串行工作部分在所述工作電路順序發(fā)送包時將發(fā)往主機的包的包頭中的物理端口號及端口數(shù)據(jù)方向取出以形成物理端口,再通過所述物理端口至設備地址和邏輯端口號轉(zhuǎn)換器獲得對應的設備地址及邏輯端口號,用所獲得的設備地址及邏輯端口號更新包頭。
22.—種智能設備,其特征在于,包括:中央處理模塊,用于運行主操作系統(tǒng)和應用程序;一個或多個設備控制模塊,用于連接外部設備;以及連接所述中央處理模塊和所述設備控制模塊的總線;所述中央處理模塊包含第一 CPU和一個或多個USB主機處理器,所述USB主機處理器以USB主機的身份連接外部的USB設備并將它們呈現(xiàn)給運行在所述第一 CPU上的操作系統(tǒng); 所述設備控制模塊包含第二 CPU,一個或多個USB設備處理器以及外部設備適配器,所述外部設備適配器連接外部設備并將它們引入所述設備控制模塊,所述USB設備處理器與USB主機連接并在所述第二 CPU的控制下將由所述外部設備適配器引入的外部設備呈現(xiàn)給所述USB主機,所述USB主機包括所述中央處理模塊中的USB主機和智能設備以外的USB主機; 所述連接所述中央處理模塊和所述設備控制模塊的總線是一條或多條連接所述中央處理模塊中的USB主機處理器和所述設備控制模塊中的USB設備處理器的執(zhí)行USB規(guī)范的連接電路,包括標準USB連接,芯片間USB,UTMI主機/設備橋接器,ULPI主機/設備橋接器,或?qū)iT設計的USB主機/設備直接連接器,所述設備控制模塊被當作一個或多個多功能設備通過USB接入所述中央處理模塊; 所述設備控制模塊中的USB設備處理器是任意一種能將多功能設備以USB組合設備形式呈現(xiàn)給主機的USB設備處理器,包括權(quán)利要求9至21中任一項所述的USB設備處理器,以使所有連接于所述設備控制模塊的外部設備可以以獨立USB設備的形式連接到運行于所述中央處理模塊的第一 CPU上的系統(tǒng)上,并且獨立地進行插拔。
23.根據(jù)權(quán)利要求22所述的智能設備,其特征是所述中央處理模塊還包含圖形處理加速器和顯示模塊。
24.根據(jù)權(quán)利要求22所述的智能設備,其特征在于,還包括USBOTG結(jié)構(gòu), 所述USB OTG結(jié)構(gòu)的USB主機處理器位于所述中央處理模塊內(nèi); 所述USB OTG結(jié)構(gòu)的USB設備`處理器位于所述設備控制模塊內(nèi); 所述USB OTG結(jié)構(gòu)的USB主機處理器和所述USB OTG結(jié)構(gòu)的USB設備處理器通過一雙向開關(guān)與外部接口連接,當通過USB接口與外部裝置連接時,在確定本智能設備在本次連接中所應扮演的USB主機或USB設備的角色后,所述雙向開關(guān)將所述外部接口連接至所述USB主機處理器或USB設備處理器以實現(xiàn)本次連接所應扮演的角色。
25.根據(jù)權(quán)利要求22所述的智能設備,其特征在于,所述連接所述中央處理模塊中的USB主機處理器和所述設備控制模塊中的USB設備處理器的執(zhí)行USB規(guī)范的連接電路是一條直接連接所述USB主機處理器和所述USB設備處理器的并行數(shù)據(jù)總線; 所述直接連接所述USB主機處理器和所述USB設備處理器的并行數(shù)據(jù)總線包括: 一條或多條寬度以8為倍數(shù)的單向或雙向的并行數(shù)據(jù)線; 每條所述并行數(shù)據(jù)線配有一條與所述并行數(shù)據(jù)線同方向的USB包指示線,用以界定在所對應的所述并行數(shù)據(jù)線上傳輸?shù)臄?shù)據(jù)的包結(jié)構(gòu); 當所述并行數(shù)據(jù)線的寬度大于8時,每條所述寬度大于8的并行數(shù)據(jù)線還配有與所述并行數(shù)據(jù)線同方向的數(shù)據(jù)寬度指示線,用以指示每次在所述并行數(shù)據(jù)線上傳輸?shù)臄?shù)據(jù)的實際寬度。
26.根據(jù)權(quán)利要求22所述的智能設備,其特征在于,所述中央處理模塊還包含內(nèi)存管理器,用以管理連接于所述中央處理模塊的內(nèi)存并對所述中央處理模塊以外的其它模塊提供對所述內(nèi)存的訪問通道;所述設備控制模塊還包含內(nèi)存適配器,用以連接由外部其它模塊提供的內(nèi)存訪問通道;所述的智能設備還包含連接所述中央處理模塊所提供的所述內(nèi)存訪問通道和所述設備控制模塊的所述內(nèi)存適配器的內(nèi)存連接電路,以使所述設備控制模塊共享連接于所述中央處理模 塊的內(nèi)存。
【文檔編號】G06F13/10GK103514119SQ201210214408
【公開日】2014年1月15日 申請日期:2012年6月26日 優(yōu)先權(quán)日:2012年6月26日
【發(fā)明者】周松 申請人:周松
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1