FIR帶通濾波器的FPGA實現(xiàn)
在FPGA應用中,比較廣泛而基礎的就是數(shù)字濾波器。根據(jù)其單位沖激響應函數(shù)的時域特性可分為無限沖擊響應(Infinite Impulse Response,IIR)濾波器和有限沖擊響應(Finite Impulse Response,F(xiàn)IR)濾波器。DSP Builder集成了Altera和Matlab/Simulink基于FPGA的信號處理的建模和設計。該工具可以將數(shù)字信號處理算法(DSP)系統(tǒng)表示成為一個高度抽象的模塊,在不降低硬件性能的前提下,自動將系統(tǒng)映射為一個基于FPGA的硬件設計方案。即支持設計者在Matlab中完成算法設計,在Simulink軟件中完成系統(tǒng)集成,然后通過SignalCompiler(模塊名)生成在QuartusⅡ軟件中可以使用的硬件描述語言,最終實現(xiàn)硬件系統(tǒng)的設計。FIR濾波器是DSPBuilder應用中最為常用的模塊之一,在此基于上述基礎,設計實現(xiàn)了基于模塊的FIR數(shù)字帶通濾波器。
1 基于DSP Builder的濾波系統(tǒng)設計
1.1 FIR濾波器原理
有限沖激響應(Finite Impulse Response,F(xiàn)IR)濾波器是由有限個采樣值組成,實現(xiàn)的方式是非遞歸、穩(wěn)定的,在滿足幅頻響應要求的同時,可以獲得嚴格的線性相位特性,因此在高保真的信號處理等領域得到廣泛應用。
對于一個FIR濾波器系統(tǒng),它的沖擊相應總是有限長的,其系統(tǒng)函數(shù)可記為:最基本的FIR濾波器可表示為:
式中:z(n)是輸入采樣序列;h(n)是濾波器系數(shù);L是濾波器階數(shù);y(n)表示濾波器輸出序列,為x(n)和h(n)的卷積。FIR濾波器基本結(jié)構(gòu)如圖1所示。
對于一個4階濾波器子系統(tǒng)其輸出可表示為:
可見在這個子系統(tǒng)中共需要4個延時器,4個乘法單元和一個4輸入的加法器,并可以根據(jù)實際需要選擇調(diào)用子系統(tǒng)構(gòu)成多階濾波器。
1.2 濾波的總體要求及實現(xiàn)
1.2.1 設計要求和濾波參數(shù)選取
該帶通濾波器的技術(shù)指標為16階FIR數(shù)字帶通濾波器,對模擬信號的采樣頻率fs為102.4 kHz,通帶頻率為24~44 kHz,上限截止頻率24 kHz,下限截止頻率44 kHz,輸入/輸出序列位寬分別是9位、19位。濾波器系數(shù)由濾波器設計工具FDATools生成。因FIR數(shù)字濾波器的設計方法主要有窗函數(shù)法和等波紋一致逼近法等,比較最佳效果選定Equiripple等波紋法實驗。輸入信號采用DSPBuilder庫中的增加/減少(Increment Decrement)模塊和LUT模塊,分別構(gòu)成一個線性遞增的地址發(fā)生器和正弦查找表模塊。這樣組建一組正弦信號,考慮組建通帶內(nèi)頻率f1=24.414 kHz與帶外頻率f2=48.828 kHz疊加。之所以選這兩個頻率主要根據(jù)LUT中的信號的步進制即在一個周期(0~2π)中對信號采樣點來決定的。
1.2.2 帶通濾波器的模型設計
根據(jù)FIR濾波器原理和4階子系統(tǒng)的輸出公式,在Matlab的Simulink環(huán)境下,調(diào)用Altera DSP Builder庫中的4個 Delay延遲模塊、4個Product乘法模塊、5個9位的Input輸入端口、1個20位的Output輸出端口和一個4輸入的加法器,使9位的輸入序列x(n)和FIR濾波器的系數(shù)h(0),h(1),h(2),h(3)作為輸入,完成4階濾波器子系統(tǒng)。調(diào)用4個這樣的子系統(tǒng)級聯(lián)起來構(gòu)成16階的濾波器。其中,濾波器系數(shù)h(0),h(1),…,h(15)由濾波器設計工具FDATools生成,系數(shù)與濾波器關(guān)聯(lián),建立出完整的濾波系統(tǒng)模型。[!--empirenews.page--]
2 Simulink的模型仿真
在Simulink環(huán)境下設計仿真時間等參數(shù),運行仿真得到濾波輸出的幅頻相應圖和時域圖如圖2,圖3所示。
圖2中縱橫坐標分別代表了幅值和頻率值顯示,Magnitude,F(xiàn)requency單位分別是dB(幅值單位也稱衰減倍數(shù))和MHz(橫坐標每格單位相比kHz被放大104便于觀察)??v橫軸每格量為5 dB和50 MHz。從該頻譜圖中可看出,濾波后通帶內(nèi)幅頻曲線相對平緩,帶外衰減較大,由濾波前的連續(xù)幅頻變成了選擇通過的單一幅頻曲線,起到了過濾帶外頻譜的作用。
該圖坐標軸的縱橫軸分別代表了幅度值和時間軸。單位分別為十進制數(shù)和s。圖3(a)是兩正弦信號經(jīng)平行加法器合成的波形圖3(b)濾波后的波形??梢姼哳l信號衰減很大起到了過濾帶外時間離散信號的作用。綜上該帶通濾波器在頻域和時域都實現(xiàn)了相應的濾波功能,至此完成了模型仿真。[!--empirenews.page--]
3 在ModeISim中實現(xiàn)RTL級仿真
Simulink中僅實現(xiàn)了算法級的仿真,而ModelSim需要對生成的VHDL代碼進行功能仿真即RTL級仿真。如圖4的波形。
圖4定性表述了6個信號波形。clock為時鐘周期,第二個信號是全局復位。重點觀察第三、六個信號,分別是輸入信號(加了數(shù)/模轉(zhuǎn)換的)的模擬顯示和經(jīng)濾波后輸出信號的模擬顯示。這和Simulink中仿真結(jié)果是一致的。第四個信號是濾波后(加數(shù)/模轉(zhuǎn)換)的信號,第五個是最后一個4階濾波子系統(tǒng)的輸出。同樣可設置ModelSim對應的數(shù)字顯示,每個時鐘周期對應的數(shù)值即為每個時鐘周期對正弦信號的一個采樣點計算一次的值。
4 在QuartusⅡ中實現(xiàn)時序仿真
ModelSim中也僅實現(xiàn)RTL級仿真,并不能精確反應電路的全部硬件特性。Altera提供自動和手動兩種綜合適配流程,在此選用自動流程在QuartusⅡ中進行硬件設計。設定990 ns仿真結(jié)果如圖5所示與圖3ModelSim的數(shù)字顯示對應信號和結(jié)果均是一致的,只是QuartusⅡ的時序仿真更為精確。
5 FPGA硬件實現(xiàn)
系統(tǒng)仿真通過后,需轉(zhuǎn)到硬件上加以實現(xiàn),這是整個DSP Builder設計中最為關(guān)鍵的一步。QuartusⅡ仿真中生成了.sof編程文件,用于FPGA編程配置,完成了對開發(fā)板StratixⅡEP2S180特定芯片的編譯和管腳的分配。將.sof文件下載到開發(fā)板中,編程模式為USB Blaster相應模式為JTAG,用示波器檢測D/A輸出,可觀察到實測的輸入/輸出波形與仿真結(jié)果均對應一致。至此完成了該濾波器完整的FPGA開發(fā)設計,并驗證了該濾波器達到預期設計要求。
6 結(jié) 語
這里介紹在Altera DSPBuilder。環(huán)境下基于模型化設計FIR數(shù)字帶通濾波器的方法,通過模塊化的方法實現(xiàn)了向VHDL硬件描述語言代碼的自動轉(zhuǎn)換、RTL級功能仿真、綜合編譯適配和布局布線、時序?qū)崟r仿真直至對目標器件的編程配置和硬件實現(xiàn)。驗證了濾波器滿足預期設計要求。創(chuàng)新點在于便捷地設計模塊或修改基本參數(shù),完成其他DSP系統(tǒng)設計。綜上采用DSP Builder作FPGA設計,可以更快速、可靠、有效地實現(xiàn)系統(tǒng)功能。體現(xiàn)了FPGA技術(shù)的便捷和發(fā)展。