應用程序設計課件_第1頁
應用程序設計課件_第2頁
應用程序設計課件_第3頁
應用程序設計課件_第4頁
應用程序設計課件_第5頁
已閱讀5頁,還剩357頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第6章

應用程序設計內容提要

數字信號處理主要面向密集型的運算,包括乘法-累加、數字濾波和快速傅里葉變換等。’C54x具備了高速完成上述運算的能力,并具有體積小、功耗低、功能強、軟硬件資源豐富等優點,現已在通信等許多領域得到了廣泛應用。

本章結合數字信號處理和通信中最常見、最具有代表性的應用,介紹通用數字信號處理算法的DSP實現方法,主要包括:

有限沖激響應(FIR)數字濾波器

無限沖激響應(IIR)數字濾波器快速傅里葉變換(FFT)正弦信號發生器。在簡要介紹上述內容的基本原理、結構和算法之后,重點介紹設計方法和DSP實現的方法。

2022/12/201DSP原理及應用第6章應用程序設計內容提要2022/12/131DSP第6章應用程序設計

6.1

FIR濾波器的DSP實現

6.2

IIR濾波器的DSP實現6.3快速傅里葉變換(FFT)的DSP實現6.4正弦波信號發生器2022/12/202DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現20第6章應用程序設計6.1FIR濾波器的DSP實現

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

數字濾波器是DSP的基本應用,分為有限沖激響應濾波器FIR和無限沖激響應濾波器IIR。

本節主要討論FIR濾波器的基本結構、設計方法和DSP實現方法。

2022/12/203DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現第6章應用程序設計6.1FIR濾波器的DSP實現

6.1.1

FIR濾波器的基本結構

數字濾波是將輸入的信號序列,按規定的算法進行處理,從而得到所期望的輸出序列。

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

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

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

2022/12/204DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現6.1第6章應用程序設計6.1.1

FIR濾波器的基本結構

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

(6.1.2)

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

(6.1.3)

2022/12/205DSP原理及應用第6章應用程序設計6.1.1FIR濾波器的基本結構第6章應用程序設計6.1.1

FIR濾波器的基本結構

FIR濾波器的結構:

z-1z-1+x(n)y(n)x(n-1)x(n-N+1)b0b1bN-2bN-1z-12022/12/206DSP原理及應用第6章應用程序設計6.1.1FIR濾波器的基本結構第6章應用程序設計6.1.1

FIR濾波器的基本結構

FIR濾波器的單位沖激響應h(n)為有限長序列。

偶對稱線性相位FIR濾波器的差分方程:

N——偶數

(6.1.4)

若h(n)為實數,且滿足偶對稱或奇對稱的條件,則FIR濾波器具有線性相位特性。

偶對稱:h(n)=h(N-1-n);奇對稱:h(n)=-h(N-1-n)。2022/12/207DSP原理及應用第6章應用程序設計6.1.1FIR濾波器的基本結構第6章應用程序設計6.1.1

FIR濾波器的基本結構

在數字濾波器中,FIR濾波器具有如下幾個主要特點:

FIR濾波器無反饋回路,是一種無條件穩定系統;②

FIR濾波器可以設計成具有線性相位特性。2022/12/208DSP原理及應用第6章應用程序設計6.1.1FIR濾波器的基本結構第6章應用程序設計6.1FIR濾波器的DSP實現

6.1.2

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

用傅氏級數設計FIR濾波器

Hd()的傅氏級數:

(6.1.5)

=f/fs為歸一化頻率,fs為采樣頻率,T=2f/fs=2。2022/12/209DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現6.1第6章應用程序設計6.1.2

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

用傅氏級數設計FIR濾波器

(6.1.6)

且C-n=Cn。

設Hd()為偶函數,則

n

0(6.1.7)

2022/12/2010DSP原理及應用第6章應用程序設計6.1.2FIR濾波器的設計方法第6章應用程序設計理想的傳遞函數Hd()有無限多個系數Cn,而實際的濾波器的系數只能有有限多個。因此,可以將式(6.1.7)中的無限項級數進行截取,得到近似的傳遞函數:1.

用傅氏級數設計FIR濾波器

(6.1.8)

