《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FIR數(shù)字濾波器設(shè)計(jì)及其FPGA實(shí)現(xiàn)
FIR數(shù)字濾波器設(shè)計(jì)及其FPGA實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2013年第19期
郝小江,黃 昆
(攀枝花學(xué)院 電氣信息工程學(xué)院,四川 攀枝花 617000)
摘要: 以FPGA為硬件平臺(tái),利用FPGA的DSP開發(fā)工具DSP Builder對(duì)數(shù)字濾波器進(jìn)行建模設(shè)計(jì)及系統(tǒng)模型仿真,生成VHDL工程文件,編制相應(yīng)頂層文件,使其符合濾波器硬件系統(tǒng)。利用QuartusⅡ?qū)?xiàng)目進(jìn)行綜合、編譯和調(diào)試,生成原理圖模塊和RTL電路圖。通過對(duì)5 kHz方波信號(hào)進(jìn)行仿真濾波,并將VHDL下載到硬件系統(tǒng)中進(jìn)行硬件實(shí)現(xiàn),有效地提取到5 kHz的正弦信號(hào)。實(shí)驗(yàn)結(jié)果表明,該設(shè)計(jì)很好地達(dá)到了FIR濾波器的性能,為數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn)提供了新的途徑和方法。
Abstract:
Key words :

摘  要:FPGA為硬件平臺(tái),利用FPGA的DSP開發(fā)工具DSP Builder對(duì)數(shù)字濾波器進(jìn)行建模設(shè)計(jì)及系統(tǒng)模型仿真,生成VHDL工程文件,編制相應(yīng)頂層文件,使其符合濾波器硬件系統(tǒng)。利用QuartusⅡ?qū)?xiàng)目進(jìn)行綜合、編譯和調(diào)試,生成原理圖模塊和RTL電路圖。通過對(duì)5 kHz方波信號(hào)進(jìn)行仿真濾波,并將VHDL下載到硬件系統(tǒng)中進(jìn)行硬件實(shí)現(xiàn),有效地提取到5 kHz的正弦信號(hào)。實(shí)驗(yàn)結(jié)果表明,該設(shè)計(jì)很好地達(dá)到了FIR濾波器的性能,為數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn)提供了新的途徑和方法。
關(guān)鍵詞: FIR數(shù)字濾波器;FPGA;DSP Builder;VHDL代碼

 數(shù)字濾波技術(shù)是數(shù)字信號(hào)處理技術(shù)的重要分支。無論是信號(hào)的處理交換,還是信號(hào)的獲取、傳輸,都離不開濾波技術(shù)。數(shù)字濾波的實(shí)驗(yàn)實(shí)現(xiàn)方法有在通用計(jì)算機(jī)上用軟件實(shí)現(xiàn)、采用DSP實(shí)現(xiàn)、采用FPGA實(shí)現(xiàn)。快速發(fā)展的EDA技術(shù)和大規(guī)??删幊唐骷?,使得采用FPGA實(shí)現(xiàn)數(shù)字濾波器可以克服傳統(tǒng)DSP技術(shù)中的技術(shù)瓶頸,在高可靠性、高速與實(shí)時(shí)性、系統(tǒng)的重配置與硬件可重構(gòu)性、單片系統(tǒng)的可實(shí)現(xiàn)性及自主知識(shí)產(chǎn)權(quán)化等許多方面具有突出的優(yōu)勢(shì)。
 本設(shè)計(jì)采用FPGA設(shè)計(jì)工具DSP Builder實(shí)現(xiàn)FIR數(shù)字濾波器的設(shè)計(jì)方案,按照MATLAB/Simulink/DSP Builder/Quartus II的設(shè)計(jì)流程,設(shè)計(jì)一個(gè)32階的抽樣頻率為400 kHz,截止頻率為10 kHz的FIR低通濾波器。在硬件實(shí)現(xiàn)上應(yīng)用A/D轉(zhuǎn)換芯片AD9224采樣輸入信號(hào)后送給FPGA芯片EP1C6Q240C8處理,處理后的信號(hào)經(jīng)D/A轉(zhuǎn)換芯片AD9764轉(zhuǎn)換為模擬信號(hào)輸出。軟件仿真與硬件實(shí)驗(yàn)結(jié)果表明,該設(shè)計(jì)基于FPGA的FIR數(shù)字濾波器濾波效果良好,可有效提取需要的信號(hào)。
