DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程_第1頁(yè)
DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程_第2頁(yè)
DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程_第3頁(yè)
DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程_第4頁(yè)
DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程_第5頁(yè)
已閱讀5頁(yè),還剩168頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

電工電子實(shí)驗(yàn)中心

實(shí)驗(yàn)指導(dǎo)書(shū)

DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程

二。。九年三月

高等學(xué)校電工電子實(shí)驗(yàn)系列

DSP應(yīng)用技術(shù)實(shí)驗(yàn)教程

主編郝小江李慧蓉

攀枝花學(xué)院電氣信息工程學(xué)院

電工電子實(shí)驗(yàn)中心

內(nèi)容簡(jiǎn)介

內(nèi)容簡(jiǎn)介

本書(shū)是根據(jù)高等院校工科本科生“DSP原理及應(yīng)用"、“DSP技術(shù)”等課程的

基本要求編寫(xiě)的。

書(shū)中實(shí)驗(yàn)內(nèi)容包含CCS基本操作實(shí)驗(yàn)、DSP算法實(shí)驗(yàn)、定時(shí)/中斷實(shí)驗(yàn)、

BOOTLOADER實(shí)驗(yàn)、多通道緩沖串口(McBSP)實(shí)驗(yàn)、雙音多頻(DTMF)實(shí)驗(yàn)。圖文

并茂地向讀者介紹了DSP實(shí)驗(yàn)的基本重點(diǎn)內(nèi)容,通俗易懂,能夠讓在校學(xué)生、DSP

工程技術(shù)人員更好地學(xué)習(xí)和掌握DSP應(yīng)用技術(shù)。

本書(shū)可作為高等院校電子、通信類(lèi)本科生的DSP應(yīng)用技術(shù)實(shí)驗(yàn)教材,也可作

為從事DSP應(yīng)用技術(shù)研究的專(zhuān)業(yè)人員參考書(shū)。

?*—1—

刖a

前言

數(shù)字信號(hào)處理器(DSP)問(wèn)世以來(lái),由于其結(jié)構(gòu)獨(dú)特并具有快速實(shí)現(xiàn)各種數(shù)字信

號(hào)處理算法的優(yōu)點(diǎn),在從多領(lǐng)域得到廣泛應(yīng)用。為了適應(yīng)這一發(fā)展趨勢(shì),許多高校

都開(kāi)設(shè)了DSP相關(guān)的課程和實(shí)驗(yàn),而且學(xué)習(xí)DSP課程的同學(xué)和利用DSP進(jìn)行研究

開(kāi)發(fā)的工程師也越來(lái)越多。為了適應(yīng)這一發(fā)展趨勢(shì),在吸取其它DSP相關(guān)教材經(jīng)

驗(yàn)的基礎(chǔ)上,根據(jù)攀枝花學(xué)院"DSP原理及應(yīng)用”課程的教學(xué)經(jīng)驗(yàn)和教學(xué)改革的

要求,編寫(xiě)的本實(shí)驗(yàn)教程。通過(guò)本課程的學(xué)習(xí),讀者可以由淺入深地掌握

TMS320C54X系列DSP的基本原理、系統(tǒng)組成、軟硬件開(kāi)發(fā),將理論和實(shí)踐相結(jié)合,

在學(xué)習(xí)中逐步培養(yǎng)和提高學(xué)生的實(shí)驗(yàn)?zāi)芰?、設(shè)計(jì)能力、獨(dú)立分析和解決問(wèn)題的能

力。

本書(shū)實(shí)驗(yàn)內(nèi)容豐富、并且注重理論與實(shí)踐相結(jié)合,由淺入深,從TMS320c54x

的基本操作、DSP算法實(shí)驗(yàn)、DSP接口實(shí)驗(yàn)著手,由簡(jiǎn)到繁地讓讀者對(duì)DSP有一個(gè)

較全面的認(rèn)識(shí),基本掌握DSP的應(yīng)用?;静僮鲗?shí)驗(yàn)包括CCS軟件的使用,算法

實(shí)驗(yàn)包括定點(diǎn)算術(shù)運(yùn)算實(shí)驗(yàn)、數(shù)字濾波實(shí)驗(yàn)、FFT實(shí)驗(yàn)、定時(shí)器實(shí)驗(yàn),接口實(shí)驗(yàn)包

括BSP串口操作、雙音多頻(DTMF)實(shí)驗(yàn)。

全書(shū)由攀枝花學(xué)院電氣信息工程學(xué)院和省級(jí)電工電子示范中心郝小江、李慧

