數(shù)字濾波器設計之思路或vhdl_第1頁
數(shù)字濾波器設計之思路或vhdl_第2頁
數(shù)字濾波器設計之思路或vhdl_第3頁
數(shù)字濾波器設計之思路或vhdl_第4頁
數(shù)字濾波器設計之思路或vhdl_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 11.2 FIR數(shù)字濾波器設計FIR數(shù)字濾波器主要用來實現(xiàn)信號預處理、防混疊、帶選、抽選/插補、濾波和視頻卷積等功能的,以下簡要介紹其結構原理和設計方案。 11.2.1 FIR濾波器結構與原理簡要N階的FIR濾波器系統(tǒng)的傳遞函數(shù)為 (11-1)它有N-1階極點在z=0處,有N-1個零點位于有限z平面的任何位置。式(11-1)的系統(tǒng)差分方程表達式為 (11-2)式(11-2)就是輸入序列x(n)與單位沖擊響應h(n)的線性卷積。由式(11-2)可知n時刻的輸入y(n)僅于n時刻的輸入以及過去N-1個輸入值有關??梢灾苯赢嫵銎渚W(wǎng)絡結構,如圖11-2所示,這種結構稱直接型。如果FIR濾波器的單位沖

2、擊響應h(n)對稱,例如單位沖擊響應h(n)滿足: 圖 11-2 0,1, (11-3)則該因果系統(tǒng)具有嚴格的線性相位。當為偶數(shù)時,式(11-2)可化為 (11-4)把式(11-3)代入式(11-4)得 (11-5) 圖 11-3把式(11-5)畫成網(wǎng)絡結構,如圖11-3。同理,當為奇數(shù)時,式(11-2)可化為(11-6)把式(11-6)畫成網(wǎng)絡結構,如圖11-4。設計FIR濾波器的方法有窗函數(shù)法、頻率取樣法和等波紋優(yōu)化設計法等。窗函數(shù)法是最簡單的設計方法,也稱為傅里葉級數(shù)法。先給定所要求的理想濾波器頻率響應,要求設計一個FIR濾波器頻率響應來逼近。但設計是在時域進行的,因而先對進行傅里葉反變

3、換得到: (11-7) 圖 11-4由于是矩形頻率特性,故一定是無限長的序列,且是非因果的,而要圖 11-4設計的是FIR濾波器,其必然是有限長的序列,所以要用有限長的來逼近無限長的,最有效的方法是截斷,或者用一個有限長的窗口函數(shù)序列來截取,即: (11-8)因而窗口函數(shù)序列的形狀及長度的選擇就很關鍵。窗口函數(shù)主要有以下幾種:矩形窗:漢寧(Hanning)窗: (11-9)海明(Hamming)窗,又稱為升余弦窗: (11-10)它是漢寧窗的改進,可以得到旁瓣更小的效果。布拉克曼(Blackman)窗,又稱二階升余弦窗: (11-11) 在這個窗函數(shù)中加上了二次諧波分量,可以進一步抑制旁瓣。另

4、外還有凱澤窗和三角窗等。11.2.2 FIR濾波器設計方案確定FIR濾波器的實現(xiàn)方案可以有多種,有的在速度上有優(yōu)勢,有的在資源上占優(yōu)勢,有的則在結構上占優(yōu)勢,以下介紹幾種方案,以作比較選擇。1. 方案一 圖11-5 FIR濾波器設計方案一這個方案利用了具有嚴格線性FIR濾波器的單位沖擊響應的對稱特性,對圖11-2所示的直接型結構進行簡化,得到如圖11-3和圖11-4所示的結構。這樣就可以減少一半的乘法運算,節(jié)省相當一部分資源。具體結構如圖11-5所示(由圖11-4的結構而來),運算采用并行方式進行。但是這種結構只能被采用在M為偶數(shù)時,當M為奇數(shù)時,則必須換用類似于圖11-3的結構??梢娺@種結構

