基于CPLD的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)
摘 要: 針對復雜液壓系統(tǒng)數(shù)據(jù)采集的特點,采用數(shù)據(jù)流驅(qū)動多模塊并行技術(shù)和USB2.0接口,設(shè)計了基于CPLD+FX2的高速便攜式數(shù)據(jù)采集系統(tǒng),同時給出了自主開發(fā)的USB設(shè)備在LABVIEW中的簡便驅(qū)動方法。實踐表明,該方案大大提高了系統(tǒng)的采集、傳輸速率,具有電路設(shè)計簡單、可靠性高和易移植等特點。
關(guān)鍵詞: CPLD 數(shù)據(jù)流驅(qū)動 多模塊并行 USB2.0 LABVIEW 數(shù)據(jù)采集
液壓系統(tǒng)具有結(jié)構(gòu)輕小、傳動比大、運行平穩(wěn)、易于實現(xiàn)無級調(diào)速和自動化等優(yōu)點, 已被廣泛應(yīng)用于工業(yè)生產(chǎn)的各個領(lǐng)域。但液壓傳動系統(tǒng)(特別是大型液壓系統(tǒng)) 也存在一些缺點, 主要是結(jié)構(gòu)復雜、其內(nèi)部狀態(tài)難以檢測, 給液壓系統(tǒng)的狀態(tài)監(jiān)測和日常維護帶來一定的困難。因此如何提取系統(tǒng)的特征信號,有效地對液壓系統(tǒng)進行狀態(tài)監(jiān)測,及時發(fā)現(xiàn)故障和隱患, 有著十分重要的工程意義。
目前國內(nèi)專門針對液壓系統(tǒng)的數(shù)據(jù)采集產(chǎn)品比較少,而且存在諸如采集參數(shù)選擇不當或不夠、采集速率偏低、未能準確反映液壓系統(tǒng)的工作狀況、接口不利于安裝或傳輸速度太慢等問題。本文設(shè)計了一種基于CPLD(復雜可編程邏輯器件)+FX2(單片機CY7C68013)的便攜式高速數(shù)據(jù)采集系統(tǒng),采用了數(shù)據(jù)流驅(qū)動多模塊并行技術(shù)和USB2.0接口。實踐證明,該方案結(jié)構(gòu)簡單,成本低廉,實時同步采集和傳輸速度相當于DSP系列的數(shù)據(jù)采集產(chǎn)品。
1 設(shè)計思路
數(shù)據(jù)采集包括采集量到電參量的轉(zhuǎn)換、信號調(diào)理、模/數(shù)轉(zhuǎn)換、數(shù)據(jù)緩沖、數(shù)據(jù)發(fā)送等幾部分。一般采用主控芯片直接控制模/數(shù)轉(zhuǎn)換、數(shù)據(jù)緩沖、數(shù)據(jù)發(fā)送等模塊順序執(zhí)行的方式,如圖1(a)所示。要達到較高的采集速度,必須使用如DSP等高速主控芯片,為此而增加了系統(tǒng)成本和軟、硬件的調(diào)試難度。
本設(shè)計選用Cypress公司帶智能USB接口引擎和4K FIFO的單片機CY7C68013(FX2),其USB數(shù)據(jù)發(fā)送部分可獨立自動執(zhí)行。選用Altera公司的CPLD器件EPM7128,采用VerilogHDL語言編程,設(shè)計模/數(shù)轉(zhuǎn)換、數(shù)據(jù)緩存集成控制電路。并采用數(shù)據(jù)流驅(qū)動多模塊并行技術(shù),當模塊執(zhí)行所需的數(shù)據(jù)滿足條件時立即執(zhí)行,三種模塊可并行執(zhí)行,如圖1(b)所示,從而可通過低主頻CPU來控制高速數(shù)據(jù)采集。
上位機軟件采用美國國家儀器公司的LabVIEW語言編寫。基于圖形化編程的G語言使得上位機軟件的開發(fā)效率大大提高。特別是其NI-VISA3.0(Virtual Instrumentation Software Architecture)控件的推出,可以通過調(diào)用其標準化面向具體功能的、通用儀器的API(Application Programmer Interface)驅(qū)動接口實現(xiàn)自主開發(fā)的USB設(shè)備的驅(qū)動。
2 硬件設(shè)計
系統(tǒng)硬件配置如圖2所示。液壓系統(tǒng)中的壓力、流量、溫度以及振動頻率等模擬量通過傳感器變換為電信號后,經(jīng)放大、緩沖、濾波等調(diào)理電路處理后,由模擬開關(guān)電路選擇后送A/D芯片(AD574)轉(zhuǎn)換成數(shù)字信號,并寫入FX2內(nèi)置的FIFO,由內(nèi)部集成的USB控制器自動發(fā)往上位機,完成數(shù)據(jù)采集。CPLD控制器除控制模擬開關(guān)電路和ADC(模/數(shù)轉(zhuǎn)換電路)外,還控制將采集得到的數(shù)據(jù)寫入FX2的FIFO??刂破髟O(shè)計采用數(shù)據(jù)流驅(qū)動多模塊并行技術(shù),以提高控制電路的執(zhí)行效率。系統(tǒng)固件程序燒錄于E2PROM中,通電或復位時,F(xiàn)X2自動加載。系統(tǒng)配備了直流電源,以滿足室外便攜采集的需要。
3 軟件設(shè)計
3.1 CPLD程序設(shè)計
CPLD內(nèi)含ADC采集控制和FIFO控制兩個模塊,A/D采集控制模塊包括通道選擇、轉(zhuǎn)換時序發(fā)生和轉(zhuǎn)換狀態(tài)檢測等部分,F(xiàn)IFO控制模塊實現(xiàn)FIFO的寫時序控制。FIFO寫控制模塊采用轉(zhuǎn)換數(shù)據(jù)為觸發(fā)條件,當A/D轉(zhuǎn)換完成并把數(shù)據(jù)送到總線時,發(fā)出寫FIFO觸發(fā)脈沖,F(xiàn)IFO寫控制模塊將總線數(shù)據(jù)寫入FIFO;A/D采集控制模塊則以自身的采集數(shù)據(jù)狀態(tài)和FIFO寫完成作為執(zhí)行條件。兩個模塊在單片機控制下并行執(zhí)行,與此同時,當FIFO寫滿,智能USB控制器將FIFO內(nèi)的數(shù)據(jù)發(fā)往上位機,實現(xiàn)了低主頻CPU控制高速同步數(shù)據(jù)的采集和傳輸。由于USB控制器的傳輸率可高達480Mbps,采用兩片F(xiàn)IFO緩沖,采集頻率低于10MHz則可避免因USB傳輸丟失數(shù)據(jù)。
3.1.1 A/D采集控制模塊
AD574獨立操作模式(stand alone)工作時,通過R/C腳進行轉(zhuǎn)換和讀取控制,同時需要監(jiān)控STATUS腳,在A/D芯片轉(zhuǎn)換完畢后將12位轉(zhuǎn)換數(shù)據(jù)并行輸出到總線,同時輸出寫FIFO觸發(fā)脈沖。圖3所示為ADC控制器流程圖,據(jù)此可設(shè)計相應(yīng)的VerilogHDL程序。
3.1.2 FIFO控制模塊
CY68013除自帶USB2.0控制器外,還有一個4K×8b的FIFO,共分成4個端點,端點大小和緩沖層次可編程設(shè)置。本文設(shè)置成SLAVE FIFO工作模式,兩個上傳FIFO片(端點)。通過SLWR控制總線上的數(shù)據(jù)寫入FIFO。當數(shù)據(jù)寫滿一片F(xiàn)IFO時,F(xiàn)IFO控制模塊切換地址,以避免數(shù)據(jù)丟失,保證轉(zhuǎn)換、發(fā)送的連續(xù)性。寫滿數(shù)據(jù)的端點由USB控制器自動發(fā)送。
如果在采集過程中FIFO控制器接到停止采集命令后,F(xiàn)IFO控制模塊產(chǎn)生PKTEND信號,指示USB控制器將采集停止后未滿FIFO中的剩余數(shù)據(jù)發(fā)往上位機。
3.2 底層固件及設(shè)備驅(qū)動
高速數(shù)據(jù)采集系統(tǒng)軟件設(shè)計分為兩部分:USB外設(shè)端的固件程序和主機操作系統(tǒng)上的主機應(yīng)用軟件。主機應(yīng)用軟件采用LabVIEW編寫,本文主要介紹基于LabVIEW的自主開發(fā)的USB設(shè)備簡便驅(qū)動方法。
3.2.1 固件程序
固件程序功能比較復雜,采用Keil uVsion2集成環(huán)境進行單片機C語言開發(fā),完成源代碼的編寫、仿真和調(diào)試。固件程序包括主程序Main()、設(shè)備描述符表DSCR.A51、固件程序源碼FW.C、用戶程序Ad_control.c等部分。固件程序流程如圖4所示。
固件程序調(diào)試編譯成功后,將其轉(zhuǎn)換成C2文件,通過Cypress公司提供的控制面板下載至E2PROM中。當系統(tǒng)加電或復位時,會自動檢查E2PROM的第1個字節(jié),如該字節(jié)為C2,則由E2PROM加載USB設(shè)備的相關(guān)信息和固件程序,進行重枚舉。
3.2.2 基于LabVIEW的USB設(shè)備驅(qū)動程序
客戶應(yīng)用軟件在操作系統(tǒng)中處于用戶態(tài),不能直接對USB設(shè)備進行操作。通常是采用DDK直接編寫驅(qū)動程序,也可用DriverStudio或windriver產(chǎn)生驅(qū)動程序框架,再添加自己的代碼,編譯出驅(qū)動程序。雖然LabVIEW與NI公司的硬件接口編程非常方便,但對于自主開發(fā)的USB設(shè)備,并不具有通用性。用戶不僅要設(shè)計驅(qū)動程序,還要在此基礎(chǔ)上編寫USB.DLL,用于LabVIEW與USB接口。VISA通用的儀器驅(qū)動軟件結(jié)構(gòu)是VPP(VXI Plug&Play)聯(lián)盟制定的新一代儀器I/O標準,具有與儀器接口和具體計算機無關(guān)的特性,特別是VISA3.0的推出,提供了自主開發(fā)或第三方USB設(shè)備在LabVIEW中的簡便驅(qū)動方法。
本文利用NI-VISA3.3,直接調(diào)用驅(qū)動開發(fā)向?qū)?Driver Development Wizard),根據(jù)設(shè)備的PID、VID以及生成廠家、產(chǎn)品名稱等重要參數(shù)生成inf文件。安裝此文件后調(diào)用MAX(Measurement&Automation Explore)即可以看到設(shè)備安裝成功,如圖5所示。
在實際操作過程中,需特別注意在安裝VISA生成的驅(qū)動程序時,不能安排設(shè)備的Windows驅(qū)動程序,否則LABVIEW無法正常調(diào)用VISA開發(fā)的驅(qū)動程序,發(fā)現(xiàn)不了USB設(shè)備。
4 實驗與分析
采用本文所述的采集系統(tǒng)對某一高頻液壓沖擊器工作時的工作壓力(1)、回油壓力(2)和沖擊活塞運動速度(3)進行了現(xiàn)場實時數(shù)據(jù)采集,如圖6所示,其最高采集頻率為28.6kHz。采集數(shù)據(jù)準確反映了研究對象的狀態(tài),完全滿足設(shè)計目標需要。
基于項目的需要,選用的A/D芯片(AD574)其采集頻率為28kHz,如欲進行更高速率的數(shù)據(jù)采集,只需更改A/D轉(zhuǎn)換芯片部分的硬件電路和CPLD與A/D轉(zhuǎn)換相關(guān)的程序。由于系統(tǒng)采用了數(shù)據(jù)流驅(qū)動多模塊并行技術(shù),在成本增加不多的情況下達到了非常高的采集和傳輸速率。從理論上分析,如果A/D轉(zhuǎn)換芯片選擇適當,系統(tǒng)采集頻率可以達到10MHz。
本文提出的液壓系統(tǒng)數(shù)據(jù)采集方案,利用廉價的單片機FX2+CPLD,采用數(shù)據(jù)流驅(qū)動多模塊并行體系結(jié)構(gòu)和USB接口,以取代DSP為主控芯片進行高速、實時同步液壓數(shù)據(jù)采集,可以方便地移植于其他高速數(shù)據(jù)采集系統(tǒng)中,且成本低,可靠性高。同時,提出了自主開發(fā)的USB設(shè)備在LabVIEW中的簡便驅(qū)動方法。
參考文獻
1肖金球. 高速多路實時數(shù)據(jù)采集處理系統(tǒng)設(shè)計[J].計算機工程, 2004;(24):180~182
2 蔡菲娜. 利用FPGA實現(xiàn)DMA方式的高速數(shù)據(jù)采集[J].微電子學與計算機,2005;(3):239~241
3 石 磊. 一種基于單片機的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)[J].電測與儀表,2005;(1):53~54
4 Cant C. WindowsWDM設(shè)備驅(qū)動程序開發(fā)指南[M].北京:機械工業(yè)出版社,2000
5 張 凱. LabVIEW 虛擬儀器工程設(shè)計與開發(fā)[M].北京:國防工業(yè)出版社,2004