蓉老師主編。在本書(shū)的編寫(xiě)的過(guò)程中得到電子科技大學(xué)一一美國(guó)德州儀器DSPs

技術(shù)培訓(xùn)中心的大力支持,在此表示感謝。

由于作者水平有限,書(shū)中錯(cuò)誤之處在所難免,懇請(qǐng)廣大師生及讀者提出寶貴

意見(jiàn)及建議。

編者

2009年3月于攀枝花

目錄

目錄

實(shí)驗(yàn)?DSP開(kāi)發(fā)環(huán)境CCS的使用1

實(shí)驗(yàn)二DSP基本算法5

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))10

實(shí)驗(yàn)四IIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))21

實(shí)驗(yàn)五快速傅立葉變換(FFT)30

實(shí)驗(yàn)六正弦波信號(hào)發(fā)生器45

實(shí)驗(yàn)七定時(shí)器中斷實(shí)驗(yàn)52

實(shí)驗(yàn)八定時(shí)器實(shí)驗(yàn)數(shù)字振蕩器62

實(shí)驗(yàn)九McBSP串口操作70

實(shí)驗(yàn)十?dāng)?shù)字濾波系統(tǒng)設(shè)計(jì)(綜合實(shí)驗(yàn))79

實(shí)驗(yàn)十一TMS320VC5402的BOOTLOADER技術(shù)85

實(shí)驗(yàn)十二雙音多頻DTMF技術(shù)(綜合實(shí)驗(yàn))95

附錄A107

附錄B135

附錄C138

附錄D142

附錄E150

附錄F156

參考文獻(xiàn)167

實(shí)驗(yàn)一DSP開(kāi)發(fā)環(huán)境CCS的使用

實(shí)驗(yàn)一DSP開(kāi)發(fā)環(huán)境CCS的使用

一、實(shí)驗(yàn)?zāi)康?/p>

1.熟悉CCS軟件的基本使用方法,重點(diǎn)掌握CCS軟件的調(diào)試工具和技巧;

2.掌握堆棧的使用方法;

二、實(shí)驗(yàn)內(nèi)容

編寫(xiě)程序,觀察堆棧的使用情況。

三、實(shí)驗(yàn)內(nèi)容與步驟

1.將計(jì)算機(jī)與DES320PP-A教學(xué)實(shí)驗(yàn)系統(tǒng)連接好,并打開(kāi)實(shí)驗(yàn)系統(tǒng)電源、然后運(yùn)

行CCS軟件。

2.新建一個(gè)項(xiàng)目:點(diǎn)擊ProjectfNew,將項(xiàng)目命名為DSPCCS,并將項(xiàng)目名保存在

自己定義的文件夾下。(注意文件夾一定要用英文名,不要將文件夾取名為中文

名)。

3.新建一個(gè)源文件:點(diǎn)擊File-New-SourceFile,可以打開(kāi)一個(gè)文本編輯窗

口,點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的一個(gè)文件夾下面(DSPCCS),保存類(lèi)型選

擇*.ASM(如果源文件是C語(yǔ)言編寫(xiě)的,保存類(lèi)型選擇*.C。本實(shí)驗(yàn)中的例程是

使用匯編語(yǔ)言編寫(xiě)的,所以選擇*.ASM為保存類(lèi)型),我們?cè)谶@里將保存名字命

名為DSPCCS.asm。

4.在項(xiàng)目中添加源文件:在新建立了一個(gè)源文件以后,要想使用CCS編譯器對(duì)

該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中

右鍵單擊DSPCCS.pjt,在彈出的菜單中選擇AddFiles,然后將剛才建立的

DSPCCS.asm文件添加到該項(xiàng)目中去。

5.編寫(xiě)源程序:在工程管理器中雙擊DSPCCS.asm,將出現(xiàn)文本編輯窗口,在

該文本編輯窗口中輸入如下內(nèi)容:

*****************************************

*學(xué)習(xí)堆棧的使用方法*

.title“DSPCCS.asm”

.mmregs

-1-

實(shí)驗(yàn)一DSP開(kāi)發(fā)環(huán)境CCS的使用

size.set100

stack.usectnSTK",size;堆棧的設(shè)置

.bsslength,!OH

.defstart

.text

start:STM#0,SWWSR;插入0個(gè)等待狀態(tài)

STM#stack+size,SP;設(shè)置堆棧的指針

LD#-8531,A

STM#length,ARl

MVMMSP,AR7

loop:STLA,?ART-

BANZloop,*ARl-

.end

