DSP技術-06電子通信08(精)_第1頁
DSP技術-06電子通信08(精)_第2頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2章應用程序設計一、FIR濾波器的DSP實現(xiàn)二、IIR濾波器的DSP實現(xiàn)三、FFT運算的DSP實現(xiàn)一、FIR 濾波器的 DSP 實現(xiàn)數(shù)字信號處理主要是面向?qū)崟r密集型數(shù)據(jù)運算,濾 波在數(shù)字信號處理中占有極其重要的地位。用DSP芯片實 現(xiàn)數(shù)字濾波具有穩(wěn)定性好、精確度高、不受環(huán)境影響, 以及靈活性好等突出優(yōu)點。數(shù)字濾波又稱為程序濾波,其功能是將輸入的數(shù)字 信號通過一定的運算關系(程序?qū)崿F(xiàn))變?yōu)樗枰妮?出信號,也即:實現(xiàn)數(shù)字濾波就必須把輸入輸出信號關 系轉(zhuǎn)變成可實現(xiàn)的數(shù)學模型或算法。U1、正弦波信號發(fā)生器4離散系統(tǒng)的輸入輸出關系有幾種不同的描述方法,例如:時域卷積、差分方程、頻域的離散傅立葉變換、

2、 復頻域的 Z Z 變換等, 最常用的描述離散系統(tǒng)的數(shù)學形式 是系統(tǒng)函數(shù) H(Z)H(Z)或差分方程。數(shù)字系統(tǒng)可以分為:無限沖激響應系統(tǒng)(IIR)和有限 沖激響應系統(tǒng)(FIR) oIIR系統(tǒng)因為與過去輸出有關,所以網(wǎng)絡結構有反饋 支路稱為遞歸結構,F(xiàn)IR系統(tǒng)只與激勵有關沒有反饋支路, 稱為非遞歸結構。IIR系統(tǒng)的系統(tǒng)函數(shù) H(Z)H(Z)有極點,F(xiàn)IR系統(tǒng)的系統(tǒng)函 數(shù) H(Z)H(Z)只有零點;IIR系統(tǒng)的差分方程 y(n)y(n)除了與當前及以往的激勵有 關,還與以前的輸出有關,F(xiàn)IR系統(tǒng)的差分方程 y(n)y(n)只與當前及以往的激勵有關,而與過去的輸出無關; IIR系統(tǒng)的單位沖激響應 h

3、(n)h(n)有無窮多項,F(xiàn)IR系統(tǒng)的h(n)h(n)只有有限項;61. FIR濾波器基本概念FIR濾波器的系統(tǒng)函數(shù)為N-1H(z)=h(i)zTi=0沒有反饋回路,因此它是穩(wěn)定系統(tǒng),其單位沖激響應 h(n)h(n) 是一個有限長序列。FIR系統(tǒng)的差分方程為y(n)=Zh(i)x(n-i)i=0實際上是一種乘法累加運算。FIR濾波器的基本結構圖:由結構圖看出,實際算法由一組基本運算單元:乘法器、 加法器、延遲器組成。顯然,最主要的問題是延遲環(huán)節(jié) 如何實現(xiàn)。申2. FIR濾波器中zT的實現(xiàn)(1)用線性緩沖區(qū)法實現(xiàn)才1對于N級的FIR濾波器,在數(shù)據(jù)存儲器中開辟一個 稱為滑窗的N個單元的線性數(shù)據(jù)緩沖

4、區(qū),存放最新的N個輸入樣本;從最老的樣本開始,每讀一個樣本后, 將此樣本向下移位,讀完最后一個樣本后,輸入最新 樣本至緩沖區(qū)的頂部。用線性緩沖區(qū)實現(xiàn)刃的優(yōu)點是,新老數(shù)據(jù)在存儲 器中存放的位置直接明了。5y(n) = yaix(n i)i=0教惟存蔭券毅悟存儲券教據(jù)存?zhèn)帓昃€隹蟹昭區(qū)頂部x(n)PORTR-x(n+l)PORTR fx (n+2)x(n-l)x(n)x (n+1)x(n-2)x(n-l)x(n)x(n-3)K:n-2)x(n-l)tx(n-4)x(n-3)tx(n-2)*AKx fx(n-5)x(n-4)*ARx fx(n-3)(a)(b)(c)N二6的線性緩沖區(qū)存儲器圖數(shù)據(jù)的輸入

