第6章 應(yīng)用程序設(shè)計(jì)531.ppt_第1頁
第6章 應(yīng)用程序設(shè)計(jì)531.ppt_第2頁
第6章 應(yīng)用程序設(shè)計(jì)531.ppt_第3頁
第6章 應(yīng)用程序設(shè)計(jì)531.ppt_第4頁
第6章 應(yīng)用程序設(shè)計(jì)531.ppt_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2020年7月28日,DSP原理及應(yīng)用,1,第6章 應(yīng)用程序設(shè)計(jì),內(nèi)容提要 數(shù)字信號處理主要面向密集型的運(yùn)算,包括乘法-累加、數(shù)字濾波和快速傅里葉變換等。C54x具備了高速完成上述運(yùn)算的能力,并具有體積小、功耗低、功能強(qiáng)、軟硬件資源豐富等優(yōu)點(diǎn),現(xiàn)已在通信等許多領(lǐng)域得到了廣泛應(yīng)用。 本章結(jié)合數(shù)字信號處理和通信中最常見、最具有代表性的應(yīng)用,介紹通用數(shù)字信號處理算法的DSP實(shí)現(xiàn)方法,主要包括: 有限沖激響應(yīng)(FIR)數(shù)字濾波器 無限沖激響應(yīng)(IIR)數(shù)字濾波器 快速傅里葉變換(FFT) 正弦信號發(fā)生器。 在簡要介紹上述內(nèi)容的基本原理、結(jié)構(gòu)和算法之后,重點(diǎn)介紹設(shè)計(jì)方法和DSP實(shí)現(xiàn)的方法。,2020年7

2、月28日,DSP原理及應(yīng)用,2,第6章 應(yīng)用程序設(shè)計(jì),6.1 FIR濾波器的DSP實(shí)現(xiàn) 6.2 IIR濾波器的DSP實(shí)現(xiàn) 6.3 快速傅里葉變換(FFT)的DSP實(shí)現(xiàn) 6.4 正弦波信號發(fā)生器,2020年7月28日,DSP原理及應(yīng)用,3,第6章 應(yīng)用程序設(shè)計(jì),6.1 FIR濾波器的DSP實(shí)現(xiàn),在數(shù)字信號處理中,濾波占有極其重要的地位。數(shù)字濾波是語音處理、圖像處理、模式識別、頻譜分析等應(yīng)用中的基本處理算法。用DSP芯片實(shí)現(xiàn)數(shù)字濾波除了具有穩(wěn)定性好、精確度高、不受環(huán)境影響等優(yōu)點(diǎn)外,還具有靈活性好等特點(diǎn)。 數(shù)字濾波器是DSP的基本應(yīng)用,分為有限沖激響應(yīng)濾波器FIR和無限沖激響應(yīng)濾波器IIR。 本節(jié)主

3、要討論FIR濾波器的基本結(jié)構(gòu)、設(shè)計(jì)方法和DSP實(shí)現(xiàn)方法。,2020年7月28日,DSP原理及應(yīng)用,4,第6章 應(yīng)用程序設(shè)計(jì),6.1 FIR濾波器的DSP實(shí)現(xiàn),6.1.1 FIR濾波器的基本結(jié)構(gòu),數(shù)字濾波是將輸入的信號序列,按規(guī)定的算法進(jìn)行處理,從而得到所期望的輸出序列。,一個(gè)線性位移不變系統(tǒng)的輸出序列y(n)和輸入序列x(n)之間的關(guān)系,應(yīng)滿足常系數(shù)線性差分方程:,(6.1.1),x(n): 輸入序列,y(n): 輸出序列,ai、bi : 濾波器系數(shù), N: 濾波器的階數(shù)。,2020年7月28日,DSP原理及應(yīng)用,5,第6章 應(yīng)用程序設(shè)計(jì),6.1.1 FIR濾波器的基本結(jié)構(gòu),在式(6.1.1)