5、對于固定參數(shù)的FIR濾波器比較適合,對于參數(shù)可變的FIR濾波器就不大適用了。2方案二此方案就是引用如圖11-2所示的直接型,它沒有經(jīng)過任何化簡,運算也是采用并行的方式進行,設計結構如圖11-6所示。這種方案速度快,通用性強,適合于參數(shù)可變的FIR濾波器;但是對于實現(xiàn)N階8位的FIR濾波器,要有N個88個乘法器,從而占用大量的資源,對于資源相對緊張的FPGA來說,采用這種方案不夠實際。圖11-6 FIR濾波器設計方案二3方案三為了能使FPGA實現(xiàn)可變參數(shù)的FIR濾波器,要求其網(wǎng)絡結構必須是通用型的,而且不能使用過多的運算,以利節(jié)省邏輯資源。基于這點,方案三在方案二的基礎上進行改進,網(wǎng)絡結果仍采用

6、直接型,在進行乘法運算時,用串行乘法來代替并行乘法,這樣以犧牲時間為代價換得盡可能少的占用資源。其中的的串行乘法器是用次移位相加的方式實現(xiàn)的。以下是串行乘法的推導:圖11-7 串行乘法器模塊圖假設數(shù)據(jù)、是兩個位的乘數(shù),是乘積,其中表示乘數(shù)的第位數(shù)據(jù),則有: 乘法器結構如圖11-7所示。這一方案總體上是可行的,只是其中的個乘法器仍占用了較多的資源。4方案四方案四與前3個方案有較大的不同,它不采用乘法器進行乘法運算,而是采用乘法表,用查表來得到兩數(shù)相乘的積,即把兩乘數(shù)作為ROM的地址,對應單元的數(shù)據(jù)就是該兩乘數(shù)的乘積(ROM是事先按這種運算法則做好的)??傮w結構如圖11-8所示,其中從乘法表出來的

7、乘積為 圖11-8 FIR濾波器設計方案四這個方案設計的濾波器速度快、精度高、結構簡單,對于數(shù)據(jù)位數(shù)少,參數(shù)固定的FIR濾波器非常適用。但對于數(shù)據(jù)位數(shù)多,參數(shù)可變的濾波器就不大合適了。這是因為數(shù)據(jù)位數(shù)多和參數(shù)不固定都會使乘法表的容量變大,大容量的ROM必須外加,而且更改和外部設置也很不方便。5方案五方案一采用對稱結構,沒有通用性;方案二直接用并行乘法器進行計算,占用了大量資源;方案三用串行乘法器代替并行乘法器,在使用方面是改善了,但是,它是以犧牲時間為代價的,降低了速度,而且其中的N個串行乘法器也占用不少資源;方案四,對于數(shù)據(jù)位數(shù)少、參數(shù)固定的FIR濾波器非常合適,但對于參數(shù)不定的FIR濾波器

8、就不大適用。與前4種方案比,方案五有了較好的改進,此方案以方案三為基礎,在其中的加法器和N個串行乘法器上進行了改進,基本原理如下:假設濾波器是N階的,數(shù)據(jù)是W位,則系統(tǒng)差分方程表達式:可表示為 (11-12)由式(11-12)得出該方案的結構,其中的用串行時序來實現(xiàn),用移位(左移)寄存器來完成,用N個位選1W乘法器來實現(xiàn),用加法樹來實現(xiàn),結構如圖11-9所示。其中的表示的乘積,乘法器是位選1W乘法器。當然,要實現(xiàn)這一方案還需一個總控制器來協(xié)調各部件的運行,使之按規(guī)定時序正常運行,完成FIR濾波器算法。以下具體介紹方案五的實現(xiàn)方法。圖11-9 FIR濾波器設計方案五11.2.3 FIR濾波器主系

