FIR濾波器程序的編寫_第1頁
FIR濾波器程序的編寫_第2頁
FIR濾波器程序的編寫_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目錄1. 引言.錯誤!未定義書簽。2.FIR 濾波器基本原理 .錯誤!未定義書簽。2.1兩種 FIR 濾波器的框圖及原理 .錯誤!未定義書簽。2.2用 DSP實現(xiàn)的數(shù)字 FIR 濾波器的優(yōu)點 .錯誤!未定義書簽。3.FIR 濾波器的設(shè)計方法 .錯誤!未定義書簽。4.FIR 濾波器的 c54x 實現(xiàn) .錯誤!未定義書簽。5. FIR濾波器的實例設(shè)計 .錯誤!未定義書簽。5.1編寫濾波器序列 .錯誤!未定義書簽。5.2匯編源程序主程序的編寫 .錯誤!未定義書簽。5.3中斷向量表的編寫 .錯誤!未定義書簽。5.4相關(guān)的連接命令文件 .錯誤!未定義書簽。5.5程序在 CCS C5000中編譯 .錯誤!

2、未定義書簽。6.設(shè)計心得 .錯誤!未定義書簽。7.參考文獻 .錯誤!未定義書簽。01. 引言在數(shù)字信號處理中 , 濾波占有及其重要的地位。數(shù)字濾波是譜分析、雷達信號處理、通信信號處理等應(yīng)用中的基本處理算法,它能夠滿足濾波器對幅度和相位的嚴格要求,解決了模擬濾波器所無法克服的電壓漂移、溫度漂移和噪聲等問題,同時有很高的可編程性和靈活性。數(shù)字濾波是 DSP最基本的應(yīng)用領(lǐng)域,一個 DSP芯片執(zhí)行數(shù)字濾波算法的能力反應(yīng)了這種芯片的功能強弱,用 DSP實現(xiàn)的數(shù)字濾波器可以十分方便地改變?yōu)V波器的特性。2.FIR 濾波器基本原理2.1 兩種 FIR 濾波器的框圖及原理對于 FIR 數(shù)字濾波器來說, 它的實現(xiàn)

