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

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

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

 濾波器的設計指標為:32階低通濾波器,采樣率為400 kHz,截止頻率為10 kHz。采用MATLAB中FDATool工具,使用Hamming窗,計算出濾波器系數(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}。
 濾波器建模設計完成后,輸入5 kHz的方波信號,從中提取5 kHz的正弦波信號,其仿真波形如圖2所示。從仿真波形可以看出,經(jīng)過FIR濾波后,很好地達到濾波效果。

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

 FPGA模塊采用Altera公司Cyclone系列FPGA芯片EP1C6Q240C8。
 A/D轉換模塊的主要功能是對模擬信號進行數(shù)字化,然后送入FPGA中進行數(shù)字信號處理。A/D轉換芯片使用ADI公司單芯片、12 bit、40 MS/s模數(shù)轉換器AD9224。AD9224采用單電源供電,內(nèi)置一個片內(nèi)高性能采樣保持放大器和基準電壓源。它采用多級差分流水線架構,內(nèi)置輸出糾錯邏輯,在40 MS/s數(shù)據(jù)速率時可提供12 bit精度,并保證在整個工作溫度范圍內(nèi)無失碼。
D/A轉換模塊的主要功能是將FPGA處理后輸出的數(shù)字信號轉換為模擬量,然后經(jīng)信號調(diào)理輸出。A/D轉換芯片選用ADI公司的AD9764。AD9764屬于TxDAC系列高性能、低功耗CMOS數(shù)模轉換器(DAC)的14 bit分辨率。
 在硬件實現(xiàn)過程中,由于要使用A/D轉換時鐘信號AD_CLK和D/A轉換時鐘信號DA_CLK,需要設計頂層文件,以便調(diào)用前述所設計的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);
……
    頂層實體原理圖如圖4所示,輸入時鐘CLK_IN由外部40 MHz晶振提供。A/D轉換后的數(shù)字量由AD_IN[11..0]輸入,輸出數(shù)字量由DA_OUT[13..0]輸出給D/A轉換器。CLK_IN 100分頻后由AD_CLK、DA_CLK送給A/D、D/A芯片。

    對整個項目進行綜合、編譯和調(diào)試后,生成的RTL級電路圖如圖5所示。

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

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