DSP 第17講 FIR濾波器的實現(xiàn)_第1頁
DSP 第17講 FIR濾波器的實現(xiàn)_第2頁
DSP 第17講 FIR濾波器的實現(xiàn)_第3頁
DSP 第17講 FIR濾波器的實現(xiàn)_第4頁
DSP 第17講 FIR濾波器的實現(xiàn)_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第6章 應用程序設(shè)計6.1 FIR濾波器的DSP實現(xiàn) 在數(shù)字信號處理中,濾波占有極其重要的地位。數(shù)字濾波是語音處理、圖像處理、模式識別、頻譜分析等應用中的基本處理算法。用DSP芯片實現(xiàn)數(shù)字濾波除了具有穩(wěn)定性好、精確度高、不受環(huán)境影響等優(yōu)點外,還具有靈活性好等特點。 數(shù)字濾波器是DSP的基本應用,分為有限沖激響應濾波器FIR和無限沖激響應濾波器IIR。 本節(jié)主要討論FIR濾波器的基本結(jié)構(gòu)、設(shè)計方法和DSP實現(xiàn)方法。 2022/8/121DSP原理及應用第6章 應用程序設(shè)計6.1 FIR濾波器的DSP實現(xiàn) 6.1.1 FIR濾波器的基本結(jié)構(gòu) 數(shù)字濾波是將輸入的信號序列,按規(guī)定的算法進行處理,從而得

2、到所期望的輸出序列。 一個線性位移不變系統(tǒng)的輸出序列y(n)和輸入序列x(n)之間的關(guān)系,應滿足常系數(shù)線性差分方程: (6.1.1) x(n): 輸入序列,y(n): 輸出序列,ai、bi : 濾波器系數(shù), N: 濾波器的階數(shù)。 2022/8/122DSP原理及應用第6章 應用程序設(shè)計6.1.1 FIR濾波器的基本結(jié)構(gòu) 在式(6.1.1)中,若所有的ai均為0,則得FIR濾波器的差分方程: (6.1.2) 對式(6.1.2)進行z變換,可得FIR濾波器的傳遞函數(shù): (6.1.3) 2022/8/123DSP原理及應用第6章 應用程序設(shè)計6.1.1 FIR濾波器的基本結(jié)構(gòu) FIR濾波器的結(jié)構(gòu) :

3、 z-1z-1 +x(n)y(n)x(n-1)x(n-N+1)b0b1bN-2bN-1z-12022/8/124DSP原理及應用第6章 應用程序設(shè)計6.1.1 FIR濾波器的基本結(jié)構(gòu) FIR濾波器的單位沖激響應h(n)為有限長序列。 偶對稱線性相位FIR濾波器的差分方程: N偶數(shù) (6.1.4) 若h(n)為實數(shù),且滿足偶對稱或奇對稱的條件,則FIR濾波器具有線性相位特性。 偶對稱:h(n)= h(N-1-n); 奇對稱:h(n)= -h(N-1-n)。2022/8/125DSP原理及應用第6章 應用程序設(shè)計6.1.1 FIR濾波器的基本結(jié)構(gòu) 在數(shù)字濾波器中,F(xiàn)IR濾波器具有如下幾個主要特點:

4、 FIR濾波器無反饋回路,是一種無條件穩(wěn)定系統(tǒng); FIR濾波器可以設(shè)計成具有線性相位特性。 2022/8/126DSP原理及應用第6章 應用程序設(shè)計6.1 FIR濾波器的DSP實現(xiàn) 6.1.2 FIR濾波器的設(shè)計方法 設(shè)計FIR濾波器的基本方法之一,是用有限項傅氏級數(shù)來逼近所要求的濾波器響應。 1. 用傅氏級數(shù)設(shè)計FIR濾波器 Hd()的傅氏級數(shù): (6.1.5) = f / fs為歸一化頻率,fs為采樣頻率,T =2f / fs = 2。2022/8/127DSP原理及應用第6章 應用程序設(shè)計6.1.2 FIR濾波器的設(shè)計方法 系數(shù)Cn的選擇可在最小均方誤差的條件下,使傳遞函數(shù)H(z)逼近H

5、d()來決定。 1. 用傅氏級數(shù)設(shè)計FIR濾波器 (6.1.6) 且C-n = Cn。 設(shè)Hd()為偶函數(shù), 則 n 0 (6.1.7) 2022/8/128DSP原理及應用第6章 應用程序設(shè)計 理想的傳遞函數(shù)Hd()有無限多個系數(shù)Cn,而實際的濾波器的系數(shù)只能有有限多個。因此,可以將式(6.1.7)中的無限項級數(shù)進行截取,得到近似的傳遞函數(shù): 1. 用傅氏級數(shù)設(shè)計FIR濾波器 (6.1.8) | | 0時,對應的Cnzn項代表的是一個非因果的濾波器,即輸出先于輸入,要得到n時刻的輸出響應需用到n+1時刻的輸出響應。 2022/8/1210DSP原理及應用第6章 應用程序設(shè)計 令i = -(n

6、-Q),作變量置換得 1. 用傅氏級數(shù)設(shè)計FIR濾波器 0 i 2Q (6.1.11) 令bi = CQ-i,N -1 = 2Q,則H(z)的表達式為 0 i N -1 (6.1.12) 當N-1=2Q時, b0= CQ、b1= CQ-1、b2= CQ-2、 bQ= C0、bQ+1= C1、 b2Q-1= C-Q+1、b2Q= C-Q。 當N=2Q+1時,系數(shù)bi是關(guān)于bQ對稱的,即bi=CQ-i且Cn=C-n 2022/8/1211DSP原理及應用第6章 應用程序設(shè)計 例如,當Q = 5時,濾波器的11個系數(shù)如下: 1. 用傅氏級數(shù)設(shè)計FIR濾波器 b0 = b10 = C5 b1 = b9

