《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于ARM的高速數(shù)據(jù)采集卡
基于ARM的高速數(shù)據(jù)采集卡
國外電子元器件
占林松 夏應(yīng)清等
摘要: 本數(shù)據(jù)采集卡采用Philips公司的LPC2142微控制器(基于ARM7內(nèi)核,,內(nèi)置了寬范圍的USB 2.0串行通信接口),,有效地解決了傳統(tǒng)高速數(shù)據(jù)采集卡的缺陷。
Abstract:
Key words :

1 引言

隨著現(xiàn)代工業(yè)生產(chǎn)和科學(xué)研究對數(shù)據(jù)采集要求的日益提高,,在瞬態(tài)信號測量,、圖像處理等一些高速、高精度的測量中,,需要高速采集數(shù)據(jù)。現(xiàn)在通用的高速數(shù)據(jù)采集卡一般多是PCI卡或ISA卡,,存在以下缺點:安裝復(fù)雜,,價格昂貴,受計算機插槽數(shù)量,、地址,、中斷資源限制,可擴展性差,,在一些電磁干擾性強的測試現(xiàn)場,,無法專門對其做電磁屏蔽,導(dǎo)致采集的數(shù)據(jù)失真,。

本數(shù)據(jù)采集卡采用Philips公司的LPC2142微控制器(基于ARM7內(nèi)核,,內(nèi)置了寬范圍的USB 2.0串行通信接口),有效地解決了傳統(tǒng)高速數(shù)據(jù)采集卡的缺陷,。

2 基于ARM的數(shù)據(jù)采集卡原理

本系統(tǒng)主要由雙通道模/數(shù)轉(zhuǎn)換器AD9238,、ARM微控制器及FPGA器件EP1C3T100組成。結(jié)構(gòu)框圖如圖1所示,。AD9238具有A,、B兩個通道,前端的差分放大器對模擬信號放大后送至AD9238,,由AD9238將模擬信號轉(zhuǎn)換成12位的數(shù)字信號,,同時送至FPGA中的FIFO緩存器,。由LabVIEW設(shè)件制作的界面向LPC2142發(fā)送控制指令,LPC2142讀取FIFO緩存器中的數(shù)據(jù)并通過USB端口發(fā)送給主機,。主機還可通過界面菜單選擇采樣頻率,、采樣的起始點、模擬信號調(diào)理及讀取精度測頻數(shù)據(jù)等,。
 

3 數(shù)據(jù)采集卡的硬件結(jié)構(gòu)

3.1 AD9238簡介

AD9238是美國模擬器件公司(ADI)推出的12位,、雙通道模數(shù)轉(zhuǎn)換器。該轉(zhuǎn)換器分為3種型號,,采樣率最高分別可達20 MS/s,40 MS/s和65 MS/s,。它提供與單通道A/D轉(zhuǎn)換器同樣優(yōu)異的動態(tài)性能,但是具有比采用2個單通道A/D轉(zhuǎn)換器更好的抗串擾性能,;采用單3 V供電(2.7 V~3.6 V),;Rsn=70 dBc;Rsfd=85 dBc,;ENOB=11.3 b,;差分輸入時有500 MHz的3 dB帶寬;帶有片上的參考電壓和SHA,;1~2 Vpp的模擬輸入范圍,;輸出數(shù)據(jù)格式為偏移一進制碼或者一進制補碼。

AD9238的兩個通道分別采用一個AD8138做為運放驅(qū)動器,。I/O兩路中頻模擬信號分別經(jīng)過2個AD8138變?yōu)椴罘中盘査徒oA/D轉(zhuǎn)換器(第2,,3,14,,IS引腳),。

高速ADC對時鐘的占空比很敏感,一般來說需要有50%(±5%)的占空比,。AD9238給每個通道單獨提供時鐘(引腳CLK_A和CLK_B),,當2個通道的采樣時鐘同頻同相時,性能較好,,當2個通道不同步時,,性能會有所下降。

本數(shù)據(jù)采集卡采用40 MHz的AD9238,,單雙通道選擇和轉(zhuǎn)換頻率可由軟件控制,。

3.2 Cyclone系列FPGA器件

由于高速數(shù)據(jù)采集系統(tǒng)的特殊要求,在眾多FPGA器件中選擇了Altera公司的Cyclone系列器件,。Cyclone系列基于先進的Stratix的工藝構(gòu)架,,為高速應(yīng)用提供了極高的性價比,此外Cyelone系列器件內(nèi)部RAM存儲器可以生成FIFO緩存器,為高速采樣提供緩存空間,。

