基于DSP的FIR數(shù)字濾波器 (設(shè)計(jì)實(shí)驗(yàn))(匯編語(yǔ)言)_第1頁(yè)
基于DSP的FIR數(shù)字濾波器 (設(shè)計(jì)實(shí)驗(yàn))(匯編語(yǔ)言)_第2頁(yè)
基于DSP的FIR數(shù)字濾波器 (設(shè)計(jì)實(shí)驗(yàn))(匯編語(yǔ)言)_第3頁(yè)
基于DSP的FIR數(shù)字濾波器 (設(shè)計(jì)實(shí)驗(yàn))(匯編語(yǔ)言)_第4頁(yè)
基于DSP的FIR數(shù)字濾波器 (設(shè)計(jì)實(shí)驗(yàn))(匯編語(yǔ)言)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、基于DSP的FIR數(shù)字濾波器 (設(shè)計(jì)實(shí)驗(yàn))一、實(shí)驗(yàn)?zāi)康?.了解FIR(Finite Impulse Response有限沖激響應(yīng))濾波器的原理及使用方法;2.了解使用MATLAT語(yǔ)言設(shè)計(jì)FIR濾波器的方法;3.了解DSP對(duì)FIR濾波器的設(shè)計(jì)及編程方法;4.熟悉在CCS環(huán)境下對(duì)FIR濾波器的調(diào)試方法;二、實(shí)驗(yàn)原理數(shù)字濾波是DSP的最基本應(yīng)用,利用MAC(乘、累加)指令和循環(huán)尋址可以方便地完成濾波運(yùn)算。兩種常用的數(shù)字濾波器:FIR(有限沖激響應(yīng))濾波器和IIR(無(wú)限沖激響應(yīng))濾波器的DSP實(shí)現(xiàn)。設(shè)FIR濾波器的系數(shù)為h(0),h(1), .,h(N-1),X(n)表示濾波器在n時(shí)刻的輸入,則n時(shí)刻

2、的輸出為: FIR數(shù)字濾波器的結(jié)構(gòu)如圖3.1所示。圖3.1 FIR數(shù)字濾波器的結(jié)構(gòu)圖1、線性緩沖區(qū)法又稱延遲線法。其方法是:對(duì)于n=N的FIR濾波器,在數(shù)據(jù)存儲(chǔ)器中開(kāi)辟一個(gè)N單元的緩沖區(qū),存放最新的N個(gè)樣本;濾波時(shí)從最老的樣本開(kāi)始,每讀一個(gè)樣本后,將此樣本向下移位;讀完最后一個(gè)樣本后,輸入最新樣本至緩沖區(qū)的頂部。以上過(guò)程,可以用N=6的線性緩沖區(qū)示意圖來(lái)說(shuō)明,如圖3-2所示 圖3-2 N=6的線性緩沖區(qū)示意圖2、循環(huán)緩沖區(qū)法圖3-3說(shuō)明了使用循環(huán)尋址實(shí)現(xiàn)FIR濾波器的方法。對(duì)于N級(jí)FIR濾波器,在數(shù)據(jù)存儲(chǔ)區(qū)開(kāi)辟一個(gè)稱為滑窗的具有N個(gè)單元的緩沖區(qū),滑窗中存放最新的N個(gè)輸入樣本值。每次輸入新的樣本

3、時(shí),新的樣本將改寫滑窗中最老的數(shù)據(jù),其他數(shù)據(jù)則不需要移動(dòng)。圖3-3 FIR濾波器循環(huán)緩沖區(qū)存儲(chǔ)器圖三、實(shí)驗(yàn)內(nèi)容與步驟設(shè)計(jì)一個(gè)FIR低通濾波器,通帶邊界頻率為1500Hz,通帶波紋小于1dB;阻帶邊界頻率為2000Hz,阻帶衰減大于40dB;采樣頻率為8000Hz。FIR濾波器的設(shè)計(jì)可以用MATLAB窗函數(shù)法進(jìn)行。本實(shí)驗(yàn)設(shè)計(jì)一個(gè)采樣頻率Fs為8000Hz,輸入信號(hào)頻率為1000Hz和2500Hz的合成信號(hào),通過(guò)設(shè)計(jì)的低通濾波器將2500Hz信號(hào)濾掉,余下1000Hz信號(hào)。1、MATLAB設(shè)計(jì)FIR濾波器 FIR濾波器的設(shè)計(jì)可以用MATLAB窗函數(shù)法進(jìn)行,選擇Hamming窗,其程序?yàn)椋?b=fi