7、 = C4 b2 = b8 = C3 b3 = b7 = C2 b4 = b6 = C1 b5 = C0 根據(jù)卷積公式得 (6.1.13) 由上述公式可實現(xiàn)FIR濾波器,其響應由N項構(gòu)成。 2022/8/1212DSP原理及應用第6章 應用程序設(shè)計6.1.2 FIR濾波器的設(shè)計方法 FIR濾波器分為低通濾波、高通濾波、帶通濾波和帶阻濾波,其設(shè)計可根據(jù)給出的濾波特性,通過下式計算系數(shù)Cn來實現(xiàn)。 2. 濾波器的設(shè)計 n 0 2022/8/1213DSP原理及應用第6章 應用程序設(shè)計 設(shè)低通濾波器的截止頻率為fc,采樣頻率為fs,則系數(shù)表達式: 2. 濾波器的設(shè)計 (6.1.14) (1) 低通濾

8、波器的設(shè)計 2022/8/1214DSP原理及應用第6章 應用程序設(shè)計 高通濾波器可以由一個幅度為1的響應減去一個低通濾波的響應來獲得,如圖所示。 2. 濾波器的設(shè)計 (n)響應 (2) 高通濾波器的設(shè)計 11fc1f00f0ffc(n)函數(shù)的表達式: 低通濾波 高通濾波 (n) = 1 n = 0 0 n 0 高通濾波器的系數(shù): 2022/8/1215DSP原理及應用第6章 應用程序設(shè)計 帶通濾波器可以由兩個截止頻率不同的低通濾波器獲得,如圖所示。 2. 濾波器的設(shè)計 低通濾波2 (3) 帶通濾波器的設(shè)計 11fc11f00f0ffc1低通濾波1 帶通濾波 帶通濾波器的系數(shù),等于兩個低通濾波

9、器的系數(shù)之差: fc2fc2 fc1和fc2為低通濾波器的截止頻率,fs為采樣頻率。 2022/8/1216DSP原理及應用第6章 應用程序設(shè)計 帶阻濾波器可由(n)和帶通濾波器相減獲得,如圖所示。 2. 濾波器的設(shè)計 (n)響應(4) 帶阻濾波器的設(shè)計 11fc11f00f0ffc1帶通濾波 帶阻濾波 帶阻濾波器的系數(shù): fc2fc22022/8/1217DSP原理及應用第6章 應用程序設(shè)計6.1 FIR濾波器的DSP實現(xiàn) 6.1.3 FIR濾波器的MATLAB設(shè)計 MATLAB是一種功能強、效率高、便于進行科學和工程計算的交互式軟件包,它集數(shù)值分析、矩陣運算、信號處理和圖形顯示于一體,為用

10、戶提供了方便、友好的界面環(huán)境。 MATLAB中的工具箱(Toolbox)包含了許多實用程序。它提供了多種FIR濾波器設(shè)計方法。 下面以標準頻率響應設(shè)計法fir1和任意頻率響應設(shè)計法fir2為例說明其使用方法。 2022/8/1218DSP原理及應用第6章 應用程序設(shè)計6.1.3 FIR濾波器的MATLAB設(shè)計 用來設(shè)計標準頻率響應的基于窗函數(shù)的FIR濾波器,可實現(xiàn)加窗線性相位FIR數(shù)字濾波器的設(shè)計。 1. fir1函數(shù) 語法: b=fir1(n,Wn) b=fir1(n,Wn,ftype) b=fir1(n,Wn,Window) b=fir1(n,Wn,ftype,Window) n:濾波器的

11、階數(shù);Wn:濾波器的截止頻率; ftype:用來決定濾波器的類型, 當ftype=high時,可設(shè)計高通濾波器; 當ftype=stop時,可設(shè)計帶阻濾波器。 Window:用來指定濾波器采用的窗函數(shù)類型, 其默認值為漢明(Hamming)窗。 2022/8/1219DSP原理及應用第6章 應用程序設(shè)計 使用fir1函數(shù)可設(shè)計標準的低通、高通、帶通和帶阻濾波器。 1. fir1函數(shù) (1) 采用漢明窗設(shè)計低通FIR濾波器 使用b=fir1(n,Wn)可得到低通濾波。0 Wn 1, Wn=1相當于0.5fs。 格式: b=fir1(n,Wn) 2022/8/1220DSP原理及應用第6章 應用程

12、序設(shè)計 使用fir1函數(shù)可設(shè)計標準的低通、高通、帶通和帶阻濾波器。 1. fir1函數(shù) (2) 采用漢明窗設(shè)計高通FIR濾波器 在b=fir1(n,Wn,ftype)中,當ftype=high時,可設(shè)計高通濾波器。 格式: b=fir1(n,Wn,high) 2022/8/1221DSP原理及應用第6章 應用程序設(shè)計 使用fir1函數(shù)可設(shè)計標準的低通、高通、帶通和帶阻濾波器。 1. fir1函數(shù) (3) 采用漢明窗設(shè)計帶通FIR濾波器 在b=fir1(n,Wn)中,當Wn= W1 W2 時,可得到帶通濾波器,其通帶為W1 wW2,W1和W2分別為通帶的下限頻率和上限頻率。 格式: b=fir1

