線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4717
推到 Plurk!
推到 Facebook!

專欄文章 : 通用串行總線(USB)接口設計

 
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-29 10:14:41 IP:61.218.xxx.xxx 未訂閱
作者:陳科     (250031 濟南55156部隊) 陳科         一、前言    隨著計算機技術的飛速發展,個人計算機(PC)的用戶擴展不斷擴大。然而一些系統I/O(如IRQ、DMA和I/O端口地址)限制了它的使用。于是一些新的接口標準如USB、IEEE1394應運而生,本文著重介紹通用串行總線(USB)。對于使用了USB接口的PC,用戶不需要打開機蓋,手工配置系統I/O,並為不同的外設接口發愁。而只需極其簡單的安裝與配置即可使用外設。USB提供即插即用(Plug & Play)和熱插拔功能,可以在不斷電的情況下直接將外設連接到USB上,且馬上就可以被系統識別使用。所有的USB外設接口“ONE-SIZE-FITS-ALL”,可以簡單方便的連接入計算機中。USB系統采用級聯星型拓撲結構,每個USB設備用一個USB插頭連接到一個外設的插座上,而其本身又提供一個插座供下一個外設連接用。通過這種類似菊花鏈似的連接,一個USB控制器可以連接多達127個外設,而每個外設間距離(線纜長度)可達5米。為PC的USB外設擴充提供了一個很好的解決方案。         二、USB基本特性    USB的硬件結構    USB采用四線電纜,其中兩根是用來傳送數據的串行通道,另兩根為下流(Downstream)設備提供電源,如圖1所示。          圖1 D 、D- 是串行數據通信線,它支持兩種數據傳輸率,對于高速需要高帶寬的外設,USB以全速12Mbps傳輸數據。對于低速外設,USB則以1.5 Mbps的傳輸速率傳輸數據。USB總線會根據外設情況在兩種傳輸模式中自動動態轉換。VBUS是通常為 5V的電源,GND是地線。USB是基于令牌的總線,類似于像令牌環網絡或FDDI基于令牌的總線。USB主控制器廣播令牌,總線上設備檢測令牌中的地址是否與自身相符,通過接受或發送數據給主機作響應。USB通過支持懸掛/恢復操作來管理USB總線電源。 USB系統采用級聯星型拓撲即類菊花鏈連接(見圖2)。 圖2 該拓撲由三個基本部分組成︰主機(Host)、集線器(Hub)和功能設備。主機,也被稱為根、根結或根Hub。它是做在主板上的,或作為適配卡安裝在計算機上。主機包含有主控制器和根集線器(Root hub),它控制著USB總線上的數據和控制信息的流動。每個USB系統只能有一個根集線器,它連接在主控制器上。集線器是USB結構中的特定成分,它提供叫做端口(Port)的點來將設備連接到USB總線上。同時檢測連接在總線上的設備,並為這些設備提供電源管理,負責總線故障檢測和恢復。集線器或是為總線提供能源,或是自身提供能源(從外部得到電源)。自身提供能源的設備可插入總線提供能源的集線器中,總線提供能源的設備不能插入自身提供能源的集線器或支持超過四個的下游端口中。總線提供能源的設備需要超過的100mA電源時,不能同總線提供電源的集線器連接。 功能設備通過端口與總線連接。USB設備同時可做Hub使用。例如,USB監視器可以提供USB鼠標和USB鍵盤的端口。USB集線器使用A類連接器,設備使用B類連接器。 USB的軟件結構 USB通信模塊的基本流圖如圖3所示。 圖3 主機和設備被分為如圖的幾層。實箭頭表示主機上的實際通信。設備上的相應接口根據不同的儀器而不同。主機和設備間的通信最終發生在物理線上,然而,在每一水平層之間存在著邏輯接口。主機中客戶程序軟件與設備功能間的通信代表了設備需求與設備能力之間的約定。 每個USB只有一個主機,它包括如圖4所示的以下幾層︰ 圖4 USB總線接口 USB系統 USB客戶軟件 USB總線接口處理電氣層與協議層的互連。從互連的角度來看,相似的總線接口由設備及主機同時給出,例如串行接口機(SIE)。USB總線接口由主控制器實現。 USB系統用主控制器管理主機與USB設備間的數據傳輸。它與主控制器間的接口依賴于主控制器的硬件定義。同時,USB系統也負責管理USB資源,例如帶寬和總線能量。這使客戶訪問USB成為可能。 USB系統有三個基本組件︰ 主控制器驅動程序(HCD) USB驅動程序(USBD) 主機軟件 主控制器驅動程序能夠更容易的將不同主控制器設備映射到USB系統中。因此客戶可以在不知其設備連接那個主控制器的情況下與設備相互作用。HCD與USBD間的接口叫HCDI,特定的HCDI由支持不同主控制器的操作系統定義。通用主控制器驅動器(UHCD)處于軟結構的最底層,由它來管理和控制主控制器。USB主控制器定義了一個標準硬件接口,以提供一個統一的主控制器可編程接口。UHCD實現了與USB主控制器通信和控制USB主控制器的一些根本細節,並且它對系統軟件的其它部分是隱蔽的。系統軟件中的更高層通過UHCD的軟件接口與主控制器通信。 USB驅動程序(USBD)位于UHCD之上。它提供驅動器級的接口,滿足現有設備驅動器設計的要求,USBD所實現的準確細節隨不同操作系統環境而有所不同,但USBD在不同操作系統環境下完成的是一樣的工作。USBD以I/O請求包(IRPs)的形式提供數據傳輸構架,它由通過特定管道(Pipe)傳輸數據的需求組成。此外,USBD使客戶端出現設備的一個抽象,以便于抽象和管理。作為抽象的一部分,USBD擁有缺省的管道。通過它可以訪問所有的USB設備以進行標準的USB控制。該缺省管道描述了一條USBD和USB設備間通信的邏輯通道。 在某些操作系統中,沒有提供USB系統軟件。這些軟件本來是用于向設備驅動程序提供配置信息和裝載結構的。在這些操作系統中,設備驅動程序將應用提供的接口而不是直接訪問USBDI結構。 客戶軟件位于軟件結構的最高層,它負責處理特定USB設備的設備驅動器。客戶程序層描述了所有直接作用于設備的軟件入口。當設備被系統檢測到,這些客戶程序將直接作用于外圍硬件。這個共享的特性將USB系統軟件置于客戶和它的設備之間,也就是說,一個客戶程序不能直接訪問設備硬件,而是根據USBD在客戶端形成的設備映像由客戶程序對它進行處理。 總體上說,主機各層有以下功能︰ 檢測連接和移去的USB設備 管理主機和USB設備間的數據流 連接USB狀態和活動統計 控制主控制器和USB設備間的電氣接口,包括限量能量供應 控制信息可能以帶內方式或帶外方式在主機和設備間傳輸。帶內方式將控制信息與數據混在一個管道內;帶外方式將控制信息與數據放在分離的管道內。 每一個連上的USB設備都有一個被稱為缺省管道的消息管道。為了像設備列舉和配置這樣的標準流控制,在USB設備和主機之間建立邏輯關聯。缺省管道為所有的設備提供了一個標準的接口。缺省通道也用于設備通信,由USBD作為中介,USBD擁有所有設備的缺省通道。 特別的USB設備允許使用附加的消息管道傳輸具體設備的控制信息。這些管道使用相同的通信協議作為缺省通道,但傳輸的信息必須具體到特定的設備,而不被規範標準化。USBD支持其客戶共享它擁有和使用的缺省通道。它也可以訪問其他設備的控制管道。 基于不同級別的抽象,HCD和USBD提供不同的軟件接口。他們被希望以某種特殊的方式一起工作來滿足所有USB系統的需求。USB系統的需求主要體現為對USBDI的需求。USBD和HCD間任務的區分沒有定義。然而,在特定的操作系統中支持多主控制器設備是HCDI必須滿足的需求。 HCD提供了主控制器的抽象和通過USB傳輸的數據的主控制器視角的一個抽象。USBD提供了USB設備的抽象和USBD客戶與USB功能間數據傳輸的一個抽象。總之,USB系統促進客戶和功能間的數據傳輸,並作為USB設備的規範接口的一個控制點。USB系統提供緩沖區管理能力並允許數據傳輸同步與客戶和功能的需求。 USB上的數據流傳輸 主控制器負責主機和USB設備間數據流的傳輸。這些傳輸數據被當作連續的比特流。每個設備提供了一個或多個可以和客戶程序通信的接口。每個接口由0個或多個管道組成,這些管道分別獨立地在客戶程序和設備的特定終端間傳輸數據。USBD為主機軟件的現實需求建立了接口和管道。當提出配置請求時,主控制器基于主機軟件提供的參數提供服務。 USB支持四種基本的數據傳輸模式︰ 控制傳輸 同步傳輸 中斷傳輸 數據塊傳輸 每種傳輸模式應用到具有相同名字的終端,具有不同的性質。控制傳輸類型支持外設與主機之間的控制、狀態、配置等信息的傳輸,為外設與主機之間提供一個控制通道。每種外設都支持控制傳輸類型,這樣主機PC與外設之間就可以傳送配置和命令/狀態信息。 等時(Isochronous)傳輸類型支持有周期性、有限的時延和帶寬、且數據傳輸速率不變的外設與主機間的數據傳輸。該類型無差錯校驗,故不能保證正確的數據傳輸,支持像計算機-電話集成系統(CTI)和音頻系統與主機的數據傳輸。 中斷傳輸類型支持像游戲棒、鼠標和鍵盤等人機輸入設備,這些設備與主機間數據傳輸量小、無周期性,但對響應時間敏感,要求馬上響應。 數據塊(Bulk)傳輸類型支持打印機、掃描儀、數字相機等外設,這些外設與主機間傳輸的數據量很大,USB在滿足帶寬的情況下才進行該類型的數據傳輸。 USB采用分塊帶寬分配方案,若外設超過當前帶寬分配或潛在的要求,則拒絕進入該設備。同步和中斷傳輸類型的終端保留帶寬,並保證數據按一定的速率傳送。集中和控制終端按可用的最佳帶寬來傳輸數據。但是,10%的帶寬為批量處理和控制傳送而保留,數據塊傳輸僅在帶寬滿足要求的情況下才會出現。 USB采用1ms幀時間框來傳輸數據,主控制器通過產生框開始(SOF)來開始每幀的傳輸。如圖5所示︰ 圖5 SOF標志擁有訪問總線的最高權限,在框結束(EOF)間隔串音電路與其它活動的傳輸器電氣地獨立,並為SOF傳輸提供空閑總線。 USB的即插即用 USB一個主要優點就是支持設備的熱插拔,用戶不需要關閉電源就可以接上和使用USB設備。USB集線器驅動程序枚舉設備,並通知系統設備就緒。USB設備使用描述符來識別設備和其使用的協議。串口號產生P&P用的ID,端口地址指明設備連接的端口和集線器。若設備不提供串口號,則USB使用設備端口地址。 當一個新設備被USB集線器檢測到,馬上通知主系統,系統軟件就查詢該設備,自動確定所需設備驅動器軟件和總線帶寬,然後對它進行配置。系統軟件裝載了合適的驅動器軟件,用戶馬上就可以使用新設備。 三、USB編程 USB編程主要是指USB驅動程序編程和USB客戶軟件編程。 USB驅動程序接口 Windows 98通過允許USB設備驅動程序棧通訊支持USB。在USB驅動程序和USB驅動程序棧之間是USB驅動程序接口(USBDI)。在Windows 98中,這種通訊是在WDM結 構中實現的。 Usbhub.sys是USB集線器驅動程序。當Usbd.sys枚舉每個USB主機控制器中的根結點集線器時被加載。 Usbd.sys是類USB驅動程序。 Uhcd.sys(通用主機控制驅動程序)以及Ohcd.sys(開放主機控制驅動程序)是USB主機控制器驅動程序。 另外,Hidclass.sys(WDM輸入類驅動程序)接受和發送到小驅動程序的HID報告。Hidusb.sys通過USB接受和發送HID報告。當檢測到USB總線時,PCI枚舉器加載USB棧驅動程序部分,並加載至少一個核心組件。 USB 驅動程序和USB客戶程序 USB 驅動程序編寫是和硬件相關聯的。在器件方面,適合產品開發的系列芯片有Intel公司的8X930系列(基于MCS-51微處理器的內核結構)和8X931系列(基于MCS-251微處理器的內核結構)、National Semiconductor公司的 USBN9602等。Intel公司和第三方提供了一個完整的硬件和軟件開發工具,Keil、IAR、PLC和Tasking等公司提供了具有ANSI C交叉編譯器、匯編器、連接器/定位器、調試器和仿真器的軟件開發工具。AMI、Phoenix Technologics和 systemSoft等公司提供了設備驅動器和外圍微控制程序(firmware)。 針對選用的USB控制器,從第三方得到所需的軟件,包括匯編器或編譯器、連接器/定位器和調試器等,用它們實現USB設備驅動器。對USB 驅動程序編譯成功後進行連接/定位,用調試器調試後加載在目標系統中。 雖然USB的物理和邏輯拓撲反映了總線的共享特性,客戶軟件(CSW)只處理它感興趣的USB功能接口。USB功能的客戶軟件必須用USB軟件編程接口來處理各種功能,而不是像其它總線那樣通過地址或I/O訪問直接處理它們的功能。在這個過程中,客戶軟件獨立于連接在USB上的其它設備。這使設備和客戶軟件的設計者將精力集中于軟硬件間相互作用的設計細節。 USB的客戶程序實際上是對客戶端設備映像的操作,這些映像由USBD或HCD產生。在98ddk中,存在著一組叫做USBD Interface (USBDI)函數的API函數集。該函數集包括了傳輸函數,管道(Pipe)函數,設備配置函數及其它函數。應用這些函數可編寫支持任何USB兼容設備的USB驅動程序和客戶程序。其中,管道(Pipe)是USB設備驅動程序建立的邏輯通信通道。 四、結論 USB為個人計算機(PC)外圍設備輸入輸出提供了新的接口標準。它使得設備具有了熱插拔、即插即用、自動配置的能力,並標準化了設備連接。USB的級聯星型拓撲結構大大擴充了外設數量,使增加、使用外設更加便捷、快速。新提出的USB2.0標準更是將數據傳輸速率提高到了一個新的高度,因而擁有美好的應用前景。 發表人 - cmf 於 2003/07/29 10:35:31
------
︿︿
系統時間:2024-06-02 1:02:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!