4、r1(16,1500/8000*2);得到FIR數(shù)字濾波器系數(shù)b為:b0=0. b9=0.b1=0. b10=0.b2=0. b11=-0.b3=-0. b12=-0.b4=-0. b13=-0.b5=-0. b14=0.b6=0. b15=0.b7=0. b16=0.B8=0.在DSP匯編語(yǔ)言中,不能直接輸入十進(jìn)制小數(shù),在MATLAB中進(jìn)行如下轉(zhuǎn)換:h=round(b*215)將系數(shù)轉(zhuǎn)換為Q15的定點(diǎn)小數(shù)形式,為:h(0)=0 h(9)=9287h(1)=158 h(10)=3187h(2)=264 h(11)=-951h(3)=-290 h(12)=-1406h(4)=-1406 h(13

5、)=-290h(5)=-951 h(14)=264h(6)=3187 h(15)=158h(7)=9287 h(16)=0h(8)=122722、編寫FIR數(shù)字濾波器的匯編程序;一個(gè)FIR濾波器源程序 fir.asm.mmregs.global start.def start,_c_int00INDEX .set 1KS.set 256 ;模擬輸入數(shù)據(jù)緩沖區(qū)大小N .set 17 COFF_FIR.sect COFF_FIR;FIR濾波器系數(shù).word 0.word 158.word 264.word -290.word -1406.word -951.word 3187.word 9287.

6、word 12272.word 9287.word 3187.word -951.word -1406.word -290.word 260.word 158.word 0 .dataINPUT .copy firin.inc ;模擬輸入在數(shù)據(jù)存儲(chǔ)區(qū)0x2400OUTPUT .space1024 ;輸出數(shù)據(jù)在數(shù)據(jù)區(qū)0x2500COFFTAB.usectFIR_COFF,NDATABUF.usectFIR_BFR,NBOS.usectSTACK,0FhTOS.usectSTACK,1 .text.asgAR0,INDEX_P.asgAR4,DATA_P;輸入數(shù)據(jù)x(n)循環(huán)緩沖區(qū)指針.asgAR

7、5,COFF_P;FIR系數(shù)表指針.asg AR6,INBUF_P ;模擬輸入數(shù)據(jù)指針 .asg AR7,OUTBUF_P;FIR濾波器輸出數(shù)據(jù)指針_c_int00b start nopnopstart: SSBX FRCT STM #COFFTAB,COFF_PRPT #N-1 ;將FIR系數(shù)從程序存儲(chǔ)器移動(dòng)MVPD#COFF_FIR,*COFF_P+;到數(shù)據(jù)存儲(chǔ)器 STM#INDEX,INDEX_PSTM#DATABUF,DATA_PRPTZA,#N-1STLA,*DATA_P+;將數(shù)據(jù)循環(huán)緩沖區(qū)清零STM #(DATABUF+N-1),DATA_P ;數(shù)據(jù)緩沖區(qū)指針指向xn-(N-1)S

8、TM #COFFTAB,COFF_P;FIR_TASK: STM#INPUT,INBUF_P STM #OUTPUT,OUTBUF_P STM#KS-1,BRC RPTBDLOOP-1 STM#N,BK;FIR循環(huán)緩沖區(qū)大小 LD*INBUF_P+,A;裝載輸入數(shù)據(jù)FIR_FILTER: STLA,*DATA_P+% RPTZA,N-1 MAC*DATA_P+0%,*COFF_P+0%,A STHA,*OUTBUF_P+LOOP:ENDB EEND .end3、編寫FIR濾波器鏈接命令文件對(duì)應(yīng)以上匯編程序的鏈接命令文件fir.cmd如下:fir.obj-m fir.map-ofir.outME

9、MORYPAGE 0: ROM1(RIX) :ORIGIN=0080H,LENGTH=100H PAGE 1: INTRAM1(RW) :ORIGIN=2400H,LENGTH=0200H INTRAM2(RW) :ORIGIN=2600H,LENGTH=0100H INTRAM3(RW) :ORIGIN=2700H,LENGTH=0100H B2B(RW) :ORIGIN=0070H,LENGTH=10H SECTIONS .text :ROM1PAGE 0 .data : INTRAM1 PAGE 1 FIR_COFF: INTRAM2 PAGE 1 FIR_BFR : INTRAM3 P

10、AGE 1 .stack : B2B PAGE 1 4、實(shí)驗(yàn)步驟及結(jié)果(1) 在CCS上建立fir工程并運(yùn)行fir.out程序。建立fir工程,將fir.asm和fir.cmd添加到工程中,對(duì)匯編程序進(jìn)行匯編、鏈接;如果有錯(cuò)誤則進(jìn)行修改、調(diào)試,當(dāng)匯編、鏈接成功后,加載并運(yùn)行fir.out程序。注意,將fir.asm、fir.cmd、firin.inc文件和fir.pjt工程文件放在同一文件夾下。(2) 觀察輸入信號(hào)的波形及頻譜。單擊ViewGraphTime/Frequency命令,按照如圖3-4所示改變各選項(xiàng)。其中,由.cmd可知輸入信號(hào)的數(shù)據(jù)放在數(shù)據(jù)區(qū)0x2400開(kāi)始的256個(gè)單元中。圖3