13、(n, W1 W2 ) 2022/8/1222DSP原理及應用第6章 應用程序設(shè)計 使用fir1函數(shù)可設(shè)計標準的低通、高通、帶通和帶阻濾波器。 1. fir1函數(shù) (4) 采用漢明窗設(shè)計帶阻FIR濾波器 在b=fir1(n,Wn,ftype)中,當ftype= stop,Wn= W1 W2 時,fir1函數(shù)可得到帶阻濾波器。 格式: b=fir1(n, W1 W2 ,stop) 2022/8/1223DSP原理及應用第6章 應用程序設(shè)計1. fir1函數(shù) (5) 采用其他窗口函數(shù)設(shè)計FIR濾波器 使用Window參數(shù),可以用其他窗口函數(shù)設(shè)計出各種加窗濾波器。 Window參數(shù)可采用的窗口函數(shù)有

14、: Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默認時為Hamming窗。 例如,采用Bartlett窗設(shè)計帶阻濾波器,其格式: b=fir1(n, W1 W2 ,stop,Bartlett(n+1) 2022/8/1224DSP原理及應用第6章 應用程序設(shè)計1. fir1函數(shù) 注意:用fir1函數(shù)設(shè)計高通和帶阻濾波器時,所使用的階數(shù)n應為偶數(shù),當輸入的階數(shù)n為奇數(shù)時,fir1函數(shù)會自動將階數(shù)增加1形成偶數(shù)。 【例6.1.1】 采用Hamming窗設(shè)計一個48階FIR帶通濾波器,通帶為0.35 w 0.65。 解:采用fir1函數(shù)的程序格

15、式: b=fir1( 48, 0.35 0.65 ); 【例6.1.2】設(shè)計一個FIR高通濾波器,使用具有30dB波紋的Chebyshev窗,其階數(shù)為34,截止頻率為0.48。 解:采用fir1函數(shù)設(shè)計高通濾波器的程序格式為 Window = chebwin(35,30); b=fir1( 34,0.48,high,Window) ;2022/8/1225DSP原理及應用第6章 應用程序設(shè)計6.1.3 FIR濾波器的MATLAB設(shè)計 用來設(shè)計有任意頻率響應的各種加窗FIR濾波器。 2. fir2函數(shù) 語法: b=fir2(n,f,m) b=fir2(n,f,m,Window) b=fir2(n

16、,f,m,npt) b=fir2(n,f,m,npt,Window) b=fir2(n,f,m,npt,lap) b=fir2(n,f,m,nptt,lap,Window) 2022/8/1226DSP原理及應用第6章 應用程序設(shè)計2. fir2函數(shù) 說明: 參數(shù)n為濾波器的階數(shù); 參數(shù)f為頻率點矢量,且f0,1,f=1對應于0.5fs。矢量f按升序排列,且第一個元素必須為0,最后一個必須為1,并可以包含重復的頻率點; 參數(shù)m為幅度點矢量,在矢量m中包含了與f相對應的期望得到的濾波器幅度; 參數(shù)Window用來指定所使用的窗函數(shù)類型,其默認值為漢明(Hamming)窗; 參數(shù)npt用來指定fi

17、r2函數(shù)對頻率響應進行內(nèi)插的點數(shù); 參數(shù)lap用來指定fir2函數(shù)在重復頻率點附近插入的區(qū)域大小。 2022/8/1227DSP原理及應用第6章 應用程序設(shè)計2. fir2函數(shù) 【例6.1.3】 設(shè)計一個30階的低通FIR濾波器,其截止頻率為0.6。 解:采用fir2函數(shù)的程序格式: f = 0 0.6 0.6 1 ; m = 1 1 0 0 ; b=fir2(30,f,m); 在使用MATLAB設(shè)計FIR濾波器時,還可以使用freqz( )和plot( )函數(shù)。 freqz( )函數(shù):可求出傳遞函數(shù)的幅頻響應和相頻響應; plot( )函數(shù):可繪出濾波器的幅頻響應和相頻響應曲線。 2022/

18、8/1228DSP原理及應用第6章 應用程序設(shè)計2. fir2函數(shù) 例如,在例6.1.1例6.1.3中,若希望得到濾波器的特性,可使用freqz()函數(shù),其格式: freqz(b,1,512) 得濾波器的特性如圖。 2022/8/1229DSP原理及應用第6章 應用程序設(shè)計2. fir2函數(shù) 例6.1.1 帶通濾波器的特性2022/8/1230DSP原理及應用第6章 應用程序設(shè)計2. fir2函數(shù) 例6.1.2 高通濾波器的特性2022/8/1231DSP原理及應用第6章 應用程序設(shè)計2. fir2函數(shù) 例6.1.3 低通濾波器的特性2022/8/1232DSP原理及應用第6章 應用程序設(shè)計6

19、.1 FIR濾波器的DSP實現(xiàn) 6.1.4 FIR濾波器的DSP實現(xiàn) FIR濾波器的輸出表達式: y(n)=b0 x(n)+b1x(n-1)+ +bn-1x(n-N+1) (6.1.18) bi為濾波器系數(shù),x(n)為濾波器在n時刻的輸入,y(n)為n時刻的輸出。 基本算法: 采用乘法累加運算。即不斷地輸入樣本x(n),經(jīng)過z-1延時后,再進行乘法-累加,最后輸出濾波結(jié)果y(n)。 2022/8/1233DSP原理及應用第6章 應用程序設(shè)計6.1.4 FIR濾波器的DSP實現(xiàn) 1. z-1算法的實現(xiàn) 常用的方法: 線性緩沖區(qū)法 循環(huán)緩沖區(qū)法。 (1) 線性緩沖區(qū)法 又稱延遲線法。 特點: 在數(shù)

20、據(jù)存儲器中開辟一個N單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本; 從最老樣本開始取數(shù),每取一個數(shù)后,樣本向下移位; 讀完最后一個樣本后,輸入最新樣本并存入緩沖區(qū)的頂部。 2022/8/1234DSP原理及應用第6章 應用程序設(shè)計1. z-1算法的實現(xiàn) (1) 線性緩沖區(qū)法 緩沖區(qū):數(shù)據(jù)存儲器 頂部為低地址單元,存放最新樣本;緩沖區(qū)頂部最新樣本 底部為高地址單元,存放最老樣本;緩沖區(qū)底部最老樣本 指針ARx指向緩沖區(qū)底部。 ARx2022/8/1235DSP原理及應用第6章 應用程序設(shè)計(1) 線性緩沖區(qū)法最新樣本數(shù)據(jù)存儲器最老樣本ARx求y(n)的過程:算法:x(n)x(n-1)x(n-

21、2)x(n-3)x(n-4)x(n-5)x(n-6)x(n-7)取數(shù)、移位和運算: 以ARx為指針,按x(n-7)x(n)的順序取數(shù),每取一次數(shù)后,數(shù)據(jù)向下移一位,并完成一次乘法累加運算; 當經(jīng)過8次取數(shù)、移位和運算后,得y(n); 求得y(n)后,輸入新樣本x(n+1),存入緩沖區(qū)頂部單元; 修改指針ARx,指向緩沖區(qū)的底部。 2022/8/1236DSP原理及應用第6章 應用程序設(shè)計(1) 線性緩沖區(qū)法最新樣本數(shù)據(jù)存儲器最老樣本ARx求y(n)的過程:算法:x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)x(n-7)ARxx(n-7)ARxx(n-6)y(n

22、)=y7=b7x(n-7)+0 x(n-6)ARxx(n-5)y(n)=y6=b6x(n-6)+y7x(n-5)ARxx(n-4)y(n)=y5=b5x(n-5)+y6x(n-4)ARxx(n-3)y(n)=y4=b4x(n-4)+y5x(n-3)ARxx(n-2)y(n)=y3=b3x(n-3)+y4x(n-2)ARxx(n-1)y(n)=y2=b2x(n-2)+y3x(n-1)ARxx(n)y(n)=y1=b1x(n-1)+y2x(n)y(n)=b0 x(n)+y1PORTRx(n+1)ARx結(jié)果: y(n)2022/8/1237DSP原理及應用第6章 應用程序設(shè)計(1) 線性緩沖區(qū)法求y

