《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的高階FIR濾波器強抗干擾數據采集系統
基于FPGA的高階FIR濾波器強抗干擾數據采集系統
來源:電子技術應用2012年第9期
唐 博, 李錦明, 李士照
中北大學 電子測試技術國家重點實驗室,山西 太原 030051
摘要: 介紹了一種適用于在強干擾、關鍵信號被無用信號淹沒的情況下,實現高精度數據采集的系統。系統硬件上采用24位高精度A/D采集模擬信號,采用XILINX公司的FPGA作為主控制器;軟件上通過從A/D讀取數字化后的信號,再進行高階FIR濾波,剔除了干擾信號。通過FIR濾波在數據采集系統中的運用,采集系統可以較傳統數據系統有更高的采集精度和更強的抗干擾能力。
中圖分類號: TP311
文獻標識碼: 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

    數據采集系統能實時采集生產過程中的各種數據、參數,成為獲取系統工作狀態、運行情況的非常重要的手段。近年來,各種應用領域對數據采集系統的性能提出了更加嚴格的要求:不但要求實現采集關鍵信息的功能,且對采集系統的抗干擾能力、無用信號的剔除能力提出了很高的要求。特別是在所采集信號被無用信號覆蓋或是采集系統工作在具有強干擾的環境下時,如何從采集的數據中提取有用信號,去除干擾信號是現如今數據采集系統的難點和研究的熱點。基于FPGAFIR濾波器由于具有設計靈活、速度快、增益容易控制、穩定性好的優點,逐漸成為數字信號提取的一種非常重要的手段。利用其作為數據采集系統的前端信號處理,已經是高精度和抗干擾數據采集領域的很好的實現方案。

1 FIR 濾波器的簡介
    有限脈沖響應FIR(Finite Impulse Response)濾波器由于其具有良好的線性相位和極高的穩定性,在數字信號處理領域得到了極為廣泛的運用。N階FIR濾波器基本系統函數如式(1):
    
一次輸出要做N次乘法和N-1次加法,所以如果用串行結構來實現,當階數N較大時,系統的延時就會很大。如今的數字FIR濾波器大體上可以分為基于DSP的FIR濾波器和基于FPGA的FIR濾波器:基于DSP的FIR濾波器實現簡單,只需要幾條簡單的語句就可以實現,大量運用于數字信號處理過程中。但是由于DSP的運算是串行的,所以不可能設計出高階快速的FIR濾波器。基于FPGA的FIR濾波器是近幾年隨著FPGA資源的急速增長而發展出來的一種新型的FIR濾波實現方案[2],它具有可配置性強,靈活多樣,速度快,穩定性高的優點,逐漸成為工業控制和航天領域中FIR濾波的首選實現方案。
2 系統實現方案
2.1 總體設計方案

    系統采集的模擬信號是帶有很大噪聲和正弦信號的未解調的微弱電壓信號,系統實現框圖如圖2所示。

     

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

   本系統的主控制器采用XILINX公司的SPARTAN3E系列的FPGA XC3S200E,這款芯片在資源上能滿足系統的要求,而且最重要的是在開發環境ISE 9.1以后的版本中,對于SPARTAN3E系列的芯片系統都自帶了功能強大的FIR濾波器IP核,這樣方便設計高速可靠、占用資源少的FIR濾波器。數據傳送到上位機使用CY7C68013,由于這方面的設計不是本系統的重點,因此不再累述。
2.3 系統程序設計
    程序設計是本系統的關鍵所在,區別于以往系統的關鍵之處就是高精度ADC的使用和創新性的FIR濾波的引入,使得采集系統具備了超高精度和強抗干擾的能力。
    ADS1258是一款多通道串行ADC,由于其控制方式是向其內部寄存器寫入一定配置數據來完成A/D轉換,所以其使用較為靈活。可配置的波特率及斬波功能也使器件的性能更加突出。器件控制流程如圖5所示。

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

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

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

 

 

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 色噜噜狠狠色综合日日| avtt亚洲天堂| 欧美三级免费观看| 动漫乱理伦片在线观看| 18分钟处破好疼高清视频| 悠悠在线观看精品视频| 久久这里只有精品18| 波多野结衣gvg708| 和阿同居的日子hd中字| 91视频综合网| 国产高清天干天天美女| 中国日韩欧美中文日韩欧美色| 最近中文字幕在线中文高清版 | 一本一道波多野结衣大战黑人| 日韩爽爽视频爽爽| 亚洲欧美日韩高清综合678| 绿帽子巨物夺娇妻09| 国产在线麻豆精品| 400部国产真实乱| 女人是男人未来1分50秒| 久久99精品国产99久久6男男 | 最新国产精品好看的国产精品| 交换配乱吟粗大SNS84O| 美女污污视频在线观看| 国产女人高潮抽搐叫床视频| 2023天天操| 天使a中文在线观看| 两个人看的www高清免费观看| 日本高清免费一本视频无需下载| 亚洲午夜无码久久| 污污的网站免费在线观看| 免费看男女做好爽好硬视频| 色大18成网站www在线观看| 国产成人精品实拍在线| 在线观看91精品国产入口| 在线播放亚洲第一字幕| www天堂在线| 成人h在线播放| 中文字幕精品无码一区二区三区 | 国产精品va在线播放| 91综合久久婷婷久久|