摘 要:介紹了基于FPGA的FIR數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn),該設(shè)計(jì)利用Matlab工具箱設(shè)計(jì)窗函數(shù)計(jì)算FIR濾波器系數(shù),并通過(guò)VHDL層次化設(shè)計(jì)方法,同時(shí)FPGA與單片機(jī)有機(jī)結(jié)合,采用C51及VHDL語(yǔ)言模塊化的設(shè)計(jì)思想及進(jìn)行優(yōu)化編程,有效實(shí)現(xiàn)了鍵盤(pán)可設(shè)置參數(shù)及LCD顯示。結(jié)果表明此實(shí)現(xiàn)結(jié)構(gòu)能進(jìn)一步完善數(shù)據(jù)的快速處理和有效控制,提高了設(shè)計(jì)的靈活性、可靠性和功能的可擴(kuò)展性。
關(guān)鍵詞:FPGA;濾波器;VHDL;窗函數(shù);模塊化;可擴(kuò)展性
中圖分類(lèi)號(hào):TN713文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1004373X(2008)1918403
Design and Realization of FIR Digital Filter Based on FPGA
YANG Guoqing
(Tianjin Institute of Urban Construction,Tianjin,300384,China)
Abstract:This paper introduces a design and realization of FIR digital filter based on FPGA.The design uses window function of Matlab toolbox to calculate FIR filter coefficient.Through VHDL level of design,F(xiàn)PGA and MCU organic integration,C51 and VHDL used modular design and optimize programming,the effective realization of the keyboard can also set the parameters and LCD display,the results show that this structure can be further improved to achieve the rapid data processing and effective control,the design flexibility,reliability and extendibility function are improved as well.
Keywords:FPGA; filter;VHDL;window function;modulization;extendibility
1 引 言
數(shù)字濾波是通信、語(yǔ)音與圖像處理、模式識(shí)別和譜分析等應(yīng)用中的一種基本的處理部件,它可以滿(mǎn)足濾波器對(duì)幅度和相位特性的嚴(yán)格要求,避免模擬濾波器所無(wú)法克服的電壓漂移、溫度漂移和噪聲等問(wèn)題。數(shù)字濾波的作用是濾除信號(hào)中某一部分頻率分量。信號(hào)經(jīng)過(guò)濾波處理,就相當(dāng)于信號(hào)頻譜與濾波器的頻率響應(yīng)相乘的結(jié)果。從時(shí)域來(lái)看,就是輸入信號(hào)與濾波器的沖激響應(yīng)作卷積和。數(shù)字濾波器在各種領(lǐng)域得到廣泛的應(yīng)用,例如數(shù)字音響、音樂(lè)和語(yǔ)音合成、噪聲消除、數(shù)據(jù)壓縮、頻率合成、諧波消除、過(guò)載檢測(cè)、相關(guān)檢測(cè)等。
有限沖激響應(yīng)(Finite Impulse Response,F(xiàn)IR)濾波器是數(shù)字信號(hào)處理系統(tǒng)中最基本的元件,它可以保證在任意幅頻特性的同時(shí)具有嚴(yán)格的線性相頻特性,同時(shí)其單位沖激響應(yīng)是有限的,沒(méi)有輸入到輸出的反饋,是穩(wěn)定的系統(tǒng)[1]。目前FIR濾波器的硬件實(shí)現(xiàn)有以下幾種方式,一種是使用通用數(shù)字濾波器集成電路,這種電路使用簡(jiǎn)單,但是由于字長(zhǎng)和階數(shù)的規(guī)格較少,不易完全滿(mǎn)足實(shí)際需要。雖然可采用多片擴(kuò)展來(lái)滿(mǎn)足要求,但會(huì)增加體積和功耗,因而在實(shí)際應(yīng)用中受到限制。另一種是使用DSP芯片。DSP芯片有專(zhuān)用的數(shù)字信號(hào)處理函數(shù)可調(diào)用,實(shí)現(xiàn)FIR濾波器相對(duì)簡(jiǎn)單,但是由于程序順序執(zhí)行,速度受到限制。而且,就是同一公司的不同系統(tǒng)的DSP芯片,其編程指令也會(huì)有所不同,開(kāi)發(fā)周期較長(zhǎng)。還有一種是使用可編程邏輯器件,如FPGA(Field Programmable Gate Array,即現(xiàn)場(chǎng)可編程門(mén)陣列),有著規(guī)整的內(nèi)部邏輯塊整列和豐富的連線資源,特別適合用于細(xì)粒度和高并行度結(jié)構(gòu)的FIR濾波器的實(shí)現(xiàn),相對(duì)于串行運(yùn)算主導(dǎo)的通用DSP芯片來(lái)說(shuō),并行性和可擴(kuò)展性都更好。本文采用基于單片機(jī)和FPGA相結(jié)合的設(shè)計(jì)方法,實(shí)現(xiàn)了FIR濾波器的功能,并可實(shí)現(xiàn)其他控制和檢測(cè)功能的有效擴(kuò)展。
2 FIR濾波器的網(wǎng)絡(luò)結(jié)構(gòu)
N階FIR濾波器相對(duì)于輸入時(shí)間序列x(n)的輸出表達(dá)式為:
y(n)=∑n=1i=0h(i)x(n-i)
(1)
即輸出序列為單位脈沖響應(yīng)h(n)與輸入x(n)的卷積,由卷積關(guān)系可直接畫(huà)出結(jié)構(gòu)圖,稱(chēng)之為直接型結(jié)構(gòu),如圖1所示,該結(jié)構(gòu)中共需要N個(gè)乘法器。每次采樣y(n)需要進(jìn)行n次乘法和n-1次加法操作實(shí)現(xiàn)乘累加之和[2]。
圖1 FIR 濾波器直接型網(wǎng)絡(luò)結(jié)構(gòu)
對(duì)于線性相位FIR濾波器,其單位取樣響應(yīng)是對(duì)稱(chēng)或反對(duì)稱(chēng)的,即:h(n)=±h(N-1-n),利用對(duì)稱(chēng)性可以簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu),當(dāng)h(n)為偶對(duì)稱(chēng)且N為偶數(shù)時(shí):
y(n)=∑n=1i=0h(i)x(n-i)
=∑N/2-1i=0h(i)[x(n-i)+(n-N+m)]
(2)
其線性網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,僅需N/2個(gè)乘法器。FIR濾波器實(shí)質(zhì)上是一個(gè)分節(jié)的延遲線,把每一節(jié)的輸出加權(quán)累加,得到濾波器的輸出。
圖2 線性相位FIR濾波器結(jié)構(gòu)
為了減少邏輯資源的占有量和提高系統(tǒng)的運(yùn)行速度,對(duì)FIR濾波器進(jìn)行了優(yōu)化處理,本設(shè)計(jì)采用的優(yōu)化主要有兩種:一種是對(duì)表達(dá)式進(jìn)行優(yōu)化;另一種是在FPGA實(shí)現(xiàn)中利用特有的查找表進(jìn)行優(yōu)化編程。
3 FIR濾波器電路設(shè)計(jì)
FIR濾波器的硬件電路設(shè)計(jì)主要由前置放大電路、A/D轉(zhuǎn)換、D/A轉(zhuǎn)換、單片機(jī)、FPGA等部分組成。其中,數(shù)字濾波器利用Matlab工具箱設(shè)計(jì)窗函數(shù)計(jì)算FIR濾波器系數(shù),基于FPGA最終實(shí)現(xiàn)。A/D采樣、D/A輸出由單片機(jī)控制FPGA實(shí)現(xiàn)。系統(tǒng)設(shè)計(jì)框圖如圖3所示。
圖3 系統(tǒng)設(shè)計(jì)框圖
3.1 A/D采樣與存儲(chǔ)的設(shè)計(jì)
A/D芯片采用TLC5540,此芯片為8位高速AD轉(zhuǎn)換芯片,在本系統(tǒng)中FPGA時(shí)鐘為20 MHz,通過(guò)PLL擴(kuò)大為40 MHz單獨(dú)控制A/D采樣,因此在后級(jí)通過(guò)分頻改變截止頻率Fc時(shí)并不會(huì)造成輸入數(shù)據(jù)失真。由于A/D采樣采進(jìn)的都是正數(shù),所以在進(jìn)入濾波器之前對(duì)采樣數(shù)據(jù)進(jìn)行了一次求補(bǔ)運(yùn)算,在濾波器輸出后再進(jìn)行一次求補(bǔ)運(yùn)算,最后再傳給高速D/A轉(zhuǎn)換輸出。
采用雙口RAM實(shí)現(xiàn)實(shí)時(shí)回放,完全采用獨(dú)立的采樣、回放模塊,避免了無(wú)法實(shí)時(shí)回放的弊端。為了實(shí)現(xiàn)實(shí)時(shí)顯示,達(dá)到濾波要求,利用Quartus Ⅱ中的LPM定制一個(gè)雙口RAM核,如圖4所示。
圖4 雙口RAM的電路圖
3.2 FPGA中程控截止頻率Fc單元電路的設(shè)計(jì)
通過(guò)改變FIR濾波器的采樣時(shí)鐘頻率,可以改變?yōu)V波器的截止頻率。因此在濾波器頂層文件前加一個(gè)可預(yù)制數(shù)的分頻器控制改變?yōu)V波器截止頻率。截止頻率Fc過(guò)低時(shí),由于此時(shí)濾波器采樣點(diǎn)的減少,將會(huì)造成輸出波形的不連續(xù)。為了解決這一問(wèn)題,需在外圍輸出電路加一個(gè)阻抗為1 kΩ,截止頻率Fc為100 kHz的RC低通濾波器,這樣既滿(mǎn)足性能要求,又能使輸出波形連續(xù)不失真。頂層文件如圖5所示。
圖5 頂層文件原理圖
3.3 Matlab濾波器參數(shù)的設(shè)定
使用Matlab軟件中Filter Design-Toolbox工具箱中的FDATool,選擇低通濾波器,通過(guò)不同的窗函數(shù)來(lái)實(shí)現(xiàn)FIR濾波器,觀察到不同的窗函數(shù)而產(chǎn)生的不同波形,實(shí)現(xiàn)濾波功能效果不同[3]。通過(guò)仿真分析,當(dāng)Fc=1 kHz,F(xiàn)s=2 001 kHz時(shí),利用Blackman窗設(shè)計(jì)低通濾波器,若階數(shù)為16時(shí),即在-3 dB處為截止頻率,且滾降特性最好,線性相位。幅頻、相頻仿真圖從略。設(shè)計(jì)出的線性相位16階FIR數(shù)字低通濾波器的特性系數(shù)如下:
3.4 系統(tǒng)功能仿真測(cè)試
低通濾波器輸出仿真測(cè)試:給定輸入數(shù)據(jù)為一最大正數(shù)511(輸入數(shù)據(jù)位寬10 b,假設(shè)加法器輸入輸出位寬為31 b,乘法器輸出位寬31 b),可有效確定濾波器輸出數(shù)據(jù)范圍,仿真圖如圖6所示。
圖6FIR低通濾波器仿真測(cè)試圖
4 基于FPGA片上系統(tǒng)的硬件測(cè)試與實(shí)現(xiàn)
設(shè)計(jì)目標(biāo)器件選用美國(guó)ALTERA公司Cyclone系列FPGA器件中的EP2C8Q20C8芯片,通過(guò)開(kāi)發(fā)工具QuartusⅡ?qū)Ω鱾€(gè)模塊的VHDL源程序及頂層電路
進(jìn)行編譯、邏輯綜合,電路的糾錯(cuò)、驗(yàn)證、自動(dòng)布局布線
及仿真等各種測(cè)試,最終將設(shè)計(jì)編譯的數(shù)據(jù)下載到芯片
中,同時(shí)與單片機(jī)AT89S8253結(jié)合,進(jìn)一步進(jìn)行數(shù)據(jù)的快速處理和控制,實(shí)現(xiàn)鍵盤(pán)可設(shè)置參數(shù)及LCD顯示,經(jīng)實(shí)際電路測(cè)試驗(yàn)證,達(dá)到了設(shè)計(jì)的要求。成功完成了基于FPGA數(shù)字濾波器的硬件測(cè)試,也擴(kuò)展實(shí)現(xiàn)了DDS函數(shù)信號(hào)發(fā)生器的相關(guān)功能。
這種基于FPGA數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn),不僅利用Matlab工具箱設(shè)計(jì)窗函數(shù)計(jì)算FIR濾波器系數(shù),并通過(guò)VHDL層次化設(shè)計(jì)方法,同時(shí)FPGA與單片機(jī)相結(jié)合,采用C51及VHDL語(yǔ)言模塊化的設(shè)計(jì)思想進(jìn)行優(yōu)化編程,進(jìn)一步完善了數(shù)據(jù)的快速處理和有效控制,提高了設(shè)計(jì)的靈活性、可靠性,也增強(qiáng)了系統(tǒng)功能的可擴(kuò)展性。
參考文獻(xiàn)
[1]胡廣書(shū).數(shù)字信號(hào)處理理論、算法與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2003.
[2]UweMeyer-baese.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉凌,胡永生,譯.北京:清華大學(xué)出版社,2006.
[3]飛思科技產(chǎn)品研發(fā)中心.Matlab 7輔助信號(hào)處理技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2005.
[4]程佩青.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社,2006.
[5]Cheng C,Parhik K.Low-cost Parallel FIR Filter Structures with 2-stage Parallelism[J].IEEE Transactions on Circuits and Systems,2007(54):280-290.
[6]Chen Xiaoping,Qu Bo,Lu Gang.An Application of Immune Algorithm in FIR Filter Design[J].Proceedings of the 2003 International Conference on Neural Networks and Signal Processing,Nanjing,China,2003(1):473-475.
[7]劉圓,黃晨靈,高佩君,等.基于分段查找表的高速FIR濾波器的設(shè)計(jì)實(shí)現(xiàn)[J].微電子學(xué),2006,36(5):674-678.
[8]徐欣,于紅旗.基于FPGA的嵌入式系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2005.
[9]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社,2005.
[10]王田,陳健,付宇卓.一種32位全定制高速乘法器設(shè)計(jì)[J].小型微型計(jì)算機(jī)系統(tǒng),2005,26(2):307-309.
作者簡(jiǎn)介 楊國(guó)慶 男,1974年出生,寧夏隆德人,講師?,F(xiàn)從事計(jì)算機(jī)控制、樓宇自控及電氣自動(dòng)化方面的教學(xué)、實(shí)驗(yàn)研究。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文