基于FPGA的FIR濾波器設(shè)計_第1頁
基于FPGA的FIR濾波器設(shè)計_第2頁
基于FPGA的FIR濾波器設(shè)計_第3頁
基于FPGA的FIR濾波器設(shè)計_第4頁
基于FPGA的FIR濾波器設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、沈陽航空航天大學綜合課程設(shè)計一、概述在通信與信息技術(shù)領(lǐng)域,數(shù)字信號處理顯得越來越重要了,數(shù)字濾波器在數(shù)字信號處理中起到重要作用并能夠獲得廣泛應用。數(shù)字濾波器根據(jù)頻域特性可以分為低通、高通、帶通和帶阻四種基本類型,根據(jù)時域特性可以分為無限脈沖響應IIR(Infinte Impulse Response)和有限脈沖響應FIR(Finite Impulse Response)。FIR濾波器具有良好的線性相位特性,因此在數(shù)據(jù)通信、圖像處理方面有廣泛的應用。FPGA(Field Programmable Gate Array),即現(xiàn)場可編程門陣列,由于具有用戶可編程性,能夠?qū)崿F(xiàn)用戶規(guī)定的各種用途,因此又

2、被稱為可編程專用集成電路,在電子系統(tǒng)的設(shè)計中得到廣泛的應用。利用FPGA實現(xiàn)FIR數(shù)字濾波器的設(shè)計,是本次課程設(shè)計需要解決的問題,利用學過的知識實現(xiàn)FIR數(shù)字濾波器是本次課程設(shè)計的主要內(nèi)容。二、方案論證1.FIR數(shù)字濾波器是一種線性時不變系統(tǒng)(LTI),如果FIR數(shù)字濾波器的單位脈沖響應h(n)的長度為N,其傳遞函數(shù)和差分方程分別為:H(z) = y(n) = x(n)*h(n) =其中,x(n)和y(n)分別為輸入和輸出序列。如果FIR數(shù)字濾波器的單位脈沖響應h(n)是實數(shù)序列,而且滿足偶對稱或者奇對稱條件,即h(n) = h(N-1-n)或者 h(n) = -h(N-1-n)則濾波器具有嚴

3、格的線性相位特點。正是因為這種特點,在濾波器的設(shè)計過程中,可使乘法器的數(shù)量減半。對于n階濾波器,當n是偶數(shù)時,乘法器的個數(shù)為n/2個,當n為奇數(shù)時,乘法器的個數(shù)為(n+1)/2個。由傳遞函數(shù)和差分方程可以直接畫出FIR濾波器的直接型結(jié)構(gòu)如圖1所示。x(n) z z z z h(0) h(1) h(2) h(N-3) h(N-2) h(N-1) y(n) 圖1 FIR濾波器的直接型結(jié)構(gòu) 2.FIR濾波器的實現(xiàn)方法有多種,通常有串行算法、半并行算法和并行算法,在串行算法中,常見的有單乘法器MAC FIR濾波器和對稱MAC FIR濾波器。單乘法器MAC FIR濾波器是最簡單的DSP濾波器結(jié)構(gòu)之一,在

4、采樣速度比較慢、系數(shù)比較多的時候,需要用高速時鐘來驅(qū)動乘法器,硬件數(shù)量比較少也使得濾波器的吞吐量下降了。而對于對稱MAC FIR濾波器,基于邏輯結(jié)構(gòu)的加法器將數(shù)據(jù)相加,在單乘法器濾波器的基礎(chǔ)上,限制了最高時鐘速度,需要額外的資源支持對稱。由于數(shù)據(jù)是在一個端口上正向讀出和在另一端口反向讀出,因此在控制部分提高了一定的資源消耗。在并行算法中,常見的有轉(zhuǎn)置型FIR濾波器、脈沖型FIR濾波器等,二者都使用加法器鏈,但在課程設(shè)計中不易實現(xiàn)。3.根據(jù)濾波器的實現(xiàn)表達式,濾波器的實質(zhì)是做一個乘累加運算,乘累加運算的次數(shù)由濾波器的階數(shù)來決定,其串行結(jié)構(gòu)如圖2所示。系數(shù)表輸入寄存累加器輸入數(shù)據(jù) 濾波輸出圖2 濾

