《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 通用串行總線(USB)原理及接口設計

通用串行總線(USB)原理及接口設計

2008-12-12
作者:劉 炎 馮穗力 葉 梧

  摘 要: 以USB1.1為基礎討論了USB的基本原理、工作流程、通信協議和相應的關鍵技術,并介紹了一種USB接口的10M以太網卡的設計方案。已經發布的USB2.0支持480Mbps的高速數據傳輸,這將使PC可以通過USB接口傳輸更高速更大量的數據。還論述了USB2.0的改進和優點。
  關鍵詞: 通用串行總線(USB) 設備驅動程序" title="設備驅動程序">設備驅動程序 WDM


  通用串行總線USB (Universal Serial Bus)是Intel、Microsoft等大廠商為解決計算機外設" title="外設">外設種類的日益增加與有限的主板插槽和端口之間的矛盾而于1995年提出制定的。它是一種用于將適用USB的外圍設備連接到主機的外部總線結構,主要用在中速和低速的外設。USB同時又是一種通信協議,支持主機和USB的外圍設備之間的數據傳輸。目前較多設備支持的是USB1.1[1],最新的USB2.0[3]已于2000年4月正式發布。
  USB設備具有較高的數據傳輸率、使用靈活、易擴展等優點。
  USB1.1有全速和低速兩種方式,低速方式的速率為1.5Mbps,支持一些不需要很大數據吞吐量和很高實時性的設備,如鼠標等;全速模式為12Mbps,可以外接速率更高的外設。在剛剛發布的USB2.0中,增加了一種高速方式,數據傳輸率達到480Mbps,可以滿足更加高速的外設的需要。
  安裝USB設備不必打開主機箱,它支持即插即用(Plug and Play) 和熱插拔(Hot Plug)。當插入USB設備的時候,主機檢測該外設并且通過自動加載相關的驅動程序來對該設備進行配置,并使其正常工作。
1 USB的結構與工作原理
1.1物理結構

  USB的物理拓撲結構如圖1所示。在USB2.0中,高速方式下Hub使全速和低速方式的信令環境獨立出來,圖2中顯示了高速方式下Hub的作用。
  通過使用集線器(Hub)擴展可外接多達127個外設。USB的電纜有四根線,兩根傳送的是5V的電源,另外的兩根是數據線。功率不大的外圍設備可以直接通過USB總線供電,而不必外接電源。USB總線最大" title="最大">最大可以提供5V 500mA電流,并支持節約能源的掛機和喚醒模式。

?


1.2 USB設備邏輯結構
  USB的設備可以分成多個不同類型,同類型的設備可以擁有一些共同的行為特征和工作協議,這樣可以使設備驅動程序的編寫變得簡單一些。USB Forum在USB類規范[2]中定義了USB的設備類型,比如音頻、通信、HID、HUB等設備類。
  每一個USB設備會有一個或者多個的邏輯連接點在里面、每個連接點叫端點。在USB的規范中用4位地址標識端點地址,每個設備最多有16個端點。端點0都被用來傳送配置和控制信息。在NS公司的USB接口芯片" title="接口芯片">接口芯片USBN9602[4]中有7個端點。
  管道實現了在主機的一個內存緩沖區和設備的端點之間的數據傳輸,連接端點0的叫做缺省管道。管道是具有多個特征的信道,如帶寬分配,包大小,管道類別以及數據流向。管道有兩種類型分別是流管道(stream pipe)和消息管道(message pipe)。流管道傳輸的數據包的內容不具有USB要求的結構,它是單向傳輸的;流管道支持批量、等時和中斷傳輸方式" title="傳輸方式">傳輸方式。而消息管道與流管道具有不同的行為。首先,由主機發請求給USB設備,然后在適當的方向上傳輸數據,最后是到達一個狀態階段。為了保證三個階段的數據傳輸,消息管道定義了一個數據結構使命令可靠地被識別和傳輸。消息管道是雙向的,它只支持控制傳輸方式。
  對于同樣性質的一組端點的組合叫做接口,如果一個設備包含不止一個接口就可以稱之為復合設備(見圖1)。
  對于同樣類型接口的組合可以稱之為配置。但是每次只能有一個配置是可用的,而一旦該配置被激活,里面的接口和端點就都同時可以使用。主機從設備發過來的描述字中來判斷用的是哪個配置、哪個接口等等、而這些描述字通常是在端點0中傳送的。