4、中,若所有的ai均為0,則得FIR濾波器的差分方程:,(6.1.2),對式(6.1.2)進(jìn)行z變換,可得FIR濾波器的傳遞函數(shù):,(6.1.3),2020年7月28日,DSP原理及應(yīng)用,6,第6章 應(yīng)用程序設(shè)計(jì),6.1.1 FIR濾波器的基本結(jié)構(gòu),FIR濾波器的結(jié)構(gòu) :,2020年7月28日,DSP原理及應(yīng)用,7,第6章 應(yīng)用程序設(shè)計(jì),6.1.1 FIR濾波器的基本結(jié)構(gòu),FIR濾波器的單位沖激響應(yīng)h(n)為有限長序列。,偶對稱線性相位FIR濾波器的差分方程:,N偶數(shù),(6.1.4),若h(n)為實(shí)數(shù),且滿足偶對稱或奇對稱的條件,則FIR濾波器具有線性相位特性。 偶對稱:h(n)= h(N-1-

5、n); 奇對稱:h(n)= -h(N-1-n)。,2020年7月28日,DSP原理及應(yīng)用,8,第6章 應(yīng)用程序設(shè)計(jì),設(shè)低通濾波器的截止頻率為fc,采樣頻率為fs,則系數(shù)表達(dá)式:,2. 濾波器的設(shè)計(jì),(6.1.14),(1) 低通濾波器的設(shè)計(jì),2020年7月28日,DSP原理及應(yīng)用,9,第6章 應(yīng)用程序設(shè)計(jì),高通濾波器可以由一個(gè)幅度為1的響應(yīng)減去一個(gè)低通濾波的響應(yīng)來獲得,如圖所示。,2. 濾波器的設(shè)計(jì),(n)響應(yīng),(2) 高通濾波器的設(shè)計(jì),1,1,fc,1,fc,(n)函數(shù)的表達(dá)式:,低通濾波,高通濾波,(n) =,1 n = 0 0 n 0,高通濾波器的系數(shù):,2020年7月28日,DSP原理

6、及應(yīng)用,10,第6章 應(yīng)用程序設(shè)計(jì),帶通濾波器可以由兩個(gè)截止頻率不同的低通濾波器獲得,如圖所示。,2. 濾波器的設(shè)計(jì),低通濾波2,(3) 帶通濾波器的設(shè)計(jì),1,1,fc1,1,fc1,低通濾波1,帶通濾波,帶通濾波器的系數(shù),等于兩個(gè)低通濾波器的系數(shù)之差:,fc2,fc2,fc1和fc2為低通濾波器的截止頻率,fs為采樣頻率。,2020年7月28日,DSP原理及應(yīng)用,11,第6章 應(yīng)用程序設(shè)計(jì),帶阻濾波器可由(n)和帶通濾波器相減獲得,如圖所示。,2. 濾波器的設(shè)計(jì),(n)響應(yīng),(4) 帶阻濾波器的設(shè)計(jì),1,1,fc1,1,fc1,帶通濾波,帶阻濾波,帶阻濾波器的系數(shù):,fc2,fc2,2020

7、年7月28日,DSP原理及應(yīng)用,12,第6章 應(yīng)用程序設(shè)計(jì),6.1 FIR濾波器的DSP實(shí)現(xiàn),6.1.4 FIR濾波器的DSP實(shí)現(xiàn),FIR濾波器的輸出表達(dá)式:,y(n)=b0 x(n)+b1x(n-1)+ +bn-1x(n-N+1),(6.1.18),bi為濾波器系數(shù),x(n)為濾波器在n時(shí)刻的輸入,y(n)為n時(shí)刻的輸出。,基本算法: 采用乘法累加運(yùn)算。即不斷地輸入樣本x(n),經(jīng)過z-1延時(shí)后,再進(jìn)行乘法-累加,最后輸出濾波結(jié)果y(n)。,2020年7月28日,DSP原理及應(yīng)用,13,第6章 應(yīng)用程序設(shè)計(jì),6.1.4 FIR濾波器的DSP實(shí)現(xiàn),1. z-1算法的實(shí)現(xiàn),常用的方法:,線性緩沖

8、區(qū)法 循環(huán)緩沖區(qū)法。,(1) 線性緩沖區(qū)法,又稱延遲線法。,特點(diǎn):, 在數(shù)據(jù)存儲器中開辟一個(gè)N單元的緩沖區(qū)(滑窗),用來存放最新的N個(gè)輸入樣本;, 從最老樣本開始取數(shù),每取一個(gè)數(shù)后,樣本向下移位;, 讀完最后一個(gè)樣本后,輸入最新樣本并存入緩沖區(qū)的頂部。,2020年7月28日,DSP原理及應(yīng)用,14,第6章 應(yīng)用程序設(shè)計(jì),1. z-1算法的實(shí)現(xiàn),(1) 線性緩沖區(qū)法,緩沖區(qū):,頂部為低地址單元,存放最新樣本;,緩沖區(qū)頂部,最新樣本,底部為高地址單元,存放最老樣本;,緩沖區(qū)底部,最老樣本,指針ARx指向緩沖區(qū)底部。,ARx,2020年7月28日,DSP原理及應(yīng)用,15,第6章 應(yīng)用程序設(shè)計(jì),(1)

