《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高階FIR濾波器強(qiáng)抗干擾數(shù)據(jù)采集系統(tǒng)
基于FPGA的高階FIR濾波器強(qiáng)抗干擾數(shù)據(jù)采集系統(tǒng)
來(lái)源:電子技術(shù)應(yīng)用2012年第9期
唐 博, 李錦明, 李士照
中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051
摘要: 介紹了一種適用于在強(qiáng)干擾、關(guān)鍵信號(hào)被無(wú)用信號(hào)淹沒的情況下,實(shí)現(xiàn)高精度數(shù)據(jù)采集的系統(tǒng)。系統(tǒng)硬件上采用24位高精度A/D采集模擬信號(hào),采用XILINX公司的FPGA作為主控制器;軟件上通過(guò)從A/D讀取數(shù)字化后的信號(hào),再進(jìn)行高階FIR濾波,剔除了干擾信號(hào)。通過(guò)FIR濾波在數(shù)據(jù)采集系統(tǒng)中的運(yùn)用,采集系統(tǒng)可以較傳統(tǒng)數(shù)據(jù)系統(tǒng)有更高的采集精度和更強(qiáng)的抗干擾能力。
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2012)09-0089-04
High anti-interference data collection system of the high order FIR filter based on FPGA
Tang Bo, Li Jinming, Li Shizhao
National Key Laboratory for Electronic Measurement Technology, North University of China, Taiyuan 030051, China
Abstract: This article introduced a data collection system especially suit for the conditions of high anti-interference and usable signal was submerged environment. The hardware of the system was designed with a 24 bits high accuracy A/D to collect analog signals, and we choose the FPGA of XILINX company as a controller. The software of the system, we use FIR filter to deprive the useless signals. With the use of FIR filter, this system has a higher accuracy and anti-interference ability compare to the traditional data collection systems.
Key words : FIR filter; data collection; signal process; FPGA; anti-interference

    數(shù)據(jù)采集系統(tǒng)能實(shí)時(shí)采集生產(chǎn)過(guò)程中的各種數(shù)據(jù)、參數(shù),成為獲取系統(tǒng)工作狀態(tài)、運(yùn)行情況的非常重要的手段。近年來(lái),各種應(yīng)用領(lǐng)域?qū)?shù)據(jù)采集系統(tǒng)的性能提出了更加嚴(yán)格的要求:不但要求實(shí)現(xiàn)采集關(guān)鍵信息的功能,且對(duì)采集系統(tǒng)的抗干擾能力、無(wú)用信號(hào)的剔除能力提出了很高的要求。特別是在所采集信號(hào)被無(wú)用信號(hào)覆蓋或是采集系統(tǒng)工作在具有強(qiáng)干擾的環(huán)境下時(shí),如何從采集的數(shù)據(jù)中提取有用信號(hào),去除干擾信號(hào)是現(xiàn)如今數(shù)據(jù)采集系統(tǒng)的難點(diǎn)和研究的熱點(diǎn)。基于FPGAFIR濾波器由于具有設(shè)計(jì)靈活、速度快、增益容易控制、穩(wěn)定性好的優(yōu)點(diǎn),逐漸成為數(shù)字信號(hào)提取的一種非常重要的手段。利用其作為數(shù)據(jù)采集系統(tǒng)的前端信號(hào)處理,已經(jīng)是高精度和抗干擾數(shù)據(jù)采集領(lǐng)域的很好的實(shí)現(xiàn)方案。

1 FIR 濾波器的簡(jiǎn)介
    有限脈沖響應(yīng)FIR(Finite Impulse Response)濾波器由于其具有良好的線性相位和極高的穩(wěn)定性,在數(shù)字信號(hào)處理領(lǐng)域得到了極為廣泛的運(yùn)用。N階FIR濾波器基本系統(tǒng)函數(shù)如式(1):
    