1.3 USB通信分層模型
  一臺主機到設備的連接需要許多層與實體之間的相互作用。USB總線接口層提供了主機和設備之間的物理/信令/包的連接。在系統軟件看來,USB設備層執行的是一般的USB操作。功能接口層提供和應用軟件層相對應的附加功能。分層模型如圖3所示,雖然邏輯上USB設備層和功能層各自與主機上的相應層通信,但物理上都是通過USB總線接口層實現數據傳輸的。


1.4 四種傳輸方式
  USB提供了四種傳輸方式,以適應各種設備的需要。這四種傳輸方式分別是:
  控制傳輸方式:控制傳輸是雙向傳輸,數據量通常較小,主要用來進行查詢、配置和給USB設備發送通用的命令。控制傳輸主要用在主計算機和USB外設中端點0之間。
  等時傳輸方式:等時傳輸提供了確定的帶寬和間隔時間。它被用于時間嚴格并具有較強容錯性的流數據傳輸,或者用于要求恒定的數據傳送率的即時應用中。例如進行語音業務傳輸時,使用等時傳輸方式是很好的選擇。
  中斷傳輸方式:中斷方式傳送是單向的并且對于主機來說只有輸入的方式。中斷傳輸方式主要用于定時查詢設備是否有中斷數據要傳送,該傳輸方式應用在少量的、分散的、不可預測的數據傳輸。鍵盤、游戲桿和鼠標就屬于這一類型。
  大量傳輸方式:主要應用在沒有帶寬和間隔時間要求的大量數據的傳送和接收,它要求保證傳輸。打印機和掃描儀屬于這種類型。
  在開發USB設備時通過設置接口芯片中相應的寄存器使端點處于不同的工作方式。
1.5 USB通信協議
  USB的物理協議規定了在總線上傳輸的數據格式,一個全速的數據幀有1500字節,而對于低速的幀有187字節。幀的作用是分配帶寬給不同的數據傳送方式。
  一個最小的USB的數據塊叫做包,包通常有同步信號,包標識,地址、傳送的數據和CRC。包的ID由八位組成,其中后四位是糾錯位。根據包功能的不同,在USB1.1中定義了以下四類十種:
  token OUT IN SOF SETUP
  data DATA0 DATA1
  handshake ACK NAK STALL
  special PRE
  在USB2.0中又增加了幾種類型的包以滿足高速傳輸的需要。其中data類型增加了DATA2和MDATA,handshake類型增加了NYET,special類型則增加了ERR,SPLIT,PING,Reserved。
  事務是在主機和設備之間不連續地數據交換。一個事務通常由主機開始,一般分三個階段,第一階段發送token包,第二階段發送是data包(可以向上也可以向下),在數據包傳送完之后,就會由設備返回一個handshake包。
  當客戶端程序通過一個USB管道發送或接收數據時,它首先會調用Win32 API,API會發送一個IRP到USB設備驅動程序。USB設備驅動程序的任務就是把客戶端的請求通過一個管道發送到外設合適的端點。為了實現這個任務,USB設備驅動程序會遞交請求給總線驅動程序,總線驅動程序可以把這些請求轉變成事務,然后將這些事務組合成幀在總線上傳輸。
1.6 USB帶寬分析舉例
  在USB1.1標準中將其有效的帶寬分成幀,每幀通常是1ms長。但由于USB2.0的傳輸速率可高達480Mbps,因此在USB2.0增加了一種微幀,它只有原來幀的1/8,這使得在傳輸數據時使用更小的緩沖。在完成了系統的配置信息和連接之后,USB的主機就會對不同的端點和傳輸方式做一個統籌安排,用來適應它的帶寬。對全速和低速的端點,系統為等時和中斷方式的傳輸保留整個帶寬的90%,即占每個幀時間的90%,剩下的就安排給控制方式傳送數據。在USB2.0中,對于高速的端點,則為等時和中斷方式的傳輸保留每個微幀的80%。
  以等時傳輸為例,在某個配置中作為一個等時傳輸管道的端點,定義了它能傳輸的數據有效負載的長度。USB系統軟件用這個長度限制去保證足夠的總線時間使每幀的內容能容納最多的數據有效負載。如果有足夠的總線時間,配置才會建立。每個等時管道的數據有效負載可以是1,2,4,...,512,1023字節。
  例如,當數據包最大有效負載為512個字節時,一個全速幀(1500字節)最多可以傳輸2個這樣的包。除去協議開銷的18個字節,剩余458個字節可以用于其他事務的傳輸。因此每幀有效字節數為2個包的字節即1024字節,因此最大帶寬為1.024Mbyte/s,每個包的有效字節占整個幀的35%。同樣可推算,數據有效負載長度為64、128或256時其最大帶寬值最大,為1.28Mbyte/s。
  在USB2.0高速工作方式下,每個等時管道的數據有效負載可以是1,2,4,...,2048,3072字節。當數據有效負載長度為1024時其最大帶寬值最大,為5.7344Mbyte/s,每個包的有效字節占整個微幀的14%。