23、(n+1)的過程:算法:數(shù)據(jù)存儲器ARxx(n+1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)結(jié)果: y(n)取數(shù)順序: x(n-6)x(n+1)x(n-5)x(n-4)x(n-3)x(n-2)x(n-1)x(n)x(n+1)最新樣本: x(n+2) x(n+2) y(n+1) y(n+2) y(n+3) y(n+4) y(n+5) y(n+6) y(n+7)數(shù)據(jù)存儲器x(n+8)x(n+7)x(n+6)x(n+5)x(n+4)x(n+3)x(n+2)x(n+1)ARx2022/8/1238DSP原理及應用第6章 應用程序設(shè)計(1) 線性緩沖區(qū)法 Z-1的

24、運算是通過執(zhí)行存儲器延時指令來實現(xiàn)的。即將數(shù)據(jù)存儲器中的數(shù)據(jù)向較高地址單元移位來進行延時。 其指令: DELAY Smem ;(Smem) Smem+1 DELAY *AR3- ;AR3指向源地址 將延時指令與其他指令結(jié)合使用,可在同樣的機器周期內(nèi)完成這些操作。例如: LD + DELAY LTDMAC + DELAY MACD 2022/8/1239DSP原理及應用第6章 應用程序設(shè)計(1) 線性緩沖區(qū)法注意:用線性緩沖區(qū)實現(xiàn)z-1運算時,緩沖區(qū)的數(shù)據(jù)需要移動,這樣在一個機器周期內(nèi)需要一次讀和一次寫操作。因此,線性緩沖區(qū)只能定位在DARAM中。 優(yōu)點: 在存儲器中新老數(shù)據(jù)的位置直觀明了。 2

25、022/8/1240DSP原理及應用第6章 應用程序設(shè)計1. z-1算法的實現(xiàn) (2)循環(huán)緩沖區(qū)法 特點: 在數(shù)據(jù)存儲器中開辟一個N個單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本; 從最新樣本開始取數(shù); 讀完最老樣本后,輸入最新樣本來代替最老樣本,而其他數(shù)據(jù)位置不變; 用BK寄存器對緩沖區(qū)進行間接尋址,使緩沖區(qū)地址首尾相鄰。 2022/8/1241DSP原理及應用第6章 應用程序設(shè)計(2)循環(huán)緩沖區(qū)法 緩沖區(qū): 數(shù)據(jù)存儲器 頂層為低地址單元,存放最新樣本;x(n) 底層為高地址單元,存放最老樣本;x(n-7)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6) ARx指