Altera公司的Quartus II軟件是一款易于使用的綜合開發(fā)工具,,它集成了Altera的FPGA/CPLD開發(fā)流程中所涉及的所有工具和第三方軟件接口,界面友好,,為設(shè)計提供了便利條件,。

這里FPGA器件主要完成數(shù)據(jù)緩存、等精度測頻,、采樣頻率分頻及觸發(fā)控制等工作,。

3.3 FPGA在觸發(fā)控制中的應(yīng)用

由于此數(shù)據(jù)采集卡是高速緩存式的,緩存空間有限,,所以不能采用連續(xù)式采集方式,,而采用觸發(fā)式采集方式。為了提高數(shù)據(jù)采集卡的適用能力,,不僅可以采集周期信號,,而且可以采集觸發(fā)信號,還可手動觸發(fā)采集,,筆者增加了觸發(fā)點捕捉電路,。系統(tǒng)主要由AD8561電壓比較器和FPGA器件組成,AD8561轉(zhuǎn)換速度很高,,可滿足判斷速度足夠高的要求,。首先模擬信號送到AD8561比較器的正輸入端,負輸入端連接至LPC2142的D/A轉(zhuǎn)換器輸出端,,LPC2142的D/A轉(zhuǎn)換器輸出電壓作為AD8561比較器的參考電壓,,此參考電壓可以通過向LPC2142的D/A轉(zhuǎn)換器的寄存器寫入不同值進行調(diào)節(jié),此調(diào)節(jié)最終通過由LabVIEW制作的界面控制,。當輸人信號電壓高于參考電壓時,AD8561的輸出端TOUT拉高,,TOUT的電平可以通過向AD8561的LATCH端輸入高電平進行鎖存,。觸發(fā)控制電路圖如圖2所示。
 

在手動采集方式下,,TRIENO為低電平,,TRIEN1高電平,當緩存器為空即FWr_FUL為高電平,,通過LabVIEW制作的界面控制QSTART為高電平時,,F(xiàn)Wr_EN被拉高進行數(shù)據(jù)采集。當緩存器滿時FWr_FUL被拉低,,停止采集數(shù)據(jù),。

在輸入信號觸發(fā)方式下,TRIEN0和QSTART為低電平,當緩存器為空即FWr_FUL為高電平,,輸入信號電壓高于比較器的參考電壓時,,TOUT被拉高,F(xiàn)Wr_EN被拉高進行數(shù)據(jù)采集,。當緩存器滿時FWr_FUL被拉低,,停止采集數(shù)據(jù)。拉高TRIEN1后讀取緩存數(shù)據(jù),。

采集周期信號和輸入信號觸發(fā)方式相似,,只是保持TRIEN1為高電平。在讀取緩存數(shù)據(jù)時.觸發(fā)信號到來后采集數(shù)據(jù),。

4 高速數(shù)據(jù)采集卡的軟件設(shè)計

4.1 基于μC/OS-II的USB驅(qū)動編程

μC/OS-II提供了多任務(wù)實時操作系統(tǒng)的內(nèi)核,。在應(yīng)用該操作系統(tǒng)時,通常需要用戶自己編寫基于μC/OS-II的外圍器件驅(qū)動程序,,以使外圍器件能在操作系統(tǒng)的協(xié)調(diào)下更好地為用戶服務(wù),。為了使軟件可移植性強、易維護,,筆者在編寫LPC2142 USB固件時綜合考慮USB協(xié)議,、LPC2142 USB硬件條件,把驅(qū)動程序分為5層,,如圖3所示,。圖中的雙向線表示用戶軟件與USB固件之間存在著數(shù)據(jù)交換,單向線表示上層軟件對下層軟件的調(diào)用,,這樣使得固件結(jié)構(gòu)分明,。
 

擁有了USB驅(qū)動程序,用戶可在此平臺上完成用戶軟件所要實現(xiàn)的任務(wù),,如圖4所示,。單向線表示主任務(wù)對讀寫任務(wù)的控制。主任務(wù)通過信號量控制讀/寫任務(wù)的運行狀態(tài),,從而實現(xiàn)對FIFO緩存器的讀和寫,;雙向線表示各個模塊之間存在著數(shù)據(jù)交換。為了加快大量數(shù)據(jù)的收發(fā),,本程序把LPC2142USB的邏輯端點1作為控制命令的傳輸通道,,把端點2作為數(shù)據(jù)的傳輸通道。
 