2 Windows USB驅動程序接口
  USB的驅動程序和以往的直接跟硬件打交道的Win95的VxD(Virtual Device Driver)驅動程序不同,它屬于WDM(Windows Driver Model)類型的,Win98、Win2000等操作系統均支持該類型的驅動程序。WDM首先定義了一個基本的核心驅動程序模型,處理所有類型的數據,使驅動程序模型的內核實現更加的固定。WDM驅動程序還是一種分層的程序結構,可以看做是WindowsNT驅動程序的改進,WDM驅動程序支持即插即用、電源管理和WMI(Windows Management Instrumentation)特性。Win98和Win2000提供了一系列的系統驅動程序,它們具有為許多標準類型設備服務所需的所有基本功能。
  USB的WDM驅動程序接口框圖如圖4所示。


  Windows提供了USB的系統類驅動程序,它處理USB上的所有底層通信,這樣其他驅動程序就有了一個定義好的接口可以使用。USBHub.sys是USB集線器的驅動程序。USBD.sys是USB類驅動程序,它使用圖4中UHCD.sys或OpenHCI.sys分別驅動兩種類型的控制器:UHCI(USB Host Controller Driver),OHCI(Open Host Controller Interface)。當PCI枚舉器發現USB主機控制器后,就會裝入相關的驅動程序。
  通常一些設備都需要開發者寫一個核模式的驅動程序來使硬件正常工作。在核模式下、驅動程序通過IRP(I/O Request Packet)來組織和操作一些由其他部分發過來的要求和命令。而IRP又是通過URB(USB Request Blocks)來實現的。但對于一些HID(Human Interface Device)的USB設備,象鍵盤、鼠標和游戲操縱桿之類的設備可以被操作系統自動識別并且支持,開發者不需要再另寫驅動程序。
3 USB接口10M以太網卡的實現
3.1 選擇器件

  目前市場上USB的接口產品有兩種,一種是集成了USB接口的單片機,另一種是不帶單片機的USB接口芯片。由于前者需要專用的開發機故開發成本較高,本文將介紹一種使用廉價USB接口芯片USBN9602(NS公司)加高速的51單片機實現10M以太網卡的方案。
  在做設計之前一定要計算好外設所要求的帶寬和USB的速度是否匹配。一個USB以太網卡應該包括USB通信接口(USBN9602)、8051單片機以及IEEE802.3的MAC層和物理層。USBN9602在全速工作方式下可以達到12Mbit/s,采用USBN9602基本可以滿足10M以太網的帶寬需求。為達到較高的傳輸速率,USBN9602還應該用DMA方式與單片機通信。電路框圖如圖5所示。


3.2 設計單片機控制程序
  對于單片機控制程序,目前沒有任何廠商提供自動生成微碼(firmware)的工具。USB單片機控制程序通常由三部分組成,第一、初始化單片機和所有的外圍電路(包括USBN9602);第二、主循環部分,其任務是可以中斷;第三、中斷句柄,其任務是對時間敏感的,必須馬上執行。
