蔣來呈
[摘要]在對基于USB 2.0的數據采集系統的總體結構進行綜述的基礎上,對系統的固件程序、基于WDM~USB驅動程序及應用程序等部分的設計進行較詳細的討論。
[關鍵詞]USB數據采集固件程序Driverstudio驅動程序
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0210032-01
通用串行總線USB(Universal Serial Bus)是應用在微機領域的新型接口技術,它具有傳輸速度快、使用方便、連接靈活等優點,USB支持即插即用,并且可以連接多個USB設備,在數據采集系統中得到日益廣泛的應用。
一、硬件設計
基于USB2.0總線的數據采集系統由主機應用程序向USB控制器發送采樣時控包,進而USB控制器給FPGA觸發采集信息:FPGA將采集到的數據信息通過USB控制器發給主機,主機做進一步處理。
(一)支持USB 2.0高速傳輸的OY7C68013
Cypress半導體推出了世界上首個USB 2.0外設控制器EZ-USB FX2CY7C68013。它包括一個8051處理器,一個串行接口引擎(SIE),一個USB收發器,片上RAM,FIFO存儲器及一個通用可編程接口。EZ-USB FX2擁有一個獨特的架構,其中包括一個智能串行接口引擎(SIE)。FX2還包括一個通用可編程接口(GPIF),允許它“無膠粘接”,即可與任何ASIC或DSP進行接合,并且它還支持所有通用總線標準。CY7C68013的GPIF引擎具有自動傳輸數據結構的特性,這種特性使得外圍設備和主機通過CY7C68013可以無縫的、高速的傳輸數據。為了實現高速的數據傳輸,CY7C68013 CPU不會直接參與數據的傳輸,而是直接利用GPIF的自動傳輸數據模式。
(二)端點緩沖區FIFO
FIFO是英文First In First Out的縮寫,是一種先進先出的數據緩存器。設備端點實際上是一個USB數據字節不斷取空和填滿的FIFO。USB控制器端點分為EPO、EPI、EP2、EP4、EP6、EP8。其中EPO、EPl是小端點,是64字節端點,只能被cPU訪問。EPO是默認的控制端點0,主機通過端點0發送一串標準設備請求,包括獲取狀態、獲取及設置描述符、設置及獲取配置等請求。EP2、EP4、EP6、EP8屬于大端點,可以設置2、3、4倍緩沖深度,配置的端點可滿足USB 2.0的高速傳輸請求。特性,描述主機與設備之間的通訊,介紹它的幾種傳輸并在此基礎上介紹固件的定義,闡述基本框架以及其固件程序的基本設計。主機通過發送四位地址和一個方向位來選擇端點,USB控制器從OUT端點緩沖區讀主機發出的數據,并且向IN端點緩沖區寫要傳輸給主機的數據。
(三)接口信號
在利用GPIF進行高速數據傳輸系統設計時,GPIF waveforms的編輯是非常重要的,它控制著整個數據傳輸過程的讀寫時序。FX2專門為GPIF提供了外圍接口信號,如8位或16位的數據線、控制信號、Ready信號以及地址線。IFCLK(雙向時鐘信號):IFCLK可以配置成輸入或輸出。當配置為輸出時,IFCLK被FX2驅動為30MHz或48MHz;當配置為輸入時,時鐘范圍為5-48MHz。GPIFADR[8:0](輸出):GPIF使用GPI-FADR信號為外部設備提供地址線,在總線上地址值是自增的。FD[15:0](雙向):這是USB主機通過FX2和外部設備進行數據傳輸的數據線,它可配置成8位或16位。當為16位時,FD[7:0]代表端點FIFO中的第一個字節,FD[15:8]代表第二個字節。CTL[5:0](輸出):FX2為外部設備提供了幾個控制信號,如讀寫選通、使能等。DY[5:0](輸入):FX2提供了幾個狀態檢測信號,它可以檢測外部設備的狀態,如FIFO的空、滿、半滿等。GSTATE[2:0](輸出):這是調試信號,表示GPIF波形執行的狀態,通常連接到邏輯分析儀上。
二、軟件設計
(一)固件程序
固件程序負責初始化各硬件單元,重新配置設備。設備加電后由驅動程序把固件程序從主機下載到USB控制器片內RAM后執行,即“重新枚舉”。Cypress公司為CY7C68013提供了一個開發框架,固件框架流程圖在固件程序中主要就是實現以下幾個函數:TD_Init函數:負責對USB端點進行初始化設置。在該函數中,用戶可設置整體狀態變量的初始值,并可規定各種端點資源的使用(包括中斷)以及配置外圍接口的輸入/輸出等。TD_Poll函數:負責系統中循環任務的處理。它主要是對各個端點的狀態進行查詢,處理各種OUT或IN端點的交互,完成數據的傳輸。TD_Resume函數:該函數可在設備被外部喚醒事件喚醒且框架程序恢復處理后被調用。此時,設備將恢復到正常的操作方式。
(二)應用程序
應用程序的主要功能為:啟動或停止USB設備、檢測USB設備、發送采集命令、采集數據、存儲數據、進行后期分析處理等等。
(三)驅動程序
USB設備驅動程序是開發USB外設的一個關鍵,USB設備驅動程序的主要作用是使操作系統能夠識別USB設備,并建立起主機端和設備端之間的通訊。USB驅動程序屬于先進的WDM(Win32 Driver Model)驅動程序模式,支持即插即用功能。WDM型驅動程序是內核程序,與標準的Win32用戶程序不同,它采用了分層處理的方法。通過它,用戶不需要直接與硬件打交道,只需通過下層驅動程序提供的接口號訪問硬件。因此,USB設備驅動程序不必具體對硬件編程,所有的USB命令、讀寫操作通過總線驅動程序轉給USB設備。但是USB設備驅動程序必須定義與外部設備的通訊接口和通訊的數據格式,也必須定義與應用程序的接口。在Windows操作系統下,開發WDM驅動程序可以使用微軟公司的DDK(驅動程序開發包)。DDK提供了創建WDM驅動程序的開發環境,并提供了用于開發Windows 2000和Windows沖驅動程序的頭文件、庫函數、源代碼、各種工具和文檔資料。Cypress FX2開發包提供了一個通用的驅動程序,可被用于基于Ez-USB系列芯片的USB設備。該程序可不加修改經DDK編譯后直接使用,在應用中可以看到其運行穩定。當然,用戶也可以這個驅動程序為起點,創建自己的驅動程序。
三、結束語
本文系統地介紹了基于USB 2.0接口的數據采集系統設計。基于USB2.0的數據采集系統,彌補了傳統采集板卡插拔的諸多不足。隨著時代的進步,技術的發展,USB技術必將在更廣闊的領域得到更深層次的運用。