26、向最新樣本單元。 ARx算 法: 計算過程: 以ARx為指針,按順序取數(shù),并修改指針; x(n)ARx x(n-1)ARx x(n-2)ARx x(n-3)ARx x(n-4)ARx x(n-5)ARx x(n-6)ARx x(n-7)ARx 每取1次數(shù)后,完成1次乘法累加計算; y(n)=y0=b0 x(n)+0y(n)=y1=b1x(n-1)+y0y(n)=y2=b2x(n-2)+y1y(n)=y3=b3x(n-3)+y2y(n)=y4=b4x(n-4)+y3y(n)=y5=b5x(n-5)+y4y(n)=y6=b5x(n-6)+y5y(n)=y7=b5x(n-7)+y62022/8/12

27、42DSP原理及應用第6章 應用程序設(shè)計(2)循環(huán)緩沖區(qū)法 數(shù)據(jù)存儲器x(n)x(n-7)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)算 法: 計算過程: 每取1次數(shù)后,完成1次乘法累加計算; 求得y(n)后,輸入新樣本替代最老樣本; x(n+1)x(n+1) 修改指針ARx,指向最新樣本單元。 ARx 求y(n): 取數(shù)順序:x(n)x(n-7) 最新樣本:x(n+1) ARx:指向x(n+1)單元 求y(n+1): 取數(shù)順序:x(n+1)x(n-6) 最新樣本:x(n+2) ARx:指向x(n+2)單元 數(shù)據(jù)存儲器x(n)x(n+1)x(n-1)x(n-2)x(

28、n-3)x(n-4)x(n-5)x(n+2)ARx 求y(n+2): 取數(shù)順序:x(n+2)x(n-5) 最新樣本:x(n+3) ARx:指向x(n+3)單元 數(shù)據(jù)存儲器x(n)x(n+1)x(n-1)x(n-2)x(n-3)x(n-4)x(n+3)x(n+2)ARx2022/8/1243DSP原理及應用第6章 應用程序設(shè)計(2)循環(huán)緩沖區(qū)法 循環(huán)緩沖區(qū)的優(yōu)點: 緩沖區(qū)數(shù)據(jù)不需要移動; 可以使用SARAM存儲器。 實現(xiàn)N個循環(huán)緩沖區(qū)單元首尾相鄰,可用BK寄存器按模間接尋址來實現(xiàn)。 常用指令: *ARx+% ;增量、按模修正ARx addr=ARx,ARx=circ(ARx+1) *ARx-%

29、;減量、按模修正ARx addr=ARx,ARx=circ(ARx-1) *ARx+0% ;增AR0、按模修正ARx addr=ARx,ARx=circ(ARx+AR0) *ARx-0% ;減AR0、按模修正ARx addr=ARx,ARx=circ(ARx-AR0) *+ARx(1K)% ;加(1K)、按模修正ARx addr=circ(ARx+1K),ARx=circ(ARx+1K)2022/8/1244DSP原理及應用第6章 應用程序設(shè)計(2)循環(huán)緩沖區(qū)法 circ是根據(jù)BK寄存器中的緩沖區(qū)長度,對(ARx +1)、(ARx-1)、(ARx+AR0)、(ARx-AR0)和(ARx+1k)

30、的值進行取模,使指針ARx指向緩沖區(qū),實現(xiàn)循環(huán)緩沖區(qū)首尾相鄰。 例如:(BK)=N=8,(AR1)=0060h,用*AR1+%間接尋址。 第一次尋址后,AR1指向0061h單元; 第二次尋址后,AR1指向0062h單元; 第八次尋址后,AR1指向0068h單元; 將BK按8取模,AR1回到0060h單元。2022/8/1245DSP原理及應用第6章 應用程序設(shè)計(2)循環(huán)緩沖區(qū)法 循環(huán)尋址的算法: if 0index+step BK index=index+step else if index+stepBK index=index+step-BK else if index+step N。要求

31、:例如:N=31,k的最小值為5,則緩沖區(qū)的起始地址:XXXX XXXX XXX0 0000B 若N=32,k的最小值為6,緩沖區(qū)的起始地址:XXXX XXXX XX00 0000B2022/8/1247DSP原理及應用第6章 應用程序設(shè)計6.1.4 FIR濾波器的DSP實現(xiàn) 2. FIR濾波器的實現(xiàn) C54x提供的乘法-累加指令MAC和循環(huán)尋址方式,可使FIR數(shù)字濾波器在單周期內(nèi)完成每個樣值的乘法 -累加計算。而每個樣值的乘法-累加計算,可采用RPTZ和MAC指令結(jié)合循環(huán)尋址方式來實現(xiàn)。 為了實現(xiàn)對應項乘積運算,輸入的樣值x(n)和濾波系數(shù)bi必須合理的存放,并正確初始化存儲塊和塊指針。樣值

32、x(n)和濾波系數(shù)bi的存放可用線性緩沖區(qū)或循環(huán)緩沖區(qū)實現(xiàn)。 2022/8/1248DSP原理及應用第6章 應用程序設(shè)計2. FIR濾波器的實現(xiàn) (1) 用線性緩沖區(qū)實現(xiàn)FIR濾波器 設(shè)N=7,F(xiàn)IR濾波器的算法: y(n)=b0 x(n)+b1x(n-1)+b5x(n-5) +b6x(n-6)數(shù)據(jù)存儲器暫存y(n)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)程序存儲器b6b5b4b3b2b1b0 xb雙操作數(shù)尋址指令:MACD *AR1-,b,A功能:A=A+(AR1)(b), AR1-1AR1,(AR1)(AR1+1)AAR1x(n-6)b6x(n-6)

