第6章 應(yīng)用程序設(shè)計(DSP原理及應(yīng)用)_第1頁
第6章 應(yīng)用程序設(shè)計(DSP原理及應(yīng)用)_第2頁
第6章 應(yīng)用程序設(shè)計(DSP原理及應(yīng)用)_第3頁
第6章 應(yīng)用程序設(shè)計(DSP原理及應(yīng)用)_第4頁
第6章 應(yīng)用程序設(shè)計(DSP原理及應(yīng)用)_第5頁
已閱讀5頁,還剩176頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章

應(yīng)用程序設(shè)計內(nèi)容提要

數(shù)字信號處理主要面向密集型的運算,包括乘法-累加、數(shù)字濾波和快速傅里葉變換等?!疌54x具備了高速完成上述運算的能力,并具有體積小、功耗低、功能強、軟硬件資源豐富等優(yōu)點,現(xiàn)已在通信等許多領(lǐng)域得到了廣泛應(yīng)用。

本章結(jié)合數(shù)字信號處理和通信中最常見、最具有代表性的應(yīng)用,介紹通用數(shù)字信號處理算法的DSP實現(xiàn)方法,主要包括:

有限沖激響應(yīng)(FIR)數(shù)字濾波器

無限沖激響應(yīng)(IIR)數(shù)字濾波器快速傅里葉變換(FFT)

正弦信號發(fā)生器。在簡要介紹上述內(nèi)容的基本原理、結(jié)構(gòu)和算法之后,重點介紹設(shè)計方法和DSP實現(xiàn)的方法。

2022/10/111DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

6.1

FIR濾波器的DSP實現(xiàn)

6.2

IIR濾波器的DSP實現(xiàn)6.3快速傅里葉變換(FFT)的DSP實現(xiàn)6.4正弦波信號發(fā)生器2022/10/112DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1FIR濾波器的DSP實現(xiàn)

在數(shù)字信號處理中,濾波占有極其重要的地位。數(shù)字濾波是語音處理、圖像處理、模式識別、頻譜分析等應(yīng)用中的基本處理算法。用DSP芯片實現(xiàn)數(shù)字濾波除了具有穩(wěn)定性好、精確度高、不受環(huán)境影響等優(yōu)點外,還具有靈活性好等特點。

數(shù)字濾波器是DSP的基本應(yīng)用,分為有限沖激響應(yīng)濾波器FIR和無限沖激響應(yīng)濾波器IIR。

本節(jié)主要討論FIR濾波器的基本結(jié)構(gòu)、設(shè)計方法和DSP實現(xiàn)方法。

2022/10/113DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1FIR濾波器的DSP實現(xiàn)

6.1.1

FIR濾波器的基本結(jié)構(gòu)

數(shù)字濾波是將輸入的信號序列,按規(guī)定的算法進(jìn)行處理,從而得到所期望的輸出序列。

一個線性位移不變系統(tǒng)的輸出序列y(n)和輸入序列x(n)之間的關(guān)系,應(yīng)滿足常系數(shù)線性差分方程:(6.1.1)

x(n):輸入序列,y(n):

輸出序列,ai、bi:濾波器系數(shù),N:濾波器的階數(shù)。

2022/10/114DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.1

FIR濾波器的基本結(jié)構(gòu)

在式(6.1.1)中,若所有的ai均為0,則得FIR濾波器的差分方程:

(6.1.2)

對式(6.1.2)進(jìn)行z變換,可得FIR濾波器的傳遞函數(shù):

(6.1.3)

2022/10/115DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.1

FIR濾波器的基本結(jié)構(gòu)

FIR濾波器的結(jié)構(gòu):

z-1z-1+x(n)y(n)x(n-1)x(n-N+1)b0b1bN-2bN-1z-12022/10/116DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.1

FIR濾波器的基本結(jié)構(gòu)

FIR濾波器的單位沖激響應(yīng)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/10/117DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.1

FIR濾波器的基本結(jié)構(gòu)

在數(shù)字濾波器中,F(xiàn)IR濾波器具有如下幾個主要特點:

FIR濾波器無反饋回路,是一種無條件穩(wěn)定系統(tǒng);②

FIR濾波器可以設(shè)計成具有線性相位特性。2022/10/118DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1FIR濾波器的DSP實現(xiàn)

6.1.2

FIR濾波器的設(shè)計方法設(shè)計FIR濾波器的基本方法之一,是用有限項傅氏級數(shù)來逼近所要求的濾波器響應(yīng)。1.

用傅氏級數(shù)設(shè)計FIR濾波器

Hd()的傅氏級數(shù):

(6.1.5)

=f/fs為歸一化頻率,fs為采樣頻率,T=2f/fs

=2。2022/10/119DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.2