9、 線性緩沖區(qū)法,求y(n)的過程:,算法:,取數(shù)、移位和運(yùn)算:, 以ARx為指針,按x(n-7)x(n)的順序取數(shù),每取一次數(shù)后,數(shù)據(jù)向下移一位,并完成一次乘法累加運(yùn)算;, 當(dāng)經(jīng)過8次取數(shù)、移位和運(yùn)算后,得y(n);, 求得y(n)后,輸入新樣本x(n+1),存入緩沖區(qū)頂部單元;, 修改指針ARx,指向緩沖區(qū)的底部。,2020年7月28日,DSP原理及應(yīng)用,16,第6章 應(yīng)用程序設(shè)計(jì),(1) 線性緩沖區(qū)法,求y(n)的過程:,算法:,ARx,x(n-7),ARx,x(n-6),y(n)=y7=b7x(n-7)+0,x(n-6),ARx,x(n-5),y(n)=y6=b6x(n-6)+y7,x(

10、n-5),ARx,x(n-4),y(n)=y5=b5x(n-5)+y6,x(n-4),ARx,x(n-3),y(n)=y4=b4x(n-4)+y5,x(n-3),ARx,x(n-2),y(n)=y3=b3x(n-3)+y4,x(n-2),ARx,x(n-1),y(n)=y2=b2x(n-2)+y3,x(n-1),ARx,x(n),y(n)=y1=b1x(n-1)+y2,x(n),y(n)=b0 x(n)+y1,PORTR,x(n+1),ARx,結(jié)果:, y(n),2020年7月28日,DSP原理及應(yīng)用,17,第6章 應(yīng)用程序設(shè)計(jì),(1) 線性緩沖區(qū)法,求y(n+1)的過程:,算法:,結(jié)果:,

11、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),ARx,2020年7月28日,DSP原理及應(yīng)用,18,第6章 應(yīng)用程序設(shè)計(jì),(1) 線性緩沖區(qū)法,Z-1的運(yùn)算是通過執(zhí)行存儲器延時(shí)指令來實(shí)現(xiàn)的。即將數(shù)據(jù)存儲器中的數(shù)據(jù)向較高地址單元移位來進(jìn)行延時(shí)。,其指令:,DELAY Smem ;(Smem) Smem+1,DELAY *AR3- ;AR3指向源地址,將

12、延時(shí)指令與其他指令結(jié)合使用,可在同樣的機(jī)器周期內(nèi)完成這些操作。例如:,LD + DELAY LTD MAC + DELAY MACD,2020年7月28日,DSP原理及應(yīng)用,19,第6章 應(yīng)用程序設(shè)計(jì),(1) 線性緩沖區(qū)法,注意:用線性緩沖區(qū)實(shí)現(xiàn)z-1運(yùn)算時(shí),緩沖區(qū)的數(shù)據(jù)需要移動,這樣在一個(gè)機(jī)器周期內(nèi)需要一次讀和一次寫操作。因此,線性緩沖區(qū)只能定位在DARAM中。,優(yōu)點(diǎn):,在存儲器中新老數(shù)據(jù)的位置直觀明了。,2020年7月28日,DSP原理及應(yīng)用,20,第6章 應(yīng)用程序設(shè)計(jì),6.1.4 FIR濾波器的DSP實(shí)現(xiàn),2. FIR濾波器(線性緩沖區(qū)法)的實(shí)現(xiàn),C54x提供的乘法-累加指令MAC,可使

13、FIR數(shù)字濾波器在單周期內(nèi)完成每個(gè)樣值的乘法 -累加計(jì)算。而每個(gè)樣值的乘法-累加計(jì)算,可采用RPTZ和MACD指令來實(shí)現(xiàn)。,為了實(shí)現(xiàn)對應(yīng)項(xiàng)乘積運(yùn)算,輸入的樣值x(n)和濾波系數(shù)bi必須合理的存放,并正確初始化存儲塊和塊指針。,2020年7月28日,DSP原理及應(yīng)用,21,第6章 應(yīng)用程序設(shè)計(jì),2. FIR濾波器的實(shí)現(xiàn),(1) 用線性緩沖區(qū)實(shí)現(xiàn)FIR濾波器,設(shè)N=7,F(xiàn)IR濾波器的算法:,y(n)=b0 x(n)+b1x(n-1)+b5x(n-5) +b6x(n-6),x,b,雙操作數(shù)尋址指令:MACD *AR1-,b,A,功能:A=A+(AR1)(b), AR1-1AR1,(AR1)(AR1+

14、1),AR1,x(n-6),b6,x(n-6),b6x(n-6),+A,b6x(n-6)+A,AR1,x(n-5),2020年7月28日,DSP原理及應(yīng)用,22,第6章 應(yīng)用程序設(shè)計(jì),(1) 用線性緩沖區(qū)實(shí)現(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*32

15、768/10 .word 1*32768/10,;自定義數(shù)據(jù)空間,x,暫存y(n),x(n-1),x(n-2),x(n-3),x(n-4),x(n-5),x(n-6),定義系數(shù)bi,COEF,b6,;定義b6=0.1,;定義b5=0.2 ;定義b4=-0.4 ;定義b3=0.3 ;定義b2=-0.4 ;定義b1=0.2 ;定義b0=0.1,b5,b4,b3,b2,b1,b0,x(n),2020年7月28日,DSP原理及應(yīng)用,23,第6章 應(yīng)用程序設(shè)計(jì),(1) 用線性緩沖區(qū)實(shí)現(xiàn)FIR濾波器,程序清單: .text start: SSBX FRCT STM #x+7,AR2 STM #6,AR0

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

17、2),AR2,x(n-1),A+b1x(n-1),x(n),A+b0 x(n),AR2,AR2,y(n-1),;暫存y(n),y(n),;輸出y(n),修改AR2,AR2,;循環(huán),;輸入最新數(shù)據(jù), 修改AR2=AR2+AR0,x(n+1),AR2,2020年7月28日,DSP原理及應(yīng)用,24,第6章 應(yīng)用程序設(shè)計(jì),1. z-1算法的實(shí)現(xiàn),(2)循環(huán)緩沖區(qū)法,特點(diǎn):, 在數(shù)據(jù)存儲器中開辟一個(gè)N個(gè)單元的緩沖區(qū)(滑窗),用來存放最新的N個(gè)輸入樣本; 從最新樣本開始取數(shù); 讀完最老樣本后,輸入最新樣本來代替最老樣本,而其他數(shù)據(jù)位置不變; 用BK寄存器對緩沖區(qū)進(jìn)行間接尋址,使緩沖區(qū)地址首尾相鄰。,202

