《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高階FIR濾波器強(qiáng)抗干擾數(shù)據(jù)采集系統(tǒng)
基于FPGA的高階FIR濾波器強(qiáng)抗干擾數(shù)據(jù)采集系統(tǒng)
來源:電子技術(shù)應(yīng)用2012年第9期
唐 博, 李錦明, 李士照
中北大學(xué) 電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,,山西 太原 030051
摘要: 介紹了一種適用于在強(qiáng)干擾,、關(guān)鍵信號被無用信號淹沒的情況下,,實(shí)現(xiàn)高精度數(shù)據(jù)采集的系統(tǒng),。系統(tǒng)硬件上采用24位高精度A/D采集模擬信號,采用XILINX公司的FPGA作為主控制器,;軟件上通過從A/D讀取數(shù)字化后的信號,,再進(jìn)行高階FIR濾波,剔除了干擾信號,。通過FIR濾波在數(shù)據(jù)采集系統(tǒng)中的運(yùn)用,,采集系統(tǒng)可以較傳統(tǒng)數(shù)據(jù)系統(tǒng)有更高的采集精度和更強(qiáng)的抗干擾能力,。
中圖分類號: TP311
文獻(xiàn)標(biāo)識碼: B
文章編號: 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í)時采集生產(chǎn)過程中的各種數(shù)據(jù),、參數(shù),成為獲取系統(tǒng)工作狀態(tài),、運(yùn)行情況的非常重要的手段,。近年來,各種應(yīng)用領(lǐng)域?qū)?shù)據(jù)采集系統(tǒng)的性能提出了更加嚴(yán)格的要求:不但要求實(shí)現(xiàn)采集關(guān)鍵信息的功能,,且對采集系統(tǒng)的抗干擾能力,、無用信號的剔除能力提出了很高的要求。特別是在所采集信號被無用信號覆蓋或是采集系統(tǒng)工作在具有強(qiáng)干擾的環(huán)境下時,,如何從采集的數(shù)據(jù)中提取有用信號,,去除干擾信號是現(xiàn)如今數(shù)據(jù)采集系統(tǒng)的難點(diǎn)和研究的熱點(diǎn)?;?a class="innerlink" href="http://forexkbc.com/tags/FPGA" title="FPGA" target="_blank">FPGA的FIR濾波器由于具有設(shè)計(jì)靈活,、速度快、增益容易控制,、穩(wěn)定性好的優(yōu)點(diǎn),逐漸成為數(shù)字信號提取的一種非常重要的手段,。利用其作為數(shù)據(jù)采集系統(tǒng)的前端信號處理,,已經(jīng)是高精度和抗干擾數(shù)據(jù)采集領(lǐng)域的很好的實(shí)現(xiàn)方案。

1 FIR 濾波器的簡介
    有限脈沖響應(yīng)FIR(Finite Impulse Response)濾波器由于其具有良好的線性相位和極高的穩(wěn)定性,,在數(shù)字信號處理領(lǐng)域得到了極為廣泛的運(yùn)用,。N階FIR濾波器基本系統(tǒng)函數(shù)如式(1):
    
