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