一次輸出要做N次乘法和N-1次加法,所以如果用串行結(jié)構(gòu)來(lái)實(shí)現(xiàn),當(dāng)階數(shù)N較大時(shí),系統(tǒng)的延時(shí)就會(huì)很大。如今的數(shù)字FIR濾波器大體上可以分為基于DSP的FIR濾波器和基于FPGA的FIR濾波器:基于DSP的FIR濾波器實(shí)現(xiàn)簡(jiǎn)單,只需要幾條簡(jiǎn)單的語(yǔ)句就可以實(shí)現(xiàn),大量運(yùn)用于數(shù)字信號(hào)處理過(guò)程中。但是由于DSP的運(yùn)算是串行的,所以不可能設(shè)計(jì)出高階快速的FIR濾波器?;贔PGA的FIR濾波器是近幾年隨著FPGA資源的急速增長(zhǎng)而發(fā)展出來(lái)的一種新型的FIR濾波實(shí)現(xiàn)方案[2],它具有可配置性強(qiáng),靈活多樣,速度快,穩(wěn)定性高的優(yōu)點(diǎn),逐漸成為工業(yè)控制和航天領(lǐng)域中FIR濾波的首選實(shí)現(xiàn)方案。
2 系統(tǒng)實(shí)現(xiàn)方案
2.1 總體設(shè)計(jì)方案

    系統(tǒng)采集的模擬信號(hào)是帶有很大噪聲和正弦信號(hào)的未解調(diào)的微弱電壓信號(hào),系統(tǒng)實(shí)現(xiàn)框圖如圖2所示。

     

    調(diào)節(jié)滑動(dòng)變阻器, 將OPA2277的輸出電壓控制在0~5 V之內(nèi),雖然加入了一個(gè)簡(jiǎn)單的有源RC低通濾波,但是信號(hào)有用成分仍然被噪聲和疊加的高頻正弦波所覆蓋。
    放大后的電壓信號(hào)雖然幅值在0~5 V之內(nèi),但是淹沒在其中的關(guān)鍵信號(hào)卻仍然只有幾毫伏,如果用普通的低精度ADC進(jìn)行模數(shù)轉(zhuǎn)換,由于ADC的轉(zhuǎn)換誤差正好和關(guān)鍵信號(hào)相差不大,使得轉(zhuǎn)換后的數(shù)字信號(hào)中引入了相對(duì)大的誤差。即使后續(xù)濾波,得到的也是疊加了誤差的關(guān)鍵信號(hào),無(wú)法實(shí)現(xiàn)高精度采集并解調(diào)。因此采用TI公司的24位16通道串行高精度ADC芯片ADS1258進(jìn)行模數(shù)轉(zhuǎn)換。電路圖如圖4所示。
    ADC的主時(shí)鐘采用FPGA主時(shí)鐘分頻后的16 MHz方波信號(hào),選擇AIN0~AIN9通道作為模擬信號(hào)輸入,內(nèi)部采用自動(dòng)掃描方式。ADC的控制端口都接到了FPGA的通用I/O口。 ADC內(nèi)部寄存器配置數(shù)據(jù)從FPGA通過(guò)ADC的SPI口寫入。配置數(shù)據(jù)在SPI時(shí)鐘的上升沿寫入,轉(zhuǎn)換后的數(shù)據(jù)在SPI時(shí)鐘的下降沿讀出。內(nèi)部寄存器配置情況如表1所示。

   本系統(tǒng)的主控制器采用XILINX公司的SPARTAN3E系列的FPGA XC3S200E,這款芯片在資源上能滿足系統(tǒng)的要求,而且最重要的是在開發(fā)環(huán)境ISE 9.1以后的版本中,對(duì)于SPARTAN3E系列的芯片系統(tǒng)都自帶了功能強(qiáng)大的FIR濾波器IP核,這樣方便設(shè)計(jì)高速可靠、占用資源少的FIR濾波器。數(shù)據(jù)傳送到上位機(jī)使用CY7C68013,由于這方面的設(shè)計(jì)不是本系統(tǒng)的重點(diǎn),因此不再累述。
