楊小平1,李永紅1,劉志剛1,2,嚴(yán)洪立1,李率真1
?。?.成都信息工程大學(xué) 電子工程學(xué)院,四川 成都 610225;2.杭州旗捷科技有限公司,浙江 杭州310000)
摘要:提出了一種以FPGA和ARM處理器為核心的嵌入式多通道高速采集及脈沖提取系統(tǒng)設(shè)計的新方法。該系統(tǒng)主要應(yīng)用于電力設(shè)備局部放電檢測,監(jiān)測電力設(shè)備運(yùn)行情況。系統(tǒng)主要實(shí)現(xiàn)用3種工作模式(正常工作模式、長記錄模式和觸發(fā)模式)實(shí)時采集、處理電信號,并根據(jù)采樣后得到的數(shù)據(jù)和脈沖波形來判斷被測信號是否正常工作。整個采集系統(tǒng)可實(shí)現(xiàn)100 MS/s的高速采樣,具有穩(wěn)定性高、實(shí)時性強(qiáng)、易于擴(kuò)展、便于攜帶等特點(diǎn)。
關(guān)鍵詞:多通道高速采集;脈沖提取;FPGA
0引言
數(shù)據(jù)采集,尤其是高速數(shù)據(jù)采集,在工業(yè)自動化控制、醫(yī)療器械、室內(nèi)環(huán)境監(jiān)測和軍事監(jiān)控等領(lǐng)域已經(jīng)得到了廣泛的應(yīng)用。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng),通常是以單片機(jī)或者DSP為核心控制器,實(shí)現(xiàn)對數(shù)據(jù)信息的采集。隨著信息科技的發(fā)展,大眾對信息數(shù)據(jù)的實(shí)時性、穩(wěn)定性等要求越來越高。而單片機(jī)的時鐘頻率較低、速度較慢并且軟件采用順序?qū)崿F(xiàn)模式,從而使得數(shù)據(jù)采集速度低,進(jìn)而影響整個系統(tǒng)的效率。雖然DSP有較高的運(yùn)算處理速度,然而它很難完成對復(fù)雜外圍器件的控制。而FPGA(現(xiàn)場可編程門陣列)有單片機(jī)和DSP難以超越的優(yōu)勢,F(xiàn)PGA時鐘頻率高、內(nèi)部延時小、集成度高、全部控制邏輯由硬件完成、速度快、效率高[1]。
考慮到FPGA的諸多優(yōu)勢,本文提出了一種以FPGA和ARM處理器為核心的嵌入式多通道高速采集及脈沖提取系統(tǒng)設(shè)計方案。系統(tǒng)有觸摸屏LCD和顯示器兩種顯示和下發(fā)配置命令方式。將該方案應(yīng)用于電力設(shè)備局部放電檢測,通過采集和提取有效脈沖來實(shí)時監(jiān)測電力設(shè)備的工作狀態(tài)。這一設(shè)計對安全用電及電力行業(yè)有重大的實(shí)用價值。
1系統(tǒng)總體結(jié)構(gòu)
本數(shù)據(jù)采集系統(tǒng)基于FPGA+ARM架構(gòu)。FPGA(XC6SLX75)外圍電路主要包括一個四通道100 MS/s采樣率、串行差分輸入輸出的AD(ADS6424),一片ARM(AM3359)控制器和一片DDR2(MT47H128M16)128 MB地址空間的存儲器,用于存儲采樣數(shù)據(jù)[2]。如圖1所示。
圖1中,S1~S4為4路模擬信號輸入端,為了得到較準(zhǔn)確的脈沖信號,本設(shè)計使S1~S3作為信號輸入端,S4作為噪聲信號輸入端,通過前3路和第4路的比較進(jìn)而有效地濾除噪聲。TTL信號作為相位信息,F(xiàn)PGA需要檢測是否有該同步信號并通知ARM。A/D轉(zhuǎn)換器前端的信號調(diào)理用來實(shí)現(xiàn)對輸入模擬信號的放大、衰減、濾波及輸入阻抗匹配,從而達(dá)到AD將模擬信號轉(zhuǎn)換成數(shù)字信號的要求。系統(tǒng)工作過程為:首先PC下發(fā)命令指令經(jīng)ARM送到FPGA,配置FPGA的工作模式、采樣率等;其次,AD將轉(zhuǎn)換后的數(shù)字信號送給FPGA,F(xiàn)PGA經(jīng)過運(yùn)算處理提取有效脈沖信號存儲到DDR2中,然后向ARM發(fā)中斷命令,ARM通過GPMC總線提取DDR2中的數(shù)據(jù);最后ARM通過網(wǎng)絡(luò)或USB將數(shù)據(jù)傳輸給PC顯示[3]。
2方案實(shí)現(xiàn)
2.1FPGA設(shè)計
FPGA設(shè)計流程:系統(tǒng)上電后,F(xiàn)PGA首先初始化配置ADS6424芯片,然后將AD轉(zhuǎn)換后的數(shù)據(jù)由串行轉(zhuǎn)為并行再經(jīng)過相應(yīng)的算法處理得到有效的脈沖,將得到的脈沖存儲在DDR2中,再通過GPMC總線接口送給ARM。ARM控制器負(fù)責(zé)與用戶上位機(jī)程序通過網(wǎng)口或USB進(jìn)行通信,給FPGA下達(dá)控制指令。根據(jù)上述流程以及FPGA要實(shí)現(xiàn)的功能,整個FPGA邏輯設(shè)計可劃分為5個模塊,分別為ADC初始化模塊Ad_init;ADC數(shù)據(jù)接收模塊Data_rec;ARM接口模塊 Gpmc_inst;數(shù)據(jù)處理模塊Data_prc;數(shù)據(jù)存儲模塊Data_str。如圖2所示。
2.1.1ADC初始化模塊Ad_init
ADC初始化模塊用于對ADS6424芯片進(jìn)行復(fù)位及初始化配置來滿足AD正常工作,該模塊只在上電時或者系統(tǒng)復(fù)位時調(diào)用一次,并與Data_rec模塊協(xié)調(diào)工作用于600 Mb/s串行數(shù)據(jù)的低壓差分信號(LVDS)數(shù)據(jù)對位。
2.1.2數(shù)據(jù)輸入模塊Data_rec
數(shù)據(jù)輸入模塊接收ADC輸入的串行數(shù)據(jù)和時鐘,并將4路AD差分串行數(shù)據(jù)經(jīng)SERDES(串并轉(zhuǎn)換器)轉(zhuǎn)換為并行數(shù)據(jù)發(fā)送給Data_prc模塊。Data_rec模塊與Data_prc模塊之間有FIFO用于同步AD采樣的100 MHz時鐘和FPGA內(nèi)部處理數(shù)據(jù)的100 MHz時鐘。
2.1.3數(shù)據(jù)處理模塊Data_prc
數(shù)據(jù)處理模塊內(nèi)部包含3個子模塊,分別用于三種工作狀態(tài),各種工作狀態(tài)的數(shù)據(jù)和控制信號獨(dú)立,接口根據(jù)工作狀態(tài)選擇異步開關(guān)進(jìn)行切換。
?。?)正常工作狀態(tài)。正常工作情況下抗干擾脈沖提取算法如下:
?、俑鶕?jù)設(shè)置的閾值做背景噪聲的濾除;
②根據(jù)與噪聲通道的比較判斷是有用信號還是噪聲;
?、叟袛嗍欠袷欠讲ㄐ盘?,如果是方波信號則去除;
?、軐⑻崛〕龅挠杏妹}沖段及相位信息上傳給ARM。
具體說明:根據(jù)設(shè)置的閾值得到脈沖1~3,對得到的脈沖段與噪聲通道做比較,只比較同相位的值,如果信號通道的值大于噪聲通道的值,則認(rèn)為是有用信號,否則是噪聲,需要被濾除。如圖3所示,脈沖3的信號通道的值小于噪聲通道,需要被濾除。如果脈沖是方波,如脈沖2,也要被濾除。對提取出的有用的脈沖段如脈沖1,在傳輸至ARM時需要做如下處理:從第一個過閾值的點(diǎn)向前取55個點(diǎn),向后取200個點(diǎn),共取256個點(diǎn),這樣保證取出來的脈沖段是一個完整的脈沖段[45]。
?。?)長時間記錄。系統(tǒng)啟動后,根據(jù)輸入的時鐘和寫使能寫DDR2,將對應(yīng)通道的AD采集數(shù)據(jù)輸入到FPGA,并對數(shù)據(jù)點(diǎn)數(shù)進(jìn)行計數(shù),達(dá)到30兆個數(shù)據(jù)點(diǎn)則停止存儲,并向ARM發(fā)送中斷信號。長記錄模式根據(jù)設(shè)置的采樣率和采樣時間,將采集到的點(diǎn)不做任何處理上傳給ARM,再通過ARM經(jīng)由網(wǎng)絡(luò)上傳至PC,PC設(shè)置相關(guān)通道的閾值。長記錄采集模式的目的是得到各通道的背景噪聲值,方便設(shè)置閾值。
?。?)觸發(fā)記錄。系統(tǒng)啟動后,根據(jù)輸入的時鐘和寫使能寫DDR2,達(dá)到一個時間長度則進(jìn)行循環(huán)存儲。將輸入的數(shù)據(jù)進(jìn)行逐點(diǎn)判斷,當(dāng)達(dá)到觸發(fā)條件時,計算出讀取DDR2的首地址,并根據(jù)剩余采樣點(diǎn)數(shù)進(jìn)行計數(shù),達(dá)到采樣點(diǎn)數(shù)后則停止存儲,并向ARM發(fā)送中斷信號。
2.1.4指令解析模塊Gpmc_inst
采用100 MHz時鐘對ARM的Gpmc接口進(jìn)行鎖存,解析ARM的輸入指令,并根據(jù)讀信號和地址信號返回寄存器的狀態(tài)值,或者DDR2存儲器內(nèi)的數(shù)據(jù)。通過這個模塊與ARM進(jìn)行通信。
2.1.5數(shù)據(jù)存儲模塊Data_str
該模塊負(fù)責(zé)DDR2存儲器的讀寫,采用MPMC的IP核,通過NPI接口進(jìn)行控制,將輸入的16 bit數(shù)據(jù)字拼接成64 bit寬度寫入DDR2存儲器,輸出時根據(jù)讀使能信號取出DDR2中的數(shù)據(jù),并將64 bit的數(shù)據(jù)拆成4個16 bit數(shù)據(jù),按照順序輸出。數(shù)據(jù)存儲模塊沒有地址輸入接口,其內(nèi)部只是簡單的地址遞加,當(dāng)復(fù)位后,地址歸零。
2.2ARM設(shè)計
在該設(shè)計中ARM主要有兩個作用,一是擔(dān)當(dāng)中間件,承上啟下,一方面接收PC命令,協(xié)議解析后配置給FPGA,另一方面將FPGA傳過來的數(shù)據(jù),打包上傳給PC。傳輸支持USB和網(wǎng)絡(luò)兩種方式,USB包和UDP包采用相同的應(yīng)用層協(xié)議。另一個是在不用PC的情況下,ARM作為上位機(jī)通過智能觸摸屏LCD顯示器下發(fā)命令配置FPGA,且FPGA也將采集到的數(shù)據(jù)和有效脈沖上傳給ARM,做相應(yīng)的處理后通過LCD呈現(xiàn)。
2.2.1硬件部分
ARM部分結(jié)構(gòu)如圖4所示。本設(shè)計采用兩種ARM啟動方式,一種是從SD卡啟動,另一種是從NandFlash啟動,兩種方式可通過撥碼開關(guān)切換。GPMC接口主要是連接FPGA和ARM,使其順利通信;DDR2起緩存數(shù)據(jù)作用;NandFlash用于存儲系統(tǒng)及應(yīng)用文件等;ARM支持網(wǎng)口和USB1兩種方式與PC通信;USB2用于連接U盤將數(shù)據(jù)導(dǎo)出;觸摸屏LCD主要用于顯示波形和下發(fā)指令;預(yù)留RS485、RS422用于后期擴(kuò)展功能[6]。
2.2.2應(yīng)用部分
用QT(跨平臺的C++應(yīng)用程序開發(fā)框架)開發(fā)設(shè)計GUI(圖形用戶界面),界面主要包括配置FPGA各種工作模式、設(shè)置采樣參數(shù)以及顯示有效脈沖等。如圖5所示。
3結(jié)論
本文給出了一種以FPGA+ARM處理器為核心的嵌入式多通道高速采集及脈沖提取系統(tǒng)設(shè)計的新方法,詳細(xì)闡述了系統(tǒng)設(shè)計流程和工作模式。經(jīng)過長時間的測試和檢測,該系統(tǒng)可以實(shí)現(xiàn)數(shù)據(jù)的高速多通道采集及脈沖的提取。此設(shè)備可以應(yīng)用于多種相關(guān)數(shù)據(jù)采集及分析的場合,有觸摸屏LCD和顯示器兩種顯示方式,具有穩(wěn)定性高、實(shí)時性強(qiáng)、易于擴(kuò)展、便于攜帶的特點(diǎn)。目前,該設(shè)備已應(yīng)用于電力設(shè)備局部放電檢測,可以實(shí)現(xiàn)二維圖形顯示,后續(xù)將開發(fā)三維圖形顯示應(yīng)用。
參考文獻(xiàn)
[1] 張偉,韓一明,吳新玲.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計[J].電力情報,2002,4(3):4649.
?。?] 滕巖峰,周雪峰.帶USB 接口的100MHz高速數(shù)據(jù)采集系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].微計算機(jī)信息,2006,22(20):227229.
?。?] 劉小林,范育兵,羅春暉.基于FPGA的多通道數(shù)據(jù)采集系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2009,35(7):4244.
[4] 徐文波,田耘.Xilinx FPGA開發(fā)使用教程(第2版)[M].北京:清華大學(xué)出版社,2012.
?。?] 李宗海,陳蜀宇,李海偉.嵌入式Linux系統(tǒng)在ARM平臺上的構(gòu)建[J].計算機(jī)系統(tǒng)應(yīng)用,2010,19(10):153157.
[6] CORBET J, RUBINI A.Linux設(shè)備驅(qū)動程序(第三版)[M].魏永明,耿岳,鐘書毅,譯.北京:中國電力出版社,2006.