18、0年7月28日,DSP原理及應(yīng)用,25,第6章 應(yīng)用程序設(shè)計(jì),(2)循環(huán)緩沖區(qū)法,緩沖區(qū):,頂層為低地址單元,存放最新樣本;,x(n),底層為高地址單元,存放最老樣本;,x(n-7),x(n-1),x(n-2),x(n-3),x(n-4),x(n-5),x(n-6),ARx指向最新樣本單元。,ARx,算 法:,計(jì)算過程:, 以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次乘法累加計(jì)算;,y(n)=y0=b0

19、 x(n)+0,y(n)=y1=b1x(n-1)+y0,y(n)=y2=b2x(n-2)+y1,y(n)=y3=b3x(n-3)+y2,y(n)=y4=b4x(n-4)+y3,y(n)=y5=b5x(n-5)+y4,y(n)=y6=b5x(n-6)+y5,y(n)=y7=b5x(n-7)+y6,2020年7月28日,DSP原理及應(yīng)用,26,第6章 應(yīng)用程序設(shè)計(jì),(2)循環(huán)緩沖區(qū)法,算 法:,計(jì)算過程:, 每取1次數(shù)后,完成1次乘法累加計(jì)算;, 求得y(n)后,輸入新樣本替代最老樣本;,x(n+1),x(n+1), 修改指針ARx,指向最新樣本單元。,ARx, 求y(n):,取數(shù)順序:x(n)x

20、(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)單元, 求y(n+2):,取數(shù)順序:x(n+2)x(n-5),最新樣本:x(n+3),ARx:指向x(n+3)單元,2020年7月28日,DSP原理及應(yīng)用,27,第6章 應(yīng)用程序設(shè)計(jì),(2)循環(huán)緩沖區(qū)法,循環(huán)緩沖區(qū)的優(yōu)點(diǎn):, 緩沖區(qū)數(shù)據(jù)不需要移動; 可以使用SARAM存儲器。,實(shí)現(xiàn)N個(gè)循環(huán)緩沖區(qū)單元首尾相鄰,可用BK寄存器按模間接尋址來實(shí)現(xiàn)。,常用指令:, *ARx+%,;增量、按模修正ARx addr=ARx,ARx=cir

21、c(ARx+1), *ARx-%,;減量、按模修正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),2020年7月28日,DSP原理及應(yīng)用,28,第6章 應(yīng)用程序設(shè)計(jì),(2)循環(huán)緩沖區(qū)法,circ是根據(jù)BK寄存器中的緩沖區(qū)長度,對(ARx +1)、(ARx-1)、(A

22、Rx+AR0)、(ARx-AR0)和(ARx+1k)的值進(jìn)行取模,使指針ARx指向緩沖區(qū),實(shí)現(xiàn)循環(huán)緩沖區(qū)首尾相鄰。,例如:(BK)=N=8,(AR1)=0060h,用*AR1+%間接尋址。,第一次尋址后,AR1指向0061h單元; 第二次尋址后,AR1指向0062h單元; 第八次尋址后,AR1指向0068h單元; 將BK按8取模,AR1回到0060h單元。,2020年7月28日,DSP原理及應(yīng)用,29,第6章 應(yīng)用程序設(shè)計(jì),(2)循環(huán)緩沖區(qū)法,循環(huán)尋址的算法:,if 0index+step BK index=index+step else if index+stepBK index=index

