夏蓉花,鄭 勇
(1.徐州機電工程高等職業(yè)學(xué)校電氣系,江蘇徐州 221011;2.江蘇師范大學(xué)圖書館,江蘇徐州 221116)
數(shù)字濾波器是用于過濾時間離散信號的數(shù)字系統(tǒng),通過對抽樣數(shù)據(jù)進(jìn)行數(shù)學(xué)處理達(dá)到頻域濾波的目的。根據(jù)單位沖激響應(yīng)函數(shù)的時域特性可分為兩類:無限沖激響應(yīng)(Infinite Impulse Response,IIR)濾波器和有限沖激響應(yīng)(Finite Inpulse Response,F(xiàn)IR)濾波器。與IIR濾波器相比,F(xiàn)IR濾波器的實現(xiàn)是非遞歸的,較穩(wěn)定;且FIR濾波器可獲得嚴(yán)格的線性相位特性。因此,應(yīng)用領(lǐng)域較廣。
FIR濾波器具有成熟的結(jié)構(gòu),使用Matlab強大的功能使得本來繁重的計算工作變得輕松。在具體應(yīng)用時,要根據(jù)工程當(dāng)中信號的特點:采樣速率、信號帶寬等具體使用Matlab得到FIR濾波器系數(shù)。濾波器的結(jié)構(gòu)實現(xiàn)可以使用PC軟件、單片機、微處理器、FPGA、通用DSP芯片。其需根據(jù)信號特性選擇[1]。文中主要使用FPGA實現(xiàn)高速時鐘下的串行FIR濾波器結(jié)構(gòu),達(dá)到速度和邏輯資源情況下的最佳均衡。
有限長單位沖激響應(yīng)(FIR)濾波器的特點:(1)系統(tǒng)的單位沖激響應(yīng)h(n)在有限個n值處不為零。(2)系統(tǒng)函數(shù)H(z)在>0處收斂,極點全部在z=0處。(3)結(jié)構(gòu)上主要是非遞歸結(jié)構(gòu),沒有輸出到輸入的反饋,但有些結(jié)構(gòu)中也包含有反饋的遞歸部分。
設(shè)FIR濾波器的單位沖激響應(yīng)h(n)為一個N點序列,0≤n≤N-1,則濾波器的系統(tǒng)函數(shù)為
即有N-1階極點在z=0處,有N-1個零點位于有限z平面的任何位置[2]。
FDATool(Filter Design&Analysis Tool)是Matlab信號處理工具箱專用的濾波器設(shè)計分析工具,操作簡單、靈活,可采用多種方法設(shè)計FIR和IIR濾波器。在Matlab命令窗口輸入 FDATool后回車就會彈出FDATool界面。
帶通濾波器設(shè)計已知濾波器的階數(shù)n=1 024,beta=3.4。首先在 Filter Type中選擇 Bandpass;在Design Method選項中選擇FIR Window,接著在Window選項中選取Blackman-Harris;指定Filter Order項中的Specify Order為1 024;采樣頻率Fs=8 000 Hz,截止頻率Fc1=900 Hz,F(xiàn)c2=1 200 Hz。設(shè)置完以后點擊窗口下方的Design Filter,在窗口上方就會看到所設(shè)計濾波器的幅頻響應(yīng),通過菜單選項Analysis還可看到濾波器的相頻響應(yīng)、組延遲、脈沖響應(yīng)、階躍響應(yīng)、零極點配置等,如圖1所示。
圖1 Matlab Fdatool設(shè)計FIR濾波器圖
這樣選擇File菜單當(dāng)中的Export導(dǎo)出濾波器系數(shù)到文件中。因為得到系數(shù)是浮點數(shù),為適合在FPGA中使用,要編寫一個M文件對系數(shù)進(jìn)行整型量化處理并在此文件當(dāng)中生成FPGA能夠使用的.mif表格文件。
當(dāng)已知濾波器系數(shù),信號速率為 8 kHz,周期125μs。根據(jù)FIR濾波器的結(jié)構(gòu)可知,只要在125μs之內(nèi)完成1 024次乘加運算,那么就可達(dá)到對8 kHz速率的語音信號的有效濾波。文中使用QuartusII9.1開發(fā)平臺,F(xiàn)PGA芯片選用EP3C5E144C8,主時鐘25 MHz,周期 40 ns進(jìn)行 1 024次運算,耗時 40.96μs?125 μs[3-4]。
首先新建在QuartusII中新建一個工程FIR1024,然后使用原理圖和VHDL混合的方式設(shè)計出以下FPGA程序。把fircoef.mif表格文件代入到系數(shù)ROM存儲器中。
輸入管腳:CLK主時鐘25 MHz;DIN[15..0]語音數(shù)據(jù)輸入;AFCLK數(shù)據(jù)速率時鐘8 kHz;信號數(shù)據(jù)1 024點緩存RAM和濾波器系數(shù)ROM[5]。
圖2 AFCLK數(shù)據(jù)速率時鐘8 kHz圖
圖5 數(shù)據(jù)輸出量化圖
時序控制單元是設(shè)計的核心部分。AFCLK作為整個 FIR濾波器系統(tǒng)的啟動信號,此模塊檢測到AFCLK上升沿到來時會進(jìn)行以下幾個步驟的處理:(1)首先啟動WEN寫使能信號把當(dāng)前DIN寫入緩存中,寫地址WRADDER累加一次。(2)然后啟動讀地址計數(shù)器RDADDER開始進(jìn)行1 024次計數(shù),同時把信號緩存和系數(shù)ROM中的數(shù)據(jù)送到乘加器中做1 024乘加運算,RST的作用是在第一個有效數(shù)據(jù)到來時進(jìn)行累加器清零,RST_EN的作用是在完成1 024次運算時,準(zhǔn)確地把結(jié)果鎖存到輸出端口,如圖6所示。
圖6 完成效果圖
因為語音信號數(shù)據(jù)位寬是16位,經(jīng)過1 024次乘加,和濾波器系數(shù)是32位整型量化處理的所有最終結(jié)果要做必要的量化處理,以得到正確的結(jié)果。
經(jīng)過編譯綜合后,發(fā)現(xiàn)占用邏輯單元158,僅占EP3C5邏輯單元的3%,RAM單元約占12%,9位乘法器4個,如圖7所示,效果理想。
圖7 編譯圖
Quartus II不支持Testbench,采用*.vwf文件進(jìn)行仿真需要手工輸入激勵,人工檢查輸出結(jié)果,此程序反饋,且效率較低。由于Quartus II的工程文件都是文本文件,所有的數(shù)據(jù)都以文件形式存儲,所以可以編寫文本過濾程序,將文本文件中的有用數(shù)據(jù)提取出來,然后進(jìn)行后期處理,既提高了靈活性,又提高了效率。
Quartus II支持*.vwf、*.vec等激勵輸入,由于*.vec的文本操作性優(yōu)于*.vwf文件,所以文中選擇*.vec文件作為激勵輸入。使用Matlab產(chǎn)生8 000 Hz速率800 Hz,1 000 Hz,1 300 Hz共3種頻率的混合信號的仿真樣本序列,帶入到QuartusII中進(jìn)行仿真,產(chǎn)生的仿真文件再導(dǎo)出到Matlab中進(jìn)行顯示,結(jié)果如圖8所示。
由圖中可以看出,經(jīng)過FPGA濾波過后,800 Hz和1 300 Hz的信號都被濾波器濾除,僅有1 000 Hz信號保留。
圖8 仿真文件再導(dǎo)出到Matlab結(jié)果圖
通過設(shè)計實例,介紹了高速串行多階FIR濾波器的設(shè)計思路和流程。仿真結(jié)果說明,F(xiàn)PGA在FIR數(shù)字濾波器實現(xiàn)方面相比通用和專用DSP芯片具有更靈活的使用方法,可以做到速度和邏輯資源占用方面的均衡。
[1]董長虹.Matlab信號處理與應(yīng)用[M].北京:國防工業(yè)出版社,2005.
[2]海因斯 M H.數(shù)字信號處理[M].張建華,譯.北京:科學(xué)出版社,2002.
[3]UWE M B.數(shù)字信號處理的FPGA實現(xiàn)[M].劉淩,譯.北京:清華大學(xué)出版社,2006.
[4]米月琴,黃軍榮.基于FPGA的Kalman濾波器的設(shè)計[J].電子科技,2010,23(2):52 -55.
[5]田之俊,王敏.基于FPGA的高階音頻均衡濾波器設(shè)計[J].電子科技,2011,24(2):4 -6.