9、統(tǒng)設計以下就11階8位低通濾波器為對象,介紹FIR濾波器的實現(xiàn):由截止頻率為1kHz,采樣頻率為10kHz計算得到11階FIR濾波器的單位脈沖響應序列h(n)如表11-3所示。 表11-3 11階FIR濾波器的單位脈沖響應序列h(n)原值乘1024 十六進制二進制h(0)、h(10)00 00H00000000h(1)、h(9)0.046847.923 30H00110000h(1)、h(9)0.046847.923 30H00110000h(2)、h(8)0.1010103.424 67H01100111h(3)、h(7)0.1515155.136 9bH10011011h(4)、h(6)0

10、.1872191.692 c0H11000000h(5)0.2001204.902 cdH11001101現(xiàn)以表11-3中的單位脈沖響應序列為參數(shù)來設計FIR濾波器,它的主體部分由總控制器、加法樹、移位累加器、移數(shù)寄存器和位選18乘法器5個部件組成。下面分別介紹各部件的實現(xiàn)。1總控制器的實現(xiàn) 根據(jù)方案五的濾波器的總體結構,要求總控制器有接收復位信號、產生移數(shù)時鐘、產生運算控制時鐘等功能。這必須要用一個計數(shù)器來控制時序。FIR濾波器是8位的,所以完成一次序列運算要經(jīng)過8個運算控制時鐘脈沖,再加一個移數(shù)時鐘脈沖,總共是9個時鐘脈沖周期,所以要用一個9進制計數(shù)器??偪刂破鞑考闹鞒绦蛉缦拢篊lk_r

11、egbt=not clk and clk_en; -作為運算控制時鐘Clk_reg=not clk and not clk_en; -作為移數(shù)時鐘Process(clk,res) Beginif(res=1)then -進行復位操作counter=0;count_bt=0;elsif(clkevent and clk=1)then -時鐘的上升沿if(counter8)then -前8個時鐘周期里完成以下操作clk_en=1; -運算控制時鐘使能counter=counter+1; -計數(shù)器加計數(shù)count_bt=count_bt-1; -計數(shù)器減計數(shù)else -第9個時鐘完成以下操作ount

12、er=0; count_bt=0; clk_en=0;end if;end if;end process;圖 11-10在上面這段程序中,信號clk是全局時鐘,即系統(tǒng)工作時鐘;信號res是系統(tǒng)復位信號,在這里作為計數(shù)器清零信號;這里產生的信號counter和count_bt的數(shù)據(jù)類型是整數(shù),counter用來記錄時序,9個時鐘為一個周期,count_bt在位選乘法器中作位選信號;信號clk_regbt和clk_reg也是在這里產生的,clk_regbt作為運算控制時鐘,使運算部件按時序進行運算,clk_reg作為移數(shù)時鐘,在運算時,也有控制的作用。這些信號所起的作用將分散在各部件中介紹。這些信

13、號的時序主要是由一個進程來實現(xiàn)的,在這個進程中,系統(tǒng)工作時鐘clk和復位信號res作為敏感信號,這個進程的功能是在前8個時鐘周期里,count_bt減法計數(shù),運算控制時鐘使能信號clk_en為高電平,第9個時鐘周期clk_en為低電平。clk_en在進程外面用來控制clk_regbt和clk_reg的輸出,在程序中用的是not clk而不是直接用clk是因為這樣可以巧妙地避開clk_en的延時而產生的時鐘錯位??偟臅r序仿真如圖11-10所示。2移數(shù)寄存器的實現(xiàn)這一部件的任務是,在一次序列運算結束后,原先存放x(n-N+1)的寄存器存入x(n-N+2),而原先存放x(n-N+2)的寄存器存入x(

14、n-N+3),原先存放x(n)的寄存器存入由端口進來的新數(shù)據(jù),相當于x序列向前移了一個數(shù),從寄存器組中移出去一個數(shù),同時移進一個新的數(shù),主程序如下:process(clk_reg,clr,res)beginif(res=1 or clr=1)then -以下進行清零操作for I in 0 to 10 loopreg_xn(i)=00000000;end loop;elsif(clk_regevent and clk_reg=0)then-當移數(shù)時鐘下降沿來時移數(shù)for I in 10 to 1 loop reg_xn(i)=reg_xn(i-1);end loop;reg_xn(0)=dat