1 FIR濾波器建模設(shè)計(jì)分析
 FPGA器件由大量邏輯宏單元構(gòu)成,通過配置,使這些邏輯單元形成不同的硬件結(jié)構(gòu),從而構(gòu)成不同的電子系統(tǒng),完成不同的功能。正是FPGA的這種硬件重構(gòu)的靈活性,使得用硬件描述語言(VHDL或Verilog HDL)描述的電路在FPGA中實(shí)現(xiàn)。而DSP Builder可以完成基于FPGA的DSP系統(tǒng)設(shè)計(jì)的整個(gè)過程,它是連接MATLAB/Simulink和QuartusII開發(fā)軟件的DSP技術(shù),在Simulink中進(jìn)行圖形設(shè)計(jì)和仿真,同時(shí)又通過Signal Compiler把MATLAB/Simulink的設(shè)計(jì)文件(.mdl)轉(zhuǎn)換成相應(yīng)的硬件描述語言VHDL設(shè)計(jì)文件(.vhd),以及用于控制綜合與編譯的TCL腳本,然后可以用FPGA開發(fā)工具Quartus II實(shí)現(xiàn)綜合、布線、RTL級(jí)仿真以及生成目標(biāo)板下載文件,在靈活的硬件實(shí)驗(yàn)平臺(tái)上實(shí)現(xiàn)。
FIR濾波器的數(shù)學(xué)表達(dá)式為:
 
 FIR的濾波過程就是一個(gè)信號(hào)逐級(jí)延遲移位的過程,將各級(jí)的延遲輸出加權(quán)累加,即得到FIR濾波器的輸出,其中最主要的算法是乘累加運(yùn)算。根據(jù)FIR濾波器的數(shù)學(xué)表達(dá)式,用Altera DSP Builder建立圖1所示的FIR濾波器圖形仿真模型,主要由總線模塊、采樣率降低模塊(Down Sampling)、移位寄存器模塊(Shift Taps)、乘累加模塊(MultAdd32)、總線類型轉(zhuǎn)換模塊(Bus Conversion)以及方波信號(hào)產(chǎn)生模塊(Pulse Generator)和觀測(cè)仿真結(jié)果的示波器組成。其中乘累加模塊采用層次化設(shè)計(jì),由前一級(jí)的移位寄存器提供數(shù)據(jù)輸入,經(jīng)過多級(jí)累加求和得到FIR濾波器的輸出結(jié)果,其內(nèi)部子模塊采用8個(gè)Multiply Add構(gòu)成,每個(gè)Multiply Add模塊具體設(shè)置為:Number of Multipilers:4、Bus Type:Signed Integer、Inputs[number of bits].[]:12、No Register、Constant Values為濾波器設(shè)計(jì)系數(shù),并將輸出用Paraller Adder相加在一起。由于在后續(xù)硬件實(shí)現(xiàn)上A/D采用12 bit、D/A采用14 bit,因此輸入信號(hào)FIRIN為12 bit整型、輸出信號(hào)FIROUT為14 bit整型。

 濾波器的設(shè)計(jì)指標(biāo)為:32階低通濾波器,采樣率為400 kHz,截止頻率為10 kHz。采用MATLAB中FDATool工具,使用Hamming窗,計(jì)算出濾波器系數(shù)。在MATLAB命令行中輸入:round(Num1×212),得到FIR濾波器的整形系數(shù)h[32]={4 6 10 16 25 37 52 70 90 112 134 155 173 188 199 204 204 199 188 173 155 134 112 90 70 52 37 25 16 10 6 4}。
 濾波器建模設(shè)計(jì)完成后,輸入5 kHz的方波信號(hào),從中提取5 kHz的正弦波信號(hào),其仿真波形如圖2所示。從仿真波形可以看出,經(jīng)過FIR濾波后,很好地達(dá)到濾波效果。

 在FIR模型中用Signal Compiler模塊Analyze模型,然后選定Cyclone系列FPGA,使用QuartusII綜合工具,優(yōu)化規(guī)則,并產(chǎn)生VHDL程序。
