張? 謝文博



摘 要:數(shù)字信號(hào)處理的穩(wěn)定性、有效性和精確性使其應(yīng)用范圍越來越廣。FPGA具有可根據(jù)自行需要而改變?cè)O(shè)計(jì)電路的功能,在數(shù)字電路領(lǐng)域不斷發(fā)展,但它編程的語言繁瑣而且不易理解。為此,采用DSP Builder進(jìn)行FIR濾波器的設(shè)計(jì),不僅可以自動(dòng)轉(zhuǎn)化為FPGA芯片能識(shí)別的語言,還可以進(jìn)行模型化仿真。根據(jù)FIR濾波器的濾波原理,通過DSP Builder工具,設(shè)計(jì)一個(gè)20階的低通濾波器,并進(jìn)行了仿真。
關(guān)鍵詞:DSP Builder;FIR濾波器;Matlab;FPGA
中圖分類號(hào):TN713 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2016)05-00-03
0 引 言
濾波器是用來抑制或?yàn)V除輸入信號(hào)中的干擾或干擾成分,改變輸入信號(hào)中各個(gè)頻率分量的大小和相位,輸出有用或達(dá)到預(yù)期指標(biāo)的信號(hào)[1]。隨著電子技術(shù)的不斷發(fā)展,芯片集成度不斷提高,數(shù)字濾波器不斷取代模擬濾波器[2]。數(shù)字濾波器分為無限脈沖響應(yīng)(IIR)和有限脈沖響應(yīng)(FIR)兩類,相比于IIR濾波器,F(xiàn)IR濾波器不存在遞歸運(yùn)算,即不存在除零以外的其它極點(diǎn),系統(tǒng)總是穩(wěn)定的,也容易實(shí)現(xiàn)線性相位;雖然在實(shí)現(xiàn)過程中計(jì)算量較大,但設(shè)計(jì)方便,在通信、數(shù)字圖像處理、雷達(dá)信號(hào)分析和譜分析等領(lǐng)域都有廣泛的應(yīng)用。
1 FIR濾波器
1.1 FIR濾波器原理
FIR濾波器指的是用有限沖
其中,M表示濾波器的階數(shù),h(i)表示系統(tǒng)的單位沖激響應(yīng),這由選擇的濾波特性決定。一個(gè)理想的濾波器其單位沖激響應(yīng)是一個(gè)無限長(zhǎng)的序列,而FIR濾波器的階數(shù)顯然是有限的,這就要通過一定的附加函數(shù)逐步逼近理想的濾波特性。x(n-i)是通過i個(gè)延時(shí)后的數(shù)字輸入信號(hào)。
1.2 FIR濾波器結(jié)構(gòu)
FIR濾波器系統(tǒng)基本運(yùn)算如圖1所示。該結(jié)構(gòu)圖可以看成是一個(gè)分節(jié)的延時(shí)線,把每一節(jié)的輸出加權(quán)累加,得到濾波器的輸出[3]。由圖可以看出,F(xiàn)IR濾波器可根據(jù)需要而加長(zhǎng)或縮減延時(shí)線的長(zhǎng)度和乘法器的系數(shù)來改變FIR的參數(shù)。FIR濾波器實(shí)際上是一個(gè)采用有限精度算法實(shí)現(xiàn)的時(shí)不變線性離散系統(tǒng)[3]。此結(jié)構(gòu)是上述表達(dá)式(2)的直接反應(yīng),除此以外,還可以根據(jù)微機(jī)所提供的資源對(duì)系統(tǒng)結(jié)構(gòu)進(jìn)行改進(jìn),達(dá)到節(jié)約資源或節(jié)省運(yùn)行時(shí)間的目的。
圖1 FIR濾波器的基本結(jié)構(gòu)
FIR濾波器一般是由乘法器、加法器、延時(shí)器構(gòu)成,以進(jìn)行數(shù)值計(jì)算和數(shù)據(jù)存儲(chǔ)。由于處理時(shí)間和芯片資源空間相互制約,通過調(diào)整延時(shí)線長(zhǎng)度和乘加次序來改變時(shí)間和空間之間的要求。當(dāng)濾波器數(shù)據(jù)流向處理方式不同時(shí),濾波器形成串行、并行、模擬卷積運(yùn)算的分布式處理等結(jié)構(gòu)。這里不展開說明,根據(jù)實(shí)際情況選取合適的濾波結(jié)構(gòu)。總之,濾波器結(jié)構(gòu)的選取不僅會(huì)影響濾波器自身的濾波性能,還會(huì)影響資源的合理利用。
1.3 FIR濾波器系數(shù)
在低通濾波器的設(shè)計(jì)過程中,要有理想的截止頻率必須是無限長(zhǎng)序列。對(duì)FIR濾波器來說,沒有遞歸運(yùn)算,只有有限階抽頭數(shù),這就需要通過一定的設(shè)計(jì)方法,使誤差達(dá)到最小值。把理想系統(tǒng)的單位沖激響應(yīng)h(n)用一定的計(jì)算公式選擇出有限長(zhǎng)度的hd(n),以此hd(n)來逼近理想的h(n)。有限的抽頭數(shù)就是FIR濾波器的系數(shù),與濾波器的階數(shù)對(duì)應(yīng)。不同的逼近方法對(duì)濾波性能產(chǎn)生不同的影響。在設(shè)計(jì)系統(tǒng)的過程中要考慮通帶,阻帶,衰減程度,波紋等因素,避免系統(tǒng)達(dá)不到理想的設(shè)計(jì)要求。
根據(jù)不同F(xiàn)IR濾波器性能的要求,選取恰當(dāng)?shù)南禂?shù)與濾波器階數(shù)。一般有三種普遍的做法,分別為窗函數(shù)、等波紋最佳逼近、頻率抽樣。
(1)窗函數(shù)設(shè)計(jì)方法是將主要頻率的值選出而舍棄一些對(duì)信號(hào)影響不大的值。當(dāng)時(shí)域有限而頻域無限時(shí),就不會(huì)有良好的截止頻率,這對(duì)信號(hào)貢獻(xiàn)較大的頻率成分不會(huì)有大的影響,截止頻率附近的成分也可忽略不計(jì);
(2)等波紋最佳逼近法處理比較粗糙的頻率范圍時(shí)經(jīng)常使用,較低的階數(shù)就能達(dá)到要求;
(3)頻率抽樣法是在頻域范圍內(nèi)對(duì)信號(hào)進(jìn)行數(shù)字處理,一般采用FFT的方法進(jìn)行數(shù)據(jù)變換,其算法復(fù)雜。
2 設(shè)計(jì)流程及相關(guān)工具使用
2.1 DSP Builder的相關(guān)介紹
DSP Builder不是一個(gè)獨(dú)立的軟件,而是一個(gè)算法級(jí)的工具,作為一個(gè)子函數(shù)庫(kù)存在于Matlab\SimuLink中,同時(shí)得到Altera公司的授權(quán),自動(dòng)生成系統(tǒng)代碼,完成硬件實(shí)現(xiàn)。隨著數(shù)字信號(hào)處理技術(shù)的不斷發(fā)展,F(xiàn)PGA應(yīng)用的空間范圍越來越廣泛,但其實(shí)現(xiàn)目標(biāo)所用的VHDL等硬件描述語言比較復(fù)雜。由Altera公司設(shè)計(jì)的數(shù)字信號(hào)處理工具DSP Builder簡(jiǎn)化了數(shù)字系統(tǒng)設(shè)計(jì)的流程,設(shè)計(jì)效率得到了提高。除此之外,其為數(shù)據(jù)類型的轉(zhuǎn)化提供了一個(gè)很好的工具。
DSP Builder作為Matlab數(shù)值計(jì)算軟件和QuartusII硬件設(shè)計(jì)軟件之間的橋梁,一定程度上降低了設(shè)計(jì)的復(fù)雜程度,使設(shè)計(jì)更加簡(jiǎn)單且易于操作,避免了復(fù)雜的語言設(shè)計(jì)和邏輯驗(yàn)證過程。
2.2 FIR濾波器設(shè)計(jì)要求
在實(shí)際設(shè)計(jì)過程中,數(shù)字濾波器要根據(jù)其性能指標(biāo)選取合適的逼近系數(shù)h(n),選取濾波階數(shù),確定濾波器的結(jié)構(gòu)。設(shè)計(jì)要求為設(shè)計(jì)一個(gè)系統(tǒng)的抽樣頻率為Ft=50 MHz,通帶截止頻率為Fp=1 MHz,阻帶截止頻率為Fs=4 MHz,通帶允許起伏1 dB,阻帶最小衰減30 dB,濾波階數(shù)為20階的低通濾波器。由于窗函數(shù)設(shè)計(jì)的濾波器對(duì)頻率要求比較精細(xì),若此系統(tǒng)采用窗函數(shù)法,則需要很高的濾波階數(shù),因而這里采用通帶頻率比較粗略的等波紋設(shè)計(jì)法。
2.3 確定濾波器系數(shù)
濾波器系數(shù)的確定是濾波器設(shè)計(jì)最關(guān)鍵的一步,直接影響濾波器的實(shí)際性能。Matlab中的FDA提供了所需系數(shù)的設(shè)計(jì)工具。
在這個(gè)過程中,F(xiàn)DA Tool算出的濾波器系數(shù)為有符號(hào)小數(shù),需要處理能在FPGA中實(shí)現(xiàn)的有符號(hào)整數(shù),這就要進(jìn)行量化和歸一化處理。量化的過程就是誤差產(chǎn)生的過程,該過程會(huì)產(chǎn)生量化噪聲,因此對(duì)量化后的濾波器進(jìn)行性能分析是必須的。由濾波系數(shù)的特點(diǎn)可知,所得數(shù)據(jù)都需進(jìn)行同等倍數(shù)處理,將其化成整數(shù),盡量降低轉(zhuǎn)化誤差。得到處理后的濾波器系數(shù)依次為:-6 24 27 37 50 63 75 85 93 97 97 93 85 75 63 50 37 27 24 -6。這些系數(shù)直接決定了所占乘法器的位長(zhǎng)。在求取濾波器系數(shù)的過程中,F(xiàn)DA Tool提供了極大的方便。作為Matlab中專門設(shè)計(jì)濾波器系數(shù)的工具,可以很直觀地顯示出FIR濾波器的幅頻特性,零極點(diǎn),群延時(shí)等參數(shù),如圖2所示。
圖2 濾波器分析圖
2.4 FIR濾波器模型的建立
利用DSP Builder工具設(shè)計(jì)FIR濾波器,在Matlab\SimuLink中建立.MDL文件。通過.MDL文件轉(zhuǎn)化為硬件能識(shí)別的VHDL語言,此軟件仿真層的原理框圖是構(gòu)成FIR濾波器實(shí)際應(yīng)用的基礎(chǔ)。此過程也決定了濾波器的濾波結(jié)構(gòu)即數(shù)據(jù)處理過程的順序。Shift Taps內(nèi)部結(jié)構(gòu)如圖3所示。FIR濾波器系統(tǒng)的仿真總圖及仿真波形如圖4所示。
圖3 Shift Taps的內(nèi)部結(jié)構(gòu)
圖4 FIR濾波器系統(tǒng)仿真總圖及仿真波形
利用DSP Builder設(shè)計(jì)軟件仿真的流程,并沒有下載到FPGA中的文件。這只能說明設(shè)計(jì)邏輯的正確性,不能保證此系統(tǒng)的使用性。此時(shí),必須通過一定的方式將其轉(zhuǎn)化為硬件能夠識(shí)別的.sof文件[2]。
2.5 FIR低通濾波器系統(tǒng)的硬件測(cè)試
在仿真完成后,采用SignalTap II邏輯分析儀工具進(jìn)行硬件測(cè)試的結(jié)果如圖5所示,生成.sof文件下載到硬件中,前提是通過Signal Compiler編譯后生成.qpf文件,使EDA工具QuartusII可編譯。SignalTap II工具的應(yīng)用縮短了測(cè)試時(shí)間,其將邏輯分析模塊嵌入FPGA中,對(duì)待測(cè)節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行捕獲就要通過邏輯分析模塊。數(shù)據(jù)通過JTAG數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸。使用SignalTap II無需額外的邏輯分析設(shè)備,只需將一根JTAG接口的下載電纜連接到要調(diào)試的FPGA器件[4]即可。與ModelSim仿真相比較,該方法更直接的將設(shè)計(jì)用于硬件測(cè)試,并非只是對(duì)系統(tǒng)的數(shù)據(jù)運(yùn)算進(jìn)行檢測(cè)。
圖5 FIR濾波器的測(cè)試模型圖
在測(cè)試過程中,用Signal Tap II分析塊選取了輸入的低頻信號(hào)SinLow,不同頻率的合成信號(hào)SinAdd,濾波輸出的信號(hào)FirOut。硬件測(cè)試波形如圖6所示,SinLow與FirOut檢測(cè)所得的信號(hào)基本一致,他們都濾除了高頻成分,濾波器輸出的信號(hào)大致為390 kHz。由DDS原理所產(chǎn)生的低頻正弦波信號(hào)的頻率為390.625 kHz,產(chǎn)生的高頻正弦波信號(hào)為6.25 MHz。這表明濾波器濾除了高頻成分,達(dá)到了低通濾波器的基本功能。觀察取樣波形,輸出波形FirOut與輸入信號(hào)SinLow的波形大致一致,而在波峰與波谷處出現(xiàn)了失真。
圖6 硬件測(cè)試波形
3 結(jié) 語
在此次設(shè)計(jì)過程中,充分展示了DSP Builder設(shè)計(jì)工具的優(yōu)勢(shì),作為數(shù)字系統(tǒng)的設(shè)計(jì)工具,很好地搭建了一座Matlab與Quartus II共同設(shè)計(jì)系統(tǒng)的橋梁,同時(shí)也很好地轉(zhuǎn)化SimuLink中建立的模型圖,將其轉(zhuǎn)化為Quartus II能識(shí)別的VHDL語言,避免了復(fù)雜的硬件語言描述[5],大大縮短了系統(tǒng)的開發(fā)周期。此設(shè)計(jì)模式為FPGA在信號(hào)處理應(yīng)用方面提供了很大的發(fā)展空間。
參考文獻(xiàn)
[1]鄭君里,應(yīng)啟銜,楊為理.信號(hào)與系統(tǒng)(下冊(cè))[M].北京:高等教育出版社,2011.
[2]高亞軍.基于FPGA的數(shù)字信號(hào)處理[M].北京:電子工業(yè)出版社,2012.
[3]數(shù)字信號(hào)處理(第4版)[M].余祥宇,譯.北京:電子工業(yè)出版社,2012.
[4]馬建國(guó),孟憲元.FPGA現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010.
[5]鄒興宇,程樹英.優(yōu)化FIR數(shù)字濾波器的FPGA實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(6):151-153.
[6]楊麗杰,崔葛瑾. 基于FPGA的FIR濾波器設(shè)計(jì)方法的研究[J].東華大學(xué)學(xué)報(bào)(自然科學(xué)版),2006,32 (6):93-96,106.
[7]宋承文,魏選平,劉浩淼.基于FPGA的FIR濾波器設(shè)計(jì)與仿真[J].電子技術(shù),2011(4):49-51.