||<1,Q為有限的正整數。

(6.1.9)

令z=ej2,則有

2022/12/2011DSP原理及應用第6章應用程序設計理想的傳遞函數Hd()有無限多第6章應用程序設計近似傳遞函數的沖激響應是由一系列的系數來決定:C-Q、C-Q+1、…、C-1、C0、…、CQ-1、CQ。1.

用傅氏級數設計FIR濾波器

(6.1.10)

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

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

2022/12/2012DSP原理及應用第6章應用程序設計近似傳遞函數的沖激響應是由一系列第6章應用程序設計令i=-(n-Q),作變量置換得1.

用傅氏級數設計FIR濾波器

0

i

2Q(6.1.11)

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

0

i

N-1(6.1.12)

當N-1=2Q時,b0=CQ、b1=CQ-1、b2=CQ-2、…、

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

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

當N=2Q+1時,系數bi是關于bQ對稱的,即bi=CQ-i且Cn=C-n

2022/12/2013DSP原理及應用第6章應用程序設計令i=-(n-Q),作變量置第6章應用程序設計例如,當Q=5時,濾波器的11個系數如下:1.

用傅氏級數設計FIR濾波器

b0=b10=C5

b1=b9=C4

b2=b8=C3

b3=b7=C2

b4=b6=C1

b5=C0

根據卷積公式得

(6.1.13)

由上述公式可實現FIR濾波器,其響應由N項構成。

2022/12/2014DSP原理及應用第6章應用程序設計例如,當Q=5時,濾波器的1第6章應用程序設計6.1.2

FIR濾波器的設計方法

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

濾波器的設計

n

0

2022/12/2015DSP原理及應用第6章應用程序設計6.1.2FIR濾波器的設計方法第6章應用程序設計

設低通濾波器的截止頻率為fc,采樣頻率為fs,則系數表達式:

2.

濾波器的設計

(6.1.14)

(1)

低通濾波器的設計

2022/12/2016DSP原理及應用第6章應用程序設計設低通濾波器的截止頻率為fc,采第6章應用程序設計

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

2.

濾波器的設計

(n)響應

(2)

高通濾波器的設計

11fc1f00f0ffc(n)函數的表達式:

低通濾波

高通濾波

(n)=

1n=00

n

0高通濾波器的系數:

2022/12/2017DSP原理及應用第6章應用程序設計高通濾波器可以由一個幅度為1的響第6章應用程序設計帶通濾波器可以由兩個截止頻率不同的低通濾波器獲得,如圖所示。

2.

濾波器的設計

低通濾波2

(3)

帶通濾波器的設計

11fc11f00f0ffc1低通濾波1

帶通濾波

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

fc2fc2

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

2022/12/2018DSP原理及應用第6章應用程序設計帶通濾波器可以由兩個截止頻率不同第6章應用程序設計帶阻濾波器可由(n)和帶通濾波器相減獲得,如圖所示。

2.

濾波器的設計

(n)響應(4)

帶阻濾波器的設計

11fc11f00f0ffc1帶通濾波

帶阻濾波

帶阻濾波器的系數:

fc2fc22022/12/2019DSP原理及應用第6章應用程序設計帶阻濾波器可由(n)和帶通濾波第6章應用程序設計6.1FIR濾波器的DSP實現

6.1.3

FIR濾波器的MATLAB設計

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

下面以標準頻率響應設計法fir1和任意頻率響應設計法fir2為例說明其使用方法。2022/12/2020DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現6.1第6章應用程序設計6.1.3

FIR濾波器的MATLAB設計用來設計標準頻率響應的基于窗函數的FIR濾波器,可實現加窗線性相位FIR數字濾波器的設計。

1.

fir1函數

語法:

b=fir1(n,Wn)

b=fir1(n,Wn,‘ftype’)

b=fir1(n,Wn,Window)

b=fir1(n,Wn,‘ftype’,Window)

n:濾波器的階數;Wn:濾波器的截止頻率;

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

當ftype=high時,可設計高通濾波器;當ftype=stop時,可設計帶阻濾波器。

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

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