5、/輸出C54x片內(nèi)沒有I/O資源,CPU通過外部譯碼可以尋址64K的I/O空間。有兩條實現(xiàn)輸入和輸出的指令:PORTR PA, Smem;將PA端口的內(nèi)容送;數(shù)據(jù)存儲器SmemPORTW Smem, PA;將地址為Smem的數(shù)據(jù);存儲器內(nèi)容送端口PA使用存儲器延時指令DELAY,可以將數(shù)據(jù)存儲單元 中的內(nèi)容向較高地址的下一單元傳送。實現(xiàn)多1的運算指令為:DELAY Smem ; (Smem) -Seme+1,數(shù)據(jù)存儲器;單元的內(nèi)容復制下一高地址單元DELAY *AR2 ; AR2指向源地址,即將AR2所指單;元內(nèi)容復制到下一高地址單元中 ;延時指令與其它指令結合LD+DELAY-LTD指令;單

6、數(shù)據(jù)存儲器的值裝入;T寄存器并送下一單元延時MAC+DELAYMACD指令;乘加延遲存儲器的用循環(huán)緩沖區(qū)法實現(xiàn)刃在數(shù)據(jù)存儲器中開辟一個稱為滑窗的N個單元的循環(huán) 緩沖區(qū),循環(huán)緩沖區(qū)地址首尾相鄰:滑窗中存放最新的N個輸入樣本,每次輸入新樣本時,以新樣本改寫滑窗中環(huán)緩沖區(qū)長度寄存器對滑窗進行間接尋址。利用循環(huán)緩沖區(qū)實現(xiàn)Z-1的優(yōu)點是不需要移動數(shù)據(jù), 不存在一個機器周期中要求能一次讀和一次寫的數(shù)據(jù)存 儲器,因而可以將循環(huán)緩沖區(qū)定位在數(shù)據(jù)存儲器的任何 位置(線性緩沖區(qū)要求定位在DARAM)。5y(n) =工aiX(n-i)i=0數(shù)據(jù)存儲券數(shù)館存佬醫(yī)教據(jù)存佬髯循牙級衍區(qū)頂加x(n)J ARxlx(n)-t