23、+step-BK else if index+step 0 index=index+step+BK,index:存放在輔助寄存器中的地址指針; step:步長,可正可負(fù),|step|BK。,2020年7月28日,DSP原理及應(yīng)用,30,第6章 應(yīng)用程序設(shè)計(jì),(2)循環(huán)緩沖區(qū)法, 用BK規(guī)定循環(huán)緩沖區(qū)的長度N; 緩沖區(qū)起始地址的k個(gè)最低有效位必須為0,且滿足2kN。,要求:,例如:N=31,k的最小值為5,則緩沖區(qū)的起始地址:XXXX XXXX XXX0 0000B,若N=32,k的最小值為6,緩沖區(qū)的起始地址:XXXX XXXX XX00 0000B,2020年7月28日,DSP原理及應(yīng)用,3

24、1,第6章 應(yīng)用程序設(shè)計(jì),2. FIR濾波器的實(shí)現(xiàn),(2) 用循環(huán)緩沖區(qū)實(shí)現(xiàn)FIR濾波器,設(shè)N=7,F(xiàn)IR濾波器的算法:,y(n)=b0 x(n)+b1x(n-1)+b5x(n-5) +b6x(n-6),y,b0,xn,2020年7月28日,DSP原理及應(yīng)用,32,第6章 應(yīng)用程序設(shè)計(jì),(2) 用循環(huán)緩沖區(qū)實(shí)現(xiàn)FIR濾波器,程序清單: .title “FIR2.ASM” .mmregs .def start .bss y,1 xn .usect “xn”,7 b0 .usect “b0”,7 PA0 .set 0 PA1 .set 1 .data table: .word 1*32768/10

25、 .word 2*32768/10 .word 3*32768/10 .word 4*32768/10 .word 5*32768/10 .word 6*32768/10 .word 7*32768/10,;源文件標(biāo)題,;定義MMR寄存器符號名,;定義模塊,;給y保留1個(gè)空間,y,;給xn段保留7個(gè)空間,xn,;給b0段保留7個(gè)空間,b0,;PA0賦值為0,;PA1賦值為1,;從ROM的table定義數(shù)據(jù),;定義0.1,;定義0.2,;定義0.3,;定義0.4,;定義0.5,;定義0.6,;定義0.7,0.1,0.2,0.3,0.4,0.5,0.6,0.7,2020年7月28日,DSP原理及應(yīng)

26、用,33,第6章 應(yīng)用程序設(shè)計(jì),.text start: SSBX FRCT STM #b0,AR1 RPT #6 MVPD table,*AR1+ STM #xn+6,AR2 STM #b0+6,AR3 STM #7,BK STM #-1,AR0 LD #xn,DP PORTR PA1,xn FIR2: RPTZ A,#6 MAC *AR2+0%,*AR3+0%,A STH A,y PORTW y,PA0 BD FIR2 PORTR PA1,*AR2+0% .end,;設(shè)置小數(shù)乘法,;AR1指向b0,AR1,;設(shè)置傳輸次數(shù),;系數(shù)傳輸至數(shù)據(jù)區(qū),0.1,0.1,AR1,0.2,0.2,AR1,

27、0.3,0.3,AR1,0.4,0.4,AR1,0.5,0.5,AR1,0.6,0.6,AR1,0.7,0.7,AR1,;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.7,0.7x(n-6)+0,AR2,AR3,x(n-5),0.6,0.6x(n-5)+A,AR2,AR3,x(n-4),0.5,0.5x(n-4)+A,AR2,AR3,x(n-3),0.4,0.4x(n-3)+A,AR2,AR3,x(n-2),0

28、.3,0.3x(n-2)+A,AR2,AR3,x(n-1),0.2,0.2x(n-1)+A,AR2,AR3,x(n),0.1,0.1x(n)+A,AR2,AR3,;存儲y(n),y(n),;輸出y(n),;循環(huán),;輸入最新x(n+1),修正AR2,x(n+1),AR2,2020年7月28日,DSP原理及應(yīng)用,34,第6章 應(yīng)用程序設(shè)計(jì),鏈接命令文件: FIR2.obj vectors.obj -o FIR2.out -m FIR2.map -e start MEMORY PAGE0: EPROM:org=0E000h, len=1000h VECS: org=0FF80h, len=0080h

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

30、7F,0080,1380h,13EF,2020年7月28日,DSP原理及應(yīng)用,35,第6章 應(yīng)用程序設(shè)計(jì),鏈接命令文件:,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個(gè)單元定義在DARAM ;從b0起8個(gè)單元定義在DARA