2022/12/2021DSP原理及應用第6章應用程序設計6.1.3FIR濾波器的MATLAB設第6章應用程序設計使用fir1函數可設計標準的低通、高通、帶通和帶阻濾波器。1.

fir1函數

(1)

采用漢明窗設計低通FIR濾波器

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

Wn

1,Wn=1相當于0.5fs。

格式:

b=fir1(n,Wn)

2022/12/2022DSP原理及應用第6章應用程序設計使用fir1函數可設計標準的低通第6章應用程序設計使用fir1函數可設計標準的低通、高通、帶通和帶阻濾波器。1.

fir1函數

(2)

采用漢明窗設計高通FIR濾波器

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

格式:

b=fir1(n,Wn,‘high’)2022/12/2023DSP原理及應用第6章應用程序設計使用fir1函數可設計標準的低通第6章應用程序設計使用fir1函數可設計標準的低通、高通、帶通和帶阻濾波器。1.

fir1函數

(3)

采用漢明窗設計帶通FIR濾波器

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

格式:

b=fir1(n,[W1W2])2022/12/2024DSP原理及應用第6章應用程序設計使用fir1函數可設計標準的低通第6章應用程序設計使用fir1函數可設計標準的低通、高通、帶通和帶阻濾波器。1.

fir1函數

(4)

采用漢明窗設計帶阻FIR濾波器

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

格式:

b=fir1(n,[W1W2],‘stop’)2022/12/2025DSP原理及應用第6章應用程序設計使用fir1函數可設計標準的低通第6章應用程序設計1.

fir1函數

(5)

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

Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默認時為Hamming窗。

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

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

2022/12/2026DSP原理及應用第6章應用程序設計1.fir1函數(5)采用其他窗口第6章應用程序設計1.

fir1函數

注意:用fir1函數設計高通和帶阻濾波器時,所使用的階數n應為偶數,當輸入的階數n為奇數時,fir1函數會自動將階數增加1形成偶數。【例6.1.1】

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

解:采用fir1函數的程序格式:

b=fir1(48,[0.350.65

]);

【例6.1.2】設計一個FIR高通濾波器,使用具有30dB波紋的Chebyshev窗,其階數為34,截止頻率為0.48。

解:采用fir1函數設計高通濾波器的程序格式為

Window=chebwin(35,30);

b=fir1(34,0.48,‘high’,Window);2022/12/2027DSP原理及應用第6章應用程序設計1.fir1函數注意:用fir1函數第6章應用程序設計6.1.3

FIR濾波器的MATLAB設計用來設計有任意頻率響應的各種加窗FIR濾波器。2.

fir2函數

語法:

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/12/2028DSP原理及應用第6章應用程序設計6.1.3FIR濾波器的MATLAB設第6章應用程序設計2.

fir2函數

說明:

參數n為濾波器的階數;

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

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

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

參數npt用來指定fir2函數對頻率響應進行內插的點數;

參數lap用來指定fir2函數在重復頻率點附近插入的區域大小。

2022/12/2029DSP原理及應用第6章應用程序設計2.fir2函數說明:2022/12第6章應用程序設計2.

fir2函數

【例6.1.3】設計一個30階的低通FIR濾波器,其截止頻率為0.6。

解:采用fir2函數的程序格式:

f=[00.60.61];

m=[1100];

b=fir2(30,f,m);

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

freqz()函數:可求出傳遞函數的幅頻響應和相頻響應;plot()函數:可繪出濾波器的幅頻響應和相頻響應曲線。

2022/12/2030DSP原理及應用第6章應用程序設計2.fir2函數【例6.1.3】設第6章應用程序設計2.

fir2函數

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

freqz(b,1,512)

得濾波器的特性如圖。

2022/12/2031DSP原理及應用第6章應用程序設計2.fir2函數例如,在例6第6章應用程序設計2.

fir2函數

例6.1.1帶通濾波器的特性2022/12/2032DSP原理及應用第6章應用程序設計2.fir2函數例6.1.1帶通濾第6章應用程序設計2.

fir2函數

例6.1.2高通濾波器的特性2022/12/2033DSP原理及應用第6章應用程序設計2.fir2函數例6.1.2高通濾第6章應用程序設計2.

fir2函數

