祝美英 彭江英 辜潤(rùn)秋 劉海琴 伍芷嫻
摘 要:數(shù)字信號(hào)系統(tǒng)在數(shù)字電子電路等許多領(lǐng)域中的應(yīng)用十分廣泛,設(shè)計(jì)FIR濾波器時(shí)雖然需要的階數(shù)較高,成本高,但它具有很好的線性相位特性,穩(wěn)定性好,而且信號(hào)延遲可以容易調(diào)節(jié)。文章以FIR數(shù)字濾波器的原理結(jié)構(gòu)為基礎(chǔ),先對(duì)FIR數(shù)字濾波器進(jìn)行系數(shù)設(shè)置,進(jìn)一步借助Quartus II,將整個(gè)FIR數(shù)字濾波器分為:寄存器、加法器、減法器、乘法器四個(gè)模塊。在對(duì)各個(gè)模塊進(jìn)行仿真得出的結(jié)果符合設(shè)計(jì)要求的前提下,再對(duì)FIR數(shù)字濾波器的整體電路進(jìn)行仿真。
關(guān)鍵詞:FIR數(shù)字濾波器;現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA);Quartus II;硬件描述語(yǔ)言(VHDL)
1 概述
數(shù)字濾波器具有很好的幅度和線性相位特性,在幅度和線性上對(duì)信號(hào)處理有嚴(yán)格的要求,因此數(shù)字濾波器可以做到模擬濾波器所無(wú)法克服的溫度漂移、電壓漂移和噪聲等問(wèn)題[1],利用數(shù)字濾波器處理信號(hào)時(shí)就能做得更完美。比如可以降低信號(hào)的噪聲、提高信噪比以及可以對(duì)信號(hào)得頻譜進(jìn)行分析等。
硬件實(shí)現(xiàn)的設(shè)計(jì)方法有以下三種:(1)使用單片通用數(shù)字濾波器集成電路實(shí)現(xiàn)(2)采用 DSP 器件實(shí)現(xiàn)(3)采用可編程邏輯器件(如DSP、ASIC、FPGA 等)實(shí)現(xiàn)。DSP 因?yàn)橐错樞蛞来螆?zhí)行所涉及的各個(gè)部分,而降低它的設(shè)計(jì)速度;用ASIC 方法設(shè)計(jì)時(shí)需要的成本又較高;基于FPGA的設(shè)計(jì)能較好地避免DSP和ASIC設(shè)計(jì)的缺點(diǎn);并且利用 FPGA設(shè)計(jì)DSP 系統(tǒng)時(shí),同時(shí)具備 DSP 芯片的靈活性和實(shí)時(shí)性,此外,F(xiàn)PGA 在許多數(shù)字信號(hào)處理領(lǐng)域中獲得了成功的應(yīng)用[2]。所以用FPGA 實(shí)現(xiàn)數(shù)字濾波是一個(gè)較好的選擇。利用硬件描述語(yǔ)言(VHDL)采用自頂向下的數(shù)字系統(tǒng)設(shè)計(jì)方法,分別給出濾波器的各模塊結(jié)構(gòu),并對(duì)各模塊扮演的功能以及數(shù)字濾波器的關(guān)鍵部分進(jìn)行了描述。最后在Altera公司推出的QuartusII8.0軟件平臺(tái)上,利用Cyclone系列器件對(duì)設(shè)計(jì)進(jìn)行綜合和仿真,并得出相應(yīng)的結(jié)果。
2 FIR數(shù)字濾波器的原理結(jié)構(gòu)
數(shù)字濾波器主要是完成數(shù)字信號(hào)濾波處理的功能,用有限精度算法實(shí)現(xiàn)的離散時(shí)間線性非時(shí)變系統(tǒng)[3]。數(shù)字濾波器的濾波功能是通過(guò)選定特定頻率范圍來(lái)實(shí)現(xiàn)的,其他范圍外的頻率信號(hào)(如噪聲)將被濾除,所以可以通過(guò)數(shù)字濾波器減少對(duì)有用信號(hào)的干擾。
FIR數(shù)字濾波器由于具有線性相位響應(yīng)的特性,所以在處理信號(hào)時(shí)可以避免相位失真的負(fù)面的影響,保持信號(hào)的完整性,從而得到較好的波形輸出。而線性相位體現(xiàn)在時(shí)域中僅僅是h(n)在時(shí)間上的延遲,這個(gè)特點(diǎn)在圖像信號(hào)處理、數(shù)據(jù)傳輸?shù)炔ㄐ蝹鬟f系統(tǒng)中是非常重要的[4]。所以,F(xiàn)IR濾波器的線性相位特性在數(shù)字信號(hào)處理過(guò)程中帶來(lái)了很大的好處。
FIR數(shù)字濾波器是一個(gè)線性時(shí)不變系統(tǒng)(LTI),N階FIR數(shù)字濾波器可以用傳輸函數(shù)H(z)來(lái)描述[5]:
(1)
時(shí)域中,輸入輸出關(guān)系表示為:
(2)
其中,x(n)和y(n)分別是輸入和輸出序列。
在設(shè)計(jì)FIR數(shù)字濾波器時(shí),乘法運(yùn)算次數(shù)較多。在電路實(shí)現(xiàn)中,要用到較多的乘法器。當(dāng)一個(gè)FIR 濾波器具有線性相位響應(yīng)時(shí),它的脈沖響應(yīng)具有某種對(duì)稱(chēng)條件,在這種情況下,這種對(duì)稱(chēng)關(guān)系可以把FIR數(shù)字濾波器設(shè)計(jì)時(shí)相乘運(yùn)算的次數(shù)減少二分之一,從而減少乘法器的個(gè)數(shù)[6]。為了突出線性相位濾波器的優(yōu)點(diǎn),先來(lái)看一下直接型的FIR數(shù)字濾波器的結(jié)構(gòu)。(圖1)
當(dāng)沖擊響應(yīng)滿足下列條件時(shí): (3)
對(duì)n階濾波器,當(dāng)n為偶數(shù)時(shí),乘法器的個(gè)數(shù)為n/2個(gè);當(dāng)n為奇數(shù)時(shí),乘法器的個(gè)數(shù)為(n+1)/2個(gè)。N階線性相位的因果FIR數(shù)字濾波器的單位沖激響應(yīng)可用對(duì)稱(chēng)沖激響應(yīng)
(4)
或者反對(duì)稱(chēng)沖激響應(yīng)
(5)
進(jìn)行描述。
3 FIR濾波器的設(shè)計(jì)分析
文章在QuartusⅡ下用VHDL編寫(xiě)濾波器的設(shè)計(jì)程序,這種方法的優(yōu)點(diǎn)在于比較靈活、易于修改。設(shè)計(jì)好之后還可以再利用,只需對(duì)它的系數(shù)、階數(shù)等參數(shù)進(jìn)行修改即可成為任意階的濾波器[7]。濾波器的系數(shù)通過(guò)MATLAB得到。因此,可以采用以下方法,先在MATLAB中用Filter Design計(jì)算出系數(shù),再進(jìn)行VHDL語(yǔ)言編程設(shè)計(jì)FIR數(shù)字濾波器。所以在用硬件描述語(yǔ)言對(duì)其進(jìn)行描述時(shí),先根據(jù)所要設(shè)計(jì)的濾波器階數(shù)的要求,選擇 MATLAB 中的窗函數(shù)——比較常用的是矩形窗,Bartlet窗,Hanning窗,Hamming窗,Kaiser窗——來(lái)求得濾波器的系數(shù),并編寫(xiě)相應(yīng)的程序來(lái)檢驗(yàn)所求得的系數(shù)是否符合最終的要求,以此來(lái)縮短設(shè)計(jì)周期,減少工作量,提高設(shè)計(jì)成功率。
3.1 FIR濾波器參數(shù)設(shè)置
FIR濾波器參數(shù)設(shè)置采用窗函數(shù)法(window)并在filter order中填入16,窗口類(lèi)型為Kaiser,beta為0.5,F(xiàn)s為48kHz,F(xiàn)c為10.8kHz。
FIR濾波器幅頻與相頻特性的比較如圖2所示。
圖2 FIR濾波器幅頻與相頻響應(yīng)
3.2 分析得出濾波器系數(shù)
采用MATLAB中的FDATool分析得出為17階FIR濾波器的系數(shù),以FDATool分析計(jì)算出來(lái)的數(shù)據(jù)是有符號(hào)的小數(shù)。所以,要進(jìn)行量化處理,以使FIR數(shù)字濾波器的系數(shù)為整數(shù)。對(duì)FIR濾波器的系數(shù)進(jìn)行量化調(diào)整,整數(shù)化后的系數(shù)如下:為[-12 -18 13 29 -13 -52 14 162 242 162 14 -52 -13 29 13 -18 -12]。
4 數(shù)字濾波器的設(shè)計(jì)及仿真
4.1 FIR數(shù)字濾波器的各模塊設(shè)計(jì)與仿真分析
設(shè)計(jì)的FIR濾波器模塊電路設(shè)計(jì)包括寄存器、加法器、減法器、乘法器四個(gè)模塊[8]。
四個(gè)模塊在Quartus II平臺(tái)上進(jìn)行仿真無(wú)誤后,再將各個(gè)模塊按照FIR濾波器的原理將各模塊連接起來(lái)。得到FIR濾波器的整體電路如圖3所示,其整體電路基本與其原理圖類(lèi)似。
4.2 FIR濾波器整體電路(圖3)
4.3 FIR濾波器整體電路仿真結(jié)果
4.3.1 輸出信號(hào)仿真值
任意設(shè)定輸入信號(hào)為:X=[54,0,0,0,22,0,0,0,54,0,0,0,22,0,
0,0,54,0,0,0,22,0,0,0,54,0,0,0,22,0,0,0]。仿真結(jié)果如圖4所示。
4.3.2 輸出信號(hào)理論值
,由此式可得輸出信號(hào)的理論值。
圖4 FIR濾波器整體電路仿真結(jié)果
當(dāng)仿真通過(guò)并符合性能要求后,將程序下載到外圍硬件中,完成FIR數(shù)字濾波器的設(shè)計(jì)。
4.4 仿真值與理論值的結(jié)果比較
圖4 FIR濾波器整體電路仿真結(jié)果可以讀出結(jié)果,其結(jié)果見(jiàn)表1。通過(guò)比較可知,仿真結(jié)果與輸出信號(hào)理論值基本相吻合,符合設(shè)計(jì)要求。
5 結(jié)束語(yǔ)
文章主要通過(guò)系統(tǒng)地介紹數(shù)字濾波器,而核心部件FPGA選用高密度、靈活性好的AIXERA公司生產(chǎn)的Cyclone系列EP1C20F400
C8芯片,編程設(shè)計(jì)仿真無(wú)誤后將程序下載到芯片中,完成對(duì)數(shù)字濾波器的設(shè)計(jì)。文章采用MATLAB中的FDATool以窗函數(shù)(window)的Kaiser窗來(lái)設(shè)置FIR濾波器的系數(shù)。最后使用QuartusII的VHDL語(yǔ)言分別對(duì)寄存器、加法器、減法器、乘法器四個(gè)模塊進(jìn)行編程設(shè)計(jì)、仿真。再對(duì)FIR濾波器仿真分析,得到表1仿真值與理論值的比較得結(jié)果,說(shuō)明文章設(shè)計(jì)的FIR濾波器功能正確,性能良好。
參考文獻(xiàn)
[1]劉暢,孫晶華.基于DSP的FIR數(shù)字濾波器研究微型機(jī)與應(yīng)用[J].科技致富向?qū)В?011(15):107+90.
[2]Lee Hanbo,Sobelman Gerad. Performance Evaluation and Optimal Design for FPGA-Based Digit-Serial DSP Functions. Computers and Electrical Engineering,2003,29(2):357-377.
[3]丁玉美,高西全.數(shù)字信號(hào)處理[M].西安:西安電子科技大學(xué)出版社,2004:70-76.
[4]舒麒暢,曹成伯,婁曉光.基于DSP平臺(tái)的激光二極管控制系統(tǒng)[J].計(jì)算機(jī)測(cè)量與控制,2008(1):80-82.
[5]姚利鋒.一種基于FPGA并行流水線的FIR濾波器設(shè)計(jì)方案[J].電子技術(shù)雜志,2009(1).
[6]陳靜媛.激光陀螺捷聯(lián)慣導(dǎo)系統(tǒng)數(shù)據(jù)采集電路的分析與實(shí)現(xiàn)[D].蘭州:蘭州職業(yè)技術(shù)學(xué)院,2008.
[7]張猛.基于MATLAB的FIR數(shù)字濾波器設(shè)計(jì)[J].長(zhǎng)春大學(xué)學(xué)報(bào),2009(2):47-49.
[8]王學(xué)梅.基于FPGA的有限沖擊響應(yīng)數(shù)字濾波器的研究及實(shí)現(xiàn)[D].中南大學(xué),2005.