31、M ;vections定義在VECS區(qū),2020年7月28日,DSP原理及應(yīng)用,36,第6章 應(yīng)用程序設(shè)計(jì),2. FIR濾波器的實(shí)現(xiàn),(3) 系數(shù)對稱FIR濾波器的實(shí)現(xiàn),系數(shù)對稱FIR濾波器具有線性相位的特性,在數(shù)字信號處理中應(yīng)用十分廣泛,常用于相位失真要求較高的場合。,設(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-

32、2)+x(n-5) +b3 x(n-3)+x(n-4) ,需要: 4次乘法 7次加法,2020年7月28日,DSP原理及應(yīng)用,37,第6章 應(yīng)用程序設(shè)計(jì),(3) 系數(shù)對稱FIR濾波器的實(shí)現(xiàn),對稱FIR濾波器的實(shí)現(xiàn)方法:, 在RAM中開辟兩個(gè)N/2長度的循環(huán)緩沖區(qū)New和Old ,分別存放N/2個(gè)新數(shù)據(jù)和老數(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), 設(shè)置循環(huán)緩沖區(qū)指針: AR1指向New區(qū)中的最新數(shù)據(jù), AR2指向Old區(qū)中的最老數(shù)據(jù);,AR1,AR2, 在程序存儲器中設(shè)置系數(shù)表;,b0,b1,b2,b3,COEF, 進(jìn)行

33、(AR1)+(AR2)AH加法運(yùn)算,并修改數(shù)據(jù)指針,AR1+1AR1,AR2-1AR2;,x(n),x(n),x(n-7),x(n-7),x(n) + x(n-7),x(n) + x(n-7),AR1,AR2,2020年7月28日,DSP原理及應(yīng)用,38,第6章 應(yīng)用程序設(shè)計(jì),(3) 系數(shù)對稱FIR濾波器的實(shí)現(xiàn),對稱FIR濾波器的實(shí)現(xiàn)方法:, 累加器B清0,完成塊操作,重復(fù)執(zhí)行4次;,乘法累加:(AH)bi +BB;,PAR,b0,x(n) + x(n-7),00 0000 0000,b0 x(n)+x(n-7)+0,b0 x(n)+x(n-7),修改系數(shù)指針:PAR+1PAR;,PAR,加法

34、運(yùn)算:(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;,AR1,AR2,b1,x(n-3) + x(n-6),b0 x(n)+x(n-7),b1x(n-3) + x(n-6)+B,b1x(n-3) + x(n-6)+B,PAR,x(n-2),x(n-5),x(n-2) + x(n-5),x(n-2) + x(n-5),AR1,AR2,b2,x(n-2) + x(n-5),b1x(n-3) + x(n-6)+B,b2x(n-2) + x(n-5)+B,b2x(n-2) +

35、 x(n-5)+B,PAR,x(n-1),x(n-4),x(n-1) + x(n-4),x(n-1) + x(n-4),AR1,AR2,b3,x(n-1) + x(n-4),b2x(n-2) + x(n-5)+B,b3x(n-1) + x(n-4)+B,b3x(n-1) + x(n-4)+B,PAR,x(n) + x(n-7),x(n) + x(n-7),AR1,AR2, 保存和輸出結(jié)果;,2020年7月28日,DSP原理及應(yīng)用,39,第6章 應(yīng)用程序設(shè)計(jì),(3) 系數(shù)對稱FIR濾波器的實(shí)現(xiàn),對稱FIR濾波器的實(shí)現(xiàn)方法:, 修正數(shù)據(jù)指針,,AR1指向New區(qū)的最老數(shù)據(jù);,AR2指向Old區(qū)的最

36、老數(shù)據(jù)。,AR2, 用New區(qū)的最老數(shù)據(jù)替代Old區(qū)的最老數(shù)據(jù),輸入新數(shù)據(jù)替代New區(qū)的最老數(shù)據(jù) ;,x(n-3),x(n+1), 重復(fù)執(zhí)行 。,2020年7月28日,DSP原理及應(yīng)用,40,第6章 應(yīng)用程序設(shè)計(jì),(3) 系數(shù)對稱FIR濾波器的實(shí)現(xiàn),系數(shù)對稱FIR濾波器指令:,格式: FIRS Xmem,Ymem,Pmad,功能: PmadPAR; 當(dāng)(RC)0,則B+AH(Pmem)B, (Xmem)+ (Ymem)16A, PAR+1PAR,RC-1 RC,其中, Pmem是通過PAR尋址。,2020年7月28日,DSP原理及應(yīng)用,41,第6章 應(yīng)用程序設(shè)計(jì),(3) 系數(shù)對稱FIR濾波器的

37、實(shí)現(xiàn),程序清單:,.title “FIR3.ASM” .mmregs .def start .bss y,1 x_new: .usect “DATA1”,4 x_old: .usect “DATA2”,4 size .set 4 PA0 .set 0 PA1 .set 1 .data COEF: .word 1*32768/10 .word 2*32768/10 .word 3*32768/10 .word 4*32768/10,;定義MMR寄存器符號名 ;定義模塊 ;給y保留1個(gè)空間 ;給DATA1段保留4個(gè)空間 ;給DATA2段保留4個(gè)空間 ;給符號size賦值 ;給輸出口地址PA0賦值

38、;給輸入口地址PA1賦值 ;在ROM中定義數(shù)據(jù)段 ;定義數(shù)據(jù)0.1 ;定義數(shù)據(jù)0.2 ;定義數(shù)據(jù)0.3 ;定義數(shù)據(jù)0.4,y,SPRAM,x_new,DATA1,x_old,DATA2,COEF,系數(shù)表,2020年7月28日,DSP原理及應(yīng)用,42,第6章 應(yīng)用程序設(shè)計(jì),(3) 系數(shù)對稱FIR濾波器的實(shí)現(xiàn),程序清單:,.text start: 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_

39、new單元 ;AR2指向x_old+3單元 ;設(shè)置循環(huán)緩沖區(qū)長度 ;設(shè)置雙操作數(shù)增量AR0=-1 ;輸入數(shù)據(jù)x(n),2020年7月28日,DSP原理及應(yīng)用,43,第6章 應(yīng)用程序設(shè)計(jì),程序清單:,FIR3: ADD *AR1+0%,*AR2+0%,A RPTZ B,#(size-1) FIRS *AR1+0%,*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è)置重復(fù)次數(shù) ;乘法累加、加法操

40、作 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ū),2020年7月28日,DSP原理及應(yīng)用,44,第6章 應(yīng)用程序設(shè)計(jì),6.4 正弦波信號發(fā)生器,正弦波信號發(fā)生器已被廣泛地應(yīng)用于通信、儀器儀表和工業(yè)控制等領(lǐng)域的信號處理系統(tǒng)中。 通常有兩種方法可以產(chǎn)生正弦波,分別為查表法和泰勒級數(shù)展開法。 查表法是通過查表的方式來實(shí)現(xiàn)正弦波,主要用于對精度要求不很高的場合。 泰勒級數(shù)展開法是根據(jù)泰勒展開式進(jìn)行計(jì)算來實(shí)現(xiàn)正弦信號,它能精確地