7、ni*ARxx(n-l)x(n-l)x(n-l)x(n-2)x(n-2)x (n-2)x(n-3)x(n-3)x(n-3)x(n-4)x(n-4)x (n+2)循壞遂沖區(qū)礁郡x(n-5)x(n+l)ARxx (n+1)4(3)(b)(c)N=6的循環(huán)緩沖區(qū)存儲器圖老的數(shù)據(jù),1114y (n) =box (n) +b】x (n-1) +.+_図(n-N+1)其結構圖FIRFIR 濾波算法實際上是一種乘累加運算。它不斷地從輸入 端讀入樣本值 x/l,x/l,經(jīng)延時(刃)后做乘法累加,輸出濾波 結果+-I IFIRFIR 濾波算法實際上是一種乘累加運算。它不斷地從輸入端讀入樣本值班叭,經(jīng)延時(0)(

8、0)后做乘法累加,輸出 濾波結果yy。C54xC54x 通過兩種方法實現(xiàn) FIRFIR 濾波器的延遲:1.1.線性緩沖區(qū)法2.循環(huán)緩沖區(qū)法3 3 系數(shù)對稱 FIRFIR 濾波器的實現(xiàn)方法3.FIRIR濾波器的輸出表達式寫為x(n)-牙S_l)- .r(n-2)- - p”_N+l)y(/0先將系數(shù)a0a4存放在數(shù)據(jù)存儲器中,然后設置線性緩沖區(qū), 用以存放輸入和輸出數(shù)據(jù)。15 title“FIR1. ASM”:定義源程序名 mmregs;定義存儲器映象寄存器 defstart;定義謠旬標號start bssy,i:為結果y預留1個單元的空間XN usect“XNS 1;在自定義的未初始化段“XN

9、XNM1 .usect“XNJ 1;中保留5個單元的空間XNM2 usect“XNJ XNM3 .usectUXN5 1XNM4 usect“XNX 1AO usect“AO, 1;在自定義的未初始化段“A0”Al usect“A0= 1;中保留5個單元的空間A2 usect“AOS 1A3 usectuA0M, 1A4 usect“AO冷1(1)用線性緩沖區(qū)和直接尋址方法實現(xiàn)FIR:編寫N二5的y(n)計算程序。線性緩沖yy(njXNx(n)XIW1x(n-l)XIIY2x(n-2)xu?nx(n-3)XIW4x(n-4)14PAO set0;定義PAO為輸出端口PAI set1:定義PA1

10、為輸入端口.dataMVPD table/AR1+;傳送程序空間的系數(shù)到數(shù)據(jù)空間LD #XN,DP:設置數(shù)據(jù)存儲器頁指針的起始位置MPYA4,A;a4*x(n-4)ALTDXNM3;x(n-3)T, x(n-3)x(n-4)MACA3,A;A+a3*x(n-3)ALTDXNM2;x(n-2)T, x(n 2) )Tx(n-3)MACA2,A;A+a2JT, x(n l)x(n-2)MACA1,A;A+a巾x(n l)LTDXN;x(n)x(n)-*x(n-l)MACA0,A;A+a0*x(n)ASTHA,y;保存y(n)的高字節(jié)PORTW y,PA0;輸出y(n)BD FIR1;執(zhí)行完下條指令

11、后循環(huán)(帶延遲轉(zhuǎn)移)PORTR PA1,XN;輸入新的x(n)PORTR PA1,XN;從數(shù)據(jù)輸入端口I/O輸入最新數(shù)據(jù)x(n)FIR1: LD XNM4,T;x(n-4)Ttable: .word 1咖32768/10.word -3*32768/10.word 5*32768/10;假定程序空間有五個參數(shù)textstart:SSBXSTM #A0,ARRPT #4;設置進行小數(shù).end20vectors.obj fir 1 obj一0 firl. out -m firl. map一e startMEMORY PAGE 0 :EPROM:VECS:org=01000Horg=03F80Hle

12、n=01000Hlen00080HPAGE 1 :SPRAM:org=00060Hlen00020HDARAM: org=00080Hlen01380H SECTIONS VECSPAGE 0EPROMPAGE 0EPROMPAGE 0SPRAMPAGE 1DARAM align(8) PAGEDARAM align(8) PAGE 用線性緩沖區(qū)和間接尋址方法實現(xiàn)FIR| 例: 編寫y (n) =aO*x (n) +al*x (nl) +a2*x (n2) +a3*x (n3) +a4*x (n4),的計算程序,其中N=5。將系數(shù)aa。存放在數(shù)據(jù)存儲器中,并設置線性緩沖區(qū) 存放輸入數(shù)據(jù)。利用A

13、R1和AR2分別作為間接尋址線性緩沖 區(qū)和系數(shù)區(qū)的輔助寄存器。 vectors: text:bss:XN: title “FIR2 ASfcT :定義源程序名 mmregs9定義存儲器映象寄存器 defstart;定義語句標號start bssy, 1;為結果y預留1個單元的空間x usect x, 5;在自定義的未初始化段“x中保留5個單元的空間d usect W 5;在自定義的未初始化段“曠中保留5個單元的空間PAO set0 :定義PAO為輸出端口PAI set1 ;定義PA1為輸入端口 datatable:. word2*32768/10;假定程序空間有五個參數(shù) word-3*3276

14、8/10 word4*32768/10 word-3*32768/10 word2*32768/10textstart:SSBXSTM#a,ARRPT#4MVPD table/5* AR2+:小數(shù)相乘;將數(shù)據(jù)空間用于放系數(shù)的首地址送AR2;重復下條指令5次傳送:傳送程序空間的系數(shù)到數(shù)據(jù)空間STM#x4,STM#a4,AR2;ARI指向x(n 4)24系數(shù)a0a4存放在程序存儲器中,輸入數(shù)據(jù)存放在數(shù)據(jù) 存儲器的線性緩沖區(qū)中。乘法累加利用MACD指令,該指令完成數(shù)據(jù)存儲器單元與程序存儲器單元相乘,并累加、移位的功能。MPYLTDMACLTDMACLTDMACLTDMACSTHPORTW y(n),

15、PAOBDPORTRPAlARl+Oend;x(n-4)-T;a4:A;x(n-3)T, x(n-3)x(n-4))用線性緩沖區(qū)和帶移位雙操作數(shù)尋址方法實現(xiàn)FIR例: 編寫y (n)二aO*x (n) +al*x (nl)+a2*x (n2)+a3*x (n3) +a4*x (n4),的計算程序,其中N二5。FIR2:LDtitle “FIR3.ASM”mmregs.def startbss y,l;定義源程序名;定義存儲器映象寄存器;定義語句標號start;為結果y預留1個單元的空間Xusect6;在自定義的未初始化;段“亡中保留6個單元PAOset 0:定義PA0為輸出端口PAIset 1

16、 data;定義PA1為輸入端口;假定程序空間有五個參數(shù)COEF:word廣32768/10;a4.word 4 32768/10;a3.word 3*32768/10;a2word -4*32768/10;alword l:PAR, x(n-4)-x(n-3);暫存結果到y(tǒng)(n);輸出y(n)到PAU, ARI指向x(n);執(zhí)行下條指令后循環(huán);輸入新數(shù)據(jù)到x(n),ARl指向x(n-4)start:SSBXSTMSTMFRCT #x+5,ARI #4, ARO#x+l, DPPORTR PAI, x+lFIR3:RPTZ A,#4;設置小數(shù)乘法:ARI指向x(n 4);設MACD疥AR1 ,

17、COEF,ASTHA JAR1PORTW AR1+, PAOBDFIR3PORTR PAI,碎AR1+028(4)用循環(huán)緩沖區(qū)和雙操作數(shù)尋址方法實現(xiàn)FIR【例】用循環(huán)緩沖區(qū)和雙操作數(shù)尋址方法編寫實現(xiàn)FIR濾波的程序。1) FIR濾波器設計設計一個FIR低通濾波器,通帶邊界頻率為1500Hz,通帶波紋小于ldB;阻帶邊界頻率為2000Hz,阻帶衰減大 于40dB;釆樣頻率為8000HzoFIR濾波器的設計可以用MATLAB窗函數(shù)法進行。b=firl(16, 1500/8000*2)-設計濾波器參數(shù)h=round(b*215)-浮點數(shù)轉(zhuǎn)換為定點數(shù)Q15格式272)產(chǎn)生濾波器輸入信號的文件按照通常的