2 FIR濾波器硬件實(shí)現(xiàn)系統(tǒng)
 FIR數(shù)字濾波器FPGA實(shí)現(xiàn)的硬件系統(tǒng)如圖3所示,該系統(tǒng)由A/D轉(zhuǎn)換模塊、FPGA模塊、D/A轉(zhuǎn)換模塊和電源模塊4部分組成。

 FPGA模塊采用Altera公司Cyclone系列FPGA芯片EP1C6Q240C8。
 A/D轉(zhuǎn)換模塊的主要功能是對(duì)模擬信號(hào)進(jìn)行數(shù)字化,然后送入FPGA中進(jìn)行數(shù)字信號(hào)處理。A/D轉(zhuǎn)換芯片使用ADI公司單芯片、12 bit、40 MS/s模數(shù)轉(zhuǎn)換器AD9224。AD9224采用單電源供電,內(nèi)置一個(gè)片內(nèi)高性能采樣保持放大器和基準(zhǔn)電壓源。它采用多級(jí)差分流水線架構(gòu),內(nèi)置輸出糾錯(cuò)邏輯,在40 MS/s數(shù)據(jù)速率時(shí)可提供12 bit精度,并保證在整個(gè)工作溫度范圍內(nèi)無失碼。
D/A轉(zhuǎn)換模塊的主要功能是將FPGA處理后輸出的數(shù)字信號(hào)轉(zhuǎn)換為模擬量,然后經(jīng)信號(hào)調(diào)理輸出。A/D轉(zhuǎn)換芯片選用ADI公司的AD9764。AD9764屬于TxDAC系列高性能、低功耗CMOS數(shù)模轉(zhuǎn)換器(DAC)的14 bit分辨率。
 在硬件實(shí)現(xiàn)過程中,由于要使用A/D轉(zhuǎn)換時(shí)鐘信號(hào)AD_CLK和D/A轉(zhuǎn)換時(shí)鐘信號(hào)DA_CLK,需要設(shè)計(jì)頂層文件,以便調(diào)用前述所設(shè)計(jì)的FIR濾波器。
 頂層主要源程序如下:
entity FIR is
    port(
        AD_IN:in STD_LOGIC_VECTOR(11 downto 0);
        DA_OUT:out STD_LOGIC_VECTOR(13 downto 0);
        CLK_IN:in STD_LOGIC;
        AD_CLK:out STD_LOGIC;
        DA_CLK:out STD_LOGIC);
end entity;
architecture rtl of FIR is
component FIRSimulink    
    port(
        FIRIN:in STD_LOGIC_VECTOR(11 downto 0);
        Input:in STD_LOGIC;
        FIROUT:out STD_LOGIC_VECTOR(13 downto 0);
        FIRaclr:in STD_LOGIC;
        FIRClock:in STD_LOGIC);
end component;
……
FIRSimulink_instance:
        component FIRSimulink
            port map(
                FIRIN=>ad_d2,
                input=>clk_div,
                FIROUT=>da_d2,
                FIRaclr=>FIR_aclr,
                FIRClock=>CLK_IN);
……
    頂層實(shí)體原理圖如圖4所示,輸入時(shí)鐘CLK_IN由外部40 MHz晶振提供。A/D轉(zhuǎn)換后的數(shù)字量由AD_IN[11..0]輸入,輸出數(shù)字量由DA_OUT[13..0]輸出給D/A轉(zhuǎn)換器。CLK_IN 100分頻后由AD_CLK、DA_CLK送給A/D、D/A芯片。

    對(duì)整個(gè)項(xiàng)目進(jìn)行綜合、編譯和調(diào)試后,生成的RTL級(jí)電路圖如圖5所示。

