1356305 九、發明說明: 【發明所屬之技術領域】 本發明係有關於一種通用串列匯流排(Universal Serial ' Bus,USB)主機控制器,特別是一種符合USB2.0規範的 USB主機控制器及其控制方法,其能夠支援USB主機控制 器與通用串列匯流排設備之間的週期傳輸(Periodic Transfer)與非同步傳輸(Asynchronous Transfer)。 •[先前技術】 USB是一種由Intel和Microsoft開發的外設匯流排的 資料通信標準。最大的特點是支援熱插拔(Hot plug)和即 插即用(Plug&Play)的功能。當設備***時,主機牧舉 (enumerate)此設備並載入所需的驅動程式,因此使用遠 比PCI和ISA匯流排方便。通用串列匯流排可以連接的外 部設備有滑鼠、鍵盤、gamepad、搖桿、掃描器、數位相機、 • 印表機、硬碟和網路元件等,其應用非常廣泛。 USB目前常見的有兩個規範,即USB 1.1和USB 2.0。 USB1.1規範’其高速方式的傳輸速率為12百萬位元元/秒 (Mbps),低速方式的傳輸速率為l_5Mbps。USB2.0規範 是由USB 1.1規範演變而來的,傳輸速率可達到480Mbps, 即60MB/S ’足以滿足大多數外部設備的速率要求。USB 2.0 中的“增強主機控制器介面” (Enhanced Host Controller Interface,EHCI)定義了一個與USB 1.1相相容的架構,可 以用USB 2.0的驅動程式驅動USB 1.1設備。也就是說, VIC08-0009-TW/ 0608-A41727-TW/Final 5 1356305 • 所有支援USB 1.1的設備都可以直接在USB 2 〇的介面上 使用,而不必擔心相容性問題,而且像USB線、插頭等 等附件也都可以直接使用。 USB系統的設計為非對稱式的,它由一個USb主機 (host)控制器和若干透過集線器(Hub)設備以樹形連接 USB設備所組成。USB主機控制器負責實現主機與usb 設備之間的物理資料傳輸,是構成USB主機不可或缺的核 心元件。USB主機控制器與USB設備之間傳輸資料的管道 鲁 (Pipe)可分為四種類型:控制傳輸(Control Transfer), 等時傳輸(Isochronous Transfer),中斷傳輸(Interrupt Transfer)和批量傳輸(Buik Transfer)。其中,控制傳輸 一般用於短的、簡單的對設備的命令和狀態回饋,例如用 於匯流排控制的0號管道,〇號管道是USB設備必備的管 道,用於控制匯流排上的設備,其編號為〇 ;等時傳輸是 按照保障連續的速度(可能但不必然是較快地)傳輸,可 能有資料丟失的問題,例如即時的音頻、視頻;中斷傳輸 ^ 用於必須保證儘快反應的設備(僅容許有限延遲),例如 滑鼠、鍵盤;而批量傳輸是使用餘下的帶寬大量地(但是 沒有對於延遲、連續性、帶寬和速度的保證)傳輸資料, 例如普通的檔傳輸。根據這四種傳輸類型的特點,一般將 等時傳輸與中斷傳輸統稱為週期傳輸(Periodic Transfer ),將控制傳輸與批量傳輸統稱為非同步傳輸 (Asynchronous Transfer) 0 USB主機控制器作為USB主機的核心元件,其下最多 VIC08-0009-TW/ 0608-A41727-TW/Final 6 1356305 v . 可以有5級Hub,包括各級的Hub在内,最多可以連接127 個USB設備,而一 USB主機可以同時有多個USB主機控 制器。由於現今USB的應用日益廣泛,如何設計低成本, 小面積,高效能的USB主機控制器晶片,已成為USB系 ' 統設計中的一大焦點。 【發明内容】 本發明提供一種USB主機控制器,包括一第一控制 φ 器,用來控制一主機與一通用串列匯流排設備間的第一傳 輸;一第二控制器,用來控制該主機與該通用串列匯流排 設備間的第二傳輸;以及一第一記憶體,分別耦接於該第 一控制器與該第二控制器,用來緩存該主機控制器與該通 用串列匯流排設備間傳輸的資料;其中,於該第一傳輸階 段,該第一控制器存取該第一記憶體,於該第二傳輸階段, 該第二控制器存取該第一記憶體。 本發明另提供一種應用於USB主機控制器的控制方 • 法,包括步騾:於一第一傳輸階段,透過一第一控制器存 取一第一記憶體以執行該主機控制器與一通用串列匯流排 設備間的第一傳輸;於一第二傳輸階段,透過一第二控制 器存取該第一記憶體以執行該主機控制器與該通用串列匯 流排設備間的第二傳輸;其中,該第一控制器與該第二控 制器都是透過一第一直接記憶體存取引擎存取該第一記憶 體。 該第一傳輸為週期傳輸(Periodic transfer),該第一 控制器為一週期控制器;該第二傳輸為非同步傳輸 VIC08-0009-TW/ 0608-A41727-TW/Final 7 1356305 • ( Asynchronous transfer),該第二控制器為一非同步控制 器。 為讓本發明之上述和其他目的、特徵、和優點能更明 顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳 細說明如下: 【實施方式】 第1圖是根據本發明的一個實施例應用於一主機的 • USB主機控制器的示意圖,如圖所示,USB主機控制器14 位於一主機10内,與一記憶體16相連接,一 USB設備 12透過匯流排的集線器(Hub )(圖中未示出)連接到USB 主機控制器Η。通常,當USB設備12連接到USB主機控 制器14時,USB主機控制器14會分配一個特定的7位 元位址給USB設備12 ’用以標識USB設備12。並且,USB 主機控制器14透過投票分配流量’例如透過輪詢模式分配 流量,因此,在沒有明確向USB主機控制器14提出請求 籲 之前,USB設備12不能傳輸資料。需要注意的是,本發 明所指的傳輸是指雙向的傳輸,即資料從USB設備12傳 輸到USB主機控制器14’或是從USB主機控制器14傳輸 到USB設備12。一旦建立起傳輸資料的管道,USB主機 控制器14就可以控制各種類型的資料從USB設備12傳輸 到USB主機控制器14,或是從USB主機控制器14傳輸到 USB設備12。 根據前述兩種不同的資料傳輸類型(週期傳輸和非同 步傳輸),USB主機控制器14内設有對應的一個或多個週 VIC08-0009-TW/ 0608-A41727-TW/Final 8 1356305 期控制器和非同步控制器,在本發明的一個實施射,脳 主機控制器14内设有-個週期控制器窗,和兩個非同步 控制器102 ’ 103 ’以分別控制執行USB設備12與USB主 機控制器14之間的週期傳輸和非同步傳輸,如第丨圖所 不。與此對應的,USB主機控制器14内設有三個記憶體, 即第一記憶體107,第二記憶體1〇8和第三記憶體1〇9,用 來暫存USB設備12與USB主機控制器14之間傳輸的資 料。其中,當USB主機控制器14執行週期傳輸時,週期 控制器101透過第一直接記憶體存取(DMA)引擎1〇4存 取第一記憶體107 ;而USB主機控制器14執行非同步傳 輸時,非同步控制器102和1〇3分別透過第二DMA引擎 105和第三DMA引擎106存取第二記憶體108和第三記憶 體 109。 在記憶體的實現上,第一記憶體1〇7,第二記憶體108 和第三記憶體109均可為靜態隨機存取記憶體(static Random Access Memory ’ SRAM ),或者其他類型的記憶體 裝置。另外’由於目前USB設備的傳輸速率大大提高(高 速USB設備的傳輸速率已達到了 480Mbps),記憶體的容 量設計若不恰當,過大會造成資源浪費,過小則極易在暫 存傳輸的資料時’因記憶體超載(Overrun )或欠載 (Underrun)而導致資料出錯。因此,在本實施例中,記 憶體的容量設計乃是以所傳輸資料包的最大容量為准,即 第一記憶體107的容量為週期傳輸的最大資料包的容量 256x32位元元(1024位元組)’第二記憶體1〇8和第三記 VIC08-0009-TW/ 0608-A41727-TW/Final 9 1356305 . 憶體109的容量均為非同步傳輸的最大資料包的容量128x 32位元元(512位元組)。如此,以避免出現記憶體的超載 或欠載。 上述的USB主機控制器14能較好地支援高速USB設 備與主機控制器之間各種類型的資料傳輸,且能避免主機 控制器内記憶體的超載或欠載。 請參考第2圖,第2圖是根據本發明的另一個實施例 應用於一主機的USB主機控制器的示意圖。同樣,USB主 ® 機控制器24位於一主機20内,與一記憶體26相連接,一 USB設備22透過匯流排的集線器(Hub)(圖中未示出) 連接到USB主機控制器24。USB主機控制器24内設有一 個週期控制器201,和兩個非同步控制器202,203,以分 別控制執行USB設備22與USB主機控制器24之間的週 期傳輸和非同步傳輸。本發明實施例的USB主機控制器内 雖然共設置了三個控制器,但是並不限定於此,本發明也 適用於在内部設置其他數量或類型控制器的USB主機控 *制器。 與第1圖中的USB主機控制器14不同的是,本實施 例的USB主機控制器24内僅設置了兩個記憶體:第一記 憶體207和第二記憶體208,及對應的第一 DMA引擎204 和第二DMA引擎205。由於USB設備22與USB主機控 制器24之間通常以微幀(Microframe )的形式傳輸資料, 每一微幀以125毫秒為單位,且在同一微幀的傳輸週期 中,週期傳輸的優先順序要高於非同步傳輸,因此,本實 VIC08-0009-TW/ 0608-A41727-TW/Final 1356305 雜兩個階段:週期傳輪階段和非同步 段’USB主機控制器24僅執 f傳輸;於非同步傳輪階段,僅執行非同步傳輸。
主機參考第3圖’第3圖繪示本發明-實施例的USB 如第二&備22之間傳輸資料的微鳩格式。 回所不’每微φ貞時長為125毫秒以一開始標識 拙二束標識為界。在傳輸資料時,先執行週期傳輸,再
執仃非同步傳輸。本實施例中的微巾貞時長也可為其他值, 並不限定於125毫秒。 本發明一實施例的具體操作如下,於一微幅的週期傳 輸階段’USB主機控制器24内的週期控制器2()1透過第 一 DMA引擎2〇4存取第一記憶體2〇7與第二記憶體2〇8, 且嬴週期控制器201存取第一記憶體207達一預定數量的 資料,例如存滿或取空第一記憶體2〇7時,週期控制器2〇1 控制其内部的一位址指標指向第二記憶體2〇8,以透過第 一 DMA引擎204接續存取第二記憶體208。如此,對於週 期控制器201而言,其對應可存取的記憶體容量相當於是 第一記憶體207與第二記憶體208的容量之和。而後,於 同一微幀的非同步傳輸階段,USB主機控制器24内的非 同步控制器202透過第一 DMA引擎204存取第一記憶體 207,非同步控制器203透過第二DMA引擎205存取第二 記憶體208。因此,對於非同步控制器202,其對應可存取 的記憶體容量為第一記憶體207的容量;而對於非同步控 制器203,其對應可存取的記憶體容量為第二記憶體208 VIC08-0009-TW/ 0608-A41727-TW/Final 1356305 . 的容量。 需要注意的是,同一微幀執行完週期傳輸後,在非同 步傳輸階段每次傳輸一個非同步傳輸的資料包之前,USB 主機控制器24會透過其内部的一計數器206計算微幀的剩 餘時間,以判定剩餘時間是否足以傳輸一整個非同步傳輸 的資料包。若USB主機控制器24判定得出微幀的剩餘時 間足夠傳輸一整個非同步傳輸的資料包,則非同步控制器 202或203控制傳輸一個非同步傳輸的資料包;當判定得 • 出微幀的剩餘時間不足以傳輸一整個非同步傳輸的資料包 時,則非同步控制器202與203停止執行非同步傳輸。 在記憶體的實現上,第一記憶體207和第二記憶體208 同樣均可為靜態隨機存取記憶體,且為避免出現記憶體的 超載或欠載,記憶體的容量設計仍以所傳輸資料包的最大 容量為准。根據本發明的一個實施例,第一記憶體207與 第二記憶體208的容量之和應等於或大於週期傳輸的最大 資料包的容量,且第一記憶體207與第二記憶體208的容 ^ 量均應等於或大於非同步傳輸的最大資料包的容量。若週 期傳輸的最大資料包的容量為1024位元元組,非同步傳輸 的最大資料包的容量為512位元元組,則第一記憶體207 與第二記憶體208的容量均可設定為128x32位元,這樣, 二者之和為1024位元組,就能滿足週期傳輸和非同步傳輸 的需求。在不脫離本發明的精神的情況下,本發明的其他 實施例也可使用其他的記憶體組合,例如設定第一記憶體 207和第二記憶體208的容量都等於或大於週期傳輸的最 VIC08-0009-TW/ 0608-A41727-TW/Final 12 1356305 大資料包的容量,而第三記憶體的容量等於或大於非同步 傳輸的最大資料包的容量。 本發明實施例中的記憶體雖然使用的是SRAM,但是並 不僅限於此,其他可讀寫的記憶體例如快閃(Flash)記憶 體等,都可用來作為本發明USB主機控制器内的記憶體, 且記憶體可以整合在同一晶片或是分開在兩個晶片上,也 可以有不同的配置,例如一個記憶體分成兩部分,分別支 援兩種傳輸等。 由此可見,第2圖的USB主機控制器24要比第1圖 的USB主機控制器14至少減少了三分之一的記憶體面積 和一個DMA引擎。因此,透過分階段執行週期傳輸和非 同步傳輸,共用DMA引擎和記憶體,就能在保證記憶體 不出現超載或欠載的基礎上,減少記憶體的容量和DMA 引擎的個數,從而精簡了整個USB主機控制器的電路面 積。 為了進一步提高運作效能,本發明的USB主機控制器 24可以於週期傳輸階段結束時執行一預取功能,具體操作 如下:在週期傳輸階段,當週期控制器201控制傳輸最後 一個週期傳輸的資料包期間,USB主機控制器24會檢測 第一記憶體207與第二記憶體208的儲存狀態,若第一記 憶體207與第二記憶體208之一被取空或者剩下小於一預 定數量的資料,則USB主機控制器24執行一預取動作, 即預先從記憶體26取出一個或多個非同步傳輸的資料包 存入到被取空或剩餘資料不足預定數量的記憶體中。這 VIC08-0009-TW/ 0608-A41727-TW/Final 13 1356305 樣,在接下去的非同步傳輸階段,若執行的是從usb主機 控制器24至,J USB設備22的非同步傳輸,則開始發送的第 一個非同步傳輸的資料包或者之後的資料包就不需要再從 記憶體26中取出,而是直接將記憶體中暫存的賴步傳輸 的資料包發送給USB設備22,從而提高了工作效^。
為了更清楚地說明本發明的USB主機控制^^作過 程,請參考第4圖,第4圖示出了應用於第2圖的usb主 機控制器24的控制方法流程圖。首先,在步驟s4i,usb 主機控制器24開始控制傳輸一微巾貞;在此微巾貞的傳輸週期 中,USB主機控制器24首先會透過週期控制器2〇ι執行 一第一傳輸,例如透過存取第一記憶體2〇7或第二記憶體 208執行週期傳輸,如步驟S42。在步驟S43,如上文所述 在週期傳輸的最後一個資料包時,USB主機控制器24~會 檢測第一記憶體207與第二記憶體208的儲存狀態,判斷 是否有足夠的儲存空間,例如剩餘可用空間大於一預定數 量,或是其中一個記憶體被取空。若上述條件成立,例如 第一 δ己憶體207與第一 §己憶體208之一空出預定數量的空 間,則進入步驟S44,USB主機控制器24執行一預取動作^ 將從記憶體中預取的一或多個第二傳輸(例如非同步傳輸) 的資料包存入空出足夠空間的記憶體,例如存入到空出預 定數量空間的記憶體;反之,則返回步驟S42,繼續執行 週期傳輸。而後,進入第二傳輸階段,例如對第二記憶體 208進行存取的非同步傳輸階段。在步驟S45,USB主機 控制器24透過其内部的一計數器206計算微悄的剩餘時 VIC08-0009-TW/ 0608-A41727-TW/Final !3563〇5 間;並判斷剩餘時間是否足以傳輸一個— 的資料包,如步驟S46。若剩餘時間足::的非同步傳輪 非同步傳輸的資料包,則非同步控制$ ,個凡整的 ,一個非同步傳輸的資料包,如步驟_ ;若剩餘時間不 2傳輸-個完整的非同步傳輸的#料包時,則非同步控 I态202與203停止執行非同步傳輪,即結束。因此, =同步傳㈣段’每讀輸-個非㈣傳輸的轉 =:Γ主機控制器24都會計算㈣的剩餘時間, ^有^餘時間充足才會執行非同步傳輪動作,如此循環往 貞的剩餘時間不再Μ傳輪—整 的-貪料包,便就此結束。 得輸 需要說明的是,本發明所述的主機可為_ 其他可搞式設備等;而本發明的Us 2 ^疋 增強主機控觀介面(EHCI)規_±^=可為符合 雖然本發明的USB主機控制器是 工°此外, 與兩個非同步控制器為例,但其迷不:二:週期控制器 器或非同步控制器的數目,對於包、^ ^的週期控制 同步控制器的USB主機控制器,仍可二丄:控制态或非 思’並同樣能達到精簡電路面積的功二。"明的發明構 另外,除上述實施例外,本發 傳輸裝置,而不僅限於USB主機控制器^匕、他類型的 一雖然本發明已以較佳實施例揭露二,然 P艮疋本發明,任何所屬技術領域中 、、、卜用以 脫離本發明之精神和範圍内,當可;!:者,在不 1 乍些淬之更動與潤飾, VIC08-0009-TW/0608-A41727 xW/f. 1356305 因此本發明之保護範圍當視後附之申請專利範圍所界定者 為準。 【圖式簡單說明】 第1圖是根據本發明的一個實施例應用於一主機的 USB主機控制器的示意圖; 第2圖是根據本發明的另一個實施例應用於一主機的 USB主機控制器的示意圖; 第3圖是第2圖中的USB主機控制器與USB設備之 間傳輸資料的微幀(Microframe)格式示意圖;以及 第4圖是根據本發明的一個實施例應用於第2圖的 USB主機控制器的控制方法的流程圖。 【主要元件符號說明】 10、20 :主機; 12、22 : USB 設備; 14、24 : USB主機控制器; 16、26 :記憶體; 101、 201 :周期控制器; 102、 103、202、203 :非同步控制器; 104、 204 :第一 DMA 引擎; 105、 205 :第二 DMA 引擎; 106 :第三DMA引擎; 107、 207 :第一記憶體; 108、 :第二記憶體; VIC08-0009-TW/ 0608-A41727-TW/Final 16 1356305 109 :第三記憶體; 206 :計數器; S41〜S47 :步驟° VIC08-0009-TW/ 0608-A41727-TW/Final