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