5、波器串行實現(xiàn)結(jié)構(gòu)圖利用串行結(jié)構(gòu)來實現(xiàn)FIR濾波器所使用的資源較少,只需要一些寄存器、一些乘累加器就可以完成濾波運算,一次濾波需要的時鐘數(shù)由濾波器的結(jié)束來決定。但對于課程設(shè)計的要求,階數(shù)比較低時采用這種方法相對比較方便。根據(jù)FIR濾波器的系數(shù)對稱性,可以先進行加法運算,然后把加法結(jié)果再進行串行的乘累加運算。這種串行濾波器的結(jié)構(gòu)如圖3所示。RRRR輸入數(shù)據(jù) 乘累加器 濾波輸出圖3 串行濾波器結(jié)構(gòu)4.經(jīng)過多種方案的比較,本設(shè)計最終決定采用串行結(jié)構(gòu)來實現(xiàn)FIR濾波器。方案是利用MATLAB提供的FDAtool設(shè)計所需要的FIR數(shù)字濾波器,并確定需要的濾波系數(shù),最終實現(xiàn)FPGA的設(shè)計。三、電路設(shè)計1.利

6、用FDAtool設(shè)計FIR數(shù)字濾波器。采用MATALAB中附帶的FDAtool工具,輸入所需濾波器的參數(shù),即可得到需要的濾波器。各參數(shù)如下:階數(shù):15 低通濾波(Lowpass) Bate = 0.5 Fs = 48kHz Fc = 10.8kHz參數(shù)的設(shè)置如圖4所示。圖4 設(shè)置FIR濾波器參數(shù)按照要求的參數(shù),將參數(shù)輸入FDAtool中,可以自動生成所需要的濾波器,并可以觀察到設(shè)計的濾波器的幅頻響應、相頻響應以及得到的濾波器系數(shù)。得到的FIR濾波器的幅頻響應如圖5所示。圖5 FIR濾波器的幅頻響應幅頻特性是描繪輸入信號幅度固定,輸出信號的幅度隨頻率變化而變化的規(guī)律,從設(shè)計的FIR濾波器的幅頻響

7、應可以看出,在頻率為0至10kHz內(nèi)表現(xiàn)為通帶,10kHz以后表現(xiàn)為阻帶,通帶與阻帶之間幅頻響應產(chǎn)生突變,表現(xiàn)為低通濾波。得到的FIR低通濾波器的相頻響應如圖6所示。圖6 FIR濾波器的相頻響應FIR濾波器的相頻響應,是指信號通過系統(tǒng)之后的輸出信號的相位與它輸入時的信號的相位值之差。從濾波器的相頻響應的特點,也可以看出其明顯的低通特性。由設(shè)計的濾波器可以得到相應的濾波系數(shù)如圖7所示。 圖7 濾波器系數(shù)將得到的濾波器系數(shù)導出,并利用MATLAB進行整理: Num*(29)ans= Columns 1 through 14 -19.1269 5.6636 28.9631 2.8166 -45.27

8、23 -25.1068 93.6359 214.4269 214.4269 93.6359 -25.1068 -45.2723 2.8166 28.9631Columns 15 through 165.6636 -19.1269 通過上面的濾波系數(shù)可以觀察到很嚴格的對稱性。各系數(shù)在FPGA中的不帶負號的具體二進制移位實現(xiàn)如下:-19.1269:左移4位+左移1位+原數(shù)+右移2位5.6636: 左移2位+原數(shù)+右移1位+右移2位28.9631: 左移4位+左移3位+左移2位+原數(shù)2.8166: 左移1位+原數(shù)-45.2723:左移5位+左移3位+左移2位+原數(shù)+右移2位-25.1068:左移4位