11、-4 Graph屬性設(shè)置窗口單擊OK按鈕,則顯示輸入信號(hào)的時(shí)域波形如圖3-5所示。其波形是頻率為1000Hz和2500Hz正弦信號(hào)的合成信號(hào)。圖3-5 輸入信號(hào)的時(shí)域波形將圖3-4中的Dsiplay Type項(xiàng)改為FFT Magnitude,則顯示輸入信號(hào)的頻譜圖,如圖3-6所示。圖3-6 輸入信號(hào)的頻譜圖3、觀察輸出信號(hào)的波形及頻譜。單擊ViewGraphTime/Frequency命令,按照如圖3-7所示改變各選項(xiàng)。其中,由.cmd可知輸出信號(hào)的數(shù)據(jù)放在數(shù)據(jù)區(qū)0x2500開(kāi)始的256個(gè)單元中。圖3-7 Graph屬性設(shè)置窗口單擊OK按鈕,將顯示濾波器輸出信號(hào)時(shí)域波形,如圖3-8所示。圖3-

12、8 輸出信號(hào)的時(shí)域波形圖3-9 輸出信號(hào)的頻譜圖5、系數(shù)對(duì)換FIR濾波器的實(shí)現(xiàn)系數(shù)對(duì)換FIR濾波器由于具有線性相位,因此應(yīng)用很廣。一個(gè)N=8的FIR濾波器,若h(n)=h(N-1-n),就是對(duì)換FIR濾波器,其輸出方程為:總共有8次乘法和7次加法。如改寫成:變成4次乘法和7次加法,乘法運(yùn)算次數(shù)減少了一半,特別是當(dāng)階數(shù)較高時(shí),利用系數(shù)對(duì)稱的特點(diǎn),可以明顯減少運(yùn)算量。(1)FIR濾波器設(shè)計(jì)在MATLAB下輸入:B=fir1(15,1500/8000*2);H=round(b*215);將系數(shù)轉(zhuǎn)換為Q15的定點(diǎn)小數(shù)形式則濾波器系數(shù)為:h(0)=62 h(8)=11439h(1)=188 h(9)=6

13、202h(2)=86 h(10)=625h(3)=-764 h(11)=-1453h(4)=-1453 h(12)=-764h(5)=625 h(13)=86h(6)=6202 h(14)=188h(7)=11439 h(15)=62系數(shù)對(duì)稱FIR數(shù)字濾波器匯編程序如下:.mmregs.global start.def start,_c_int00KS.set 256 ;輸入樣本數(shù)據(jù)個(gè)數(shù)N .set 16 ;FIR濾波器階數(shù)COEF_FIR.sect COEF_FIR;FIR濾波器系數(shù).word62.word 188.word 86.word -764.word -1453.word 625.

14、word 6202.word 11439.dataINPUT.copy firin.inc ;輸入數(shù)據(jù)在數(shù)據(jù)區(qū)0x2400OUTPUT.space1024 ;輸出數(shù)據(jù)在數(shù)據(jù)區(qū)0x2500x_new .usect DATA1,N/2x_old .usect DATA2,N/2size .set N/2 .text_c_int00b start nopnopstart: SSBXFRCT; 設(shè)置FRCT(小數(shù)方式)位 STM #x_new,AR2; AR2指向New緩沖區(qū)第一個(gè)單元 STM #x_old+(size-1), AR3; AR3指向Old緩沖區(qū)最后一個(gè)單元 STM #-1,AR0 ST

15、M#INPUT,AR4; 模擬輸入數(shù)據(jù)指針初始化 STM #OUTPUT,AR5; 濾波器輸出數(shù)據(jù)指針初始化 STM#KS-1,BRC RPTBDLOOP-1 STM #size , BK;循環(huán)緩沖區(qū)塊大小BK=size LD*AR4+,A STLA,*AR2FIR_FILTER: ADD *AR2+0%,*AR3+0%,A RPTZ B, #size-1 FIRS *AR2+0%,*AR3+0%,COEF_FIR STHB,*AR5+ MAR *+AR2(2)% MAR *AR3+% MVDD *AR2 , *AR3+0%LOOP:END BEND .end鏈接命令文件如下:fir2.obj-m fir2.map-ofir2.outMEMORYPAGE 0: ROM1(RIX):ORIGIN=0080H,LENGTH=1000H PAGE 1: INTRAM1(RW) :ORIGIN=2400H,LENGTH=0200H INTRAM2(RW) :ORIGIN=2600H,LENGTH=0100H INTRAM3(RW)

溫馨提示

  • 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)論