41、計(jì)算出一個(gè)角度的正弦和余弦值,且只需要較小的存儲空間。 本節(jié)主要介紹用泰勒級數(shù)展開法來實(shí)現(xiàn)正弦波信號。,2020年7月28日,DSP原理及應(yīng)用,45,第6章 應(yīng)用程序設(shè)計(jì),6.4 正弦波信號發(fā)生器,6.4.1 產(chǎn)生正弦波的算法,正弦函數(shù)和余弦函數(shù)可以展開成泰勒級數(shù),其表達(dá)式:,2020年7月28日,DSP原理及應(yīng)用,46,第6章 應(yīng)用程序設(shè)計(jì),6.4.1 產(chǎn)生正弦波的算法,取泰勒級數(shù)的前5項(xiàng),得近似計(jì)算式:,(6.4.3),(6.4.4),2020年7月28日,DSP原理及應(yīng)用,47,第6章 應(yīng)用程序設(shè)計(jì),6.4.1 產(chǎn)生正弦波的算法,遞推公式:,(6.4.3),(6.4.4),sin(nx)

42、 = 2cos(x)sin(n-1)x-sin(n-2)x,cos(nx) = 2cos(x)sin(n-1)x-cos(n-2)x,由遞推公式可以看出,在計(jì)算正弦和余弦值時(shí),需要已知cos(x)、sin(n-1)x、sin(n-2)x和cos(n-2)x。,2020年7月28日,DSP原理及應(yīng)用,48,第6章 應(yīng)用程序設(shè)計(jì),計(jì)算一個(gè)角度x的正弦值,可利用泰勒級數(shù)的展開式,采用子程序的調(diào)用方式來實(shí)現(xiàn)。 在調(diào)用前先在數(shù)據(jù)存儲器d_xs單元中存放x的弧度值,計(jì)算結(jié)果存放在d_sinx單元中。,1計(jì)算一個(gè)角度的正弦值,程序中要用到一些存儲單元存放數(shù)據(jù)和變量,存儲單元的分配如下: d_xs:x; d_

43、squr_xs: x2 d_temp_s:暫存; d_sinx:計(jì)算結(jié)果sinx c_1_s:7FFFh (數(shù)值1);d_coef_s :泰勒系數(shù),2020年7月28日,DSP原理及應(yīng)用,49,第6章 應(yīng)用程序設(shè)計(jì),存儲單元分配圖:,1計(jì)算一個(gè)角度的正弦值,2020年7月28日,DSP原理及應(yīng)用,50,第6章 應(yīng)用程序設(shè)計(jì),程序清單sinx.asm: .title “sinx.asm” .mmregs .def start .ref sin_start,d_xs,d_sinx STACK: .usect “STACK”,10 start: STM #STACK+10,SP LD #d_xs,D