33、b6x(n-6)+Ab6x(n-6)+AAR1x(n-5)2022/8/1249DSP原理及應用第6章 應用程序設(shè)計(1) 用線性緩沖區(qū)實現(xiàn)FIR濾波器 程序清單: .title “FIR1.ASM” .mmregs .def start x .usect “x”,8 PA0 .set 0 PA1 .set 1 .data COEF: .word 1*32768/10 .word 2*32768/10 .word -4*32768/10 .word 3*32768/10 .word -4*32768/10 .word 2*32768/10 .word 1*32768/10 ;自定義數(shù)據(jù)空間 x

34、數(shù)據(jù)存儲器暫存y(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6) 定義系數(shù)bi程序存儲器 COEFb6 ;定義b6=0.1 ;定義b5=0.2 ;定義b4=-0.4 ;定義b3=0.3 ;定義b2=-0.4 ;定義b1=0.2 ;定義b0=0.1b5b4b3b2b1b0 x(n)2022/8/1250DSP原理及應用第6章 應用程序設(shè)計(1) 用線性緩沖區(qū)實現(xiàn)FIR濾波器 x數(shù)據(jù)存儲器暫存y(n)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)程序存儲器 COEFb6b5b4b3b2b1b0程序清單: .textstart: SSB

35、X FRCT STM #x+7,AR2 STM #6,AR0 LD #x+1,DP PORTR PA1,x+1FIR1: RPTZ A,#6 MACD *AR2-,COEF,A STH A,*AR2 PORTW *AR2+,PA0 BD FIR1 PORTR PA1,*AR2+0 .end A;設(shè)置小數(shù)乘法 ;設(shè)置AR2 AR2;設(shè)置復位值A(chǔ)R0=6 ;設(shè)置緩沖區(qū)首地址 ;輸入x(n) x(n);A清0,設(shè)置迭代次數(shù) 00 0000 0000;7次乘法累加和移位 b6x(n-6)AR2x(n-5)A+b5x(n-5)AR2x(n-4)A+b4x(n-4)AR2x(n-3)A+b3x(n-3)A

36、R2x(n-2)A+b2x(n-2)AR2x(n-1)A+b1x(n-1)x(n)A+b0 x(n)AR2AR2y(n-1);暫存y(n)y(n);輸出y(n),修改AR2 AR2;循環(huán);輸入最新數(shù)據(jù), 修改AR2=AR2+AR0 x(n+1)AR22022/8/1251DSP原理及應用第6章 應用程序設(shè)計2. FIR濾波器的實現(xiàn) (2) 用循環(huán)緩沖區(qū)實現(xiàn)FIR濾波器 設(shè)N=7,F(xiàn)IR濾波器的算法: y(n)=b0 x(n)+b1x(n-1)+b5x(n-5) +b6x(n-6)DARAMy(n)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)DARAMb0b1

37、b2b3b4b5b6yb0 xn2022/8/1252DSP原理及應用第6章 應用程序設(shè)計(2) 用循環(huán)緩沖區(qū)實現(xiàn)FIR濾波器 程序清單: .title “FIR2.ASM” .mmregs .def start .bss y,1xn .usect “xn”,7b0 .usect “b0”,7PA0 .set 0PA1 .set 1 .datatable: .word 1*32768/10 .word 2*32768/10 .word 3*32768/10 .word 4*32768/10 .word 5*32768/10 .word 6*32768/10 .word 7*32768/10DA

38、RAMy(n-1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)b0b1b2b3b4x(n-5)x(n-6)b5b6;源文件標題 ;定義MMR寄存器符號名 ;定義模塊 ;給y保留1個空間 y;給xn段保留7個空間 xn;給b0段保留7個空間 b0;PA0賦值為0 ;PA1賦值為1 ;從ROM的table定義數(shù)據(jù);定義0.1;定義0.2;定義0.3;定義0.4;定義0.5;定義0.6;定義0.7ROMtable0.10.20.30.40.50.60.72022/8/1253DSP原理及應用第6章 應用程序設(shè)計 .text start: SSBX FRCT STM #b0,AR1 RPT

39、 #6 MVPD table,*AR1+ STM #xn+6,AR2 STM #b0+6,AR3 STM #7,BK STM #-1,AR0 LD #xn,DP PORTR PA1,xnFIR2: RPTZ A,#6 MAC *AR2+0%,*AR3+0%,A STH A,y PORTW y,PA0 BD FIR2 PORTR PA1,*AR2+0% .end DARAMy(n-1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)b0b1b2b3b4x(n-5)x(n-6)b5b6yxnb0A;設(shè)置小數(shù)乘法 ;AR1指向b0 AR1;設(shè)置傳輸次數(shù) ROMtable0.10.20.30.

40、40.50.60.7;系數(shù)傳輸至數(shù)據(jù)區(qū) 0.10.1AR10.20.2AR10.30.3AR10.40.4AR10.50.5AR10.60.6AR10.70.7AR1;AR2指向x(n-6)單元 AR2;AR3指向b6單元 AR3;設(shè)置緩沖區(qū)長度 ;設(shè)置雙操作數(shù)增量 ;設(shè)置頁指針 ;輸入x(n) x(n);A清0,設(shè)置迭代次數(shù)00 0000 0000;雙操作數(shù)乘法累加x(n-6)0.70.7x(n-6)+0AR2AR3x(n-5)0.60.6x(n-5)+AAR2AR3x(n-4)0.50.5x(n-4)+AAR2AR3x(n-3)0.40.4x(n-3)+AAR2AR3x(n-2)0.30.