FIR濾波器的設(shè)計方法系數(shù)Cn的選擇可在最小均方誤差的條件下,使傳遞函數(shù)H(z)逼近Hd()來決定。1.

用傅氏級數(shù)設(shè)計FIR濾波器

(6.1.6)

且C-n=Cn。

設(shè)Hd()為偶函數(shù),則

n

0(6.1.7)

2022/10/1110DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計理想的傳遞函數(shù)Hd()有無限多個系數(shù)Cn,而實際的濾波器的系數(shù)只能有有限多個。因此,可以將式(6.1.7)中的無限項級數(shù)進(jìn)行截取,得到近似的傳遞函數(shù):1.

用傅氏級數(shù)設(shè)計FIR濾波器

(6.1.8)

||<1,Q為有限的正整數(shù)。

(6.1.9)

令z=ej2,則有

2022/10/1111DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計近似傳遞函數(shù)的沖激響應(yīng)是由一系列的系數(shù)來決定:C-Q、C-Q+1、…、C-1、C0、…、CQ-1、CQ。1.

用傅氏級數(shù)設(shè)計FIR濾波器

(6.1.10)

為了解決這個問題,可引入Q個采樣周期的延時,得

當(dāng)n>0時,對應(yīng)的Cnzn項代表的是一個非因果的濾波器,即輸出先于輸入,要得到n時刻的輸出響應(yīng)需用到n+1時刻的輸出響應(yīng)。

2022/10/1112DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計令i=-(n-Q),作變量置換得1.

用傅氏級數(shù)設(shè)計FIR濾波器

0

i

2Q(6.1.11)

令bi=CQ-i,N-1=2Q,則H(z)的表達(dá)式為

0

i

N-1(6.1.12)

當(dāng)N-1=2Q時,b0=CQ、b1=CQ-1、b2=CQ-2、…、

bQ=C0、bQ+1=C1、…、

b2Q-1=C-Q+1、b2Q=C-Q。

當(dāng)N=2Q+1時,系數(shù)bi是關(guān)于bQ對稱的,即bi=CQ-i且Cn=C-n

2022/10/1113DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計例如,當(dāng)Q=5時,濾波器的11個系數(shù)如下:1.

用傅氏級數(shù)設(shè)計FIR濾波器

b0=b10=C5

b1=b9=C4

b2=b8=C3

b3=b7=C2

b4=b6=C1

b5=C0

根據(jù)卷積公式得

(6.1.13)

由上述公式可實現(xiàn)FIR濾波器,其響應(yīng)由N項構(gòu)成。

2022/10/1114DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.2

FIR濾波器的設(shè)計方法

FIR濾波器分為低通濾波、高通濾波、帶通濾波和帶阻濾波,其設(shè)計可根據(jù)給出的濾波特性,通過下式計算系數(shù)Cn來實現(xiàn)。2.

濾波器的設(shè)計

n

0

2022/10/1115DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

設(shè)低通濾波器的截止頻率為fc,采樣頻率為fs,則系數(shù)表達(dá)式:

2.

濾波器的設(shè)計

(6.1.14)

(1)

低通濾波器的設(shè)計

2022/10/1116DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

高通濾波器可以由一個幅度為1的響應(yīng)減去一個低通濾波的響應(yīng)來獲得,如圖所示。

2.

濾波器的設(shè)計

(n)響應(yīng)

(2)

高通濾波器的設(shè)計

11fc1f00f0ffc(n)函數(shù)的表達(dá)式:

低通濾波

高通濾波

(n)=

1n=00

n

0高通濾波器的系數(shù):

2022/10/1117DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計帶通濾波器可以由兩個截止頻率不同的低通濾波器獲得,如圖所示。

2.

濾波器的設(shè)計

低通濾波2

(3)

帶通濾波器的設(shè)計

11fc11f00f0ffc1低通濾波1

帶通濾波

帶通濾波器的系數(shù),等于兩個低通濾波器的系數(shù)之差:

fc2fc2

fc1和fc2為低通濾波器的截止頻率,fs為采樣頻率。

2022/10/1118DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計帶阻濾波器可由(n)和帶通濾波器相減獲得,如圖所示。

2.

濾波器的設(shè)計

(n)響應(yīng)(4)

帶阻濾波器的設(shè)計

11fc11f00f0ffc1帶通濾波

帶阻濾波

帶阻濾波器的系數(shù):

fc2fc22022/10/1119DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1FIR濾波器的DSP實現(xiàn)

6.1.3

FIR濾波器的MATLAB設(shè)計

MATLAB是一種功能強、效率高、便于進(jìn)行科學(xué)和工程計算的交互式軟件包,它集數(shù)值分析、矩陣運算、信號處理和圖形顯示于一體,為用戶提供了方便、友好的界面環(huán)境。MATLAB中的工具箱(Toolbox)包含了許多實用程序。它提供了多種FIR濾波器設(shè)計方法。