6.編寫(xiě)鏈接配置文件:

只有匯編源程序是不夠的,一個(gè)完整的DSP程序至少包含三個(gè)部分:主程

序、中斷向量表、鏈接配置文件(*.cmd)。這里先介紹一下鏈接配置文件。

鏈接配置文件有很多功能,這里先介紹最常用的也是必須的兩條:(1)存貯

器的分配(2)標(biāo)明程序入口。由于每個(gè)程序都需要一個(gè)鏈接配置文件,每個(gè)程

序的鏈接配置文件根據(jù)實(shí)際情況的需要都略有不同,下面就為本實(shí)驗(yàn)的程序編寫(xiě)

一個(gè)鏈接配置文件。

vectors.obj/*中斷向量的目標(biāo)文件*/

DSPCCS.obj/*產(chǎn)生目標(biāo)文件*/

-oDSPCCS.out/*產(chǎn)生可執(zhí)行下載文件,文件名可以根據(jù)不同項(xiàng)目而定*/

-mDSPCCS.map/*產(chǎn)生存儲(chǔ)器映射文件,文件名可以根據(jù)不同項(xiàng)目而定*/

-estart/*程序入口*/

MEMORY

{

PAGE0:/*定義程序存貯區(qū)*/

EPROM:org=0090Hlen=0F70H/*定義EPROM區(qū),起始地址0090H,長(zhǎng)度0F70H*/

VECS:org=0080Hlen=0010H/*定義VECS區(qū),起始地址0080H,長(zhǎng)度0010H*/

PAGE1:/*定義數(shù)據(jù)存貯區(qū)*/

SPRAM:org=1000Hlen=1000H/*定義SPRAM區(qū),起始地址1000H,長(zhǎng)度1000H*/

DARAM:org=2000Hlen=2000H/*定義DARAM區(qū),起始地址2000H,長(zhǎng)度2000H*/

SECTIONS

.text:>EPROMPAGE0/*將.text段映射到PAGE0的EPROM區(qū)*/

-2-

實(shí)驗(yàn)一DSP開(kāi)發(fā)環(huán)境CCS的使用

.data:>EPROMPAGE0/*將.data段映射到PAGEO的EPROM區(qū)*/

.bss:>SPRAMPAGE1/*將.bss段映射到PAGE1的SPRAM區(qū)*/

STK:>DARAMPAGE1/*將STK段映射至ljPAGE1的DARAM區(qū)*/

.vectors:>VECSPAGE0/*將中斷向量表定位到PAGEO的VECS區(qū)*/

}

將其以DSPCCS.cmd文件保存在自定義文件夾下。

7.編寫(xiě)中斷向量表文件

/*vectors.asm*/

.title"vectors.asm^/*中斷向量表的文件名*/

.refstart/*引用外部定義的標(biāo)號(hào)*/

.sect".vectors”/*定義初始化的段名*/

Bstart/*引用start*/

.end

將其以vectors.asm文件保存在自定義文件夾下。

并將DSPCCS.cmd、vectors.asm添加到項(xiàng)目中。

8.對(duì)項(xiàng)目進(jìn)行編譯和鏈接:

把DSPCCS.asm、vectors.asm,DSPCCS.cmd三個(gè)文件依次添加到項(xiàng)目后,點(diǎn)

擊Project-CompileProject—Build選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈接,生成*.out文件。

9.裝載可執(zhí)行文件:

要讓程序代碼在DSP內(nèi)部運(yùn)行必需將生成的*.OUT文件裝載至UDSP內(nèi)部,裝載

方法是:點(diǎn)擊File-*LoadPrograme再選擇生成的

DSPCCS.out文件就可以將程序裝載到DSP內(nèi)部的

存儲(chǔ)器中。

10.運(yùn)行程序并查看結(jié)果:

a)首先打開(kāi)欲查看的數(shù)據(jù)空間:點(diǎn)擊

View-Memory彈出uMemoryWindowsOptionsM

對(duì)話框,把欲查看的地址改為0x2000,如圖1.1

所示。

b)點(diǎn)擊OK按鈕,然后點(diǎn)擊Debug—Run讓程序在

DSP內(nèi)部運(yùn)行,最后點(diǎn)擊Debug—Halt停止,再觀

察“Memory”對(duì)話框,看是否與圖1.2一致。圖L1存儲(chǔ)器設(shè)置窗口

-3-

實(shí)驗(yàn)一DSP開(kāi)發(fā)環(huán)境CCS的使用

8'Me>ory(Data:Hex-CStyle)13回區(qū))