41、3x(n-2)+AAR2AR3x(n-1)0.20.2x(n-1)+AAR2AR3x(n)0.10.1x(n)+AAR2AR3;存儲y(n)y(n);輸出y(n);循環(huán);輸入最新x(n+1),修正AR2x(n+1)AR22022/8/1254DSP原理及應用第6章 應用程序設(shè)計鏈接命令文件: FIR2.objvectors.obj-o FIR2.out-m FIR2.map-e startMEMORY PAGE0: EPROM:org=0E000h, len=1000h VECS: org=0FF80h, len=0080h PAGE1: SPRAM:org=0060h, len=0020h

42、DARAM:org=0080h, len=1380h ;選定的目標文件 ;生成FIR4的輸出文件 ;生成FIR4的存儲器映像文件 ;定義源程序的入口地址 ;定義目標存儲器空間 ;第0頁:程序存儲器 ;EPROM的起始地址:E000h 長度:4K ; VECS的起始地址:FF80h 長度:0080h ;第1頁:數(shù)據(jù)存儲器 ; SPRAM的起始地址:0060h 長度:0020h ; DARAM的起始地址:0080h 長度:1380h 存儲空間ROMRAMEPROMEPROM0E0004k0EFFFVECSVECS0FF8080h0FFEFSPRAMSPRAM006020h007FDARAMDARA

43、M00801380h13EF2022/8/1255DSP原理及應用第6章 應用程序設(shè)計鏈接命令文件: SECTIONS .text:EPROM PAGE 0 .data:EPROM PAGE 0 .bss :SPRAM PAGE 1 xn:align(8)DARAM PAGE 1 b0:align(8)DARAM PAGE 1 .vections:VECS PAGE 0;在存儲器中定義輸出段的位置;text段定位在程序存儲器 即源程序位于程序存儲器;系數(shù)區(qū)定義在程序存儲器 ;bss段定義在暫存器 ; 從xn起8個單元定義在DARAM;從b0起8個單元定義在DARAM;vections定義在VE

44、CS區(qū)2022/8/1256DSP原理及應用第6章 應用程序設(shè)計2. FIR濾波器的實現(xiàn) (3) 系數(shù)對稱FIR濾波器的實現(xiàn) 系數(shù)對稱FIR濾波器具有線性相位的特性,在數(shù)字信號處理中應用十分廣泛,常用于相位失真要求較高的場合。 設(shè)濾波器N=8,若系數(shù)bn =bN-1-n,則為對稱FIR濾波器。其輸出方程: y(n) = b0 x(n)+b1x(n-1)+b2x(n-2)+b3x(n-3) +b3x(n-4)+b2x(n-5)+b1x(n-6)+b0 x(n-7) = b0 x(n)+x(n-7) + b1 x(n-1)+x(n-6) +b2 x(n-2)+x(n-5) +b3 x(n-3)+x

45、(n-4) 需要: 4次乘法 7次加法2022/8/1257DSP原理及應用第6章 應用程序設(shè)計(3) 系數(shù)對稱FIR濾波器的實現(xiàn) 對稱FIR濾波器的實現(xiàn)方法: 在RAM中開辟兩個N/2長度的循環(huán)緩沖區(qū)New和Old ,分別存放N/2個新數(shù)據(jù)和老數(shù)據(jù); NewOldx(n)x(n-3)x(n-2)x(n-1)x(n-4)x(n-5)x(n-6)x(n-7) 設(shè)置循環(huán)緩沖區(qū)指針: AR1指向New區(qū)中的最新數(shù)據(jù), AR2指向Old區(qū)中的最老數(shù)據(jù); AR1AR2 在程序存儲器中設(shè)置系數(shù)表; 系數(shù)表b0b1b2b3COEF 進行(AR1)+(AR2)AH加法運算,并修改數(shù)據(jù)指針,AR1+1AR1,A

46、R2-1AR2; AHx(n)x(n)x(n-7)x(n-7)x(n) + x(n-7)x(n) + x(n-7)AR1AR22022/8/1258DSP原理及應用第6章 應用程序設(shè)計(3) 系數(shù)對稱FIR濾波器的實現(xiàn) 對稱FIR濾波器的實現(xiàn)方法: 系數(shù)表b0b1b2b3COEFNewx(n)x(n-3)x(n-2)x(n-1)x(n)AR1Oldx(n-4)x(n-5)x(n-6)x(n-7)x(n-7)AR2x(n) + x(n-7)AH 累加器B清0,完成塊操作,重復執(zhí)行4次;00 0000 0000B乘法累加:(AH)bi +BB;PARb0 x(n) + x(n-7)00 0000

47、0000b0 x(n)+x(n-7)+0b0 x(n)+x(n-7)修改系數(shù)指針:PAR+1PAR; PAR加法運算:(AR1)+(AR2)AH;x(n-3)x(n-6)x(n-3) + x(n-6)x(n-3) + x(n-6)修改數(shù)據(jù)指針:AR1+1AR1, AR2-1AR2; AR1AR2b1x(n-3) + x(n-6)b0 x(n)+x(n-7)b1x(n-3) + x(n-6)+Bb1x(n-3) + x(n-6)+BPARx(n-2)x(n-5)x(n-2) + x(n-5)x(n-2) + x(n-5)AR1AR2b2x(n-2) + x(n-5)b1x(n-3) + x(n-

48、6)+Bb2x(n-2) + x(n-5)+Bb2x(n-2) + x(n-5)+BPARx(n-1)x(n-4)x(n-1) + x(n-4)x(n-1) + x(n-4)AR1AR2b3x(n-1) + x(n-4)b2x(n-2) + x(n-5)+Bb3x(n-1) + x(n-4)+Bb3x(n-1) + x(n-4)+BPARx(n) + x(n-7)x(n) + x(n-7)AR1AR2 保存和輸出結(jié)果; 2022/8/1259DSP原理及應用第6章 應用程序設(shè)計(3) 系數(shù)對稱FIR濾波器的實現(xiàn) 對稱FIR濾波器的實現(xiàn)方法: x(n) + x(n-7)AHBa3x(n-1)+x