18、程序調(diào)試方法,先用Simulator逐步調(diào) 試各子程序模塊,再用硬件仿真器在實際系統(tǒng)中與硬 件儀器聯(lián)調(diào)。使用CCS的Simulator進行濾波器特性測 試時,需要輸入時間信號x(n)。本例設計一個采樣頻率Fs為8000Hz,輸入信號頻 率為1000Hz和2500Hz的合成信號,通過設計的低通濾 波器將2500Hz信號濾掉,余下1000Hz信號。*一個FIR濾波器源程序fir. asm * mmregs global start defstart, _c_int00INDEX set1KS set256;輸入樣本數(shù)據(jù)個數(shù)N set17;FIR濾波器階數(shù)COEF FIR sec trCOEF FI

19、R;FIR濾波器系數(shù)29 word word data0, 158, 264廠290廠1406廠951, 3187, 9287, 122729287, 3187, -951, T406, -290, 264,158,0INPUT copyfirin. inc;輸入數(shù)據(jù)在數(shù)據(jù)區(qū)0 x2400OUTPUT space1024;輸出數(shù)據(jù)在數(shù)據(jù)區(qū)0 x2500COEFTAB useet“FIR_COEF”,N;自定義段,為未初始化變量DATABUF useet“FIR_BFR” ,N;保留存儲空間BOS useet“STACK” ,0FhTOS useet“STACK” , 1)編寫FIR數(shù)FIR數(shù)字

20、濾#(DATABUF+N-1),DATA_P ;數(shù)據(jù)循環(huán)緩沖區(qū)指針;指向xn- (N-l)STM #COEFTAB, COEF_PFIR_TASK:STM #INPUT, INBUF_PSTM #OUTPUT, OUTBUF_PSTM #KS-1,BRC;塊重復計數(shù)器nopnopSSBX FRCT;設置小數(shù)乘法將FIR系數(shù)從程序存儲區(qū)STM#COEFTAB, COEF_P ;RPT#N-1;移到數(shù)據(jù)存儲區(qū)MVPD#COEF_FIR, *COEF_P+STM#INDEX, INDEX_Pstart:textasg ARO, INDEX_Pasg AR4, DATA_Pasg AR5, COEF_

21、Pasg AR6, INBUF_Pasg AR7, OUTBUF_Pc_intOOb start.文本段;將一個字符串賦給一個符號;輸入數(shù)據(jù)x(n)循環(huán)緩沖區(qū)指針:FIR系數(shù)表指針;模擬輸入數(shù)據(jù)指針;FIR濾波器輸出數(shù)據(jù)指針STM#DATABUF,;數(shù)據(jù)循環(huán)STLSTMA, *DATA P+34LOOP:EENDB EEND endfir. obj-m fir. map -o fir. outMEMORYPAGE0:R0M1(RIX):ORIGIN二0080H, LENGTH二100HPAGE1:INTRAMI (RW) :ORIGIN二2400H, LENGTH二0200HINTRAM2 (