例6.1.3低通濾波器的特性2022/12/2034DSP原理及應用第6章應用程序設計2.fir2函數例6.1.3低通濾第6章應用程序設計6.1FIR濾波器的DSP實現

6.1.4

FIR濾波器的DSP實現

FIR濾波器的輸出表達式:

y(n)=b0x(n)+b1x(n-1)+…

+bn-1x(n-N+1)

(6.1.18)

bi為濾波器系數,x(n)為濾波器在n時刻的輸入,y(n)為n時刻的輸出。

基本算法:采用乘法累加運算。即不斷地輸入樣本x(n),經過z-1延時后,再進行乘法-累加,最后輸出濾波結果y(n)。

2022/12/2035DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現6.1第6章應用程序設計6.1.4

FIR濾波器的DSP實現1.

z-1算法的實現

常用的方法:

線性緩沖區法

循環緩沖區法。

(1)

線性緩沖區法

又稱延遲線法。

特點:

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

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

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

2022/12/2036DSP原理及應用第6章應用程序設計6.1.4FIR濾波器的DSP實現1第6章應用程序設計1.

z-1算法的實現

(1)

線性緩沖區法

緩沖區:數據存儲器

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

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

指針ARx指向緩沖區底部。

←ARx2022/12/2037DSP原理及應用第6章應用程序設計1.z-1算法的實現(1)線性緩沖第6章應用程序設計(1)

線性緩沖區法最新樣本數據存儲器最老樣本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)……x(n)的順序取數,每取一次數后,數據向下移一位,并完成一次乘法累加運算;

②當經過8次取數、移位和運算后,得y(n);

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

2022/12/2038DSP原理及應用第6章應用程序設計(1)線性緩沖區法最新樣本數據存儲器最第6章應用程序設計(1)

線性緩沖區法最新樣本數據存儲器最老樣本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→結果:①y(n)2022/12/2039DSP原理及應用第6章應用程序設計(1)線性緩沖區法最新樣本數據存儲器最第6章應用程序設計(1)

線性緩沖區法求y(n+1)的過程:算法:數據存儲器ARx→x(n+1)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)結果:①y(n)取數順序:

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)數據存儲器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/12/2040DSP原理及應用第6章應用程序設計(1)線性緩沖區法求y(n+1)的過程第6章應用程序設計(1)

線性緩沖區法

Z-1的運算是通過執行存儲器延時指令來實現的。即將數據存儲器中的數據向較高地址單元移位來進行延時。

其指令:

DELAYSmem

;(Smem)

Smem+1

DELAY*AR3-

;AR3指向源地址

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

LD+DELAY→

LTDMAC+DELAY→MACD

2022/12/2041DSP原理及應用第6章應用程序設計(1)線性緩沖區法Z-1的運算第6章應用程序設計(1)

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

優點:

在存儲器中新老數據的位置直觀明了。

2022/12/2042DSP原理及應用第6章應用程序設計(1)線性緩沖區法注意:用線性緩沖區實第6章應用程序設計1.

z-1算法的實現

(2)循環緩沖區法特點:

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

②從最新樣本開始取數;

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

④用BK寄存器對緩沖區進行間接尋址,使緩沖區地址首尾相鄰。

2022/12/2043DSP原理及應用第6章應用程序設計1.z-1算法的實現(2)循環緩沖區第6章應用程序設計(2)循環緩沖區法緩沖區:

數據存儲器

頂層為低地址單元,存放最新樣本;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為指針,按順序取數,并修改指針;

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次數后,完成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/12/2044DSP原理及應用第6章應用程序設計(2)循環緩沖區法緩沖區:數據存儲器第6章應用程序設計(2)循環緩沖區法數據存儲器x(n)x(n-7)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)算

法:

計算過程:

②每取1次數后,完成1次乘法累加計算;③求得y(n)后,輸入新樣本替代最老樣本;

x(n+1)x(n+1)④修改指針ARx,指向最新樣本單元。

ARx→①求y(n):

取數順序:x(n)……x(n-7)

最新樣本:x(n+1)

ARx:指向x(n+1)單元

②求y(n+1):

取數順序:x(n+1)……x(n-6)

最新樣本:x(n+2)