下面以標(biāo)準(zhǔn)頻率響應(yīng)設(shè)計法fir1和任意頻率響應(yīng)設(shè)計法fir2為例說明其使用方法。2022/10/1120DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.3

FIR濾波器的MATLAB設(shè)計用來設(shè)計標(biāo)準(zhǔn)頻率響應(yīng)的基于窗函數(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:濾波器的階數(shù);Wn:濾波器的截止頻率;

ftype:用來決定濾波器的類型,

當(dāng)ftype=high時,可設(shè)計高通濾波器;當(dāng)ftype=stop時,可設(shè)計帶阻濾波器。

Window:用來指定濾波器采用的窗函數(shù)類型,

其默認(rèn)值為漢明(Hamming)窗。

2022/10/1121DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計使用fir1函數(shù)可設(shè)計標(biāo)準(zhǔn)的低通、高通、帶通和帶阻濾波器。1.

fir1函數(shù)

(1)

采用漢明窗設(shè)計低通FIR濾波器

使用b=fir1(n,Wn)可得到低通濾波。0

Wn

1,Wn=1相當(dāng)于0.5fs。

格式:

b=fir1(n,Wn)

2022/10/1122DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計使用fir1函數(shù)可設(shè)計標(biāo)準(zhǔn)的低通、高通、帶通和帶阻濾波器。1.

fir1函數(shù)

(2)

采用漢明窗設(shè)計高通FIR濾波器

在b=fir1(n,Wn,‘ftype’)中,當(dāng)ftype=high時,可設(shè)計高通濾波器。

格式:

b=fir1(n,Wn,‘high’)2022/10/1123DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計使用fir1函數(shù)可設(shè)計標(biāo)準(zhǔn)的低通、高通、帶通和帶阻濾波器。1.

fir1函數(shù)

(3)

采用漢明窗設(shè)計帶通FIR濾波器

在b=fir1(n,Wn)中,當(dāng)Wn=[W1W2]時,可得到帶通濾波器,其通帶為W1<w<W2,W1和W2分別為通帶的下限頻率和上限頻率。

格式:

b=fir1(n,[W1W2])2022/10/1124DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計使用fir1函數(shù)可設(shè)計標(biāo)準(zhǔn)的低通、高通、帶通和帶阻濾波器。1.

fir1函數(shù)

(4)

采用漢明窗設(shè)計帶阻FIR濾波器

在b=fir1(n,Wn,‘ftype’)中,當(dāng)ftype=stop,Wn=[W1W2]時,fir1函數(shù)可得到帶阻濾波器。

格式:

b=fir1(n,[W1W2],‘stop’)2022/10/1125DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計1.

fir1函數(shù)

(5)

采用其他窗口函數(shù)設(shè)計FIR濾波器使用Window參數(shù),可以用其他窗口函數(shù)設(shè)計出各種加窗濾波器。Window參數(shù)可采用的窗口函數(shù)有:

Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默認(rèn)時為Hamming窗。

例如,采用Bartlett窗設(shè)計帶阻濾波器,其格式:

b=fir1(n,[W1W2],‘stop’,Bartlett(n+1))

2022/10/1126DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計1.

fir1函數(shù)

注意:用fir1函數(shù)設(shè)計高通和帶阻濾波器時,所使用的階數(shù)n應(yīng)為偶數(shù),當(dāng)輸入的階數(shù)n為奇數(shù)時,fir1函數(shù)會自動將階數(shù)增加1形成偶數(shù)?!纠?.1.1】

采用Hamming窗設(shè)計一個48階FIR帶通濾波器,通帶為0.35<w<0.65。

解:采用fir1函數(shù)的程序格式:

b=fir1(48,[0.350.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/10/1127DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.3

FIR濾波器的MATLAB設(shè)計用來設(shè)計有任意頻率響應(yīng)的各種加窗FIR濾波器。2.

fir2函數(shù)

語法:

b=fir2(n,f,m)

b=fir2(n,f,m,Window)

b=fir2(n,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/10/1128DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

fir2函數(shù)

說明:

參數(shù)n為濾波器的階數(shù);

參數(shù)f為頻率點矢量,且f[0,1],f=1對應(yīng)于0.5fs。矢量f按升序排列,且第一個元素必須為0,最后一個必須為1,并可以包含重復(fù)的頻率點;

參數(shù)m為幅度點矢量,在矢量m中包含了與f相對應(yīng)的期望得到的濾波器幅度;

參數(shù)Window用來指定所使用的窗函數(shù)類型,其默認(rèn)值為漢明(Hamming)窗;

參數(shù)npt用來指定fir2函數(shù)對頻率響應(yīng)進(jìn)行內(nèi)插的點數(shù);

參數(shù)lap用來指定fir2函數(shù)在重復(fù)頻率點附近插入的區(qū)域大小。

2022/10/1129DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

fir2函數(shù)

【例6.1.3】

設(shè)計一個30階的低通FIR濾波器,其截止頻率為0.6。

解:采用fir2函數(shù)的程序格式:

f=[00.60.61];

m=[1100];

b=fir2(30,f,m);

在使用MATLAB設(shè)計FIR濾波器時,還可以使用freqz()和plot()函數(shù)。

freqz()函數(shù):可求出傳遞函數(shù)的幅頻響應(yīng)和相頻響應(yīng);

plot()函數(shù):可繪出濾波器的幅頻響應(yīng)和相頻響應(yīng)曲線。

2022/10/1130DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

fir2函數(shù)

例如,在例6.1.1~例6.1.3中,若希望得到濾波器的特性,可使用freqz()函數(shù),其格式:

freqz(b,1,512)

得濾波器的特性如圖。

2022/10/1131DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

fir2函數(shù)

例6.1.1帶通濾波器的特性2022/10/1132DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

fir2函數(shù)

例6.1.2高通濾波器的特性2022/10/1133DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

fir2函數(shù)

例6.1.3低通濾波器的特性2022/10/1134DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1FIR濾波器的DSP實現(xiàn)

6.1.4

FIR濾波器的DSP實現(xiàn)

FIR濾波器的輸出表達(dá)式:

y(n)=b0x(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延時后,再進(jìn)行乘法-累加,最后輸出濾波結(jié)果y(n)。

2022/10/1135DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.4

FIR濾波器的DSP實現(xiàn)1.

z-1算法的實現(xiàn)

常用的方法:

線性緩沖區(qū)法

循環(huán)緩沖區(qū)法。

(1)

線性緩沖區(qū)法

又稱延遲線法。

特點:

①在數(shù)據(jù)存儲器中開辟一個N單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本;

②從最老樣本開始取數(shù),每取一個數(shù)后,樣本向下移位;

③讀完最后一個樣本后,輸入最新樣本并存入緩沖區(qū)的頂部。

2022/10/1136DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計1.

z-1算法的實現(xiàn)

(1)

線性緩沖區(qū)法

緩沖區(qū):數(shù)據(jù)存儲器

頂部為低地址單元,存放最新樣本;緩沖區(qū)頂部最新樣本

底部為高地址單元,存放最老樣本;緩沖區(qū)底部最老樣本

指針ARx指向緩沖區(qū)底部。

←ARx2022/10/1137DSP原理及應(yīng)用第6章應(yīng)用程序設(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)取數(shù)、移位和運算:①以ARx為指針,按x(n-7)……x(n)的順序取數(shù),每取一次數(shù)后,數(shù)據(jù)向下移一位,并完成一次乘法累加運算;

②當(dāng)經(jīng)過8次取數(shù)、移位和運算后,得y(n);

③求得y(n)后,輸入新樣本x(n+1),存入緩沖區(qū)頂部單元;④修改指針ARx,指向緩沖區(qū)的底部。

2022/10/1138DSP原理及應(yīng)用第6章應(yīng)用程序設(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)ARx→x(n-7)↑ARx→x(n-6)y(n)=y7=b7x(n-7)+0x(n-6)↑ARx→x(n-5)y(n)=y6=b6x(n-6)+y7x(n-5)↑ARx→x(n-4)y(n)=y5=b5x(n-5)+y6x(n-4)↑ARx→x(n-3)y(n)=y4=b4x(n-4)+y5x(n-3)↑ARx→x(n-2)y(n)=y3=b3x(n-3)+y4x(n-2)↑ARx→x(n-1)y(n)=y2=b2x(n-2)+y3x(n-1)↑ARx→x(n)y(n)=y1=b1x(n-1)+y2x(n)y(n)=b0x(n)+y1←PORTRx(n+1)ARx→結(jié)果:①y(n)2022/10/1139DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(1)

線性緩沖區(qū)法求y(n+1)的過程:算法:數(shù)據(jù)存儲器ARx→x(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)ARx→2022/10/1140DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(1)

線性緩沖區(qū)法

Z-1的運算是通過執(zhí)行存儲器延時指令來實現(xiàn)的。即將數(shù)據(jù)存儲器中的數(shù)據(jù)向較高地址單元移位來進(jìn)行延時。

其指令:

DELAYSmem

;(Smem)

Smem+1

DELAY*AR3-

;AR3指向源地址

將延時指令與其他指令結(jié)合使用,可在同樣的機器周期內(nèi)完成這些操作。例如:

LD+DELAY→

LTDMAC+DELAY→MACD

2022/10/1141DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(1)

線性緩沖區(qū)法注意:用線性緩沖區(qū)實現(xiàn)z-1運算時,緩沖區(qū)的數(shù)據(jù)需要移動,這樣在一個機器周期內(nèi)需要一次讀和一次寫操作。因此,線性緩沖區(qū)只能定位在DARAM中。

優(yōu)點:

在存儲器中新老數(shù)據(jù)的位置直觀明了。

2022/10/1142DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計1.

z-1算法的實現(xiàn)

(2)循環(huán)緩沖區(qū)法特點:

①在數(shù)據(jù)存儲器中開辟一個N個單元的緩沖區(qū)(滑窗),用來存放最新的N個輸入樣本;

②從最新樣本開始取數(shù);

③讀完最老樣本后,輸入最新樣本來代替最老樣本,而其他數(shù)據(jù)位置不變;

④用BK寄存器對緩沖區(qū)進(jìn)行間接尋址,使緩沖區(qū)地址首尾相鄰。

2022/10/1143DSP原理及應(yīng)用第6章應(yīng)用程序設(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指向最新樣本單元。

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=b0x(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/10/1144DSP原理及應(yīng)用第6章應(yīng)用程序設(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(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)ARx→2022/10/1145DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(2)循環(huán)緩沖區(qū)法循環(huán)緩沖區(qū)的優(yōu)點:

①緩沖區(qū)數(shù)據(jù)不需要移動;

②可以使用SARAM存儲器。

實現(xiàn)N個循環(huán)緩沖區(qū)單元首尾相鄰,可用BK寄存器按模間接尋址來實現(xiàn)。常用指令:

…*ARx+%;增量、按模修正ARxaddr=ARx,ARx=circ(ARx+1)

…*ARx-%

;減量、按模修正ARxaddr=ARx,ARx=circ(ARx-1)

…*ARx+0%

;增AR0、按模修正ARxaddr=ARx,ARx=circ(ARx+AR0)

…*ARx-0%

;減AR0、按模修正ARxaddr=ARx,ARx=circ(ARx-AR0)

…*+ARx(1K)%

;加(1K)、按模修正ARxaddr=circ(ARx+1K),ARx=circ(ARx+1K)2022/10/1146DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(2)循環(huán)緩沖區(qū)法

circ是根據(jù)BK寄存器中的緩沖區(qū)長度,對(ARx+1)、(ARx-1)、(ARx+AR0)、(ARx-AR0)和(ARx+1k)的值進(jìn)行取模,使指針ARx指向緩沖區(qū),實現(xiàn)循環(huán)緩沖區(qū)首尾相鄰。例如:(BK)=N=8,(AR1)=0060h,用*AR1+%間接尋址。

第一次尋址后,AR1指向0061h單元;第二次尋址后,AR1指向0062h單元;…………

第八次尋址后,AR1指向0068h單元;將BK按8取模,AR1回到0060h單元。2022/10/1147DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(2)循環(huán)緩沖區(qū)法循環(huán)尋址的算法:

if0≤index+step<BK

index=index+stepelseifindex+step≥BK

index=index+step-BKelseifindex+step<0

index=index+step+BK

index:存放在輔助寄存器中的地址指針;step:步長,可正可負(fù),|step|≤BK。2022/10/1148DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(2)循環(huán)緩沖區(qū)法

用BK規(guī)定循環(huán)緩沖區(qū)的長度N;

緩沖區(qū)起始地址的k個最低有效位必須為0,且滿足2k>N。要求:例如:N=31,k的最小值為5,則緩沖區(qū)的起始地址:XXXXXXXXXXX00000B

若N=32,k的最小值為6,緩沖區(qū)的起始地址:XXXXXXXXXX000000B2022/10/1149DSP原理及應(yīng)用第6章應(yīng)用程序設(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)對應(yīng)項乘積運算,輸入的樣值x(n)和濾波系數(shù)bi必須合理的存放,并正確初始化存儲塊和塊指針。樣值x(n)和濾波系數(shù)bi的存放可用線性緩沖區(qū)或循環(huán)緩沖區(qū)實現(xiàn)。

2022/10/1150DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

FIR濾波器的實現(xiàn)

(1)

用線性緩沖區(qū)實現(xiàn)FIR濾波器

設(shè)N=7,F(xiàn)IR濾波器的算法:

y(n)=b0x(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)程序存儲器b6b5b4b3b2b1b0xb雙操作數(shù)尋址指令:MACD*AR1-,b,A功能:A=A+(AR1)×(b),AR1-1→AR1,(AR1)→(AR1+1)AAR1→x(n-6)b6x(n-6)b6×x(n-6)+Ab6×x(n-6)+AAR1→x(n-5)2022/10/1151DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(1)

用線性緩沖區(qū)實現(xiàn)FIR濾波器

程序清單:

.title“FIR1.ASM”

.mmregs

.defstartx.usect“x”,8

PA0.set0PA1.set1

.dataCOEF:

.word1*32768/10

.word2*32768/10

.word-4*32768/10

.word3*32768/10

.word-4*32768/10

.word2*32768/10

.word1*32768/10

;自定義數(shù)據(jù)空間

x數(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.1b5b4b3b2b1b0x(n)2022/10/1152DSP原理及應(yīng)用第6章應(yīng)用程序設(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:SSBXFRCTSTM#x+7,AR2STM#6,AR0LD#x+1,DPPORTRPA1,@x+1FIR1:RPTZA,#6MACD*AR2-,COEF,ASTHA,*AR2PORTW*AR2+,PA0BDFIR1PORTRPA1,*AR2+0.end

A;設(shè)置小數(shù)乘法

;設(shè)置AR2

AR2→;設(shè)置復(fù)位值A(chǔ)R0=6

;設(shè)置緩沖區(qū)首地址

→;輸入x(n)

x(n);A清0,設(shè)置迭代次數(shù)

0000000000;7次乘法累加和移位

b6×x(n-6)AR2→x(n-5)A+b5×x(n-5)AR2→x(n-4)A+b4×x(n-4)AR2→x(n-3)A+b3×x(n-3)AR2→x(n-2)A+b2×x(n-2)AR2→x(n-1)A+b1×x(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→2022/10/1153DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

FIR濾波器的實現(xiàn)

(2)

用循環(huán)緩沖區(qū)實現(xiàn)FIR濾波器

設(shè)N=7,F(xiàn)IR濾波器的算法:

y(n)=b0x(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)DARAMb0b1b2b3b4b5b6yb0xn2022/10/1154DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(2)

用循環(huán)緩沖區(qū)實現(xiàn)FIR濾波器

程序清單:

.title“FIR2.ASM”.mmregs

.defstart.bssy,1xn.usect“xn”,7b0.usect“b0”,7PA0.set0PA1.set1.datatable:.word1*32768/10.word2*32768/10.word3*32768/10.word4*32768/10.word5*32768/10.word6*32768/10.word7*32768/10DARAMy(n-1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)…b0b1b2b3b4…x(n-5)x(n-6)b5b6;源文件標(biāo)題

;定義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/10/1155DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

.textstart:SSBXFRCTSTM#b0,AR1RPT#6MVPDtable,*AR1+STM#xn+6,AR2STM#b0+6,AR3STM#7,BKSTM#-1,AR0LD#xn,DPPORTRPA1,@xnFIR2:RPTZA,#6MAC*AR2+0%,*AR3+0%,ASTHA,@yPORTW@y,PA0BDFIR2PORTRPA1,*AR2+0%.endDARAMy(n-1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)…b0b1b2b3b4…x(n-5)x(n-6)b5b6yxnb0…A;設(shè)置小數(shù)乘法

;AR1指向b0

AR1→;設(shè)置傳輸次數(shù)

ROMtable0.10.20.30.40.50.60.7;系數(shù)傳輸至數(shù)據(jù)區(qū)

0.10.1AR1→0.20.2AR1→0.30.3AR1→0.40.4AR1→0.50.5AR1→0.60.6AR1→0.70.7AR1→;AR2指向x(n-6)單元

AR2→;AR3指向b6單元

AR3→;設(shè)置緩沖區(qū)長度

;設(shè)置雙操作數(shù)增量

;設(shè)置頁指針

;輸入x(n)

x(n);A清0,設(shè)置迭代次數(shù)0000000000;雙操作數(shù)乘法累加x(n-6)0.70.7x(n-6)+0AR2→AR3→x(n-5)0.60.6x(n-5)+AAR2→AR3→x(n-4)0.50.5x(n-4)+AAR2→AR3→x(n-3)0.40.4x(n-3)+AAR2→AR3→x(n-2)0.30.3x(n-2)+AAR2→AR3→x(n-1)0.20.2x(n-1)+AAR2→AR3→x(n)0.10.1x(n)+AAR2→AR3→;存儲y(n)y(n);輸出y(n);循環(huán);輸入最新x(n+1),修正AR2x(n+1)AR2→2022/10/1156DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計鏈接命令文件:

FIR2.objvectors.obj-oFIR2.out-mFIR2.map-estartMEMORY{PAGE0:EPROM:org=0E000h,

len=1000hVECS:org=0FF80h,

len=0080hPAGE1:SPRAM:org=0060h,

len=0020hDARAM: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

存儲空間ROMRAMEPROM…………EPROM…0E0004k0EFFFVECS……VECS0FF8080h0FFEFSPRAM………SPRAM006020h007FDARAM………DARAM……00801380h13EF2022/10/1157DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計鏈接命令文件:

SECTIONS{.text:>EPROMPAGE0.data:>EPROMPAGE0.bss:>SPRAMPAGE1

xn:align(8){}>DARAMPAGE1b0:align(8){}>DARAMPAGE1.vections:VECSPAGE0};在存儲器中定義輸出段的位置;text段定位在程序存儲器即源程序位于程序存儲器;系數(shù)區(qū)定義在程序存儲器

;bss段定義在暫存器

;從xn起8個單元定義在DARAM;從b0起8個單元定義在DARAM;vections定義在VECS區(qū)2022/10/1158DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計2.

FIR濾波器的實現(xiàn)

(3)

系數(shù)對稱FIR濾波器的實現(xiàn)

系數(shù)對稱FIR濾波器具有線性相位的特性,在數(shù)字信號處理中應(yīng)用十分廣泛,常用于相位失真要求較高的場合。

設(shè)濾波器N=8,若系數(shù)bn=bN-1-n,則為對稱FIR濾波器。其輸出方程:

y(n)=b0x(n)+b1x(n-1)+b2x(n-2)+b3x(n-3)+b3x(n-4)+b2x(n-5)+b1x(n-6)+b0x(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(n-4)]需要:4次乘法7次加法2022/10/1159DSP原理及應(yīng)用第6章應(yīng)用程序設(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ù);

AR1→AR2→③在程序存儲器中設(shè)置系數(shù)表;

系數(shù)表b0b1b2b3COEF④進(jìn)行(AR1)+(AR2)AH加法運算,并修改數(shù)據(jù)指針,AR1+1AR1,AR2-1AR2;

AHx(n)x(n)x(n-7)x(n-7)x(n)+x(n-7)x(n)+x(n-7)AR1→AR2→2022/10/1160DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(3)

系數(shù)對稱FIR濾波器的實現(xiàn)

對稱FIR濾波器的實現(xiàn)方法:

系數(shù)表b0b1b2b3COEFNewx(n)x(n-3)x(n-2)x(n-1)x(n)AR1→Oldx(n-4)x(n-5)x(n-6)x(n-7)x(n-7)AR2→x(n)+x(n-7)AH⑤累加器B清0,完成塊操作,重復(fù)執(zhí)行4次;0000000000B乘法—累加:(AH)bi+BB;PAR→b0x(n)+x(n-7)0000000000b0[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;

AR1→AR2→b1x(n-3)+x(n-6)b0[x(n)+x(n-7)]b1[x(n-3)+x(n-6)]+Bb1[x(n-3)+x(n-6)]+BPAR→x(n-2)x(n-5)x(n-2)+x(n-5)x(n-2)+x(n-5)AR1→AR2→b2x(n-2)+x(n-5)b1[x(n-3)+x(n-6)]+Bb2[x(n-2)+x(n-5)]+Bb2[x(n-2)+x(n-5)]+BPAR→x(n-1)x(n-4)x(n-1)+x(n-4)x(n-1)+x(n-4)AR1→AR2→b3x(n-1)+x(n-4)b2[x(n-2)+x(n-5)]+Bb3[x(n-1)+x(n-4)]+Bb3[x(n-1)+x(n-4)]+BPAR→x(n)+x(n-7)x(n)+x(n-7)AR1→AR2→⑥保存和輸出結(jié)果;2022/10/1161DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(3)

系數(shù)對稱FIR濾波器的實現(xiàn)

對稱FIR濾波器的實現(xiàn)方法:

x(n)+x(n-7)AHBa3[x(n-1)+x(n-4)]+BAR2→Oldx(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)⑨重復(fù)執(zhí)行④~⑧。

2022/10/1162DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(3)

系數(shù)對稱FIR濾波器的實現(xiàn)

系數(shù)對稱FIR濾波器指令:

格式:

FIRSXmem,Ymem,Pmad

功能:

PmadPAR;

當(dāng)(RC)0,則B+AH(Pmem)B,

((Xmem)+(Ymem))16A,

PAR+1PAR,RC-1RC

其中,Pmem是通過PAR尋址。2022/10/1163DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(3)

系數(shù)對稱FIR濾波器的實現(xiàn)

程序清單:

.title“FIR3.ASM”.mmregs

.defstart.bssy,1x_new:.usect“DATA1”,4x_old:.usect“DATA2”,4size.set4PA0.set0PA1.set1.dataCOEF:.word1*32768/10.word2*32768/10.word3*32768/10

.word4*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/10/1164DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計(3)

系數(shù)對稱FIR濾波器的實現(xiàn)

程序清單:

.textstart:LD#x_new,DPSSBXFRCTSTM#x_new,AR1STM#x_old+(size-1),AR2STM#size,BKSTM#-1,AR0PORTRPA1,#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/10/1165DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計程序清單:FIR3:ADD*AR1+0%,*AR2+0%,ARPTZB,#(size-1)FIRS*AR1+0%,*AR2+0%,COEFSTHB,@yPORTW@y,PA0MAR*+AR1(2)%MAR*AR2+%MVDD*AR1,*AR2+0%BDFIR3PORTRPA1,*AR1.end

;完成AH=x(n)+x(n-7)

;B清0,設(shè)置重復(fù)次數(shù)

;乘法累加、加法操作

B

=

AH×bi

+

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/10/1166DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1FIR濾波器的DSP實現(xiàn)

6.1.5

FIR濾波器的設(shè)計實例設(shè)計一個FIR低通濾波器,其設(shè)計參數(shù):濾波器階數(shù):N=40;截止頻率:wp=0.35,

ws=0.4。

2022/10/1167DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計6.1.5

FIR濾波器的設(shè)計實例

根據(jù)給定的設(shè)計參數(shù),濾波器系數(shù)可由MATLAB中的fir2函數(shù)產(chǎn)生,函數(shù)調(diào)用格式:

1.由給定的設(shè)計參數(shù)確定濾波器的系數(shù)

f=[00.350.41];

m=[1100];

b=fir2(39,f,m)

利用freqz函數(shù)可繪制濾波器的幅頻、相頻特性,其格式:

freqz(b,512,1000)

2022/10/1168DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計濾波器的頻率特性:1.由給定的設(shè)計參數(shù)確定濾波器的系數(shù)

2022/10/1169DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

采用循環(huán)緩沖區(qū)實現(xiàn)FIR濾波器的源程序如下:

2.匯編源程序

.title“FIR.ASM”.mmregs

.bssy,1K_FIR_BFFR.set40PA0.set0PA1.set1FIR_COFF_TABLE.usect

“FIR_COFF”,40;定義數(shù)據(jù)存儲空間D_DATA_BUFFER.usect“FIR_BFR”,40;定義數(shù)據(jù)存儲空間.dataCOFF_FIR_START:.word-7*32768/10000,3*32768/10000

;b0,b1

.word14*32768/10000,10*32768/10000

;b2,b3……….word3*32768/10000,-7*32768/10000;b38b392022/10/1170DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

.text.defFIR_INIT.defFIR_TASKFIR_INIT:SSBXFRCT;設(shè)置小數(shù)乘法

STM#FIR_COFF,AR5;AR1指向b0單元

RPT#K_FIR_BFFR-1;設(shè)置傳輸次數(shù)

MVPD#COFF_FIR_START,*AR5+;系數(shù)bi傳輸至數(shù)據(jù)區(qū)

STM#D_DATA_BUFFER,AR4;D_DATA_BUFFER緩沖區(qū)清0

RPTZA,#K_FIR_BFFR-1STLA,*AR4+STM#(D_DATA_BUFFER+K_FIR_BFFR-1),AR4STM#(FIR_COFF_TABLE+K_FIR_BFFR-1),AR52022/10/1171DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計STM#-1,AR0

;設(shè)置雙操作數(shù)減量

LD#D_DATA_BUFFER,DP

;設(shè)置頁指針

PORTRPA1,@D_DATA_BUFFER

;輸入x(n)FIR_TASK:STM#K_FIR_BFFR,BKRPTZA,#K_FIR_BFFR-1

;重復(fù)操作

MAC*AR4+0%,*AR5+0%,A

;雙操作數(shù)乘法-累加

STHA,@y

;暫存y(n)

PORTW@y,PA0

;輸出y(n)

BDFIR_TASK

;循環(huán)

PORTRPA1,*AR4+0%

;輸入最新樣本,并修正AR3

.end2022/10/1172DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計

在’C5402DSP硬件系統(tǒng)中,用戶可使用的存儲器資源:3.匯編源程序的鏈接命令文件

程序存儲空間:片內(nèi)0080H~3FFFH,

片外48000H~4FFFFH;

數(shù)據(jù)存儲空間:片內(nèi)0080H~3FFFFH,

片外4000H~7FFFH。2022/10/1173DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計FIR濾波器源程序的鏈接命令文件如下:

/*SOLUTIONFILEFORFIR.CMD*/vectors.obj

fir.obj

-ofir.out

-mfir.map

-efir_initMEMORY{PAGE0:EPROM:org=0E000Hlen=1000HVECS:org=0FF80Hlen=0080HPAGE1:SPRAM:org=0060Hlen=0020HDARAM:org=0080Hlen=1380H}2022/10/1174DSP原理及應(yīng)用第6章應(yīng)用程序設(shè)計FIR濾波器源程序的鏈接命令文件如下:

SECTIONS{

.text:>EPROMPAGE0

.vectors:>VECSPAGE0

.data:>EPRAMPAGE0

.bss:>SPRAMPAGE1FIR_BFR:align(128){}>DARAM

溫馨提示

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

評論

0/150

提交評論