49、(n-4)+BAR2Oldx(n-7)x(n-6)x(n-5)x(n-4)PAR系數(shù)表b0b1b2b3Newx(n)x(n-3)x(n-2)x(n-1)AR1 修正數(shù)據(jù)指針, AR1指向New區(qū)的最老數(shù)據(jù); AR2指向Old區(qū)的最老數(shù)據(jù)。 AR2 用New區(qū)的最老數(shù)據(jù)替代Old區(qū)的最老數(shù)據(jù),輸入新數(shù)據(jù)替代New區(qū)的最老數(shù)據(jù) ; x(n-3)x(n+1) 重復執(zhí)行 。 2022/8/1260DSP原理及應用第6章 應用程序設(shè)計(3) 系數(shù)對稱FIR濾波器的實現(xiàn) 系數(shù)對稱FIR濾波器指令: 格式: FIRS Xmem,Ymem,Pmad 功能: PmadPAR; 當(RC)0,則B+AH(Pmem

50、)B, (Xmem)+ (Ymem)16A, PAR+1PAR,RC-1 RC 其中, Pmem是通過PAR尋址。2022/8/1261DSP原理及應用第6章 應用程序設(shè)計(3) 系數(shù)對稱FIR濾波器的實現(xiàn) 程序清單: .title “FIR3.ASM” .mmregs .def start .bss y,1x_new: .usect “DATA1”,4x_old: .usect “DATA2”,4size .set 4 PA0 .set 0PA1 .set 1 .dataCOEF: .word 1*32768/10 .word 2*32768/10 .word 3*32768/10 .wor

51、d 4*32768/10 ;定義MMR寄存器符號名 ;定義模塊 ;給y保留1個空間 ;給DATA1段保留4個空間 ;給DATA2段保留4個空間 ;給符號size賦值 ;給輸出口地址PA0賦值 ;給輸入口地址PA1賦值 ;在ROM中定義數(shù)據(jù)段 ;定義數(shù)據(jù)0.1 ;定義數(shù)據(jù)0.2 ;定義數(shù)據(jù)0.3 ;定義數(shù)據(jù)0.4 y(n)數(shù)據(jù)存儲器x(n)x(n-3)x(n-2)x(n-1)x(n-4)x(n-5)x(n-6)x(n-7)ySPRAMx_newDATA1x_oldDATA2程序存儲器b0b1b2b3COEF系數(shù)表2022/8/1262DSP原理及應用第6章 應用程序設(shè)計(3) 系數(shù)對稱FIR濾波

52、器的實現(xiàn) 程序清單: .textstart: LD #x_new,DP SSBX FRCT STM #x_new,AR1 STM #x_old+(size-1),AR2 STM #size,BK STM #-1,AR0 PORTR PA1,#x_new ;設(shè)置頁指針 ;設(shè)置小數(shù)乘法 ;AR1指向x_new單元 ;AR2指向x_old+3單元 ;設(shè)置循環(huán)緩沖區(qū)長度 ;設(shè)置雙操作數(shù)增量AR0=-1 ;輸入數(shù)據(jù)x(n)2022/8/1263DSP原理及應用第6章 應用程序設(shè)計程序清單:FIR3: ADD *AR1+0%,*AR2+0%,A RPTZ B,#(size-1) FIRS *AR1+0%,

53、*AR2+0%,COEF STH B,y PORTW y,PA0 MAR *+AR1(2)% MAR *AR2+% MVDD *AR1,*AR2+0% BD FIR3 PORTR PA1,*AR1 .end ;完成AH=x(n)+x(n-7) ;B清0,設(shè)置重復次數(shù) ;乘法累加、加法操作 B = AHbi + B AH=(AR1)+(AR2) ;保存y(n)結(jié)果 ;輸出結(jié)果 ;修正AR1,指向New區(qū)最老數(shù)據(jù) ;修正AR2,指向Old區(qū)最老數(shù)據(jù) ;New區(qū)向Old區(qū)傳送數(shù)據(jù) ;循環(huán) ;輸入最新數(shù)據(jù)至New區(qū)2022/8/1264DSP原理及應用第6章 應用程序設(shè)計6.1 FIR濾波器的DSP實現(xiàn) 6.1.5 FIR濾波器的設(shè)計實例 設(shè)計一個FIR低通濾波器,其設(shè)計參數(shù): 濾波器階數(shù):N=40;截止頻率:wp=0.35, ws=0.4。 2022/8/1265DSP原理及應用第6章 應用程序設(shè)計6.1.5 FIR濾波器的設(shè)計實例 根據(jù)給定的設(shè)計參數(shù),濾波器系數(shù)可由MATLAB中的fir2函數(shù)產(chǎn)生,函數(shù)調(diào)用格式: 1.由給定的設(shè)計參數(shù)確定濾波器的系數(shù) f = 0 0.

溫馨提示

  • 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

提交評論