44、P ST #6487H,d_xs CALL sin_start end: B end,1計(jì)算一個(gè)角度的正弦值,;定義符號 ;定義符號 ;建立堆棧 ;設(shè)置堆棧指針 ;設(shè)置頁指針 ;xd_xs ;調(diào)用子程序,2020年7月28日,DSP原理及應(yīng)用,51,第6章 應(yīng)用程序設(shè)計(jì),程序清單sinx.asm:,1計(jì)算一個(gè)角度的正弦值,sin_start: .def sin_start d_coef_s .usect “coef_s”,4 .data table_s: .word 01C7H .word 030BH .word 0666H .word 1556H d_xs .usect “sin_vars”

45、,1 d_squr_xs .usect “sin_vars”,1 d_temp_s .usect “sin_vars”,1 d_sinx .usect “sin_vars”,1 c_1_s .usect “sin_vars”,1,;子程序 ;定義符號 ;定義數(shù)據(jù)空間存放系數(shù) ;定義程序空間存放系數(shù) ;c1=1/(89) ;c2=1/(67) ;c3=1/(45) ;c4=1/(23) ;定義1個(gè)數(shù)據(jù)空間存放x ;定義1個(gè)數(shù)據(jù)空間存放x2 ;定義1個(gè)暫存單元 ;定義數(shù)據(jù)空間存放結(jié)果 ;定義數(shù)據(jù)空間存放數(shù)值1,2020年7月28日,DSP原理及應(yīng)用,52,第6章 應(yīng)用程序設(shè)計(jì),程序清單sinx.a

46、sm:,.text SSBX FRCT STM #d_coef_s,AR4 RPT #3 MVPD #table_s,*AR4+ STM #d_coef_s,AR2 STM #d_xs,AR3 STM #c_1_s,AR5 ST #7FFFH,c_1_s SQUR *AR3+,A ST A,*AR3 | LD *AR5,B MASR *AR3+,*AR2+,B,A MPYA A,;設(shè)置小數(shù)運(yùn)算 ;設(shè)置系數(shù)表首地址 ;設(shè)置重復(fù)操作次數(shù) ;向系數(shù)表傳送泰勒系數(shù) ;系數(shù)表首地址送AR2 ;x單元地址送AR3 ;數(shù)值1地址送AR5 ;將數(shù)值1送c_l_s單元 ;求x的平方值 ;x2值存入d_squr_

47、xs單元 ;B=1 ;A=1-x2/72,T=x2 ;A=TA= x2(1-x2/72),2020年7月28日,DSP原理及應(yīng)用,53,第6章 應(yīng)用程序設(shè)計(jì),STH A,*AR3 MASR *AR3-,*AR2+,B,A MPYA *AR3+ ST B,*AR3 | LD *AR5,B MASR *AR3-,*AR2+,B,A MPYA *AR3+ ST B,*AR3 | LD *AR5,B MASR *AR3-,*AR2,B,A MPYA d_xs STH B,d_sinx RET .end,;(d_temp_s)=x2(1-x2/72) ;A=1-x2/42(1-x2/72) ;T= x2

48、(1-x2/72) ;B=x2(1-x2/42(1-x2/72) ;(d_temp_s)=x2(1-x2/42(1-x2/72) ;B=1 ;A=1-x2/20(1-x2/42(1-x2/72) ;B=x2(1-x2/20(1-x2/42(1-x2/72) ;(d_temp_s)=B= ;B=1 ;A=1-x2/6(1-x2/20(1-x2/42(1-x2/72) ;B=x(1-x2/6(1-x2/20(1-x2/42(1-x2/72) ;計(jì)算sinx結(jié)果存入d_sinx單元 ;子程序返回,2020年7月28日,DSP原理及應(yīng)用,54,第6章 應(yīng)用程序設(shè)計(jì),計(jì)算余弦值與計(jì)算正弦值相同。 存儲單

49、元分配圖:,2計(jì)算一個(gè)角度的余弦值,2020年7月28日,DSP原理及應(yīng)用,55,第6章 應(yīng)用程序設(shè)計(jì),實(shí)現(xiàn)步驟如下:,3正弦波的實(shí)現(xiàn),第一步:利用sin_start和cos_start子程序,計(jì)算045(間隔為0.5)的正弦和余弦值; 第二步:利用sin(2x)=2sin(x)cos(x)公式,計(jì)算090的正弦值(間隔為1); 第三步:通過復(fù)制,獲得0359的正弦值; 第四步:將0359的正弦值重復(fù)從PA口輸出,便可得到正弦波。,2020年7月28日,DSP原理及應(yīng)用,56,第6章 應(yīng)用程序設(shè)計(jì),正弦波源程序清單sin.asm,3正弦波的實(shí)現(xiàn),.title “sinx.asm” .mmregs .def start .ref d_xs,sinx,d_sinx,d_xc,cosx,d_cosx sin_x: .usect “sin_x”,360 STACK: .usect “STACK”,10 k

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論