基于USB總線可編程函數發生器的研究與設計(一)
2 USB總線技術
在設計一個USB設備時,只有對USB總線協議體系有一個全面而深入的認識,才能結合不同的傳輸方式、端點類型、管道模型和設備狀態等,根據實際應用的需求選擇不同的實現方法,進行方案論證并確定設計方案。本章主要針對USB在開發應用中涉及的協議規范及相關技術進行介紹,并結合本課題的設計需求提出USB的具體應用方法。
2.1 USB系統結構
從開發的角度來看USB系統是構建在硬件系統和軟件系統兩個平臺上的功能層,設備層以及接口層三個層面的集合。更為普遍的系統定義是從應用者角度出發,分為USB鏈接、USB設備和USB主機。如圖1所示。
圖1 USB系統結構框圖
2.1.1 USB互連
USB鏈接是指USB設備和主機之間進行鏈接和通行的規范,主要包括:總線的拓撲結構、層間關系,數據流模式和USB的調度。
在物理上,USB的連接線是一根四芯電纜,其中D+、D-兩根線是差分驅動的串行數據信號線,采用NRZI(No Return Zero.Inverse,非歸零反相編碼)編碼方式傳輸數據。另兩根線VBUS、GND是電源線和地線,可為USB設備提供電壓+5伏、最大電流500毫安的電源。由于電器特性原因,每根電纜長度不超過5米。通過選擇合適的導線長度可以匹配指定的信號傳輸時的延遲和衰減等特性。所有的設備都有上行的接口,上行和下行的接頭是不能互換的,這保證了不會有非法的連接出現。
在邏輯上,采用樹形分層拓撲。USB系統通過連接設備分為7個層,其中主機占用最高一層,一個系統中只有一個主機。通常,每一級HUB連接器為一層。在一些復合設備中可能占據多個層次。雖然每一層沒有連接設備數量限制,但是由于其尋址協議的規定,連接設備可以只有127個(包含連接設備,如HUB),數據流模式是指USB的控制和數據信息的傳輸方式,包括控制、批量、中斷和同步傳輸。在調度方面,所有的USB傳輸都要由USB主機發起,同時設備地址的分配和電源的管理分配等也由主機完成。
2.1.2 USB主機
USB主機的邏輯結構組成包括:USB總線接口、USB主機控制器、USB系統軟件集合。其基本結構如圖2所示。
圖2 USB主機系統組成框圖
USB主機和設備一樣,都提供同樣的總線接口,串行接口引擎(SIE,Serial Interface Engine)。由于主機在USB系統中的特殊性,USB主機上的總線接口還必須具備主機控制器的功能(Host Controller),主機控制器具有一個內集成的集線器(根集線器,Root Hub)提供與USB電纜的連接。USB系統使用主機控制器來管理主機與USB設備的數據傳輸。USB主機工作還依賴于PC的操作系統所能夠提供的各種驅動程序和應用程序支持,主要包括3部分:USB主控制器驅動程序,其負責CPU與USB主機接口芯片的通訊,處理底層USB包的發送與接收;USB核心驅動程序,這部完成操作系統對USB主機控制器的管理,負責解釋操作系統對USB主機的各種操作命令;USB用戶程序通過操作系統提供給用戶的API來完成對USB設備的各種操作。主要完成的功能有:檢測USB設備的連接與斷開;管理主機與USB設備之間的控制流;管理主機與USB設備之間的數據流;收集設備狀態和動作信息;提供能量和電源管理。
2.1.3 USB設備
廣義的USB設備指的是USB主機和連接到USB主機的各種設備。通常意義上的設備則包括兩類:提供USB連接點的HUB和提供實用功能的功能設備。
根據不同的協議標準,USB設備分為低速設備,全速設備和高速設備。他們通過數據連線上的電平來識別。如圖3和圖4所示。
圖3 高速和全速設備連接方式
圖4 低速設備連接方式
在主機看來,它與所有的USB設備的接口都是一致的,即認為一個USB設備由三個功能模塊組成:USB總線接口、USB邏輯設備、功能單元。USB總線接口是USB設備中的串行接口引擎(SIE);USB邏輯設備被USB系統軟件看作是一個端點的集合;功能單元被客戶軟件看作是一個接口的集合。USB設備作用是接收總線上的所有數據包,丟棄地址不符的數據包,對地址相符的數據包響應,完成所定義的設備功能。
與USB設備的地址相同,在設備內部的USB端點也都有一個唯一地址;不同之處在于設備地址是在設備成功連接主機后由主機分配的,而端點地址則是在器件設計時已經給定的。端點是主機與設備之間通信的目的或來源。控制端點可以雙向傳輸數據,而其它端點只能在單方向傳輸數據。主機和設備的通信最終作用于設備上的各個端點,它是主機與設備間通信流的一個邏輯終端。這些邏輯終端組合起來完成一個面向主機軟件的邏輯設備。
2.2 USB傳輸協議
2.2.1 位域格式
在USB協議體系中,從位序和字段的定義,到不同類型的事務包格式的描述以及鏈路層流程控制和事務級別管理等,自底向上地規定了USB數據的格式與傳輸時序。從主機應用層傳入USB系統的數據將被進行事務分配,然后依次組裝數據幀,根據目的設備與內容要求的不同,在數據包的字段內填寫相關信息,最終以電信號形式送上物理連接線。
在USB中數據信息被發送到總線的時候,首先最低有效位(LSB),然后是下一個最低有效位,最后是最高有效位(MSB)。幀是USB數據傳輸的基本單位,在一個數據幀中可以由主機插入不同的事務的數據包。數據包按照在其在時序上的不同階段分為標記包,數據包和應答包。標記包則包含有包標識字段、地址字段、端口字段和循環檢驗字段。數據包需要將包標識、數據和校驗信息包含在內。應答包只包含握手信號的包標識。如圖5所示。
圖5 數據包格式
不同的包標識用于不同的傳輸功能,如表3所示。其中SETUP包是一個非常特殊的數據包,它將被用于設備初次連接后的配置和后續的設備管理。其具體格式如表1所示。
表1 SETUP包格式說明
表2 請求類型
表3 PID包描述
2.2.2 傳輸模式
在USB設備的傳輸時序上分為四種傳輸模式:控制傳輸,批量傳輸,中斷傳輸和同步傳輸。不同的傳輸模式間的差別主要表現在一下特性上:USB規定的數據格式、信息流的方向、數據凈荷區的長度限制、總線訪問的限制、延時的限制、出錯處理。控制傳輸:用于命令和狀態信息的傳輸。任何一個USB設備都必須支持控制傳輸并且有相應的端點0。中斷傳輸:主要用于偶然性少量數據延時有限的傳輸。同步傳輸:以一個恒定的速率進行數據傳輸。批量傳輸:主要用于大量無速率和延時要求的數據傳輸。
(1)控制傳輸(Control Transfer)
控制傳輸最少有2個事務階段:建立和狀態。控制傳輸可以有選擇性地包括建立和狀態階段之間的數據階段。在建立階段里,建立事務用于向功能設備的缺省控制端口傳輸信息。建立事務在格式上類似于輸出,但是使用的是建立而不是輸出的PID。具體時序如圖6所示。
圖6 控制傳輸時序
(2)批量傳輸(Bulk Transfer)
批量傳輸是由標記,數據和握手數據包構成的三階段傳輸。在某些流控制和掛起條件下,數據階段被握手信號替換,從而產生了沒有數據傳輸的兩時相的事務。當主機準備好了接收批量傳輸的數據時,它發出輸入標記。功能設備端口通過返回數據包,或者如果不能返回數據,則返回NAK或STALL握手作為應答。其具體時序如圖7所示。
圖7 批量傳輸時序
(3)同步傳輸(Isochronous Transfer)
同步傳輸有標記和數據階段,而沒有握手階段。主機發出輸入或輸出標記,然后是設備或主機傳送數據的數據階段。同步傳輸不支持握手階段或重試操作。其具體時序如圖8所示。
圖8 同步傳輸時序
(4)中斷傳輸(Interrupt Transfer)
中斷事務可由輸入或輸出構成。當收到輸入標記,設備便可返回數據。如果端口沒有新的中斷信息返回,設備在數據時相里返回NAK握手。其具體時序如圖9所示。
圖9 中斷傳輸時序
2.2.3 通信流程
USB外部設備從插入主機或連接在主機上的HUB的USB接口后,經進行一系列操作直到設備被拔出。在這此期間,USB設備根據其所能能夠對主機做出的響應分為若干狀態。各個狀態及其描述如表4所示。
從USB設備被插入USB接口到USB開始按缺省功能進行工作的過程,即從連接狀態到配置狀態稱為設備的枚舉過程。只有成功枚舉后,主機才能為設備加載正確的驅動程序使其發揮特定的設備功能。
枚舉的詳細過程如下:
(1)USB主機檢測到USB設備插入后,就會先對設備復位。設備復位后,USB主機就會對地址為O的設備發送獲取設備描述符的標準請求。所有的USB設備在總線復位后其地址都為0,這樣主機就可以跟那些剛剛插入的設備通過地址0通信。主機在建立階段發出獲取設備描述符的輸入請求,設備收到該請求后,在數據階段將設備描述符返回給主機。主機在成功獲取到一個數據包的設備描述符后并且確認沒有什么錯誤后(注意:有些USB設備的端點0大小不足18字節,但至少具有8字節,而標準的設備描述有18字節,在這種情況下,USB設備只能暫時按最大包將部分設備描述符返回,而主機在成功獲取到前面一部分描述符后,就不會再請求剩下的設備描述符部分,而是進入設置地址階段),就會返回一個0長度的確認數據包給設備。
表4 USB設備狀態表
(2)主機再對設備復位一下,接下來就會進入到設置地址階段。這時USB主機發出一個設置地址的請求,并在后面跟著一個0長度的數據輸出包。地址包含在建立包中,具體的地址USB主機會負責管理,它會分配一個唯一的地址給新設備。USB設備在收到地址后,返回0長度的應答包,設備在收到0長度應答包的ACK之后,就可以啟用新的地址了。這樣設備就分配到了唯一的設備地址,以后主機就通過它來進行訪問該設備。
(3)主機再次獲取設備描述符,這次跟第一次可能有點不一樣,這次需要獲得完全部的18個字節的設備描述符。當然,如果你的端點0緩沖大于18字節的話,拿就跟第一次的情形一樣了。
(4)主機就會獲取配置描述符。配置描述符總共為9字節。主機再獲取到配置描述符后,根據里面的配置集合總長度,再獲取配置集合。配置集合包括配置描述符,接口描述符,斷電描符等等。
(5)如果有字符串描述符的話,還要獲取字符串描述符。另外HID設備還有HID描述符等。
(6)當設備成功枚舉后,主機會根據設備描述符加載相應的驅動程序。在驅動程序中,通過更能需求為設備發送配置請求或者按照默認配置進行工作。至此,USB設備就完成了功能的啟動,也就是建立了一個從主機應用程序到固件功能模塊的數據通道。
2.3 USB設備描述
2.3.1 設備架構
為了正確描述USB設備的特性,USB提出了設備架構的概念。設備架構認為USB設備是由一些配置、接口和端點組成的,即一個設備可以含有一個或多個配置,在每個配置中含有一個或多個接口,在每個接口中可含有若干個端點。其中,配置和接口是對USB功能的抽象,實際的數據傳輸還有端點來完成的。
(1)配置:USB設備在正常被使用以前,必須被配置,由主機負責配置設備。主機一般會從USB設備獲取配置信息后再去定此設備有哪些功能。作為被配置操作的一部分,主機會讀取配置數量,設置設備的配置值。如果必要的話會選擇合適的接口的備選設置。
(2)接口:接口是一組端點集合,它們代表了設備向主機提供的單一功能和特性。在設備的某一特定配置中,可以包含一個或多個接口。
(3)設置:不同的設置會重定義相關端點的數目或特性。設備通過支持接口請求來匯報及選擇指定的接口的設備選設置。
一個USB設備有一個或多個接口。而每個接口又有0個或多個端點。在一個配置下,一個端點不會在接口之間共享,除非被同一個接口的不同設置使用。不同配置端點不受此限制。
2.3.2 設備描述符
為了能夠讓主機識別和驅動不同種類的功能的設備,在USB的設備中都要存儲著設備的相關描述,并通過標準請求向主機返回。這些描述包括:設備描述符、配置描述符、接口描述符、斷點描述符和字符串描述符。
(1)設備描述符
設備描述符給出了USB設備的一般信息。這包括對設備及所有設備配置起全程作用的信息。一個USB設備只能有一個設備描述符。所有USB設備必須支持的缺省控制通道的最大包長在設備描述符中得到了說明。主要信息還有協議版本、設備制造商、設備支持的配置數目等。
(2)配置描述符
配置描述符給出了一個設備配置的信息。描述符給出了此配置下的接口數,每個接口可能獨立工作。比如,一個ISDN設備可能配置有兩個接口,每個都提供64KB/S的有獨立數據源與數據接收者的雙向通道;在另一個配置下ISDN可能表現為單個接口,將兩個通道合成一個128KB/S的雙向通道。當主機發出配置描述符請求時,所有相關接口與端點的描述符都被返回。
(3)接口描述符
接口描述符在一個配置內給出一個接口的信息。端點的描述符會跟在接口描述符后被返回。接口描述符總是作為配置描述符的一部分被返回。但接口描述不可直接用Set Description()和Get Descriptor()存取。SetInterface 0與GetInterface()用來選擇與返回選擇了的接口設置。一個接口描述符的節點個數不把結點0計在內。
(4)端點描述符
每個接口使用的結點都有自己的描述符,此描述符用來決定每個端點的帶寬需求和輸入輸出方向。每個端點描述符總是作為配置描述的一部分返回的,結點0無描述符。
(5)字串描述符
字串描述符是可有可無的。設備無字串描述符,所有描述符中字串描述符的索引都必須為0。字串描述符使用的是UNICODE編碼。
2.4 USB應用設計
USB最初面向的是諸如調制解調器、掃描儀、鍵盤、個人數字助理、鼠標、操縱桿等低速設備。通過不斷的改進,USB可以實現更高速的數據傳輸,適用的范圍也逐步擴大。尤其是USB 2.0的成功普及后使PC對其達到100%的支持,外置大容量存儲器、數碼相機、視頻系統、網絡設備等各式各樣的外部設備開始應用USB總線。綜合分析這些應用可以發現,USB總線的應用通常采用有以下三種方式:
(1)簡單擴展。相對于設備核心功能而言,此方式中USB總線通常利用其即插即用或總線供電等便捷性作為設備功能擴展之用,并非設備必須模塊。如通過USB供電的筆記本散熱器和數碼充電器等。
(2)互聯接口。這種方式主要利用USB的高速數據傳輸功能,將設備的軟硬部分或者各個功能模塊進行互聯。例如USB接口的鼠標和移動硬盤。此時,USB作為應用的內部總線存在,具有唯一、不可替代性;離開USB后它成為了一個不完整的系統,無法正常發揮功能。
(3)增強功能。這是一種介于前兩者之間的應用方式,可以自由的在應用設備和功能模塊之間切換和工作。在沒有USB連接時設備可以正常工作,完成基本的應用功能;當接入USB系統后,設備具有了擴展的功能或者更好的性能。例如,手機中的USB應用。在作為一個獨立的通信工具應用同時可以通過USB接入擴展成為PC揚聲器或者IP電話等。
由于本課題的設計目標是便攜式虛擬儀器設備,它應該是一個基于PC又不依賴于PC的設備。所以,采用第三種應用方式。確定應用方式后,結合虛擬儀器的基本結構便可得到基于USB總線的函數發生器的組成框圖。如圖10所示。
圖10 系統基本組成框圖
根據可編程函數發生器的功能與特性描述,設計相應設備、配置、接口、端點和字符串描述。首先,作為一個新型測量設備,不采用USB體系中的常規設備分類,定義為廠商自定義類型。其次,出于便攜適用性考慮,設備開發遵循USB 2.0協議規范,接口默認配置為高速設備,同時向下兼容全速接口,提供2種設備配置。然后,作為單一功能應用的信號發生器僅需要配置1種接口。端點配置方面,可以采用1個批量傳輸的輸入端點完成底層波形數據的載入;采用1個控制傳輸的輸出端點完成參數的在線設置功能和設備的重配置特性。考慮到USB總線的最大負載功率有限(總線電壓恒定5VDC,最大供電電流500mA),供電特性采用設備供電和總線供電的復合方式。綜合上述分析,一個USB信號發生器的設備描述已經初步確定。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文網址:http://www.guhuozai8.cn/html/solutions/14019312799.html