15、a_xn; -新數(shù)移進來end if;end process;這個部件用一個進程來實現(xiàn),reg_xn是數(shù)組,在這里可以理解為位寄存器組,它有11個單元,每個單元存放一個8位的數(shù)據(jù)。當清零信號或復位信號為高電平時,寄存器組清零;當清零信號和復位信號都為低電平,且當移數(shù)時鐘信號clk_reg的下降沿來時,x序列向寄存器組深處移一個數(shù),原先最深那個單元reg_xn(10)里的數(shù)據(jù)被移走,第一個reg_xn(0)里的數(shù)據(jù)由端口來的數(shù)據(jù)data_xn來代替;clk_reg為低電平時,寄存器組里的數(shù)據(jù)供位選18乘法器調用。3位選18乘法器的實現(xiàn)這個部件的任務是,當運算控制時鐘信號來時,數(shù)據(jù)h(n)的相應位

16、與x(n)相乘,并把結果送給加法樹。主程序如下:process(clk)beginif(clkevent and clk=0)then -系統(tǒng)時鐘的下降沿for I in 0 to 10 loop -完成位選相乘if (reg_hn(i)(count_bt)=1)then -選中的位為1 add_xn(i)=reg_xn(i); -積為reg_xn(i)else -選中的位為1add_xn(i)=00000000; -積為00000000end if;end loop;end if;end process;這個部件也是采用一個進程來實現(xiàn)的,這個進程的敏感信號是系統(tǒng)時鐘clk,而不是運算控制時鐘

17、clk_regbt。這是因為clk_regbt是由clk產生的,之間有一定的延時,clk的下降沿剛好落在clk_regbt上升沿的前面(見圖11-10),在這個時候進行位選乘法,可以和后面的加法樹(clk_regbt上升沿進行運算)很好地銜接。這里的reg_hn和add_xn的數(shù)據(jù)類型和reg_xn的數(shù)據(jù)類型一樣是數(shù)組,這里也可以理解為寄存器組。reg_hn寄存的是h(n)序列,add_xn寄存的是h(n)的指定位與x(n)的乘積。這里的位選直接由信號count_bt進行。語句reg_hn(i)(count_bt)就是表示寄存器組reg_hn的第i+1個單元的數(shù)據(jù)的第count_bt位,即h(

18、i)的第count_bt位,在一個運算周期里,count_bt由7到0共8個值,h(i)的8位相繼與x(i)相乘,并把結果送給加法樹。4加法樹的實現(xiàn) 圖11-11 加法樹加法樹實際上就是多個數(shù)據(jù)同時相加的一種結構,即把所有加數(shù)兩個一組分別進行相加(各組同時進行),然后所有和兩個一組進行相加,直到只剩余下一個數(shù),它就是所有加數(shù)的和。這樣把全并行的多個數(shù)相加,轉換成串并結合的結構(如圖11-11 所示),在速度和資源上進行折中,其結果是速度上影響不大,而資源卻節(jié)省了許多,這正是采用加法樹的主要原因,其程序見移位累加器部分。5移位累加器部分移位累加器的功能是完成式(11-12)中的,它將加法樹得出的

19、結果 進行逐個累加移位,其結構見圖11-9,相當于在一個運算周期里使左移了次,即乘上其權重,程序如下:process(clk_regbt,clk_reg,clr,set)beginif(clr=1 or set=1) then-清零sum 0);data_yn 0);elsif(clk_reg=1)then-運算結束data_yn=result(18 downto 11); -結果輸出sum0); -累加器清零elsif(clk_regbt=1)then -運算控制時鐘為 -高電平時進行以下的加法樹運算sum91=add_xn(0)+add_xn(1);sum92=add_xn(2)+add_