0x2000:stack

0x2000:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2008:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2010:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2018:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2020:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2028:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2030:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2038:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2040:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2048:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2050:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2058:OxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEADOxDEAD

0x2060:OxDEADOxDEADOxDEADOxDEADOxDEAD0x00000x00000x0000

0x2068:0x00000x00000x00000x00000x00000x00000x00000x0000v

圖1.2堆棧結(jié)果圖

四、實(shí)驗(yàn)儀器設(shè)備

1.計(jì)算機(jī)

2.DES32OPP-A教學(xué)實(shí)驗(yàn)系統(tǒng)

五、實(shí)驗(yàn)注意事項(xiàng)

1.本實(shí)驗(yàn)可以不用實(shí)驗(yàn)設(shè)備DES320PP-A教學(xué)實(shí)驗(yàn)系統(tǒng)

六、實(shí)驗(yàn)報(bào)告要求

1.要求每位同學(xué)堆棧中的值不同

2.實(shí)驗(yàn)中圖1.1和圖1.2必須打印

-4-

實(shí)驗(yàn)二DSP基本算法

實(shí)驗(yàn)二DSP基本算法

一、實(shí)驗(yàn)?zāi)康?/p>

1.練習(xí)在CCS5000平臺(tái)下,TMS320c54x匯編語(yǔ)言的編寫(xiě)與調(diào)試方法;

2.掌握用C54x進(jìn)行算術(shù)運(yùn)算的基本方法和所使用的基本語(yǔ)句;

3.練習(xí)并掌握匯編語(yǔ)言的匯編指令系統(tǒng)的使用方法。

二、實(shí)驗(yàn)內(nèi)容

4

編寫(xiě)程序,分別實(shí)現(xiàn)計(jì)算z=x+y-w、y=mx+b、y=x1Xal+x2Xa2、y=>,

i=l

三、實(shí)驗(yàn)步驟

1.將計(jì)算機(jī)與DES-320PP-A教學(xué)實(shí)驗(yàn)系統(tǒng)連接好,打開(kāi)實(shí)驗(yàn)箱電源,然后運(yùn)行

CCS軟件。

2.新建一個(gè)項(xiàng)目:點(diǎn)擊Project-New,將項(xiàng)目命名為example,并將項(xiàng)目保存在

自己定義的文件夾下,注意文件夾一定要用英文名,不要將文件夾取名為中文名,

因?yàn)镃CS軟件不能識(shí)別以中文命名的文件夾。

3.新建一個(gè)源文件:點(diǎn)擊File-New-SourceFile可以打開(kāi)一個(gè)文本編輯窗口,

點(diǎn)擊保存按鍵,保存在和項(xiàng)目相同的-個(gè)文件夾下面(example),保存類(lèi)型選擇

*.ASM(如果源文件是C語(yǔ)言編寫(xiě)的,保存類(lèi)型選擇*.C,本實(shí)驗(yàn)中的例程是使

用匯編語(yǔ)言編寫(xiě)的,所以選擇*.ASM為保存類(lèi)型),我們?cè)谶@里將保存名字命名

為example.asm。

4.在項(xiàng)目中添加源文件:在新建立了一個(gè)源文件以后,要想使用CCS編譯器對(duì)

該源文件進(jìn)行編譯還需要將源文件添加到項(xiàng)目中去。添加方法是在工程管理器中

右鍵單擊example.pjt,選擇AddFiles,然后將剛才建立的example.asm文件添

加到該項(xiàng)目中去。

5.編寫(xiě)源程序:在工程管理器中雙擊example.asm,將出現(xiàn)文本編輯窗口,在該

文本編輯窗口中輸入如下內(nèi)容:

*****************************************

*計(jì)算z=x+y-w*

-5-

實(shí)驗(yàn)二DSP基本算法

.title"example.asm”

.mmregs

STACK.usect“STACK”jOH;堆棧的設(shè)置

.bssx,l;為變量分配4個(gè)字的存儲(chǔ)空間

.bssy,1

.bssw,l

.bssz,l

.defstart

.data

table.word10,26,23;x,y,w

.text

start:STM#0,SWWSR;插入0個(gè)等待狀態(tài)

STM#STACK+10H,SP;設(shè)置堆棧指針

STM#x,ARl;AR1指向x

RPT#2

MVPDtable,*AR1+;把程序存儲(chǔ)器中的數(shù)據(jù)移動(dòng)到數(shù)據(jù)存儲(chǔ)器

CALLSUMB

end:Bend