ARx:指向x(n+2)單元

數據存儲器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):

取數順序:x(n+2)……x(n-5)

最新樣本:x(n+3)

ARx:指向x(n+3)單元

數據存儲器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/12/2045DSP原理及應用第6章應用程序設計(2)循環緩沖區法數據存儲器x(n)x第6章應用程序設計(2)循環緩沖區法循環緩沖區的優點:

①緩沖區數據不需要移動;

②可以使用SARAM存儲器。

實現N個循環緩沖區單元首尾相鄰,可用BK寄存器按模間接尋址來實現。常用指令:

…*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/12/2046DSP原理及應用第6章應用程序設計(2)循環緩沖區法循環緩沖區的優點:第6章應用程序設計(2)循環緩沖區法

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

第一次尋址后,AR1指向0061h單元;第二次尋址后,AR1指向0062h單元;…………第八次尋址后,AR1指向0068h單元;將BK按8取模,AR1回到0060h單元。2022/12/2047DSP原理及應用第6章應用程序設計(2)循環緩沖區法circ是根第6章應用程序設計(2)循環緩沖區法循環尋址的算法:

if0≤index+step<BKindex=index+stepelseifindex+step≥BKindex=index+step-BKelseifindex+step<0index=index+step+BK

index:存放在輔助寄存器中的地址指針;step:步長,可正可負,|step|≤BK。2022/12/2048DSP原理及應用第6章應用程序設計(2)循環緩沖區法循環尋址的算法:第6章應用程序設計(2)循環緩沖區法

用BK規定循環緩沖區的長度N;②

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

若N=32,k的最小值為6,緩沖區的起始地址:XXXXXXXXXX000000B2022/12/2049DSP原理及應用第6章應用程序設計(2)循環緩沖區法①用B第6章應用程序設計6.1.4

FIR濾波器的DSP實現2.

FIR濾波器的實現

’C54x提供的乘法-累加指令MAC和循環尋址方式,可使FIR數字濾波器在單周期內完成每個樣值的乘法-累加計算。而每個樣值的乘法-累加計算,可采用RPTZ和MAC指令結合循環尋址方式來實現。

為了實現對應項乘積運算,輸入的樣值x(n)和濾波系數bi必須合理的存放,并正確初始化存儲塊和塊指針。樣值x(n)和濾波系數bi的存放可用線性緩沖區或循環緩沖區實現。

2022/12/2050DSP原理及應用第6章應用程序設計6.1.4FIR濾波器的DSP實現2第6章應用程序設計2.

FIR濾波器的實現(1)

用線性緩沖區實現FIR濾波器

設N=7,FIR濾波器的算法:

y(n)=b0x(n)+b1x(n-1)+…+b5x(n-5)+b6x(n-6)數據存儲器暫存y(n)x(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)程序存儲器b6b5b4b3b2b1b0xb雙操作數尋址指令: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/12/2051DSP原理及應用第6章應用程序設計2.FIR濾波器的實現(1)用線性第6章應用程序設計(1)

用線性緩沖區實現FIR濾波器

程序清單:

.title“FIR1.ASM”.mmregs.defstartx.usect“x”,8PA0.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

;自定義數據空間

x數據存儲器暫存y(n)x(n-1)x(n-2)x(n-3)x(n-4)x(n-5)x(n-6)

定義系數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/12/2052DSP原理及應用第6章應用程序設計(1)用線性緩沖區實現FIR濾波器程第6章應用程序設計(1)

用線性緩沖區實現FIR濾波器

x數據存儲器暫存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;設置小數乘法

;設置AR2

AR2→;設置復位值AR0=6

;設置緩沖區首地址

→;輸入x(n)

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

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→;循環;輸入最新數據,修改AR2=AR2+AR0

x(n+1)AR2→2022/12/2053DSP原理及應用第6章應用程序設計(1)用線性緩沖區實現FIR濾波器第6章應用程序設計2.

FIR濾波器的實現(2)

用循環緩沖區實現FIR濾波器

設N=7,FIR濾波器的算法:

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/12/2054DSP原理及應用第6章應用程序設計2.FIR濾波器的實現(2)用循環第6章應用程序設計(2)