20、xn(3);sum93=add_xn(4)+add_xn(5);sum94=add_xn(6)+add_xn(7);sum101=sum91+sum92;sum102=sum93+sum94;sum11=sum101+sum102;sum=result+sum11; -把加法樹結果進行累加elseresult=sum(17 downto 0)&0; -把累加結果左移end if;end process; 在這段程序里,用一個進程完成,其中表示第個運算控制時鐘信號來時,處理的位選乘法器出來的結果。當清零信號來時,累加器清零,否則,當移數(shù)時鐘信號來時,累加器結果的高8位輸出,累加器清零。否則當運算

21、控制時鐘為高電平時,進行一次加法樹運算并把結果累加,當運算控制時鐘為低電平時,把累加器結果左移一位。 以上5個部件,在總控制部件的協(xié)調下,進行正常運算,完成FIR濾波器算法。實際上,還有一個部件沒有單獨指出,那就是用來存放的寄存器組。在程序編寫時,由于它只是一組信號,在組織上也沒有特別的設計,故沒有單獨提出。11.2.4 FIR濾波器附加功能實現(xiàn)主體部分的功能在于實現(xiàn)FIR濾波器算法,它只是完成特定運算的硬件結構,為了能完成實際的濾波功能,還必須增加一些外圍的功能模塊,其中包括工作時鐘設置模塊、工作模式設置模塊、鍵盤模塊、顯示器模塊、數(shù)模轉換和模數(shù)轉換模塊6個部分。1工作時鐘設置模塊此模塊的功

22、能是改變工作時鐘頻率,達到改變序列處理速度,使之在不改變參數(shù)的基礎上,就可以改變選通頻段。它由兩部分組成,一部分是在FPGA內部實現(xiàn),另一部分在FPGA外部實現(xiàn),即通過改變外接的時鐘源來實現(xiàn)。內部模塊的程序如下:process(clk)beginif(clkevent and clk=1)then-上升沿有效if(pcountpmax & 0)then-不到閾值pcount:=pcount+1;-計數(shù)器加1if(pcountpmax)then-不到半閾值clkout=0;-時鐘為0elseclkout=1;-過半閾值,時鐘為高電平end if;else-過閾值,計數(shù)器清零 pcount:=0;

23、end if;end if;end process;在這段程序中,pmax是設置時鐘輸入的1/2閥值,閥值數(shù)值越大clkout的頻率越低,在程序中間用1/2閾值進行判斷,使clkout為占空比為50%的時鐘。2工作模式設置模塊此模塊用于設置工作模式,如高通模式、低通模式、帶通模式、帶阻模式、另設參數(shù)模式(用于另設參數(shù)工作模式)等。當系統(tǒng)工作在前4個模式時,系統(tǒng)分別完成高通、低通、帶通、帶阻濾波的功能,當系統(tǒng)工作在另設參數(shù)模式時,系統(tǒng)可以通過外設來設置,以實現(xiàn)其它指標的濾波器。當系統(tǒng)工作在另設參數(shù)工作模式時,系統(tǒng)就用上一模式設置的參數(shù)進行工作。其程序如下:process(set,enter,mode)beginif(set=1)then-以下為設置模式if(mode=00)then-設置為低通模式reg_hn(0)=00000001;-這些參數(shù)都是reg_hn(10)=00000001;-事先算好的reg_hn(9)=00110000;reg_hn(1)=00110000;reg_hn(2)=01100111;reg_hn(8)=01100111;reg_hn(3)=10011011;reg_hn(7)=10011011;reg_hn(4)=11000000;reg_hn(6)=11000000;reg_hn(5)=11001101;elsif(mode=01)the

溫馨提示

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

評論

0/150

提交評論