9、+左移3位+原數(shù)93.6359: 左移6位+左移4位+左移3位+左移2位+原數(shù)+右移1位214.4264:左移7位+左移6位+左移4位+左移2位+左移1位+右移1位2. FIR數(shù)字濾波器的FPGA的實現(xiàn)工程設(shè)計所用的模塊有:頂層原理圖文件,底層寄存器、加法器、減法器、乘法器的VHDL文件。 頂層的原理圖如圖8所示。圖8 頂層原理圖各模塊的詳細說明:a. 寄存器在原理圖中標號為suoc8,輸入的8位數(shù)據(jù)依次通過suoc8,達到各級的延時作用。寄存器輸入端有時鐘信號、清零端、8位的輸入端,輸出也為8位。當清零端clear為“1”時,無論輸入端輸入怎樣的數(shù)值,輸出端均輸出“00000000”。當cl

10、ear為“0”時,加入時鐘信號,當遇到時鐘信號的上升沿,則將輸入的數(shù)據(jù)從輸出端輸出。生成的suoc8寄存器模塊如圖9所示。 圖9 寄存器suoc8模塊寄存器suoc8的相應的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY suoc8 IS PORT( clk : IN STD_LOGIC; clear : IN STD_LOGIC; Din : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Dout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END suoc8; ARCHIT

11、ECTURE a OF suoc8 IS BEGIN PROCESS(clk,clear) BEGIN IF clear='1' THEN Dout<="00000000" ELSE IF(clk'EVENT AND clk='1') THEN Dout <= Din; END IF; END IF; END PROCESS; END a;b. 第一級加法器數(shù)據(jù)通過add889,就是8位數(shù)字輸入,9位數(shù)字輸出加法器,完成第一級相加運算。因為本題是15階FIR數(shù)字濾波器,它的濾波系數(shù)有對稱的關(guān)系,所以采用第一級加法器,達到簡

12、化運算的效果。當遇到一次時鐘信號的上升沿,完成一次加法運算。add889加法器如圖10所示。圖10 加法器add889模塊加法器add889的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY add889 isPORT(clk : in STD_LOGIC; Din1,Din2 :in signed (7 downto 0); Dout:out signed(8 downto 0);END add889;ARCHITECTURE a of add889 isSIGNAL s

13、1: signed(8 downto 0);SIGNAL s2: signed(8 downto 0);BEGIN s1<=(Din1(7)&Din1); s2<=(Din2(7)&Din2);PROCESS(Din1,Din2,clk)BEGINif clk'event and clk='1' thenDout<=s1+s2;end if;end process;end a;c. 乘法器乘法器用來將數(shù)據(jù)乘以由matlab計算得到的濾波系數(shù),各系數(shù)的結(jié)果是通過移位運算得到,節(jié)約了硬件乘法器資源。在上面說到,乘法器是通過移位實現(xiàn)的,以系數(shù)

14、-19.1269為例,則是左移4位+左移1位+原數(shù)+右移2位。當遇到一次時鐘信號的上升沿,完成一次乘法運算。生成的乘法器模塊如圖11所示。圖11 乘法器mult19模塊乘法器mult19對應的VHDL程序如下:LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY mult19 isPORT( clk : IN STD_LOGIC; Din : IN SIGNED (8 DOWNTO 0); Dout : OUT SIGNED (15 DOWNTO 0);END mult19;ARCHITECTU

15、RE a OF mult19 ISSIGNAL s1 : SIGNED (15 DOWNTO 0);SIGNAL s2 : SIGNED (15 DOWNTO 0);BEGINP1:process(Din)BEGINs1(15 DOWNTO 7)<=Din;s1( 6 DOWNTO 0)<="0000000"if Din(8)='0' then s2<=("000"&s1(15 DOWNTO 3)+("000000"&s1(15 DOWNTO 6)+("0000000&quo

16、t;&Din)+("000000000"&Din(8 DOWNTO 2);else s2<=("111"&s1(15 DOWNTO 3)+("111111"&s1(15 DOWNTO 6)+("1111111"&Din)+("111111111"&Din(8 DOWNTO 2);end if;end process;P2: PROCESS(clk)BEGINif clk'event and clk='1' thenDo

17、ut<=s2;end if;END PROCESS;END a;d. 第二級加法器和減法器通過8個乘法器無符號相乘后的數(shù)據(jù)被傳遞給第二級加法器進行加法運算,如果乘法系數(shù)是負數(shù),則在第二級經(jīng)過減法器來保證運算的正確性。當遇到一次時鐘信號的上升沿,完成一次加法或減法運算。以加法器add161617和減法器sub161416為例,由Quarttus II生成的加法器模塊如圖12所示。圖12 add161617加法器模塊加法器Add161617對應的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith

18、.ALL;ENTITY add161617 isPORT(clk : in STD_LOGIC; Din1,Din2 :in signed (15 downto 0); Dout:out signed(16 downto 0);END add161617;ARCHITECTURE a of add161617 isSIGNAL s1: signed(16 downto 0);SIGNAL s2: signed(16 downto 0);BEGIN s1<=(Din1(15)&Din1); s2<=(Din2(15)&Din2);PROCESS(Din1,Din2,c

19、lk)BEGINif clk'event and clk='1' thenDout<=s1+s2;end if;end process;end a;由Quarttus II生成的減法器sub161416模塊如圖13所示。圖13 減法器sub161416模塊減法器sub161416對應的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;ENTITY sub161416 isPORT(clk : in STD_LOGIC; Din1 :in signed (15

20、 downto 0); Din2 :in signed (13 downto 0); Dout:out signed(15 downto 0);END sub161416;ARCHITECTURE a of sub161416 isSIGNAL s1: signed(15 downto 0);BEGIN s1<=(Din2(13)&Din2(13)&Din2);PROCESS(Din1,Din2,clk)BEGINif clk'event and clk='1' thenDout<=s1-Din1;end if;end process;end

21、 a;所需的寄存器、乘法器、加法器和減法器通過編程,生成之后根據(jù)頂層原理圖進行連接,加入輸入端和輸出端,即可構(gòu)成所需要的FIR數(shù)字濾波器。3. 各模塊之間的關(guān)系由于本設(shè)計采用的是串行的濾波器設(shè)計,其中使用的15個寄存器依次相連,前一級寄存器的輸出端接入下一級寄存器的輸入端,起到逐級延時的作用。根據(jù)濾波器系數(shù)的對稱性,第0級系數(shù)與第15級系數(shù)相等,第1級與第14級系數(shù)相等,以此類推,第N級與第15-N級系數(shù)相等,因此可先進行加法運算,即第N級與第15-N級相加。第N級與第15-N級相加之后與得到的第N個乘法系數(shù)相乘,一共得到8組無符號相乘的結(jié)果。得到的數(shù)據(jù)再以此相加,乘法系數(shù)帶負號的數(shù)值經(jīng)過減法

22、器,作為減數(shù),從而達到加法的效果,逐級相加之后輸出。四、性能的測試為了驗證設(shè)計的FIR數(shù)字濾波器的性能,并驗證設(shè)計的FIR數(shù)字低通濾波器的正確性,本設(shè)計加入了x(t)=sin(500*pi*t)+cos(10000*pi*t)的輸入信號,其中的原信號為x(t)=sin(500*pi*t),x(t)=cos(10000*pi*t)為疊加在原信號上的噪聲信號。用MATLAB仿真原信號x(t)=sin(500*pi*t),可以觀察到其為正弦波如圖14所示。圖14 未加噪聲信號之前的正弦信號設(shè)抽樣頻率為10000,則抽樣后x(n)=sin(0.05*pi*n)+cos(pi*n),取n=0,139,則

23、可得到40個抽樣值,由于x(n)為浮點數(shù),本設(shè)計將x(n)擴大2倍,得到x(n),然后再取整,所得到的數(shù)值如表1所示表1 輸入序列的處理n取整n取整n取整n取整016.00161032.00322016.001630001-13.49-1311-0.19021-18.50-1931-31.80-32220.94211231.21312211.0511320.7813-8.73-913-1.74-223-23.26-2333-30.25-30425.40251428.9429246.597343.0535-4.68-415-4.6-525-27.31-2735-27.31-27628.94291

24、625.4025263.053366.577-1.74-217-8.7-927-30.25-3037-23.26-23831.21311820.9421280.7813811.05119-0.19019-13.49-1329-31.80-3239-18.50-19由表1可得,采樣值為Din=16,-13,21 ,-9, 25,-4,29, -2, 31,0,32, 0, 31, -2,29, -5,25, -9, 21,-13,16,-19, 11,-23,7,-27,3,-30, 1, -32,0, -32,1,-30, 3,-27,7,-23,11,-19,將采樣值作為輸入信號,并將輸入信

25、號Din=16,-13,21 ,-9, 25,-4,29, -2, 31,0,32, 0, 31, -2,29, -5,25, -9, 21,-13,16,-19, 11,-23,7,-27,3,-30, 1, -32,0, -32,1,-30, 3,-27,7,-23,11,-19同樣用MAYLAB生成相應桿狀圖,其桿狀圖如圖15所示。圖15 濾波前的輸入信號桿狀圖由生成的原理圖在Quartus II上編譯后, 將輸入信號數(shù)據(jù)從輸入端(Din)輸入,創(chuàng)建時域仿真波形,加入時鐘信號clk,并將clear置低電平,可以得到濾波后的數(shù)據(jù)如圖16(a)和16(b)所示。圖16(a) 仿真后的時域波形

26、圖16(b) 仿真后的時域波形由上圖中的輸出可得到輸出的數(shù)據(jù):Dout=-152,171,-5,-21,-340,102,500,1128,965,1064,1180,2130,2732,3370,3378,3798,4010,4168,4173,4033,3782,3515,3108,2600,2082,1588,1030,372,-350,-1040,-1588,-2085,-2610,-3102,-3515,-3810,-4033,-4162,-4161,-4028,-3660,-3683,-3100,-2585,-1743,-1690,-1530,-1485,-596,-50,396,

27、2,-22,-162,190,將仿真后得到的數(shù)據(jù)在MATLAB中生成相應的桿狀圖,指令如下:t=0:1:54; Dout=-152,171,-5,-21,-340,102,500,1128,965,1064,1180,2130,2732,3370,3378,3798,4010,4168,4173,4033,3782,3515,3108,2600,2082,1588,1030,372,-350,-1040,-1588,-2085,-2610,-3102,-3515,-3810,-4033,-4162,-4161,-4028,-3660,-3683,-3100,-2585,-1743,-1690,

28、-1530,-1485,-596,-50,396,2,-22,-162,190; stem(t,Dout);生成的桿狀圖如圖17所示。圖17 通過濾波器后得到的輸出圖形通過圖17和圖15比較可知,在濾波前為疊加信號,濾波之后基本接近于正弦信號,基本接近于未加疊加信號時的波形圖14,說明設(shè)計的FIR濾波器具有較好的濾波效果。為驗證濾波器的正確性,下面用MATLAB計算其卷積關(guān)系,由Din=16,-13,21 ,-9, 25,-4,29, -2, 31,0,32, 0, 31, -2,29, -5,25, -9, 21,-13,16,-19, 11,-23,7,-27,3,-30, 1, -32,

29、0, -32,1,-30, 3,-27,7,-23,11,-19,h(n)=-19,5.6,29,3,-45,-25.1,93.6,214.5,214.5,93.6,-25.1,-45,3,29,5.6,-19指令如下:Din=16,-13,21 ,-9, 25,-4,29, -2, 31,0,32, 0, 31, -2,29, -5,25, -9, 21,-13,16,-19, 11,-23,7,-27,3,-30, 1, -32,0, -32,1,-30, 3,-27,7,-23,11,-19; h=-19,5.6,29,3,-45,-25.1,93.6,214.5,214.5,93.6,

30、-25.1,-45,3,29,5.6,-19;y=round(conv(h,Din)/2);得到的計算結(jié)果如下:y = Columns 1 through 12 -152 168 -4 -20 -338 101 502 1126 969 1063 1188 2132Columns 13 through 242738 3375 3384 3802 4013 4170 4183 4038 3805 3518 3110 2605Columns 25 through 362085 1587 1040 371 -371 -1040 -1587 -2085 -2605 -3110 -3518 -3815Columns 37 through 48-4035 -4168 -4168 -4035 -3663 -3686 -3107 -2585 -1748 -1697 -1538 -1482Columns 49 through 55 -597 -46 387 0 -26 -158 181經(jīng)過比較,由Din和h進行卷積得到的結(jié)果,和Din經(jīng)過濾波器得到的Dout數(shù)值基本一致,由此

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論