SUMB:LD*(x),A

ADD*(y),A

SUB*(w),A

STLA,*(z)

RET

.end

6.編寫(xiě)鏈接配置文件:

vectors.obj/*中斷向量的目標(biāo)文件*/

example.obj/*產(chǎn)生目標(biāo)文件*/

-oexample.out/*產(chǎn)生可執(zhí)行下載文件,文件名可以根據(jù)不同項(xiàng)目而定*/

-mexample.map/*產(chǎn)生存儲(chǔ)器映射文件,文件名可以根據(jù)不同項(xiàng)目而定*/

-estart/*程序入口*/

MEMORY

{

PAGE0:/*定義程序存貯區(qū)*/

EPROM:org=0090Hlen=0F70H/*定義EPROM區(qū),起始地址0090H,長(zhǎng)度0F70H*/

VECS:org=0080Hlen=0010H/*定義VECS區(qū),起始地址0080H,長(zhǎng)度0010H*/

PAGE1:/*定義數(shù)據(jù)存貯區(qū)*/

SPRAM:org=1000Hlen=1000H/*定義SPRAM區(qū),起始地址1000H,長(zhǎng)度1000H*/

DARAM:org=2000Hlen=2000H/*定義DARAM區(qū),起始地址2000H,長(zhǎng)度2000H*/

-6-

實(shí)驗(yàn)二DSP基本算法

SECTIONS

.text:>EPROMPAGE0/*將.text段映射到PAGEO的EPROM區(qū)*/

.data:>EPROMPAGE0/*將.data段映射到PAGEO的EPROM區(qū)*/

.bss:>SPRAMPAGE1/*將.bss段映射到PAGE1的SPRAM區(qū)*/

STK:>DARAMPAGE1/*將STK段映射到PAGE1的DARAM區(qū)*/

,vectors:>VECSPAGE0/*將中斷向量表定位到PAGEO的VECS區(qū)*/

)

7.編寫(xiě)中斷向量表文件

/*vectors.asm*/

.title"vectors.asm,,/*中斷向量表的文件名*/

.refstart/*引用外部定義的標(biāo)號(hào)*/

.sect".vectors”/*定義初始化的段名*/

Bstart/*引用start*/

.end

將其以vectors.asm文件保存在自定義文件夾下。

并將example.cmd、vectors.asm添加到項(xiàng)目中。

8.對(duì)項(xiàng)目進(jìn)行編譯和鏈接:

把example.asm、vectors.asm>example.cmd依次添加到項(xiàng)目后,點(diǎn)擊Project

—CompileProject—Build選項(xiàng)對(duì)該項(xiàng)目進(jìn)行鏈

接,生成*.out文件。

9.裝載可執(zhí)行文件:

要讓程序代碼在DSP內(nèi)部運(yùn)行必需將生成的

*.OUT文件裝載到DSP內(nèi)部,裝載方法是點(diǎn)擊:File

—LoadPrograme再選擇生成的example.out文件

就可以將程序裝載到DSP內(nèi)部的存儲(chǔ)器中。

10.運(yùn)行程序并查看結(jié)果:

a)首先打開(kāi)欲查看的數(shù)據(jù)空間:點(diǎn)擊View-

Memory,彈出“MemoryWindowOptions”對(duì)話

框,把欲查看的地址改為0x1000,如圖2.1所示。

b)點(diǎn)擊OK按鈕,然后點(diǎn)擊Debug-Run讓程圖2.1存儲(chǔ)器設(shè)置窗口

序在DSP內(nèi)部運(yùn)行,最后點(diǎn)擊Debug-Halt,再觀察“Memory”對(duì)話框,看是

否與圖2.2一致:

-7-

實(shí)驗(yàn)二DSP基本算法

國(guó)leaory(Data:Hex-CStyle)

0x1000:XA

0x1000:OxOOOA

0x1001:y

0x1001:OxOOlA

0x1002:w

0x1002:0x0017

0x1003:z

0x1003:OxOOOD

0x1004:STACK

0x1004:0x00000x00000x0000v

圖2.2運(yùn)行結(jié)果圖

11.建立其它項(xiàng)目工程文件

建立項(xiàng)目工程文件example],使之實(shí)現(xiàn)計(jì)算y=mx+b;建立項(xiàng)目工程文件

example2,使之實(shí)現(xiàn)計(jì)算y=xlXa2+x2Xa2;建立項(xiàng)目工程文件example3,使之

4

實(shí)現(xiàn)計(jì)算>受實(shí)驗(yàn)運(yùn)行結(jié)果如圖2.3~圖2.5所示:

;=1

n:KeBory(Data:Hex-C...叵

0x1000:mA

0x1000:0x0003

0x1001:X

0x1001:OxOOOF

0x1002:b

0x1002:0x0014

0x1003:y

0x1003:0x0041

0x1004:STACK|v

圖2.3y=mx+b結(jié)果

Sleaory(Data:Hex-C

0x1000:xlA

0x1000:0x0003

0x1001:x2

0x1001:0x0005

0x1002:al

0x1002:OxOOOF

0x1003:a2

0x1003:0x0014

0x1004:y

0x1004:0x0091

nxinns:AndV

圖2.4y=xlXa2+x2Xa2結(jié)果

-8-

實(shí)驗(yàn)二DSP基本算法

r

Ie>ory(Data:Hex-CStyle)回區(qū)

0x1000:aA

0x1000:0x00010x00050x00030x0004

0x1004:x

0x1004:0x00080x00060x00070x0002

0x1008:y

0x1008:OxOOlEV

圖2.5y結(jié)果

;=1

四、實(shí)驗(yàn)儀器設(shè)備

1.計(jì)算機(jī)

2.DES-320PP—A教學(xué)實(shí)驗(yàn)系統(tǒng)

五、實(shí)驗(yàn)報(bào)告要求

1.要求每位同學(xué)實(shí)驗(yàn)結(jié)果不同

2.實(shí)驗(yàn)中圖2.1至圖2.5必須打印

六、思考題

1.自行編制程序?qū)崿F(xiàn)圖2.3至圖2.5的實(shí)驗(yàn)結(jié)果

-9-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

一、實(shí)驗(yàn)?zāi)康?/p>

1.了解FIR(FiniteImpulseResponse有限沖激響應(yīng))濾波器的原理及使用方法;

2.了解使用MATLAT語(yǔ)言設(shè)計(jì)FIR濾波器的方法;

3.了解DSP對(duì)FIR濾波器的設(shè)計(jì)及編程方法;

4.熟悉在CCS環(huán)境下對(duì)FIR濾波器的調(diào)試方法;

二、實(shí)驗(yàn)原理

數(shù)字濾波是DSP的最基本應(yīng)用,利用MAC(乘、累加)指令和循環(huán)尋址可

以方便地完成濾波運(yùn)算。兩種常用的數(shù)字濾波器:FIR(有限沖激響應(yīng))濾波器

和IIR(無(wú)限沖激響應(yīng))濾波器的DSP實(shí)現(xiàn)。

設(shè)FIR濾波器的系數(shù)為h(0),h(l)h(N-l),X(n)表示濾波器在n時(shí)刻

的輸入,則n時(shí)刻的輸出為:

N-I

y(〃)=ZW)x(〃-i)=

i=0

/i(0)x(n)+h(\)x(n-1)+…〃(N-1)m〃一(N-1)]

FIR數(shù)字濾波器的結(jié)構(gòu)如圖3.1所示。

x(?n)--?--?--Z-?'--?--Z?-1--???--Z-?1--?

h(0)“h(l)▼h(2)■h(N-2)▼▼h(N-l)

圖3.1FIR數(shù)字濾波器的結(jié)構(gòu)圖

1、線性緩沖區(qū)法

又稱延遲線法。其方法是:對(duì)于n=N的FIR濾波器,在數(shù)據(jù)存儲(chǔ)器中開(kāi)辟一

個(gè)N單元的緩沖區(qū),存放最新的N個(gè)樣本;濾波時(shí)從最老的樣本開(kāi)始,每讀一個(gè)

樣本后,將此樣本向下移位;讀完最后一個(gè)樣本后,輸入最新樣本至緩沖區(qū)的頂

部。以上過(guò)程,可以用N=6的線性緩沖區(qū)示意圖來(lái)說(shuō)明,如圖3-2所示

-10-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

數(shù)據(jù)存信器數(shù)免存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器

線性緩沖區(qū)頂部X(n)讀入新數(shù)據(jù)―X(n+1)讀入新數(shù)據(jù)fX(n+2)

X(n-l)X(n)X(n+1)

X(?2)X(訓(xùn)X(n)

X(n-3)X32)X(n-l)

tX(n4)tX(n-3)IX(n-2)

ARxX(2)ARxfX(M)ARxX(n-3)

(a)(b)(c)

圖3-2N=6的線性緩沖區(qū)示意圖

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