用循環緩沖區實現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;源文件標題

;定義MMR寄存器符號名

;定義模塊

;給y保留1個空間

y;給xn段保留7個空間

xn;給b0段保留7個空間

b0;PA0賦值為0

;PA1賦值為1

;從ROM的table定義數據;定義0.1;定義0.2;定義0.3;定義0.4;定義0.5;定義0.6;定義0.7ROMtable0.10.20.30.40.50.60.72022/12/2055DSP原理及應用第6章應用程序設計(2)用循環緩沖區實現FIR濾波器程第6章應用程序設計

.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;設置小數乘法

;AR1指向b0

AR1→;設置傳輸次數

ROMtable0.10.20.30.40.50.60.7;系數傳輸至數據區

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→;設置緩沖區長度

;設置雙操作數增量

;設置頁指針

;輸入x(n)

x(n);A清0,設置迭代次數0000000000;雙操作數乘法累加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);循環;輸入最新x(n+1),修正AR2x(n+1)AR2→2022/12/2056DSP原理及應用第6章應用程序設計.textDARAMy(第6章應用程序設計鏈接命令文件:

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}

;選定的目標文件

;生成FIR4的輸出文件

;生成FIR4的存儲器映像文件

;定義源程序的入口地址

;定義目標存儲器空間

;第0頁:程序存儲器

;EPROM的起始地址:E000h

長度:4K

;VECS的起始地址:FF80h

長度:0080h

;第1頁:數據存儲器

;SPRAM的起始地址:0060h

長度:0020h

;DARAM的起始地址:0080h

長度:1380h

存儲空間ROMRAMEPROM…………EPROM…0E0004k0EFFFVECS……VECS0FF8080h0FFEFSPRAM………SPRAM006020h007FDARAM………DARAM……00801380h13EF2022/12/2057DSP原理及應用第6章應用程序設計鏈接命令文件:;選定的目標文件存儲空第6章應用程序設計鏈接命令文件:

SECTIONS{.text:>EPROMPAGE0.data:>EPROMPAGE0.bss:>SPRAMPAGE1xn:align(8){}>DARAMPAGE1b0:align(8){}>DARAMPAGE1.vections:VECSPAGE0};在存儲器中定義輸出段的位置;text段定位在程序存儲器即源程序位于程序存儲器;系數區定義在程序存儲器

;bss段定義在暫存器

;從xn起8個單元定義在DARAM;從b0起8個單元定義在DARAM;vections定義在VECS區2022/12/2058DSP原理及應用第6章應用程序設計鏈接命令文件:SECTIONS;在存儲第6章應用程序設計2.

FIR濾波器的實現(3)

系數對稱FIR濾波器的實現

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

設濾波器N=8,若系數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/12/2059DSP原理及應用第6章應用程序設計2.FIR濾波器的實現(3)系數對第6章應用程序設計(3)

系數對稱FIR濾波器的實現

對稱FIR濾波器的實現方法:

①在RAM中開辟兩個N/2長度的循環緩沖區New和Old

,分別存放N/2個新數據和老數據;

NewOldx(n)x(n-3)x(n-2)x(n-1)x(n-4)x(n-5)x(n-6)x(n-7)②設置循環緩沖區指針:AR1指向New區中的最新數據,

AR2指向Old區中的最老數據;

AR1→AR2→③在程序存儲器中設置系數表;

系數表b0b1b2b3COEF④進行(AR1)+(AR2)AH加法運算,并修改數據指針,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/12/2060DSP原理及應用第6章應用程序設計(3)系數對稱FIR濾波器的實現對稱第6章應用程序設計(3)

系數對稱FIR濾波器的實現

對稱FIR濾波器的實現方法:

系數表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,完成塊操作,重復執行4次;0000000000B乘法—累加:(AH)bi+BB;PAR→b0x(n)+x(n-7)0000000000b0[x(n)+x(n-7)]+0b0[x(n)+x(n-7)]修改系數指針:PAR+1PAR;

PAR→加法運算:(AR1)+(AR2)AH;x(n-3)x(n-6)x(n-3)+x(n-6)x(n-3)+x(n-6)修改數據指針: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→⑥保存和輸出結果;2022/12/2061DSP原理及應用第6章應用程序設計(3)系數對稱FIR濾波器的實現對稱第6章應用程序設計(3)