3 硬件測(cè)試實(shí)現(xiàn)
    濾波器硬件測(cè)試系統(tǒng)中,函數(shù)信號(hào)發(fā)生器產(chǎn)生的5 kHz方波信號(hào)一路直接輸入數(shù)字示波器CH2通道,另一路輸入給A/D轉(zhuǎn)換模塊,經(jīng)FPGA濾波后送給D/A轉(zhuǎn)換模塊輸出給示波器的CH1通道。通過JTAG接口配置FPGA,測(cè)試結(jié)果如圖6所示。由圖6可以看出,輸入5 kHz方波信號(hào),經(jīng)過濾波后得到輸出為5 kHz的正弦波信號(hào)。測(cè)試結(jié)果與MATLAB/Simulink/DSP Builder模型仿真結(jié)果相同,證明該濾波器設(shè)計(jì)正確,濾波效果很好。
 本文主要研究了FIR數(shù)字濾波器的設(shè)計(jì),包括建模算法仿真以及最后的硬件實(shí)現(xiàn)。
 設(shè)計(jì)結(jié)果表明,在利用FPGA進(jìn)行數(shù)字濾波器設(shè)計(jì)時(shí),利用DSP Builder可以簡(jiǎn)化計(jì)算與設(shè)計(jì)難度,加快設(shè)計(jì)速度,靈活選擇精度,實(shí)現(xiàn)優(yōu)化設(shè)計(jì)。將DSP Builder與Quartus II軟件有機(jī)融合,整個(gè)開發(fā)流程一氣呵成,真正實(shí)現(xiàn)了自頂向下的設(shè)計(jì)流程,充分顯示了現(xiàn)代EDA(電子設(shè)計(jì)自動(dòng)化)開發(fā)的特點(diǎn)與優(yōu)勢(shì)。設(shè)計(jì)不同性能的濾波器電路,只需修改濾波器模型文件即可實(shí)現(xiàn),不僅避免了繁瑣的VHDL語言編程,而且易于修改、測(cè)試及硬件升級(jí),成本相對(duì)較低,具有一定的工程設(shè)計(jì)參考價(jià)值。
參考文獻(xiàn)
[1] 程佩青.?dāng)?shù)字信號(hào)處理教程(第3版)[M].北京:清華大學(xué)出版社,2007.
[2] 席在芳,周少武,歐青立,等.基于Simulink的FIR數(shù)字濾波器設(shè)計(jì)實(shí)驗(yàn)教學(xué)探索與實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2010(5):80-82.
[3] 潘松,黃繼業(yè).SOPC技術(shù)實(shí)用教程[M].北京:清華大學(xué)出版社,2005.
[4] 潘松,黃繼業(yè),王國棟.現(xiàn)代技術(shù)DSP技術(shù)[M].西安:西安電子科技大學(xué)出版社,2003.
[5] 郭海麗,王紫婷.基于Matlab/Simulink的FIR數(shù)字濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].電氣應(yīng)用,2008(1):73-75.
[6] 徐年,張劍英.基于FPGA的FIR數(shù)字濾波器的實(shí)現(xiàn)[J].煤炭工程,2007(4):118-120.
[7] 張海軍.基于FPGA的16階FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].安徽大學(xué)學(xué)報(bào)(自然科學(xué)版),2009(1):62-65.
[8] 趙文兵,楊建寧.FIR濾波器的FPGA實(shí)現(xiàn)及其仿真研究[J].微計(jì)算機(jī)信息,2005(6Z):108-109.
[9] 雷能芳.基于分布式算法有限脈沖響應(yīng)(FIR)濾波器的FPGA設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2010(11):2743-2746.
[10] 郝小江,繆志農(nóng),張小平.基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù),2010(1):44-46.
[11] 蔣立平,譚雪琴.一種基于FPGA的高效FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].南京理工大學(xué)學(xué)報(bào),2007,31(1):125-128.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。