張景芝,張鵬云,和志強
(河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院,河北石家莊 050061)
基于VHDL多路數(shù)據(jù)采集系統(tǒng)中FIR低通濾波器設(shè)計與實現(xiàn)
張景芝,張鵬云,和志強
(河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院,河北石家莊 050061)
針對多路數(shù)據(jù)采集系統(tǒng)中的高頻噪聲干擾問題,設(shè)計了一個基于分布式算法的通帶為0-40M的FIR低通濾波器。根據(jù)該低通濾波器的總體設(shè)計要求,選用合適的窗函數(shù),采用Matlab中的FDATool工具獲取濾波器的系數(shù)并將其進行量化,在Quarters環(huán)境下運用VHDL語言輸入方式實現(xiàn)了基于FPGA的FIR低通濾波器。
低通濾波器;多路數(shù)據(jù)采集;分布式算法;VHDL;
在FPGA應(yīng)用中,比較廣泛而基礎(chǔ)的就是數(shù)字濾波器,根據(jù)其單位脈沖響應(yīng)函數(shù)的時域特性可分為IIR(Infinite Impulse Response)數(shù)字濾波器和FIR(Finite Impulse Response)數(shù)字濾波器。其中FIR濾波器采用非遞歸的實現(xiàn)方式,穩(wěn)定性和線性度都較好,因而在線性相位要求嚴格的場合,如數(shù)據(jù)通信、圖像處理、語音信號處理及自適應(yīng)等領(lǐng)域具有廣泛的應(yīng)用。FIR濾波器的實現(xiàn)有很多種方法,其中基于分布式算法的FIR濾波器的FPGA實現(xiàn)采用硬件結(jié)構(gòu),此算法的特點是運行速度快,能較好的實現(xiàn)實時處理,特別適合于高速實時的信號處理[1]。
針對基于FPGA多路數(shù)據(jù)采集系統(tǒng)中的噪聲干擾問題,筆者設(shè)計了一個采用分布式算法,通帶為0-50M的32階FIR低通濾波器。多路數(shù)據(jù)采集系統(tǒng)的設(shè)計思想是采用多個低速模數(shù)轉(zhuǎn)換器(ADC)同時對一路輸入模擬輸入信號進行采樣,實現(xiàn)高速率的數(shù)據(jù)采集[2]。
在基于FPGA多路數(shù)據(jù)采集系統(tǒng)中,利用FPGA內(nèi)部的PLL(鎖相環(huán))和可編程邏輯塊等資源對100M晶振輸出的信號進行倍頻和分頻處理,組成四路相位差為90°的采樣時鐘信號,四路A/D轉(zhuǎn)換器可實現(xiàn)400M的高速數(shù)據(jù)采集,每一路A/D轉(zhuǎn)換器負責(zé)將模擬量轉(zhuǎn)換成數(shù)字量,四路轉(zhuǎn)換后的數(shù)字信號通過FPGA內(nèi)部的通帶為0-50M低通FIR數(shù)字濾波器的濾波,消除噪聲信號的干擾,然后將濾波后的信號依次寫入SDRAM。
總體設(shè)計要求采樣頻率fs:400MHz;類型:低通FIR數(shù)字濾波器;通帶頻率:0-50M;濾波器階數(shù):32;阻帶最小衰減ds:50db;通帶最大衰減dp:1db;輸入數(shù)據(jù)寬度:8位;輸出數(shù)據(jù)寬度:18位;
文獻[1,3]已經(jīng)對FIR濾波器的設(shè)計原理進行了詳盡的介紹。筆者針對多路數(shù)據(jù)采集系統(tǒng)中的高頻噪聲干擾問題,設(shè)計了一個基于分布式算法的通帶為0-50M的FIR低通濾波器。FIR濾波器是一個線性時不變系統(tǒng),在時域的輸入輸出關(guān)系是
其中,N是濾波器的階數(shù),x(n)輸入序列,y(n)是輸出序列,h(n)是單位沖擊響應(yīng)函數(shù)或稱為濾波器系數(shù)。同時為了提高運算速度,減少所設(shè)計的濾波器對FPGA資源的占用,采用如圖1所示的線性偶對稱FIR濾波器結(jié)構(gòu)。
FIR濾波器的設(shè)計方法有窗化法、頻率抽樣法和最優(yōu)法等。后兩種方法都必須用計算機作優(yōu)化處理,而窗化法無此必要,并且窗化法簡單方便,所以本設(shè)計采用的是窗化法進行設(shè)計。本設(shè)計所要求的阻帶最小衰減ds=50d B,符合這一要求的有哈明窗和布萊克曼窗,但布萊克曼窗的過渡帶寬,因此選擇哈明窗。
FIR帶通濾波器的理想頻率響應(yīng)為:
圖1 線性偶對稱FIR濾波器結(jié)構(gòu)圖
由(1)式可知FIR濾波器算法主要是進行乘累加運算。傳統(tǒng)乘累加算法是等所有乘積都已經(jīng)產(chǎn)生之后再進行相加來完成乘累加運算,速度較慢。本設(shè)計采用Croisier的分布式算法(Distributed Algorithm)[4],該算法不但速度快,而且可以利用FPGA內(nèi)部的ROM以實現(xiàn)流水線設(shè)計。基于分布式算法的思路如下:其中x b(k)表示x(k)的第b位。那么FIR濾波器的表達式(1)可改寫為
分布式算法的結(jié)構(gòu)如圖2所示,它與傳統(tǒng)MAC算法的不同之處是部分積計算順序不同。分布式算法的具體實現(xiàn)方式有兩種:并行方式和串行方式。串行方式速度相對并行方式較慢,但是并行方式提高速度的代價是增大硬件規(guī)模,兩者各有利弊[5]。為了兼顧速度和硬件規(guī)模,本濾波器將采用并串結(jié)合的分布式算法實現(xiàn)對4路數(shù)據(jù)采集實現(xiàn)快速的處理,運用流水線技術(shù),縮小查找表所要占用的FPGA資源,實現(xiàn)快速高效的FIR濾波器的設(shè)計。
FPGA內(nèi)濾波器設(shè)計結(jié)構(gòu)如圖3所示。首先,對4路模數(shù)轉(zhuǎn)換器轉(zhuǎn)換得到的4路數(shù)字數(shù)據(jù)進行串并轉(zhuǎn)換,由于本文所設(shè)計的濾波器是32階的,所以將4個8位的輸入轉(zhuǎn)換成并行的32個8位的輸出。之后將這32個輸出分成4組,做為4個ROM的讀地址。這種串并結(jié)合的分布式算法只需要經(jīng)過4個時鐘周期就可以計算輸出一個y(n),每個ROM的地址都是8位的,有256個地址,也就是說每個ROM存儲了256個數(shù)據(jù),而且每個查找表內(nèi)的數(shù)據(jù)跟濾波器系數(shù)有關(guān)。本設(shè)計的濾波器階數(shù)是32,所以總共需要4個ROM來實現(xiàn)設(shè)計。
圖2 分布式算法結(jié)構(gòu)圖
圖3 基于分布式算法的多路數(shù)據(jù)采集系統(tǒng)FIR濾波結(jié)構(gòu)圖
根據(jù)設(shè)計指標,使用MATLAB軟件中的信號處理工具箱(FDA tool),用哈明窗設(shè)計出適合要求的FIR濾波器系數(shù)[6]。濾波器的脈沖響應(yīng)序列如圖5所示。由于FPGA中的數(shù)據(jù)是用定點數(shù)表示的,所以需要對系數(shù)進行量化,量化結(jié)果為:
FPGA的主要設(shè)計方法是原理圖和硬件描述語言,其中圖形化設(shè)計方法雖然直觀,但是改動起來比較麻煩,靈活性差,相比之下,硬件描述語言以其可移植性強、方法靈活和多庫支持等優(yōu)點,得到廣泛的應(yīng)用[7]。
圖5 FIR濾波器的脈沖響應(yīng)序列
圖6 Quarters II8.0該FIR濾波器的仿真
本文中的FIR數(shù)字濾波器的設(shè)計就是在FPGA上采用VHDL的設(shè)計方法,在Quarters II 8.0環(huán)境下實現(xiàn)的,圖6就是該濾波器的仿真圖。
對于4路輸入數(shù)據(jù),由于每路都相差90°相位,圖6中的數(shù)據(jù),對四路輸入數(shù)據(jù)進行排序輸出后的結(jié)果為1,4,8,13,19…,運用式(1)進行卷積計算得:-4,-22,-1,-6,-19…,與Quartus II中本文所實現(xiàn)的濾波器結(jié)果一致。
本文是在基于FPGA多路數(shù)據(jù)采集系統(tǒng)中,利用串并結(jié)合的分布式算法,采用流水線技術(shù),設(shè)計并實現(xiàn)了一個32階通帶為0-50M的FIR數(shù)字濾波器,結(jié)果表明該設(shè)計占用FPGA資源少,處理速度快,能夠?qū)崿F(xiàn)對通帶以外的噪聲信號濾除,效果良好。
[1]冷建華,李萍,王良紅.數(shù)字信號處理[M].國防工業(yè)出版社,2003.
[2]和志強,張鵬云.基于PXI總線的1GSPS超高速雙通道數(shù)據(jù)采集卡[J].微計算機信息.
[3]俞一彪,孫兵.數(shù)字信號處理—理論與應(yīng)用[M].東南大學(xué)出版社2005.
[4]Emmanuel.C.Ifeahor.Digital Signal Processing—A Practical Approach[M].北京電子工業(yè)出版社,2004.
[5]Xilinx.The role of distributed arithmetic in FPGAbased signal processing.Xilinx Application Note,2002,http://www.xilinx.com/appnotes/theoryl.pdf.
[6]樓順天,李博涵.基于MATLAB的系統(tǒng)分析與設(shè)計信號處理[M].西安電子科技大學(xué)出版社,2001.
[7]劉昌華.論VHDL語言的程序結(jié)構(gòu)和描述風(fēng)格[J].計算機與數(shù)字工程,2010,(12):141-144.
Design and implement of FIR low-pass filter in multi-road data acquisition system based on FPGA
ZHANG Jing-zhi,ZHANG Peng-yun,HE Zhi-qiang
(CollegeofInformationTechnology,HebeiUniversityofEconomicsandBusiness,ShijiazhuangHebei050061,China)
A low-pass FIR filter based on distributed algorithm is designed and implemented to solve the problem of interference by noises of high frequency.According to the design indexes,the filter coefficient is designed by FDA tool in MATLAB and implemented in Quarters II by VHDL.
Low-pass filter;Multi-road Data Acquisition;Distributed Algorithm;VHDL
TP274
:A
1001-9383(2011)03-0052-04
2011-06-30
河北省應(yīng)用基礎(chǔ)研究計劃項目(10963529D)、河北省高等學(xué)??茖W(xué)技術(shù)研究項目(ZD2010213)
張景芝(1986-),女,河南南陽人,碩士研究生,主要研究方向:高速數(shù)據(jù)采集.