版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校工作計(jì)劃
- 閉門(mén)器配件行業(yè)市場(chǎng)發(fā)展及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 四年級(jí)的科學(xué)教學(xué)工作計(jì)劃
- 倉(cāng)管的實(shí)習(xí)自我總結(jié)十篇
- 中秋節(jié)活動(dòng)策劃方案范文錦集六篇
- 三年級(jí)數(shù)學(xué)教師自我鑒定
- 初中語(yǔ)文課前演講稿10篇
- 生活中的美初中作文600字【5篇】
- 有關(guān)晚會(huì)策劃方案范文匯編5篇
- 旅游社實(shí)習(xí)報(bào)告四篇
- GB/T 12467.5-2009金屬材料熔焊質(zhì)量要求第5部分:滿足質(zhì)量要求應(yīng)依據(jù)的標(biāo)準(zhǔn)文件
- GB 17740-1999地震震級(jí)的規(guī)定
- 安全生產(chǎn)事故舉報(bào)獎(jiǎng)勵(lì)制度
- 冠心病健康教育完整版課件
- 永久避難硐室安裝施工組織措施
- 元旦節(jié)前安全教育培訓(xùn)-教學(xué)課件
- 國(guó)家開(kāi)放大學(xué)《理工英語(yǔ)1》單元自測(cè)8試題答案
- 芯片工藝流程課件1
- 人教版八年級(jí)下冊(cè)生物期末測(cè)試卷帶答案
- 《尖利的物體會(huì)傷人》安全教育課件
- 大學(xué)生自主創(chuàng)業(yè)證明模板
評(píng)論
0/150
提交評(píng)論