圖3-3說(shuō)明了使用循環(huán)尋址實(shí)現(xiàn)FIR濾波器的方法。對(duì)于N級(jí)FIR濾波器,

在數(shù)據(jù)存儲(chǔ)區(qū)開(kāi)辟一個(gè)稱為滑窗的具有N個(gè)單元的緩沖區(qū),滑窗中存放最新的N

個(gè)輸入樣本值。每次輸入新的樣本時(shí),新的樣本將改寫(xiě)滑窗中最老的數(shù)據(jù),其他

數(shù)據(jù)則不需要移動(dòng)。

數(shù)據(jù)存儲(chǔ)器數(shù)番存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器

MO)低地址x(n)<-ARx儂電)

1

H(l)Xn-l)Xn-Dx(n-D

::?:

MN?2)XMN-2)]X[MN-2HX(n+2)

h(N-l)X[n<N-l)]x-(n+l)]+ARJCXn+1)]ARx

I+

圖3-3FIR濾波器循環(huán)緩沖區(qū)存儲(chǔ)器圖

三、實(shí)驗(yàn)內(nèi)容與步驟

設(shè)計(jì)一個(gè)FIR低通濾波器,通帶邊界頻率為1500Hz,通帶波紋小于IdB;阻

帶邊界頻率為2000Hz,阻帶衰減大于40dB;采樣頻率為8000Hz。FIR濾波器的

設(shè)計(jì)可以用MATLAB窗函數(shù)法進(jìn)行。

本實(shí)驗(yàn)設(shè)計(jì)一個(gè)采樣頻率Fs為8000Hz,輸入信號(hào)頻率為1000Hz和2500Hz

的合成信號(hào),通過(guò)設(shè)計(jì)的低通濾波器將2500Hz信號(hào)濾掉,余下1000Hz信號(hào)。

1、MATLAB設(shè)計(jì)FIR濾波器

FIR濾波器的設(shè)計(jì)可以用MATLAB窗函數(shù)法進(jìn)行,選擇Hamming窗,其程

序?yàn)椋?/p>

b=firl(16,1500/8000*2);

-II-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

得到FIR數(shù)字濾波器系數(shù)b為:

bO=O.00000000b9=0.28342322

bl=0.00482584bl0=0.09725365

b2=0.00804504bll=-0.02903702

b3=-0.00885584bl2=-0.04291741

b4=-0.0429174bl3=-0.00885584

b5=-0.02903702bl4=0.00804504

b6=0.09725365bl5=0.00482584

b7=0.28342322bl6=0.00000000

B8=0.37452503

在DSP匯編語(yǔ)言中,不能直接輸入十進(jìn)制小數(shù),在MATLAB中進(jìn)行如下轉(zhuǎn)

換:

h=round(b*2A15)

將系數(shù)轉(zhuǎn)換為Q15的定點(diǎn)小數(shù)形式,為:

h(0)=0h(9)=9287

h(l)=158h(10)=3187

h(2)=264h(ll)=-951

h(3)=-290h(12)=-1406

h(4)=-1406h(13)=-290

h(5)=-951h(14)=264

h(6)=3187h(15)=158

h(7)=9287h(16)=0

h(8)=12272

2、編寫(xiě)FIR數(shù)字濾波器的匯編程序

;一個(gè)FIR濾波器源程序fir.asm

.mmregs

.globalstart

.defstart,cintOO

INDEX.set1

KS.set256;模擬輸入數(shù)據(jù)緩沖區(qū)大小

N.set17

COFF_FIR.sect”'COFF_FIR";FIR濾波器系數(shù)

.word0

.word158

.word264

.word-290

.word-1406

.word-951

-12-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

.word3187

.word9287

.word12272

.word9287

.word3187

.word-951

.word-1406

.word-290

.word260

.word158

.word0

.data

INPUT.copy"firin.incH;模擬輸入在數(shù)據(jù)存儲(chǔ)區(qū)0x2400

OUTPUT.space1024;輸出數(shù)據(jù)在數(shù)據(jù)區(qū)0x2500

COFFTAB.usect"FIR_COFF",N

DATABUF.usect"FIR_BFRH,N

BOS.usect"STACK\0Fh

TOS.usect"STACK"」

.text

.asgAR0JNDEX_P

.asgAR4,DATA_P;輸入數(shù)據(jù)x(n)循環(huán)緩沖區(qū)指針

.asgAR5,COFF_P;FIR系數(shù)表指針

.asgAR6,INBUF_P;模擬輸入數(shù)據(jù)指針

,asgAR7,OUTBUF_P;FIR濾波器輸出數(shù)據(jù)指針