一次輸出要做N次乘法和N-1次加法,所以如果用串行結(jié)構(gòu)來實(shí)現(xiàn),,當(dāng)階數(shù)N較大時,,系統(tǒng)的延時就會很大。如今的數(shù)字FIR濾波器大體上可以分為基于DSP的FIR濾波器和基于FPGA的FIR濾波器:基于DSP的FIR濾波器實(shí)現(xiàn)簡單,,只需要幾條簡單的語句就可以實(shí)現(xiàn),,大量運(yùn)用于數(shù)字信號處理過程中。但是由于DSP的運(yùn)算是串行的,,所以不可能設(shè)計(jì)出高階快速的FIR濾波器,。基于FPGA的FIR濾波器是近幾年隨著FPGA資源的急速增長而發(fā)展出來的一種新型的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)采集的模擬信號是帶有很大噪聲和正弦信號的未解調(diào)的微弱電壓信號,系統(tǒng)實(shí)現(xiàn)框圖如圖2所示,。

     

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

   本系統(tǒng)的主控制器采用XILINX公司的SPARTAN3E系列的FPGA XC3S200E,,這款芯片在資源上能滿足系統(tǒng)的要求,,而且最重要的是在開發(fā)環(huán)境ISE 9.1以后的版本中,對于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ù)來完成A/D轉(zhuǎn)換,,所以其使用較為靈活,。可配置的波特率及斬波功能也使器件的性能更加突出。器件控制流程如圖5所示,。

    ADC的讀寫時序特別重要,,所以必須按照芯片資料將各個狀態(tài)之間轉(zhuǎn)換的延時控制好,既不影響轉(zhuǎn)換周期也能保證結(jié)果的正確,。器件上電后的218個TCLK周期的延時必須保證,,否則雖然芯片也能工作,能進(jìn)行A/D轉(zhuǎn)換,,但是寫寄存器命名無法使用,,無法將系統(tǒng)需要的配置數(shù)據(jù)寫到各個寄存器。在系統(tǒng)開發(fā)的前期,,由于忽略了這個長時間的復(fù)位時間,,導(dǎo)致寫命令一直無法正確執(zhí)行,后來加上復(fù)位延時后,,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ù)相對前一次讀取已經(jīng)更新,NEW=0代表未更新,,這樣通過判斷NEW的值可以防止重復(fù)讀取同樣的數(shù)據(jù),。OVF位和SUPPLY位分別指示通道端口電壓和供電電壓是否正常。CHID4~CHID0用來判定讀出的數(shù)據(jù)是屬于哪個通道,。通過把不同通道的低24位數(shù)據(jù)寫入FPGA不同的存儲空間,為接下來的FIR濾波做準(zhǔn)備,。
    FIR濾波器采用系統(tǒng)自帶的IP核來開發(fā),,這樣可以保證FIR濾波器的可靠性并大大縮短開發(fā)周期。濾波系數(shù)采用Matlab的濾波器設(shè)計(jì)工具FDATOOL來產(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)鍵信號的頻率低于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ù)精度不夠時,由于是200階的高階濾波,哪怕一點(diǎn)的系數(shù)誤差,,都會累積起來反應(yīng)在濾波結(jié)果上,。經(jīng)過反復(fù)試驗(yàn)和研究,發(fā)現(xiàn)當(dāng)FIR濾波器的階數(shù)到200時,,整型化濾波系數(shù)必須將FDATOOL的值乘以220以上,,上文所述濾波系數(shù)其實(shí)只是截取了小數(shù)點(diǎn)后面的四位,如果只將系數(shù)乘以104,,則小數(shù)點(diǎn)4位以后的值便人為忽略了,,這在高階FIR設(shè)計(jì)時會帶來極大誤差,造成濾波器不可用,。通過觀察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);
    以上語句將系數(shù)擴(kuò)大了224倍,然后將系數(shù)取整,,并以10進(jìn)制的格式保存到一個TXT文件中,通過手動修改TXT文件內(nèi)容滿足ISE中系數(shù)文件COE的格式要求,,最終將TXT文件的后綴名改為.COE[6],,至此系數(shù)文件已經(jīng)生成好了。接下來便是在ISE中調(diào)用IP核設(shè)計(jì)高階FIR濾波器,,具體步驟本文不再闡述,。設(shè)計(jì)關(guān)鍵參數(shù)如表3所示。

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

 

 

    圖7可以看出,濾波后系統(tǒng)良好地提取出了頻率為0.08 kHz的信號,,而頻率為0.23 kHz,、0.33 kHz、0.41 kHz的高頻干擾信號被削減到了幾乎為零,很好地實(shí)現(xiàn)了100 Hz內(nèi)的信號高精度解調(diào),。
    具有FIR濾波功能的數(shù)據(jù)采集系統(tǒng)較過去的單一采集系統(tǒng)有很大的進(jìn)步,。高階FIR濾波器的引入使得本采集系統(tǒng)集抗干擾和解調(diào)信號于一體,能適用于各種具有強(qiáng)干擾或者疊加大量無用信號的數(shù)據(jù)采集場合,。
參考文獻(xiàn)
[1] 趙嵐,,畢衛(wèi)紅,劉豐.基于FPGA分布式算法FIR濾波器設(shè)計(jì)[J].電子測量技術(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)國,,唐紅. 基于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)載,。