22、RW) :ORIGIN二2600H, LENGTH二0100HINTRAM3(RW) :ORIGIN二2700H, LENGTH二0100HB2B(RW):ORIGIN二0070H, LENGTH二10HRPTBD LOOP-1STM#N, BK;FIR循環(huán)緩沖區(qū)大小LD*INBUF_P+, A;裝載輸入數(shù)據(jù);FIR濾波運算STLA, *DATA_P+%;用最新的樣本值;替代最舊的樣本值RPTZ A,N-1MAC*DATA_P+0%, *C0EF_P+0%, A ;計算STHA, *OUTBUF_P+FIR_FILTER:編寫FIR濾波器鏈接命令文件以上匯編程序的鏈接命令文件f ir cmd如

23、下:36SECTIONS text dataFIR_COEF FIR_BFR stack5) CCS集成開發(fā)環(huán)境下上機操作過程 在CCS上建立fir工程并運行fir. out程序。(2)觀察輸入信號的波形及頻譜。(3)觀察輸出信號的波形及頻譜。35(ROM1INTRAM1INPAGE0PAGE38Graph 性設置窗口37輸入信號的時域波形輸入信號的頻譜圖40濾波器輸出信號時域波形濾波器輸出信號頻譜圖系數(shù)對稱的FIR濾波器具有線性相位特性,這種濾波 器是用得最多的FIR濾波器,特別是對相位失真要求很高 的場合。如果FIR濾波器的h(n)是實數(shù),且滿足偶對稱h(n)=h(N-l-n)或奇對稱h(

24、n)=-h(N-l-n)的條件,則濾波 器具有線性相位特性。兀/2-1y(n) =,h : x(n - i) + x(n - N +1 + i)i=O一個對稱FIR濾波器滿足h (n)二h (N-l-n)。LB3953Graphical Display1aw1WO 2400A FFTbiaaLh AutcScale Rectana血394.系42例如,N二8的FIR濾波器,其輸出方程為:Y (n) =hox (n) +hX (nl) +h2x (n-2) +h3x (n3) +h3x (n4)+h2x (n-5) +hX (n-6) +hx (n-7)總共有8次乘法和7次加法。如果利用對稱性,

25、可將其 改寫成:Y (n) =h0 x (n) +x (n-7) +h】x (n-1) +x (n-6) +h2x (n-2)+x (n-5) +h3x (n-3) +x (n4)變成4次乘法和7次加法,乘法運算的次數(shù)少了一半。這是對稱FIR的一個優(yōu)點。41對稱FIR濾波器的實現(xiàn)可按如下步驟進行:43(1)將數(shù)據(jù)存儲器分為新舊兩個循環(huán)緩沖區(qū),每個循環(huán)緩 沖區(qū)的長度為N/2,New循環(huán)緩沖區(qū)中存放N/2=4個新數(shù)據(jù);Old循環(huán)緩沖區(qū)中存放N/2二4個老數(shù)據(jù)。88hx(n4)COEF力089hx (n-5)TJI8 Ahx (n-6)hi8Bhx (n-7)-*-AR3數(shù)據(jù)存住券Old循壞嫂沖區(qū)系

26、數(shù)奩低地址高地址44(2)設置循環(huán)緩沖區(qū)指針,以AR2指向New循環(huán)緩沖區(qū)中最新 數(shù)據(jù);以AR3指向Old循環(huán)緩沖區(qū)中最老數(shù)據(jù)。(3)在程序存儲器中設置系數(shù)表。(4)(AR2) + (AR3)AH(累加器A的高位),AR2-1AR2, AR3-AR3。(5)將累加器B清0,重復執(zhí)行4次(i二0, 1,2, 3)下面的運算:(AH)*系數(shù)hj+(B)fB,系數(shù)指針(PAR)加1, (AR2) + (AR3) AH, AR2和AR3減1。43保存和輸出結果(結果在BH中)。(7)修正數(shù)據(jù)指針,讓AR2和AR3分別指向New循環(huán)緩沖區(qū)最新的數(shù)據(jù)和Old循環(huán)緩沖區(qū)中最老的數(shù)據(jù)。(8)用New循環(huán)緩沖區(qū)中最老的數(shù)據(jù)替代Old循環(huán)緩沖區(qū)中最老的數(shù)據(jù)。Old循環(huán)緩沖區(qū)指針減1。(9)輸入一個新數(shù)據(jù)替代New循環(huán)緩沖區(qū)中最老的數(shù)據(jù)。 重復執(zhí)行(4)(9)步。C54x的有限沖激響應濾波器指令FIRS為:FIRS Xmem, Ymem, Pmad該指令執(zhí)行Pmad-PAR (程序存儲器地址寄存器)當(RC)!= 0(B) + (A (3216) X(

溫馨提示

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

評論

0/150

提交評論