cintOO

bstart

nop

nop

start:SSBXFRCT

STM#COFFTAB,COFF_P

RPT#N-1;將FIR系數(shù)從程序存儲(chǔ)器移動(dòng)

MVPD#COFF_FIR,*COFF_P+;到數(shù)據(jù)存儲(chǔ)器

STM#INDEX,INDEX_P

STM#DATABUF,DATAP

RPTZA,#N-1

STLA,*DATA_P+;將數(shù)據(jù)循環(huán)緩沖區(qū)清零

STM#(DATABUF+N-1),DATA_P;數(shù)據(jù)緩沖區(qū)指針指向x[n-(N-l)]

-13-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

STM#COFFTAB,COFF_P;

FIR_TASK:

STM#INPUT,INBUF_P

STM#OUTPUT,OUTBUF_P

STM#KS-1,BRC

RPTBDLOOP-1

STM#N,BK;FIR循環(huán)緩沖區(qū)大小

LD*INBUF_P+,A;裝載輸入數(shù)據(jù)

FIRFILTER:

STLA,*DATA_P+%

RPTZA,N-1

MAC*DATA_P+0%,*COFF_P+0%,A

STHA,*OUTBUF_P+

LOOP:

ENDBEEND

.end

3、編寫(xiě)FIR濾波器鏈接命令文件

對(duì)應(yīng)以上匯編程序的鏈接命令文件fir.cmd如下:

fir.obj

-mfir.map

-ofir.out

MEMORY

(

PAGE0:ROMl(RIX):ORIGIN=0080H,LENGTH=100H

PAGE1:INTRAMl(RW):ORIGIN=2400H,LENGTH=0200H

INTRAM2(RW):ORIGIN=2600H,LENGTH=0100H

INTRAM3(RW):ORIGIN=2700H,LENGTH=0100H

B2B(RW):ORIGIN=0070H,LENGTH=10H

)

SECTIONS

(

.text:{}>ROM1PAGE0

.data:{}>INTRAM1PAGE1

FIRCOFF:{}>INTRAM2PAGE1

FIR_BFR:{}>INTRAM3PAGE1

.stack:{}>B2BPAGE1

4、實(shí)驗(yàn)步驟及結(jié)果

-14-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

(1)在CCS上建立fir工程并運(yùn)行fir.out程序。建立fir工程,將fir.asm和fir.cmd

添加到工程中,對(duì)匯編程序進(jìn)行匯編、鏈接;如果有錯(cuò)誤則進(jìn)行修改、調(diào)試,當(dāng)

匯編、鏈接成功后,加載并運(yùn)行fir.out程序。注意,將fir.asm、fir.cmd、firin.inc

文件和fir.pjt工程文件放在同一文件夾下。

(2)觀察輸入信號(hào)的波形及頻譜。單擊View-GraphfTime/Frequency命令,按

照如圖3-4所示改變各選項(xiàng)。其中,由.cmd可知輸入信號(hào)的數(shù)據(jù)放在數(shù)據(jù)區(qū)

0x2400開(kāi)始的256個(gè)單元中。

圖3-4Graph屬性設(shè)置窗口

單擊OK按鈕,則顯示輸入信號(hào)的時(shí)域波形如圖3-5所示。其波形是頻率為

1000Hz和2500Hz正弦信號(hào)的合成信號(hào)。

圖3-5輸入信號(hào)的時(shí)域波形

-15-

實(shí)驗(yàn)三FIR數(shù)字濾波器(設(shè)計(jì)實(shí)驗(yàn))

將圖3-4中的DsiplayType項(xiàng)改為FFTMagnitude,則顯示輸入信號(hào)的頻譜圖,

如圖3-6所示。

圖3-6輸入信號(hào)的頻譜圖

3、觀察輸出信號(hào)的波形及頻譜。

單擊View-Graph-*Time/Frequency命令,按照如圖3-7所示改變各選項(xiàng)。

其中,由.cmd可知輸出信號(hào)的數(shù)據(jù)放在數(shù)據(jù)區(qū)0x2500開(kāi)始的256個(gè)單元中。

S3GraphPropertyDialogfX'|

DisplayTypeSingleTime圖人

GraphTitleGraphicalDisplay

StartAddress0x002500

PageData

AcquisitionBufferSize256

IndexIncrement1

DisplayDataSize256

DSPDataType16-bitsignedinteger

Q-value0

SamplingRateQ{z}8000

PlotData

溫馨提示

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

評(píng)論

0/150

提交評(píng)論