基于USB總線的高速數(shù)據(jù)采集系統(tǒng)
摘要:介紹了一種基于USB總線的高速數(shù)據(jù)采集系統(tǒng),討論了USB控制器EZ-USB FX2?CY7C68013?的性能及傳輸方式?給出了該系統(tǒng)的硬件和基于GPIF主控方式實現(xiàn)數(shù)據(jù)傳輸?shù)能浖O計方法。關鍵詞:USB;數(shù)據(jù)采集;EZ-USB FX2;GPIF
1 引言
現(xiàn)代工業(yè)生產(chǎn)和科學研究對數(shù)據(jù)采集的要求日益提高。目前比較通用的是在PC或工控機內(nèi)安裝數(shù)據(jù)采集卡(如A/D卡及422、485卡)。但這些數(shù)據(jù)采集設備存在以下缺陷:安裝麻煩、價格昂貴、受計算機插槽數(shù)量、地址、中斷資源的限制,可擴展性差,同時在一些電磁干擾性強的測試現(xiàn)場,可能無法專門對其作電磁屏蔽,從而導致采集的數(shù)據(jù)失真。
傳統(tǒng)的外設與主機的通訊接口一般是基于PCI總線、ISA總線或者是RS-232C串行總線。PCI總線雖然具有較高的傳輸速度(132Mbps),并支持“即插即用”功能,但其缺點是插拔麻煩,且擴展槽有限(一般為5~6個),ISA總線顯然存在同樣的問題。RS-232C串行總線雖然連結(jié)簡單,但其傳輸速度慢(56kbps),且主機的串口數(shù)目也有限。
通用串行總線(Universal Serial Bus,簡稱USB)是1995年康柏、微軟、IBM、DEC等公司為了解決傳統(tǒng)總線的不足,而推出的一種新型串行通信標準。該總線接口具有安裝方便、高帶寬、易擴展等優(yōu)點,已經(jīng)逐漸成為現(xiàn)代數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢;冢眨樱碌臄(shù)據(jù)采集系統(tǒng)充分利用USB總線的上述優(yōu)點,有效地解決了傳統(tǒng)數(shù)據(jù)采集系統(tǒng)的缺陷。USB的規(guī)范能針對不同的性能價格比要求提供不同的選擇,以滿足不同的系統(tǒng)和部件及相應不同的功能,從而給使用帶來極大方便。
(范文先生網(wǎng)325224.com收集整理)
2 系統(tǒng)介紹
2.1 數(shù)據(jù)采集系統(tǒng)的結(jié)構與功能
常見的數(shù)據(jù)采集系統(tǒng)的硬件總體結(jié)構如圖1所示。其中數(shù)據(jù)采集接口卡是硬件部分的核心,它包括A/D轉(zhuǎn)換器、微控制器、USB通信接口等。
在高速數(shù)據(jù)采集系統(tǒng)中?由于現(xiàn)場輸入信號是高頻模擬信號,因而信號的變化范圍都比較大?如果采用單一的增益放大?那么放大以后的信號幅值有可能超過A/D轉(zhuǎn)換的量程?所以必須根據(jù)信號的變化相應地調(diào)整放大器的增益。在自動化程度較高的系統(tǒng)中?希望能夠在程序中用軟件控制放大器的增益?AD8321正是這樣一種具有增益可編程功能的芯片。AD8321是美國AD公司生產(chǎn)的一種增益可編程線性驅(qū)動器。它具有頻帶寬、噪聲低、增益可編程且易于與單片機進行串行通信等優(yōu)點,十分適合在數(shù)據(jù)采集系統(tǒng)中做前置放大。
經(jīng)過調(diào)理后的信號可送入模/數(shù)變換器(ADC)進行A/D變換。筆者選用的ADC是TLC5540,它是一種高速8位模擬數(shù)字轉(zhuǎn)換器,能以高達每秒40M的采樣速率進行轉(zhuǎn)換,由于采用半閃速結(jié)構和CMOS工藝制造,因此功耗和成本很低。其75MHz(典型值)的模擬輸入帶寬使該器件成為欠采樣應用的良好選擇。該器件帶有內(nèi)部電阻,可用于從5V電源產(chǎn)生2V滿度的基準電壓,以減少外部元件數(shù)。數(shù)字輸出置于高阻方式。它僅需要5V電源工作,可由USB總線供電。
由于數(shù)據(jù)采集接口卡是硬件部分的核心,因此應選擇能適用USB協(xié)議的合適芯片。EZ-USB FX2是一種USB2.0集成微控制器。它的內(nèi)部集成了USB2.0收發(fā)器、串行接口引擎(SIE)、增強的8051微控制器和一個可編程的串行接口。其主要特性如下:
●帶有加強的8051內(nèi)核性能,可達到標準8051的5~10倍,且與標準8051的指令完全兼容;
●集成度高,芯片內(nèi)部集成有微處理器、RAM、SIE(串行接口引擎)等多個功能模塊,從而減少了多個芯片接口部分需要時序配合的麻煩;
●采用軟配置,在外設未通過USB接口接到PC機之前,外設上的固件存儲在PC上;而一旦外設連接到PC機上,PC則先詢問外設是“誰”(即讀設備描述符),然后將該外設的固件下載到芯片的RAM中,這個過程叫做再枚舉。這樣,在開發(fā)過程中,當固件需要修改時,可以先在PC機上修改好,然后再下載到芯片中;
●具有易用的軟件開發(fā)工具,該芯片開發(fā)系統(tǒng)的驅(qū)動程序和固件的開發(fā)和調(diào)試相互獨立,可加快開發(fā)的速度。
圖2 USB接口示意圖
2.2 方案選擇
FX2有三種可用的接口模式:端口、GPIF主控和從FIFO。
在“端口”模式下,所有I/O引腳都可作為8051的通用I/O口。
在“從FIFO”模式下,外部邏輯或外部處理器直接與FX2端點FIFO相連。在這種模式下,GPIF不被激活,因為外部邏輯可直接控制FIFO。這種模式下,外部主控端既可以是異步方式,也可以是同步方式,并可以為FX2接口提供自己的獨立時鐘。
“GPIF主控”接口模式使用PORTB和PORTD
構成通向四個FX2端點FIFO( EP2? EP4? EP6和EP8)的16位數(shù)據(jù)接口。GPIF作為內(nèi)部的主控制器與FIFO直接相連,并產(chǎn)生用戶可編程的控制信號與外部接口進行通信。同時,GPIF還可以通過RDY引腳采樣外部信號并等待外部事件。由于GPIF的運行速度比FIFO快得多,因此其時序信號具有很好的編程分辨率。另外,GPIF既可以使用內(nèi)部時鐘,也可以使用外部時鐘。故此,筆者選擇了GPIF模式。
高速數(shù)據(jù)采集卡的設計存在兩大難點:一是模擬信號的A/D高速轉(zhuǎn)換;二是變換后數(shù)據(jù)的高速存儲及提取。對于第一個問題,由于制造ADC的技術不斷進步,這個問題已經(jīng)得到解決。而對于第二個問題,一般的數(shù)據(jù)采集系統(tǒng)是將A/D轉(zhuǎn)換后的數(shù)據(jù)先存儲在外部數(shù)據(jù)存儲器中,然后再對其進行處理。對于高速數(shù)據(jù)采集而言,這種方式將嚴重影響采集速度,且存儲值也會受到很大限制。而改進方案是將A/D轉(zhuǎn)換后的數(shù)據(jù)直接送至計算機內(nèi)存,這樣,采集速度將大大提高,而且可存儲大量數(shù)據(jù),以便于下一步的處理。
為了解決同步問題,可以由CPLD產(chǎn)生同步時鐘信號提供給ADC和FX2。在本數(shù)據(jù)采集系統(tǒng)的設計中,CPLD同時還可用于產(chǎn)生不同的控制信號,以便對采樣進行實時控制。CPLD是復雜可編程邏輯器件,它包括可編程邏輯宏單元、可編程I/O單元和可編程內(nèi)部連線。由于CPLD的內(nèi)部資源豐富,因而可廣泛應用在數(shù)據(jù)采集、自動控制、通訊等各個領域。在本系統(tǒng)的設計中,筆者選用的CPLD是Lattice公司的ispLSI1016。圖2所示是其整個USB接口卡的硬件電路圖。
3 系統(tǒng)軟件設計
該系統(tǒng)軟件主要包括USB設備驅(qū)動程序、設備固件和應用程序。
3.1 設備固件(Firmware)設計
設備固件是設備運行的核心,可采用匯編語言或C語言設計。其主要功能是控制CY7C68013接收并處理USB驅(qū)動程序的請求(如請求設備描述符、請求或設置設備狀態(tài),請求或設置設備接口等USB2.0標準請求)、控制芯片CY7C68013接收應用程序的控制指令、控制A/D模塊的數(shù)據(jù)采集、通過CY7C68013緩存數(shù)據(jù)并實時上傳至PC等。
即使外部邏輯或內(nèi)置的普通可編程接口(GPIF)在沒有CPU的任何干涉下能夠通過四個大的端點FIFO來處理高速寬帶數(shù)據(jù),固件還是有如下固定的工作:
●配置端點;
●通過控制端點零來響應主機請求;
●控制和監(jiān)測GPIF的活動;
●利用USART處理所有的特殊請求任務,如計時器、中斷、I/O引腳等。
3.2 USB設備驅(qū)動程序開發(fā)
USB系統(tǒng)驅(qū)動程序采用分層結(jié)構模型?分別為較高級的USB設備驅(qū)動程序和較低級的USB函數(shù)層。其中USB函數(shù)層由兩部分組成:較高級的通用串行總線驅(qū)動程序模塊(USBD)和較低級的主控制器驅(qū)動程序模塊(HCD)。
在上述USB分層模塊中,USB函數(shù)層(USBD及HCD)由Windows提供,負責管理USB設備驅(qū)動程序和USB控制器之間的通信;加載及卸載USB驅(qū)動程序;與USB設備通用端點(endpoint)建立通信并執(zhí)行設備配置、數(shù)據(jù)與USB協(xié)議框架和打包格式的雙向轉(zhuǎn)換任務。目前?Windows提供有多種USB設備驅(qū)動程序,但并不針對實時數(shù)據(jù)采集設備,因此需采用DDK開發(fā)工具來設計專用的USB設備驅(qū)動程序。該設備驅(qū)動程序應由初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能等四個模塊來實現(xiàn)。
初始化模塊可提供一個DriverEntry入口點以執(zhí)行大量的初始化函數(shù)。
即插即用管理模塊用來實現(xiàn)USB設備的熱插拔及動態(tài)配置。當硬件檢測到USB設備接入時,Windows查找相應的驅(qū)動程序,并調(diào)用它的DriverEn-try例程,同時告訴它添加了一個設備;然后,驅(qū)動程序為USB設備建立一個FDO(功能設備對象)。在此處理過程中,驅(qū)動程序收到一個IRP MN START DE-VICE 的IRP,在它之中包括有設備的資源信息。至此,設備被正確配置,驅(qū)動程序開始與硬件進行對話。當然,在設備運行過程中,如果設備狀態(tài)發(fā)生變化(拔除、暫停等),PnP管理器也同樣發(fā)出相應的IRP,以便由驅(qū)動程序進行相應的處理。
電源管理模塊負責設備的掛起與喚醒。
I/O功能實現(xiàn)模塊可完成I/O請求的大部分工作。當應用程序提出I/O請求時,它將調(diào)用Win32 API函數(shù)DeviceIoControl向設備發(fā)出命令,然后由I/O管理器構造一個IRP并設置其MajorFunction.域為IRP MJ DEVICE CONTROL。在USB設備驅(qū)動程序收到該IRP后?它將取出其中的控制碼?并利用一個開關語句查找對應的程序入口。
3.3 應用程序設計
應用程序設計由兩個部分組成:動態(tài)鏈接庫和應用程序。動態(tài)鏈接庫負責與內(nèi)核態(tài)的USB功能驅(qū)動程序通信并接收應用程序的各種操作請求,而應用程序則負責對所采集的數(shù)據(jù)進行實時顯示、分析和存盤。
動態(tài)鏈接庫的工作原理如下:當它收到應用程序開始采樣的請求后,首先創(chuàng)建兩個線程:采樣線程和顯
示存盤線程。采樣線程負責將采樣數(shù)據(jù)寫到應用程序提交的內(nèi)存;而顯示存盤線程則負責給應用程序發(fā)送顯示和存盤消息。當應用程序接收到此消息后,便從它提交的內(nèi)存中讀取數(shù)據(jù)并顯示和存盤。要注意的是:采樣線程和顯示存盤線程在讀寫應用程序提交內(nèi)存時要保持同步。
PC機或工控機應用程序是數(shù)據(jù)實時采集系統(tǒng)的中心?可采用Labview編程。它是當今國際上唯一的編譯型圖形化編程語言,其特點如下:
(1) 能完成對固體表面速度的實時測量;
(2)主介面與多重窗口結(jié)合?可完成數(shù)據(jù)連續(xù)采集、實時統(tǒng)計分析、系統(tǒng)參數(shù)設置、信號波形顯示、被測參數(shù)輸出等綜合系統(tǒng)功能。
(3)能充分利用Labview開發(fā)平臺和WINDOWS視窗所提供的良好操作環(huán)境?集曲線、圖形、數(shù)據(jù)于一體?可準確描述過程參數(shù)的變化。
圖3所示是用高速數(shù)據(jù)采集系統(tǒng)采集通過Lab-view顯示的一個波形實例,其輸入信號是一個頻率為5MHz的正弦波。
4 結(jié)束語
隨著電子計算機的廣泛應用,社會的數(shù)字化程度越來越高,數(shù)據(jù)采集也越來越重要,本系統(tǒng)是一種通用的高速數(shù)據(jù)采集系統(tǒng),可用于生物電波、電子學頻譜、聲波分析等瞬態(tài)信號的實時采集和觀察等場合。其中基于USB總線的高速數(shù)據(jù)采集系統(tǒng)具有可靠性高、數(shù)據(jù)不丟失、抗干擾性強、便于數(shù)據(jù)傳輸和處理等優(yōu)點,因而具有良好的應用前景和很大的實用價值。
【基于USB總線的高速數(shù)據(jù)采集系統(tǒng)】相關文章:
基于USB2.0總線的高速數(shù)據(jù)采集系統(tǒng)設計08-06
基于USB總線的實時數(shù)據(jù)采集系統(tǒng)設計與實現(xiàn)08-06
基于USB2.0的高速同步數(shù)據(jù)采集系統(tǒng)設計08-06
基于USB接口的數(shù)據(jù)采集系統(tǒng)設計08-06
基于DSP的 USB 口數(shù)據(jù)采集分析系統(tǒng)08-06
基于DSP的USB口數(shù)據(jù)采集分析系統(tǒng)08-06
基于USB和多線程的實時數(shù)據(jù)采集系統(tǒng)08-06