主任務(wù)不斷的讀取端點1,,當接收到PC機發(fā)來的讀命令時,,就激活高優(yōu)先級讀任務(wù)的準備就緒信號量。讀任務(wù)被喚醒進入讀中斷服務(wù)程序,,將緩存器的數(shù)據(jù)通過USB總線發(fā)送給PC機,,發(fā)送完畢后就關(guān)閉讀任務(wù)的就緒信號量,,返回到主任務(wù)的循環(huán)中,等待PC機發(fā)來的下一個命令,。寫任務(wù)與此相似,,不再敘述。

4.2 基于LabWindow/CVI的主機軟件編程

4.2.1 LabWindows/CVI簡介

作為虛擬測量儀器,,關(guān)鍵是要具有易于生成良好操作界面和強大數(shù)據(jù)處理能力的工具軟件,。本系統(tǒng)的程序設(shè)計是用LabVIEW開發(fā)的。LabVIEW是美國NI公司開發(fā)的基于C/C++的專門用于虛擬儀表及過程控制的可視化編程語言,,采用LabVIEW提供的控制件庫(包括開關(guān),、旋鈕、圖表等)很容易地設(shè)計出符合實際要求,、新穎美觀的操作界面,。此外LabVIEW具有很強的數(shù)據(jù)處理功能,它提供了豐富的庫函數(shù)用于數(shù)據(jù)輸入接口,、數(shù)據(jù)處理(FFT等)和圖形顯示等功能,,為開發(fā)應(yīng)用軟件帶來極大方便。圖5為LabVIEW開發(fā)的系統(tǒng)操作界面,。
 

4.2.2 程序設(shè)計

整個設(shè)計程序包括四個部分:面板設(shè)計,、初始化、數(shù)據(jù)采集,、數(shù)據(jù)處理和結(jié)果顯示,,通過精心設(shè)計程序,基本完成了預(yù)定的各項測量功能,。并保證了系統(tǒng)的運行速度,。各部分功能介紹如下。

(1) 面板設(shè)計:提供友好的操作界面,,符合常規(guī)測量儀器的操作習(xí)慣,。

(2) 初始化:完成系統(tǒng)初始化功能,包括復(fù)位,、送工作方式字,、設(shè)置程序運行參數(shù)等。

(3) 數(shù)據(jù)采集:LabVIEW不能直接訪問用戶自己設(shè)計的硬件,,作為一個開放式開發(fā)平臺,LabVIEW提供了DLL接口,,使用戶在LabVIEW平臺上能調(diào)用其他軟件平臺編譯的模塊,。并提供對象連接和嵌入技術(shù)(簡稱OLE)的支持。筆者利用VC++6.0編寫了DLL文件,,并在LabVIEW環(huán)境下調(diào)用該文件,,實現(xiàn)了LabVIEW程序與數(shù)據(jù)采集卡的數(shù)據(jù)通信,。

下面即為讀寫USB設(shè)備所創(chuàng)建的DLL編譯項目的相關(guān)文件:

DLLBulk.h:聲明變量或功能函數(shù)的頭文件。

DLLBulk.def:模塊定義文件,,是由若干個描述DLL模塊參數(shù)的語句組成的文本文件,。

DLLBulk.cpp:是DLL的主要代碼文件。

對DLLBulk.dsw下的各個文件進行編譯之后,,在菜單欄中選擇Build->Build DLLBulk.dll就生成了可以被LabVIEW調(diào)用的DLL文件,。

(4) 數(shù)據(jù)處理及顯示:對內(nèi)存中的采樣數(shù)據(jù)進行各種處理用于不同測量目的。包括信號波形實時顯示,、自動測量信號幅度和時間,、圖盤、刪除圖形以及回放等附加功能,。限于篇幅,,程序清單此處略。

5 結(jié)束語

文中所述的整個虛擬測量系統(tǒng)完全在人機交操作下運行,,并隨時可更改測量參數(shù)及進行各種信號處理,。系統(tǒng)各項指標為:最高采樣率為40 MHz,并可按1/2,、1/4,、1/8…1/128程控分頻采樣,雙路模擬輸入,;ADC精度為12位,;模擬輸入范圍為0 V~2V;在板數(shù)據(jù)緩存4 KB字節(jié)/路,,傳輸方式為塊傳輸,。該系統(tǒng)可進行實時信號波形、信號最大值,、最小值,、峰峰值顯示,同時提供了顯示圖形文件存盤,、回放,、刪除處理功能。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。