3、一般采用非遞歸的算法, 圖 2.1 給出的是直接型和轉(zhuǎn)置型 FIR 濾波器的機構(gòu)圖。輸入 x(n)DDDh 0h1h N-2-hN-1輸出 y(n )多輸入加法器( a)直接型橫向濾波器輸入 x(nhN-1hN-2-1h 1h0輸出 y(n )DDD( b)轉(zhuǎn)置型橫向濾波器圖 2.1 直接型和轉(zhuǎn)置型FIR濾波器結(jié)構(gòu)圖FIR 數(shù)字濾波器的差分方程表達式為:Ny(n)= h(i)x(n-i)其中 N 為 FIR 濾波器的階數(shù), FIR 濾波器的單位脈沖響應(yīng)h(n) 是一個有限長序列。在數(shù)字信號處理應(yīng)用中往往需要設(shè)計線性相位的濾波器, FIR 濾波器在保證幅度特性滿足技術(shù)要求的同時,很容易做到嚴格的

4、線性相位特性。為了是濾波器滿足線性相位條件,要求其單位脈沖響應(yīng) h(n) 為實序列,且滿足偶對稱或奇對稱條件,即 h(n)=h(N-1-n) 或 h(n)=-h(N-1-n) 。這樣,當 N為偶數(shù)時,偶對稱線性相位 FIR 濾波器的差分方程表達式為:y(n)= N/2-1 h(i)(x(n-i)+x(N-1-n-i)由上可見, FIR 濾波器不斷地對輸入樣本 x(n) 延時后,再作乘法累加運算,將濾波結(jié)果 y(n) 輸出,因此, FIR 實際上是一種乘法累加運算。而對于線性相位 FIR 而言,利用線性相位 FIR 濾波器系數(shù)的對稱特性,可以采用結(jié)構(gòu)精簡的 FIR 結(jié)構(gòu)將乘法器數(shù)目減少一半,但加

5、法器數(shù)目不變,這時乘法操作數(shù)和加法操作次數(shù)是 1:2。事實上,線性相位 FIR 濾波器是用得最多的 FIR 濾波器。2.2 用 DSP 實現(xiàn)的數(shù)字FIR 濾波器的優(yōu)點在數(shù)字濾波器中, FIR 濾波器的最主要的特點是沒有反饋回路,故不存在不穩(wěn)定的問題;同時,可以在幅度特性隨意設(shè)置的同時,保證精度、嚴格的線性相位。穩(wěn)定和線性相位特性是FIR 濾波器的突出優(yōu)點。FIR 濾波器常表示為直接型和轉(zhuǎn)置型兩種結(jié)構(gòu),其功能是等效的。在用專用 DSP或 FPGA等硬件設(shè)計長階數(shù) FIR 濾波器時,常采用轉(zhuǎn)置型結(jié)構(gòu),因為這種結(jié)構(gòu)便于設(shè)計成大量規(guī)則排列、 形式相同的乘法 / 累加器陣列,避免了直接型中的多輸入加法器

6、在長階數(shù)時的實現(xiàn)困難。在用通用定點 DSP實現(xiàn) FIR 濾波器時,更多的是采用直接型結(jié)構(gòu),對于C54X來說,其單乘法器、雙累加器結(jié)構(gòu)更適合于對稱 FIR 實現(xiàn);如果采用轉(zhuǎn)置結(jié)構(gòu),因為定點 DSP僅乘法 / 累加器是 32 位或 40 位的,數(shù)據(jù)存儲器都是 16 位的,用 16 位存儲器保證 FIR 濾波器每級乘法 / 累加器輸出的中間結(jié)果比較麻煩,程序效率也降低了。23.FIR 濾波器的設(shè)計方法FIR 濾波器的設(shè)計方法主要有窗函數(shù)法和頻率采樣法,其中,窗函數(shù)法是最基本的方法。窗函數(shù)法的過程是:設(shè)期望的濾波器理想響應(yīng)為Hd (e j ) ,需要尋找一個傳遞函數(shù) H (e j ) N-1h(n)e

7、 -j 去逼近 Hd(e j ) ,其中最直接的方法就是將 Hd(e j ) 的時域響應(yīng) hd(n) 用一個矩形窗 RN(n)進行截斷,從而得到一個長度為 N的序列 h(n) ,即令h(n)= h d(n) R N(n)理想響應(yīng) Hd(e j ) 與其時域響應(yīng) hd(n) 也有 Hd(e j ) hd(n) e-j 的關(guān)系,通常 hd(n) 是一個關(guān)于原點 n0 對稱的無限長序列,截斷后的 h(n)還應(yīng)進行右移以形成一個因果的 FIR 濾波器,即在 n<0 時,h(n)0。為了保證 h(n)的線性相位,還應(yīng)使 h( n)關(guān)于中心點對稱或反對稱。很明顯, h( n)與期望的響應(yīng)之間的誤差隨

8、著窗長的增加而減小。利用上述各種窗函數(shù), DSP設(shè)計者可以利用 Matlab 工具很方便地設(shè)計出逼近理想特性的 FIR 濾波器,然后將此 FIR 系數(shù)放入 DSP程序中。如下例:設(shè)計一個 FIR 低通濾波器,其設(shè)計參數(shù):濾波器階數(shù)為 40,截至頻率p0.35 , s0.4 。根據(jù)給定的設(shè)計參數(shù),濾波器系數(shù)可由 Matlab 中的 fir2 函數(shù)生成,函數(shù)調(diào)用格式為f=0 0.35 0.4 1m=1 1 0 0b=fir2(39,f,m)求得的系數(shù)如圖3.1 所示3圖 3.1 Matlab 求得濾波器系數(shù)4.FIR 濾波器的 c54x 實現(xiàn)FIR 是將待濾波的數(shù)據(jù)序列與濾波系數(shù)序列相乘后再相加運

9、算,同4時要模仿 FIR 結(jié)構(gòu)中的延遲線將數(shù)據(jù)在存儲器中滑動。 C54x 用尋址 I/O 單元的指令實現(xiàn)序列 x(n)的輸入和序列 y(n)的輸出:PORTR PA1,Smem;從 PA1口中輸入數(shù)據(jù);PORTWSmen,PA2;從 PA2口輸出數(shù)據(jù)。這兩條指令至少要2 個字和 2 個機器周期。如果 I/O 設(shè)備是慢速器件,則需要插入等待狀態(tài)。 此外,當利用長偏移間接尋址或絕對尋址 Smen是還要增加1 個字和 1 個機器周期。為了實現(xiàn) FIR 濾波器的延遲線 z1,可以通過循環(huán)緩沖方法實現(xiàn)。用循環(huán)緩沖區(qū)方法實現(xiàn) N 階 FIR 濾波器時,需要在數(shù)據(jù)存儲器中開盤批一個稱為滑窗為 N 個單元的緩

10、沖區(qū),滑窗中存放最新的N 個輸入樣本。當每次輸入新的樣本時,以新樣本改寫滑窗中的最老數(shù)據(jù)緩沖區(qū)數(shù)據(jù)緩沖區(qū)數(shù)據(jù)緩沖區(qū)ARx循 環(huán) 緩X(n)沖 區(qū) 頂X(n)X(n)X(n-1)部X(n-1)X(n-1)X(n-2)X(n-2)X(n-2)ARxX(n-3)循 環(huán) 緩X(n-3)X(n+2)ARxX(n-4)沖 區(qū) 底X(n+1)X(n+1)部圖 4.1 線性緩沖區(qū)實現(xiàn)延時的數(shù)據(jù),而滑窗中的其它數(shù)據(jù)不需要移動。因此,在循環(huán)緩沖區(qū)中新老數(shù)據(jù)不很直接明了,但它不需要移動數(shù)據(jù),不存在在一個機器周期中要求進行一次讀和一次寫的數(shù)據(jù)存儲器,因此,可以將循環(huán)緩沖區(qū)定位在數(shù)據(jù)存儲器的任何位置。圖 4.1 是 N

11、 5,線性緩沖區(qū)實現(xiàn)延時的圖示。實現(xiàn)循環(huán)緩沖區(qū)間接尋址的關(guān)鍵問題死:如何是 N 個循環(huán)緩沖區(qū)單元首尾單元相鄰?這需要采用 c54x 所提供的循環(huán)尋址方式來實現(xiàn)。 采用循環(huán)尋址,需注意以下兩點:(1) 必須利用循環(huán)緩沖區(qū)長度(BK)寄存器來實現(xiàn)按模間接尋址??捎玫闹噶畎ǎ?ARx+%;加 1、按模修正 ARx*ARx- ;減 1、按模修正 ARx *ARx+0 ;加 AR0、按模修正 ARx *ARx 0 ;減 AR0、按模修正 ARx *+ARx(lk ) ;加( lk )、按模修正 ARx5其中,每一條指令均按照 BK寄存器中的值,分別對( ARx+1)、(ARx-1)、(ARx+AR0)

12、、(ARx-AR0)、(ARxlk )值取模。在實現(xiàn) N 階 FIR 時,通過 STMlk , BK 指令設(shè)定BK的值為 FIR 的階數(shù),就能保證循環(huán)緩沖區(qū)的指針 ARx始終指向循環(huán)緩沖區(qū),實現(xiàn)循環(huán)緩沖區(qū)頂部和底部單元相鄰。(2)為了使循環(huán)尋址正常進行, 所開辟的循環(huán)還小紅分區(qū)的長度必須是2k>N,其中 k 是整數(shù), N 是 FIR 濾波器的級數(shù),而且循環(huán)緩沖區(qū)的起始地址必須對準 2k 邊界,即循環(huán)緩沖區(qū)基地址的k 個最低有效位必須為0,如 N31 是,循環(huán)緩沖區(qū)必須從二進制地址 xxxx xxxx xxx0 00002 開始??梢?,在循環(huán)尋址實現(xiàn) FIR 濾波器時,首先將 N值加載到

13、BK寄存器中,然后指定一個輔助寄存器 ARx指向循環(huán)緩沖區(qū),并根據(jù) ARx的低 k 位作為循環(huán)緩沖區(qū)的偏移量進行所規(guī)定的尋址操作。尋址完成后,根據(jù)循環(huán)尋址算法修正這個偏移量,并返回 ARx的低 k 為。下面是利用循環(huán)緩沖區(qū)和雙操作數(shù)尋址方法實現(xiàn)的FIR 濾波器程序。設(shè)N5,y(n) a0x(n)+a1( n-1 ) +a2( n-2 )+a3( n-3 ) +a4(n-4 ),且存放 a0a4的系數(shù)表在 ROM中,存放數(shù)據(jù)的循環(huán)緩沖區(qū)在DARAM中。程序如下:.mmregs.defstart.bssy,1Xn.usect“xn”,5A0.usect“a0”,5PA0.set0PA1.set1.

14、dataTable:.word1*32786/10;a0=0.1=0x0ccc.word2*32786/10;a1=0.2=0x1999.word3*32786/10;a2=0.3=0x2666.word4*32786/10;a3=0.4=0x3333.word5*32786/10;a4=0.5=0x4000.textStart:SSBXFRCT; 小數(shù)乘法STM#a0,AR1;AR1 指向 a0RPT#4; 傳送 5 個系數(shù)至數(shù)據(jù)空間MVPDtable.*AR1+STM#xn+4,AR3;AR3 指向 x(n-4 )STM#a0+4,AR4;AR4 指向 a46STM#5,BK; 循環(huán)緩沖區(qū)

15、長度 BK 5STM#-1,AR0;AR0-1 ,雙操作數(shù)減量LD#xn,DPPORTRPA1,xn; 輸入 x(n)FIR:RPTZA,#4;A 清零,共迭代 5次MAC*AR3+0%,*AR4+0%,A;雙操作數(shù)乘法累加STHA,y; 保存 y( n)PORTWy,PA0; 輸出 y( n)BDFIR; 循環(huán)PORTRPA1,*AR3+0%; 輸入新數(shù)據(jù)END5. FIR 濾波器的實例設(shè)計5.1 編寫濾波器序列由已知的濾波器的系數(shù)可得濾波器的序列為:.datahtab:.word-10*32768/1000.word-10*32768/1000.word40*32768/1000.word

16、60*32768/1000.word80*32768/1000.word-50*32768/1000.word-60*32768/1000.word70*32768/1000.word-80*32768/1000.word-90*32768/1000.word98*32768/1000.word-90*32768/1000.word80*32768/1000.word-70*32768/1000.word60*32768/10007.word-50*32768/1000.word-80*32768/1000.word60*32768/1000.word40*32768/1000.word-10

17、*32768/1000.word-10*32768/1000.word00*32768/1000.word00*32768/1000.word00*32768/1000.word00*32768/1000.word00*32768/1000.word00*32768/1000.word00*32768/10005.2 匯編源程序主程序的編寫采用循環(huán)緩沖區(qū)實現(xiàn)FIR 濾波器的程序如下:.mmregs.include"htable.inc".include"xtable.inc".defstarthtabcnt.set20xtabcnt.set80STACK

18、.usect".stack",30H.bssncnt,1.bssx_tab,80H,1.bssh_tab,80H,1.bssr_tab,80H,1.bssdb_tab,80H,1.asg0+ FRAME_SZ, SAVE_AR1.asg0+ REG_SAVE_SZ + FRAME_SZ, RETURN_ADDR.asg0+ PARAM_OFFSET, h.asg1+ PARAM_OFFSET, r.asg2+ PARAM_OFFSET, db.asg3+ PARAM_OFFSET, nh.asg4+ PARAM_OFFSET, nx8.asg0, nc.asgAR2, r_

19、ptr.asgAR3, h_ptr;h.asgAR4, x_ptr;x.asgAR5, db_ptr.asgBRC, rptb_cntstart:SSBXSXMSSBXFRCT;STM#x_tab,x_ptrRPT#(xtabcnt-1)MVPDxtab,*x_ptr+STM#h_tab,h_ptrRPT#(htabcnt-1)MVPDhtab,*h_ptr+STM#x_tab,x_ptrSTM#h_tab,h_ptrSTM#r_tab,r_ptrSTM#db_tab,db_ptrLD#xtabcnt, ASTLMA, rptb_cntLD#htabcnt, ASTLMA, BKSUB#3,

20、ASTLA, *(ncnt)RPTBD END_LOOP-1STM#1, AR0MVDD*x_ptr+, *db_ptr個y值MPY*h_ptr+0%, *db_ptr+0%, ARPT*(ncnt)MAC*h_ptr+0% , *db_ptr+0%, AMACR*h_ptr+0% , *db_ptr, ASTHA, *r_ptr+END_LOOP:_end:RETURN:; 結(jié)果連續(xù)連續(xù)濾波連續(xù)輸入; 中值連續(xù); 記數(shù)設(shè)置小數(shù)乘法;AR1指向 b0單元;設(shè)置傳輸次數(shù);系數(shù) bi 傳輸至數(shù)據(jù)區(qū);h_tab 緩沖區(qū)清零;設(shè)置雙操作數(shù)減量;設(shè)置頁指針;存貯 0到AR0;h * x 的和相加送入下一

21、;存貯結(jié)果9LDMdb_ptr, BLD#0, AXC1, AOVLD#1, A5.3 中斷向量表的編寫.sect".vectors".refstart.align0x80RESET:BDstart; branch to C entry pointSTM#200,SP; 設(shè)置堆棧初植為 200nmi: RETE; 中斷返回NOPNOPNOP; 軟件中斷sint17 .space 4*16sint18 .space 4*16sint19 .space 4*16sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0:RETENOPNOPNOPint1:RETE10NOPNOPNOPint2:RETENOPNOPNOPtint:RETENOPNOPNOPrint0: RETENOPNOPNOPxint0: RETENOPNOPNOPrint1: RETENOPNOPNOPxint1:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論