3.3 開發USB網卡驅動程序
  開發USB設備驅動程序通常采用Windows DDK來實現,但現在有許多第三方軟件廠商提供了各種各樣的生成工具,象Compuware的Driver Works,Blue Waters的Driver Wizard等軟件能夠方便地生成高質量的USB的驅動程序。沒有DDK或WDM基礎的開發人員可使用KRFTech公司的開發軟件WinDriver,它的最新版本4.32已經支持USB驅動程序的開發。最后的驅動程序調試工作可以使用Compuware 的Softice或Microsoft的Windows Debugger來進行。
  Windows下的網卡驅動程序需符合NDIS規范(Network Driver Interface Specification)。網絡驅動程序不直接調用操作系統的例程,而是通過NDIS進行系統調用,NDIS還根據需要調用了驅動程序提供的例程,共同完成網卡的功能。
  USB網卡驅動程序可分為NDIS中間介質小端口驅動程序和USB驅動程序兩部分,然后將兩部分驅動程序動態連接。如果USB設備未連接和被禁止,使USB驅動不可用,那么NDIS驅動會返回一個NOT_AVAILABLE的狀態。這種實現方法可以保證用戶不必重新安裝NDIS或重啟就可以連接或拔掉USB設備。
4 小結與展望
  目前Win98、Win2000和WinCE均支持USB設備,USB并且已經得到了一個由450家技術公司組成的技術聯盟的支持,今后新PC都會裝有USB端口。APPLE公司更是推出了完全采用USB技術實現計算機與外設連接的新型計算機iMAC系列。市場上也已經出現了越來越多的支持USB的外設,用戶將從中享受到對外設選擇范圍更廣和與外設數據交換速度更快的好處。據Dataquest公司統計結果顯示,2000年全球將會售出近1億臺USB設備。
  USB2.0已經于2000年4月27日正式發布。USB2.0將向下兼容,使用與1.1版相同的電纜、連接器、軟件接口、拓撲結構。對普通用戶來說,在使用時不會覺得有什么改變,但是USB2.0將可以達到480Mbps的高速,用戶將從2.0所提供的更高速的外設中受益。預計2000年第四季度USB2.0的外圍設備將試生產,2001年將投入商業生產,USB2.0使USB具有了更好的應用前景。


參考文獻
1 Compaq、 Intel、 Microsoft、 NEC.Universal Serial Bus Specification,Revision 1.1.September 23、1998
2 Compaq、 Intel、Microsoft、NEC.USB Class Definitions for Communication Devices、Version 1.1.January 19、 1999
3 Compaq、 Hewlett-Packard、 Intel、 Lucent、 Microsoft、 NEC、 Philips.Universal Serial Bus Specification Revision2.0.April 27、2000
4 USBN9602 DATASHEET.National Semiconductor Corpor-ation.November 1998
5 Malter Oney.Programming the Windows Driver Model.Microsoft Press,1999
6 Jim Lyle.USBN9602 Firmware Description.National Semiconductor Corporation,November 1998
7 (美)Chris Cant著,孫義等譯.Windows WDM 設備驅動程序開發指南.北京:機械工業出版社

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产成人免费片在线视频观看 | 老司机免费看 | 欧美va免费大片 | 狠狠燥| 91欧洲在线视精品在亚洲 | 亚洲欧美日韩在线播放 | 香蕉视频黄色 | 中文在线最新版天堂 | 日日噜噜噜夜夜爽爽狠狠 | 色噜噜狠狠一区二区三区 | 国产精品毛片一区二区三区 | 欧美日韩性生活 | 国产成人精品第一区二区 | 台湾乱xxxxxxxxx | 国产亚洲欧美日韩在线观看不卡 | 特黄色一级毛片 | 在线观看男女爱视频网站 | 欧美 日韩 亚洲另类专区 | 色播视频在线播放 | 日韩欧美不卡视频 | 最近2019中文字幕大全第二页 | 黄色大片免费播放 | 欧美在线你懂的 | 久草6| 男人透女人超爽视频免费 | 激情小说亚洲 | 999久久免费高清热精品 | 久久99久久99精品免观看麻豆 | 秋霞午夜伦理片 | 婷婷激情五月网 | 国产日韩精品欧美一区喷水 | 人人做人人澡人人人爽 | 欧美精品一区二区三区免费观看 | 欧美在线一级精品 | 中国大陆高清aⅴ毛片 | 国产女人成人精品视频 | 国产免费怡红院视频 | 邪恶亚洲 | 日本中文字幕在线精品 | 中国一级特黄剌激爽毛片 | 中国性hd|