系數對稱FIR濾波器的實現

對稱FIR濾波器的實現方法:

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→系數表b0b1b2b3Newx(n)x(n-3)x(n-2)x(n-1)AR1→⑦修正數據指針,

AR1指向New區的最老數據;

AR2指向Old區的最老數據。AR2→⑧用New區的最老數據替代Old區的最老數據,輸入新數據替代New區的最老數據;

x(n-3)x(n+1)⑨重復執行④~⑧。

2022/12/2062DSP原理及應用第6章應用程序設計(3)系數對稱FIR濾波器的實現對稱第6章應用程序設計(3)

系數對稱FIR濾波器的實現

系數對稱FIR濾波器指令:

格式:

FIRSXmem,Ymem,Pmad

功能:

PmadPAR;

當(RC)0,則B+AH(Pmem)B,

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

PAR+1PAR,RC-1RC

其中,Pmem是通過PAR尋址。2022/12/2063DSP原理及應用第6章應用程序設計(3)系數對稱FIR濾波器的實現系數第6章應用程序設計(3)

系數對稱FIR濾波器的實現

程序清單:

.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中定義數據段

;定義數據0.1

;定義數據0.2

;定義數據0.3

;定義數據0.4

y(n)數據存儲器…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系數表2022/12/2064DSP原理及應用第6章應用程序設計(3)系數對稱FIR濾波器的實現程序第6章應用程序設計(3)

系數對稱FIR濾波器的實現

程序清單:

.textstart:LD#x_new,DPSSBXFRCTSTM#x_new,AR1STM#x_old+(size-1),AR2STM#size,BKSTM#-1,AR0PORTRPA1,#x_new

;設置頁指針

;設置小數乘法

;AR1指向x_new單元

;AR2指向x_old+3單元

;設置循環緩沖區長度

;設置雙操作數增量AR0=-1

;輸入數據x(n)2022/12/2065DSP原理及應用第6章應用程序設計(3)系數對稱FIR濾波器的實現程序第6章應用程序設計程序清單: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,設置重復次數

;乘法累加、加法操作

B

=

AH×bi

+

B

AH=(AR1)+(AR2)

;保存y(n)結果

;輸出結果

;修正AR1,指向New區最老數據

;修正AR2,指向Old區最老數據

;New區向Old區傳送數據

;循環

;輸入最新數據至New區2022/12/2066DSP原理及應用第6章應用程序設計程序清單:FIR3:ADD*AR第6章應用程序設計6.1FIR濾波器的DSP實現

6.1.5

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

ws=0.4。

2022/12/2067DSP原理及應用第6章應用程序設計6.1FIR濾波器的DSP實現6.1第6章應用程序設計6.1.5

FIR濾波器的設計實例

根據給定的設計參數,濾波器系數可由MATLAB中的fir2函數產生,函數調用格式:

1.由給定的設計參數確定濾波器的系數

f=[00.350.41];

m=[1100];

b=fir2(39,f,m)

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

freqz(b,512,1000)

2022/12/2068DSP原理及應用第6章應用程序設計6.1.5FIR濾波器的設計實例第6章應用程序設計濾波器的頻率特性:1.由給定的設計參數確定濾波器的系數2022/12/2069DSP原理及應用第6章應用程序設計濾波器的頻率特性:1.由給定的設計參數第6章應用程序設計

采用循環緩沖區實現FIR濾波器的源程序如下:

2.匯編源程序

.title“FIR.ASM”.mmregs.bssy,1K_FIR_BFFR.set40PA0.set0PA1.set1FIR_COFF_TABLE.usect“FIR_COFF”,40;定義數據存儲空間D_DATA_BUFFER.usect“FIR_BFR”,40;定義數據存儲空間.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/12/2070DSP原理及應用第6章應用程序設計采用循環緩沖區實現FIR濾波器的第6章應用程序設計

.text.defFIR_INIT.defFIR_TASKFIR_INIT:SSBXFRCT

溫馨提示

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

評論

0/150

提交評論