2.3 系統(tǒng)程序設(shè)計(jì)
    程序設(shè)計(jì)是本系統(tǒng)的關(guān)鍵所在,區(qū)別于以往系統(tǒng)的關(guān)鍵之處就是高精度ADC的使用和創(chuàng)新性的FIR濾波的引入,使得采集系統(tǒng)具備了超高精度和強(qiáng)抗干擾的能力。
    ADS1258是一款多通道串行ADC,由于其控制方式是向其內(nèi)部寄存器寫入一定配置數(shù)據(jù)來(lái)完成A/D轉(zhuǎn)換,所以其使用較為靈活??膳渲玫牟ㄌ芈始皵夭üδ芤彩蛊骷男阅芨油怀?。器件控制流程如圖5所示。

    ADC的讀寫時(shí)序特別重要,所以必須按照芯片資料將各個(gè)狀態(tài)之間轉(zhuǎn)換的延時(shí)控制好,既不影響轉(zhuǎn)換周期也能保證結(jié)果的正確。器件上電后的218個(gè)TCLK周期的延時(shí)必須保證,否則雖然芯片也能工作,能進(jìn)行A/D轉(zhuǎn)換,但是寫寄存器命名無(wú)法使用,無(wú)法將系統(tǒng)需要的配置數(shù)據(jù)寫到各個(gè)寄存器。在系統(tǒng)開發(fā)的前期,由于忽略了這個(gè)長(zhǎng)時(shí)間的復(fù)位時(shí)間,導(dǎo)致寫命令一直無(wú)法正確執(zhí)行,后來(lái)加上復(fù)位延時(shí)后,ADC工作正常,寄存器數(shù)據(jù)能順利寫進(jìn)去。每完成一次轉(zhuǎn)換,能從芯片SPI口讀出32位有效數(shù)據(jù)[3],數(shù)據(jù)格式如表2所示。

    數(shù)據(jù)低24位為有效A/D數(shù)據(jù),高8位為狀態(tài)和通道標(biāo)志位,NEW位指示通道數(shù)據(jù)是否更新,NEW=1代表通道數(shù)據(jù)相對(duì)前一次讀取已經(jīng)更新,NEW=0代表未更新,這樣通過(guò)判斷NEW的值可以防止重復(fù)讀取同樣的數(shù)據(jù)。OVF位和SUPPLY位分別指示通道端口電壓和供電電壓是否正常。CHID4~CHID0用來(lái)判定讀出的數(shù)據(jù)是屬于哪個(gè)通道。通過(guò)把不同通道的低24位數(shù)據(jù)寫入FPGA不同的存儲(chǔ)空間,為接下來(lái)的FIR濾波做準(zhǔn)備。
    FIR濾波器采用系統(tǒng)自帶的IP核來(lái)開發(fā),這樣可以保證FIR濾波器的可靠性并大大縮短開發(fā)周期。濾波系數(shù)采用Matlab的濾波器設(shè)計(jì)工具FDATOOL來(lái)產(chǎn)生數(shù)據(jù)。由于系統(tǒng)設(shè)計(jì)的是超高FIR濾波器,因此系數(shù)的生成也需特別注意,并進(jìn)行一些特定的計(jì)算。下面介紹系數(shù)的生成辦法。在Matlab主界面輸入FDATOOL命令,調(diào)用FDATOOL工具并設(shè)置好濾波系數(shù)[4]。由于ADC的采樣頻率為23.7 kS/s,因此濾波器的采樣頻率必須大于23.7 kS/s,設(shè)置為50 kHz。由于需要采集的關(guān)鍵信號(hào)的頻率低于100 Hz,因此設(shè)置截止頻率為200 Hz。之后,將數(shù)據(jù)導(dǎo)入到Matlab中,得到的數(shù)據(jù)全為小數(shù),默認(rèn)保留了小數(shù)點(diǎn)后面四位。
    由于FPGA不能直接做浮點(diǎn)運(yùn)算,因此必須將系數(shù)整型化,整型化的好壞直接影響濾波的精度[5]。當(dāng)系數(shù)整型化后的系數(shù)精度不夠時(shí),由于是200階的高階濾波,哪怕一點(diǎn)的系數(shù)誤差,都會(huì)累積起來(lái)反應(yīng)在濾波結(jié)果上。經(jīng)過(guò)反復(fù)試驗(yàn)和研究,發(fā)現(xiàn)當(dāng)FIR濾波器的階數(shù)到200時(shí),整型化濾波系數(shù)必須將FDATOOL的值乘以220以上,上文所述濾波系數(shù)其實(shí)只是截取了小數(shù)點(diǎn)后面的四位,如果只將系數(shù)乘以104,則小數(shù)點(diǎn)4位以后的值便人為忽略了,這在高階FIR設(shè)計(jì)時(shí)會(huì)帶來(lái)極大誤差,造成濾波器不可用。通過(guò)觀察FDATOOL生成系數(shù)的格式,發(fā)現(xiàn)其為32位浮點(diǎn)型,其表示精度遠(yuǎn)遠(yuǎn)大于小數(shù)點(diǎn)四位。在Matlab中輸入如下命令:
    coe=Num*16777216;
    coe=round(coe);
    fid=fopen(′fir300.txt′,′wt′);
    fprintf(fid,′%d\n′,coe);
    fclose(fid);
    以上語(yǔ)句將系數(shù)擴(kuò)大了224倍,然后將系數(shù)取整,并以10進(jìn)制的格式保存到一個(gè)TXT文件中,通過(guò)手動(dòng)修改TXT文件內(nèi)容滿足ISE中系數(shù)文件COE的格式要求,最終將TXT文件的后綴名改為.COE[6],至此系數(shù)文件已經(jīng)生成好了。接下來(lái)便是在ISE中調(diào)用IP核設(shè)計(jì)高階FIR濾波器,具體步驟本文不再闡述。設(shè)計(jì)關(guān)鍵參數(shù)如表3所示。

