基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于FPGA的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄目錄 引引 言言.5 5 第一章第一章 fpgafpga 的設(shè)計(jì)流程的設(shè)計(jì)流程.6 6 1.11.1 fpgafpga 概述概述 .6 6 1.21.2 fpgafpga 設(shè)計(jì)流程設(shè)計(jì)流程 .8 8 1.31.3 硬件描述語(yǔ)言硬件描述語(yǔ)言 hdl(hardwarehdl(hardware descriptiondescription language)language).1010 1.41.4 fpgafpga 開(kāi)發(fā)工具開(kāi)發(fā)工具 quartusquartus 軟件設(shè)計(jì)流程軟件設(shè)計(jì)流程.1111 第二章第二章 有限沖激響應(yīng)有限沖激響應(yīng)(fir)(fir)濾波器的原理及設(shè)計(jì)濾波器的原理及設(shè)計(jì).

2、1414 2.12.1 數(shù)字信號(hào)處理基礎(chǔ)原理數(shù)字信號(hào)處理基礎(chǔ)原理 .1414 2.22.2 firfir 濾波器背影知識(shí)濾波器背影知識(shí) .1717 2.32.3 firfir 數(shù)字濾波器原理數(shù)字濾波器原理 .1818 2.42.4 利用窗函數(shù)法設(shè)計(jì)利用窗函數(shù)法設(shè)計(jì) firfir 濾波器濾波器.2222 第三章第三章 firfir 數(shù)字濾波器的數(shù)字濾波器的 fpgafpga 實(shí)現(xiàn)實(shí)現(xiàn).2727 3.13.1 串行串行 firfir 濾波器原理濾波器原理 .2727 3.23.2 分布式算法基礎(chǔ)分布式算法基礎(chǔ) .2727 3.33.3 直接型直接型 firfir 濾波器的原理結(jié)構(gòu)圖濾波器的原理結(jié)構(gòu)

3、圖 .3030 3.43.4 具有轉(zhuǎn)置結(jié)構(gòu)的具有轉(zhuǎn)置結(jié)構(gòu)的 firfir 濾波器濾波器 .3131 第四章第四章 結(jié)論與總結(jié)結(jié)論與總結(jié).3636 謝謝 辭辭.3737 參考文獻(xiàn)參考文獻(xiàn).3838 摘要摘要: :本論文課題是基于 fpga 的 fir 濾波器設(shè)計(jì)與實(shí)現(xiàn) 。數(shù)字濾波器是 語(yǔ)音與圖象處理、模式識(shí)別、雷達(dá)信號(hào)處理、頻譜分析等應(yīng)用中的一種基 本的處理部件,它能滿足濾波器對(duì)幅度和線性相位的嚴(yán)格要求,避免模擬 濾波器所無(wú)法克服的電壓漂移、溫度漂移和噪聲等問(wèn)題。有限沖激響應(yīng) (fir)濾波器能在設(shè)計(jì)任意幅頻特性的同時(shí)保證嚴(yán)格的線性相位特性。 因此在許多應(yīng)用領(lǐng)域都顯示了強(qiáng)大的生命力,具有重要應(yīng)用

4、意義。本文介 紹了用 vhdl 實(shí)現(xiàn)線性相位 fir(有限長(zhǎng)單位沖激響應(yīng))濾波器。提出了一 種基于 fpga 的 fir 濾波器設(shè)計(jì)方案。介紹了基于 fpga 的 fir 濾波器的數(shù) 字信號(hào)處理的算法設(shè)計(jì),采用直接型和轉(zhuǎn)置型的基本結(jié)構(gòu)來(lái)設(shè)計(jì),其運(yùn)算 效率明顯提高,并結(jié)合先進(jìn)的 eda 軟件進(jìn)行高效的設(shè)計(jì)和實(shí)現(xiàn),并給出了 用 quartus 運(yùn)行的仿真結(jié)果。該設(shè)計(jì)對(duì) fpga 硬件資源的利用高效合理, 用 vhdl 編程,在 pfga 中實(shí)現(xiàn)了高采樣率的 fir 濾波器。 關(guān)鍵字:關(guān)鍵字:fir 濾波器;fpga;vhdl;matlab;quartus abstract:abstract: di