3 系統(tǒng)實(shí)驗(yàn)結(jié)果
    通過(guò)信號(hào)程序產(chǎn)生一路帶有很大噪聲的正弦信號(hào)輸入到FPGA進(jìn)行處理,將處理前和處理后的信號(hào)都發(fā)送到上位機(jī)進(jìn)行畫圖和頻譜分析,得到如圖6結(jié)果:其上半部分是輸入的帶噪聲的信號(hào),下半部分是經(jīng)過(guò)濾波后得到的信號(hào)。
    從圖6可以看出,由FPGA設(shè)計(jì)的高階FIR濾波器良好地實(shí)現(xiàn)了有用信號(hào)的提取,輸入信號(hào)中的噪聲衰減到幾乎為零,即融入了FIR濾波器的本系統(tǒng)具有強(qiáng)抗干擾并同時(shí)解調(diào)信號(hào)的能力。圖7是濾波前和濾波后采集到信號(hào)的頻譜分析圖。

 

 

    圖7可以看出,濾波后系統(tǒng)良好地提取出了頻率為0.08 kHz的信號(hào),而頻率為0.23 kHz、0.33 kHz、0.41 kHz的高頻干擾信號(hào)被削減到了幾乎為零,很好地實(shí)現(xiàn)了100 Hz內(nèi)的信號(hào)高精度解調(diào)。
    具有FIR濾波功能的數(shù)據(jù)采集系統(tǒng)較過(guò)去的單一采集系統(tǒng)有很大的進(jìn)步。高階FIR濾波器的引入使得本采集系統(tǒng)集抗干擾和解調(diào)信號(hào)于一體,能適用于各種具有強(qiáng)干擾或者疊加大量無(wú)用信號(hào)的數(shù)據(jù)采集場(chǎng)合。
參考文獻(xiàn)
[1] 趙嵐,畢衛(wèi)紅,劉豐.基于FPGA分布式算法FIR濾波器設(shè)計(jì)[J].電子測(cè)量技術(shù),2007,30(7):101-104.
[2] 張維良.高速并行FIR濾波器的FPGA實(shí)現(xiàn)[J]. 系統(tǒng)工程與電子技術(shù),2009,31(8):1819-1822.
[3] TI. ADS1258 DATASHEET:30-40.
[4] 孫耀其. 基于MATLAB和FPGA的FIR數(shù)字濾波器設(shè)計(jì)與實(shí)現(xiàn)[J]. 通信與信息技術(shù),2008(11): 89-92.
[5] 徐峰,禹衛(wèi)國(guó),唐紅. 基于FPGA的流水線分布式算法的FIR濾波器的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2004,30(7):70-73.
[6] XILINX. XILINX FIR_compiler_ds534:17-35.

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