5、gital filter is a fundamental device used in pronunciation d h 4 驗(yàn)算技術(shù)指標(biāo)是否滿足要求。求設(shè)計(jì)出的濾波器頻率響應(yīng)用下式計(jì)算: h()= 2.3.1 ; 即 h()=dtfth(n) j e 1 0 )( n n nh nj e j e 檢驗(yàn)是否滿足要求,如果 h()不滿足要求根據(jù)具體情況重復(fù) 2、3、4 步,直 j e 到滿足要求。 注:窗函數(shù)法是從時(shí)域出發(fā)的一種設(shè)計(jì)方法,若技術(shù)指標(biāo)在頻域給出的,則用 頻率采樣法設(shè)計(jì) fir 濾波器。本論文不涉及頻率采樣法設(shè)計(jì) fir 濾波器。 3 設(shè)計(jì)實(shí)例 設(shè)計(jì)理想 fir 線性濾波器,已知

6、 其它0 ,1 )( cc j d eh 故單位沖激響應(yīng)為 c lc dedenh n nj n nj d ) 2 1 () 2 1 ( 2 1 2 1 )( = ) 2 1 ( ) 2 1 sin() 2 1 (sin n n n n n n c 若 n 為奇數(shù),當(dāng) n=時(shí),由上式得 h()=1- 2 1n 2 1n c 當(dāng) n時(shí),=0 2 1 n ) 2 1 ( ) 2 1 (sin n n n n 設(shè)截止頻率,h(n)的長(zhǎng)度 n=21,則 fir 濾波器的 matlab 實(shí)現(xiàn)程序如下: 4 c clear; close all; n=21; wc=3*pi/4; n=0:n-1; r=(

7、n-1)/2; hdn=-sin(wc*(n-r)/pi/(n-r); if rem(n,2)=0 hdn(r+1)=1-(wc/pi); end hn1=fir1(n-1,wc/pi,high,boxcar(n); hn2=fir1(n-1,wc/pi,high,hamming(n); subplot(2,2,1) stem(n,hn1,.) line(0,20,0,0); title(矩形窗設(shè)計(jì)的 h(n); xlabel(n);ylabel(h(n); subplot(2,2,3) stem(n,hn2,.) line(0,20,0,0); title(hamming 窗設(shè)計(jì)的 h(n)

8、; xlabel(n);ylabel(h(n); hn11=fft(hn1,512); w=2*0:511/512; subplot(2,2,2) plot(w,20*log10(abs(hn11) grid; axis(0,2,-80,5); title(幅度特性); xlabel(w/pi);ylabel(幅度(db); hn22=fft(hn2,512); subplot(2,2,4) plot(w,20*log10(abs(hn22) grid axis(0,2,-80,5); title(幅度特性); xlabel(w/pi);ylabel(幅度(db); 用矩形窗和 hamming

9、 窗設(shè)計(jì)的 fir 高通濾波器 3 3 firfir 數(shù)字濾波器的數(shù)字濾波器的 fpgafpga 實(shí)現(xiàn)實(shí)現(xiàn) 在上一章中,我們已經(jīng)對(duì)數(shù)字濾波器的一般設(shè)計(jì)方法(窗函數(shù)法)進(jìn)行了 說(shuō)明。本章主要對(duì)數(shù)字濾波器的結(jié)構(gòu)進(jìn)行分析,展示 fir 轉(zhuǎn)置結(jié)構(gòu)濾波器原理 圖,以及如何用 fpga 實(shí)現(xiàn) fir 數(shù)字濾波器,即如何用 vhdl 編程并在 quartus中進(jìn)行邏輯綜合及時(shí)序仿真。 3.13.1 串行串行 firfir 濾波器原理濾波器原理 串行結(jié)構(gòu) 的最大優(yōu) 點(diǎn)是實(shí)現(xiàn) 簡(jiǎn)單,串 行設(shè)計(jì)只 需要一個(gè) 乘法器, 一個(gè)循環(huán) 移位寄存 器(或ram結(jié)構(gòu)),一個(gè)只讀存儲(chǔ)器。當(dāng)對(duì)電路運(yùn)行速度要求不高時(shí),采用此種結(jié)

10、構(gòu)將大大節(jié)省硬件資源。此時(shí)通過(guò)提高內(nèi)部時(shí)鐘方法,輸入信號(hào)數(shù)據(jù)率為1mhz 的16階串行濾波器,移位寄存器的觸發(fā)時(shí)鐘和計(jì)數(shù)器時(shí)鐘為16mhz,計(jì)數(shù)器給系 數(shù)rom地址產(chǎn)生權(quán)系數(shù)與移位寄存器串行輸出的數(shù)據(jù)乘法累加輸出。計(jì)數(shù)器每16 個(gè)時(shí)鐘給乘法累加器一個(gè)清零時(shí)鐘信號(hào)。 3.23.2 分布式算法基礎(chǔ)分布式算法基礎(chǔ) 傳統(tǒng)算法強(qiáng)調(diào)乘-累加(multiply-accumulate,mac)的。比如下式給出了線性 卷積和。 1 0 * l k knxkfnxnfny 對(duì)于每次采樣都需要進(jìn)行l(wèi)次連續(xù)乘法和l-1次加法操作來(lái)計(jì)算乘積之ny 和。這種做法所需的硬件電路規(guī)模比較大,而且電路的執(zhí)行速度也比較慢。對(duì) 于

11、傳統(tǒng)pdsp的mac,計(jì)算乘積還有另一種方法da算法。 分布式算法(distributed arithmetic,da)是一項(xiàng)重要的fpga技術(shù),廣泛應(yīng)用在 計(jì)算乘積和 中 1 0 , n n nxncxcy 當(dāng)使用傳統(tǒng)算法單元完成一個(gè)濾波周期時(shí),大約需要用n個(gè)mac循環(huán)。使用 流水線可以縮短這一數(shù)量,但也非常有限,仍舊非常長(zhǎng)。當(dāng)使用通用乘法器 (sop,sum of products)時(shí),這就成了一個(gè)簡(jiǎn)單問(wèn)題了。 為了理解da設(shè)計(jì)范例,考慮“乘積和”如下: 1 0 , n n nxncxcy = 1 1. 1 1 00nxncxcxc 假設(shè)系數(shù)是已知常數(shù),是變量。無(wú)符號(hào)da系統(tǒng)假設(shè)變量的表達(dá)

12、式ncnxnx 如下: 1 0 1 , 0,2 b b b b b nxnxnx 其其中表示的第位,而也就是的第次采樣,而內(nèi)積可以表示nxbnxbnxxny 為: 1 0 1 0 2 n n b b b b kxncy 重新分別求和(分布式算法的由來(lái)),其結(jié)果如下: )20.2020(0 0 0 2 2 1 1 xxxcy b b b b +)20.2 1 2 1 (1 0 0 2 2 1 1 xxxc b b b b . . . +)2 1.22(1 0 0 1 1 nxnxnc b b = 1 111 2)1 1. 1 1 00( b bbb nxncxcxc + 2 222 2)1 1.

13、 1 1 00( b bbb nxncxcxc . . . + 0 000 2)1 1. 1 1 00(nxncxcxc 或者可以寫成簡(jiǎn)潔的如下形式: 1 0 1 0 1 0 1 0 ),(22 b b n n b b n n b b b b nxncfnxncy 函數(shù)的實(shí)現(xiàn)需要特別的注意。所指的實(shí)現(xiàn)方法就是利用一個(gè)lut實(shí)),(nxncf b 現(xiàn)映射。也就是說(shuō)字寬預(yù)先設(shè)定程序的lut接受一個(gè)n位輸入向),(nxncf b n 2 量 ,輸出為。各個(gè)映射都由1,.,1 ,0nxxxx bbbb ),(nxncf b ),(nxncf b 相應(yīng)的二次冪加權(quán)并累加。利用如下圖(b)所示的移位加法器

14、就能有效地實(shí)現(xiàn) 累加。在n次查詢循環(huán)后就完成了對(duì)內(nèi)積的運(yùn)算。y 3.33.3 直接型直接型 firfir 濾波器的原理結(jié)構(gòu)圖濾波器的原理結(jié)構(gòu)圖 數(shù)字濾波器通常都是應(yīng)用于修正或改變時(shí)域或頻域中信號(hào)的屬性。最為普 通的數(shù)字濾波器是線性時(shí)不變量(linear time-invariant,lti)濾波器。lti 與輸入信號(hào)之間相互作用,經(jīng)過(guò)一個(gè)稱為線性卷積的過(guò)程,表示為 y=f*x,其中 f 是濾波器的脈沖信號(hào),而 y 是卷積輸出。線性卷積過(guò)程定義如下: *nfnxny kk knxkfknfkx lti 數(shù)字濾波器通常分成有限脈沖響應(yīng)(finite impulse response,fir)和 無(wú)

15、限脈沖響應(yīng)(in finite impulse response,iir)兩類。帶有常系數(shù)的 fir 濾 波器是一種 lti(linear time-invariant,線性時(shí)不變量)數(shù)字濾波器。l 階或者 長(zhǎng)度為 l 的 fir 輸出對(duì)應(yīng)于輸入時(shí)間序列 xn的關(guān)系由一種有限卷積數(shù)量形式 給出,具體如下: yn=xx*fn= 3.3.1 1 0 l k knfkx 其中從f00一直到fl-10均是濾波器的l階的系數(shù),同時(shí)也對(duì)應(yīng)于 fir的脈沖響應(yīng)。對(duì)于lti系統(tǒng)可以更為方便的將(3.3.1)表達(dá)成z域內(nèi)的形式: y(z)=f(z)x(z) 其中f(z)是fir的傳遞函數(shù),其z域內(nèi)的定義形式如下

16、: f(z)= 1 0 l k k zkf 下圖給出了l階lti型fir濾波器的圖解??梢钥闯鰂ir濾波器是由一個(gè)“抽頭 延遲線”加法器和乘法器的集合構(gòu)成的。傳給每個(gè)乘法器的操作就是一個(gè)fir系 數(shù),顯然也可以稱作“抽頭權(quán)重” 。過(guò)去也將fir濾波器稱為“橫向?yàn)V波器” ,就 是說(shuō)它的“抽頭延遲線”結(jié)構(gòu)。 這種普通的直接型結(jié)構(gòu)是等到所有乘積產(chǎn)生之后再進(jìn)行相加來(lái)完成乘加運(yùn) 算的,它實(shí)質(zhì)上是一個(gè)分節(jié)的延遲線,每一節(jié)的輸出加權(quán)累加使得到濾波器的 輸出。這種做法所需的硬件電路規(guī)模比較大,而且電路的執(zhí)行速度也比較慢。 在實(shí)際應(yīng)用中,為了減少邏輯資源的占有量和提高系統(tǒng)的運(yùn)算速度,對(duì) fir 濾 波器需要進(jìn)行

17、優(yōu)化處理??紤]到 fir 濾波器的對(duì)稱性,本文首先對(duì)它的表達(dá)式 進(jìn)行優(yōu)化,然后在 fpga 實(shí)現(xiàn)中利用特有的查找表進(jìn)行優(yōu)化。 3.43.4 具有轉(zhuǎn)置結(jié)構(gòu)的具有轉(zhuǎn)置結(jié)構(gòu)的 firfir 濾波器濾波器 直接 fir 模型的一個(gè)變種稱為轉(zhuǎn)置式 fir 濾波器,可以根據(jù)上圖中的 fir 濾波 器來(lái)構(gòu)造: (1) 輸出互換 (2) 顛倒信號(hào)流的方向 (3) 用一個(gè)差分放大器代替一個(gè)加法器,反之亦然 轉(zhuǎn)置式 fir 濾波器結(jié)構(gòu)如下土圖所示,通常是指 fir 濾波器的實(shí)現(xiàn)。該濾波 器的優(yōu)點(diǎn)在于我們不在需要給 xn提供額外的移位寄存器,也沒(méi)有必要為達(dá)到 高吞吐量給乘積的加法器添加額外的流水線級(jí)。 下面的vhd

18、l代碼實(shí)現(xiàn)了長(zhǎng)為4的濾波器。 library lpm; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity fir_gen is generic(w1:integer:=9; w2:integer:=18; w3:integer:=19; w4:integer:=11; l:integer:=4; mpipe:integer:=3 ); port(clk :in std_logic; load_x:in std_logic; x_in:in std_

19、logic_vector(w1-1downto 0); c_in:in std_logic_vector(w1-1downto 0); y_out:out std_logic_vector(w4-1downto 0) ); end fir_gen; architecture flex of fir_gen is subtype n1bit is std_logic_vector(w1-1downto 0); subtype n2bit is std_logic_vector(w2-1downto 0); subtype n3bit is std_logic_vector(w3-1downto

20、0); type array_nibit is array(0 to l-1)of n1bit; type array_n2bit is array(0 to l-1)of n2bit; type array_n3bit is array(0 to l-1)of n3bit; signal x: n1bit; signal y: n3bit; signal c: array_n1bit; signal p: array_n2bit; signal a: array_n3bit; begin load:process begin wait until clk=1; if(load_x=0)the

21、n c(l-1)=c_in; for i inl-2downto 0 loop c(i)=c(i+1); end loop; else x=x_in; end if; end process load; sop:process(clk) begin if clkevent and (clk=1)then for i in 0 to l-2 loop a(i)=(p(i)(w2-1) end loop; a(l-1)=p(l-1)(w2-1) end if; yw1,lpm_widthb=w1, lpm_pipeline=mpipe, lpm_representation=signed, lpm

22、_widthp=w2, lpm_widths=w2) port map(clock=clk,data=x, datab=c(i),result=p(i); end generate; y_out=y(w3-1downto w3-w4); end flex; 通過(guò)quartus軟件編譯正確通過(guò),其rtl級(jí)結(jié)構(gòu)如下圖所示: 具體過(guò)程的第一步是load,如果load_x=0,就將系數(shù)下載到抽頭延遲線上。 否則就將數(shù)據(jù)字下載到x寄存器中,第二步稱為sop,執(zhí)行乘積和的計(jì)算,對(duì)乘 積p(i)進(jìn)行一位有符號(hào)擴(kuò)展,并加到前面的部分乘積上。還要注意所有的乘法 器都由generate聲明來(lái)舉例說(shuō)明的,這一聲明允

23、許額外流水線級(jí)的分配。最后, 輸出y_out被賦以sop除以256的植,因?yàn)槭孪燃俣ǖ南禂?shù)都是分?jǐn)?shù)形式的(也就 是) 。設(shè)計(jì)使用了890個(gè)lc,以46。72mhz的registered performance0 . 1kf 運(yùn)行。 要仿真這一長(zhǎng)度為4的濾波器,先來(lái)研究一下daubechies db4濾波器系數(shù): g(z)=(1+)+(3+)+(3-)+(1-)33 1 z3 2 z3 3 z 24 1 g(z)=0.48301+0.8365+0.2241-0.1294 1 z 2 z 3 z 將系數(shù)量化成8位(加上符號(hào)位)精度模式,結(jié)果如下: g(z)=(124+214+57-33)/256

24、1 z 2 z 3 z =+ 256 124 1 256 214 z 2 256 57 z) 256 33 ( 3 z 下載了daubechies濾波器系數(shù)的4抽頭可編程fir濾波器仿真 從波形圖可以看出在前面4個(gè)階段,我門將系數(shù)124,214,57,-33下載到 抽頭延遲線。接下來(lái)通過(guò)將100下載到 x寄存器中來(lái)核對(duì)濾波器的脈沖響應(yīng)。首 次有效輸出出現(xiàn)在450ns之后,就像我們?cè)诓ㄐ螆D上看到的一樣。 4 4 結(jié)論與總結(jié)結(jié)論與總結(jié) 數(shù)字濾波器日益發(fā)展,逐漸取代了傳統(tǒng)的模擬濾波器,在數(shù)字信號(hào)處理方 面取得了長(zhǎng)足的發(fā)展。由于 fir 濾波器具有 iir 濾波器所沒(méi)有的線性相位,在 實(shí)現(xiàn)方面比較容易

25、,所以具有廣泛的應(yīng)用。本課題的主要設(shè)計(jì)任務(wù)就是要用 fpga 實(shí)現(xiàn) fir 數(shù)字濾波器,主要討論了 fir 數(shù)字濾波器串行低通結(jié)構(gòu)。 普通的直接型結(jié)構(gòu)直觀,但是當(dāng)濾波器的階數(shù)比較大時(shí),它實(shí)現(xiàn)起來(lái)就比 較困難,不但又大量的運(yùn)算,而且運(yùn)算的速度也非常慢。對(duì)于 fir 數(shù)字濾波器 的 fpga 實(shí)現(xiàn),本文用了 vhdl 語(yǔ)言進(jìn)行了編程,具體是以一個(gè)轉(zhuǎn)置結(jié)構(gòu)的 fir 濾波器為例。利用 vhdl 語(yǔ)言,采用可重復(fù)配置的 fpga,降低了設(shè)計(jì)成本,提 高了系統(tǒng)的適用性。由于 fir 濾波器的系數(shù)是常數(shù),可以保存在 rom 中,在運(yùn) 算的通過(guò)查找表的方法可很快得到乘法輸出,減少了使用的資源和布線延時(shí), 節(jié)省了運(yùn)算時(shí)間。 vhdl 設(shè)計(jì)的驗(yàn)證綜合等過(guò)程需要借助 vhdl 的工具軟件來(lái)完成。本文采用 可將 vhdl 描述轉(zhuǎn)換為 fpga 實(shí)現(xiàn)的工具 quartus軟件。它是國(guó)內(nèi)比較常用的 一種仿真軟件,本次設(shè)計(jì)所用的是 quartus,quartus的邏輯綜合工具為 vhdl 語(yǔ)言設(shè)計(jì)能充分利用芯片的特點(diǎn)提供了有利條件。而且本設(shè)計(jì)中所用到的 flex 系列芯片,其特有的結(jié)構(gòu)能夠使 vhdl 語(yǔ)言的存儲(chǔ)器設(shè)計(jì)事半功倍。 在本次畢業(yè)設(shè)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論