DSP实验指导书怀院.docx
- 文档编号:8623930
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:28
- 大小:446.40KB
DSP实验指导书怀院.docx
《DSP实验指导书怀院.docx》由会员分享,可在线阅读,更多相关《DSP实验指导书怀院.docx(28页珍藏版)》请在冰豆网上搜索。
DSP实验指导书怀院
DSP实验指导书
实验一CCS软件的安装及使用
1.实验目的
(1)了解众友TMS320VC5416DSP实验装置的硬件基本结构
(2)掌握USB仿真器和CCS2.2软件的安装步骤
(3)掌握CCS2.2软件的硬件仿真和软件仿真的调试方法
此次实验无实验箱,掌握CCS软件仿真配置即可。
实验二汇编语言基本程序设计
(一)
一、实验目的
1、掌握条件算符的使用。
2、掌握循环操作指令(BNAZ)和比较操作指令(CMPR)
3、掌握堆栈的使用方法
二、实验设备
计算机、ZY13DSP12BD实验箱、5416EVM板。
三、实验原理
参见教材
四、实验内容
1.编写程序,实现计算y=
的值。
2.编写程序,观察堆栈的使用情况。
五、实验步骤
“程序的控制与转移”实验步骤:
1、修改软件的“setup”设置,使CCS软件工作于“软件仿真器”模式,然后运行CCS软件。
2、新建一个项目:
点击Project-New,将项目命名为shiyan2a,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3、新建一个源文件:
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(shiyan2a),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为shiyan2a.asm。
4、在项目中添加源文件:
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击shiyan2a.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的shiyan2a.asm文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击shiyan2a.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
*****************************************
**
*学习循环操作指令:
BANZ*
**
*****************************************
.title"shiyan2a.asm"
.mmregs
.def_c_int00
STACK.usect"STACK",10H;堆栈的设置
.bssx,5;为变量分配6个字的存储空间
.bssy,1
.data
table:
.word10,20,3,4,5;x1,x2,x3,x4,x5
.text
_c_int00:
STM#0,SWWSR;插入0个等待状态
STM#STACK+10H,sp;设置堆栈指针
STM#x,AR1;AR1指向x
RPT#4;下一条被重复执行5遍
MVPDtable,*AR1+;把程序存储器中的数据传送到数据存储器
LD#0,A;A清零
CALLSUM;调用求和函数
end:
Bend
SUM:
STM#x,AR3;AR3指向x
STM#4,AR2;AR2=4
loop:
ADD*AR3+,A;*AR3+A-->A,然后AR3+
BANZloop,*AR2-;如果AR2的值不为0,则跳到loop处;否则执行下一条指令
STLA,*(y);把A的低16位赋给变量y
RET
.end
提示:
(1)源代码的书写有一定的格式,初学者往往容易忽视。
每一行代码分为三个区:
标号区、指令区和注释区。
标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。
指令区在标号区之后,以空格或TAB格开。
如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。
注释区在标号区、程序区之后,以分号开始。
注释区前面可以没有标号区或程序区。
另外还有专门的注释行,以*打头,必须顶格开始。
(2)一般区分大小写,除非加编译参数忽略大小写。
(3)标点符号有时不注意会打成中文全角版本号导致错误。
6、编写链接配置文件:
只有汇编源程序是不够的,一个完整的DSP程序至少包含:
主程序、链接配置文件(*.cmd)。
这里先介绍一下链接配置文件。
链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:
1.存贮器的分配2.标明程序入口。
由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考该实验的例程来完成:
/*shiyan2a.cmd*/
shiyan2a.obj/*产生目标文件*/
-oshiyan2a.out/*产生可执行下载文件,文件名可以根据不同项目而定*/
-mshiyan2a.map/*产生存储器映射文件,文件名可以根据不同项目而定*/
-e_c_int00
MEMORY
{
PAGE0:
/*定义程序存贮区*/
EPROM:
org=0090Hlen=0F70H/*定义EPROM区,起始地址0090H,长度0F70H*/
VECS:
org=0080Hlen=0010H/*定义VECS区,起始地址0080H,长度0010H*/
PAGE1:
/*定义数据存贮区*/
SPRAM:
org=1000Hlen=1000H/*定义SPRAM区,起始地址1000H,长度1000H*/
DARAM:
org=2000Hlen=2000H/*定义DARAM区,起始地址2000H,长度2000H*/
}
SECTIONS
{
.text:
>EPROMPAGE0/*将.text段映射到PAGE0的EPROM区*/
.data:
>EPROMPAGE0/*将.data段映射到PAGE0的EPROM区*/
.bss:
>SPRAMPAGE1/*将.bss段映射到PAGE1的SPRAM区*/
STACK:
>DARAMPAGE1/*将.usect段映射到PAGE1的DARAM区*/
}
8、对项目进行编译和链接:
把shiyan2a.asm、shiyan2a.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
9、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的shiyan2a.out文件就可以将程序装载到DSP的内部存储器中。
10、运行程序并查看结果:
a)首先打开欲查看的数据空间:
点击
View-Memory,弹出“MemoryWindowOptions”对话框,把欲查看的地址改为0x1000,如右图所示。
b)点击OK按钮,然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与下图一致:
“堆栈的使用方法”实验步骤:
1、修改软件的“setup”设置,使CCS软件工作于“软件仿真器”模式,然后运行CCS软件。
2、新建一个项目:
点击Project-New,将项目命名为shiyan2b,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3、新建一个源文件:
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(shiyan2b),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为shiyan2b.asm。
4、在项目中添加源文件:
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击shiyan2b.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的shiyan2b.asm文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击shiyan2b.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
*****************************************
**
*学习堆栈的使用方法*
**
*****************************************
.title"shiyan2b.asm"
.mmregs
.def_c_int00
size.set100
stack.usect"STK",size;堆栈的设置
.bsslength,10H
.text
_c_int00:
STM#0,SWWSR;插入0个等待状态
STM#stack+size,SP;设置堆栈的指针
LD#-8531,A
STM#length,AR1
MVMMSP,AR7
loop:
STLA,*AR7-
BANZloop,*AR1-
here:
Bhere
.end
6、编写链接配置文件:
(参考程序如下)
/*shiyan2b.cmd*/
shiyan2b.obj/*产生目标文件*/
-oshiyan2b.out/*产生可执行下载文件,文件名可以根据不同项目而定*/
-mshiyan2b.map/*产生存储器映射文件,文件名可以根据不同项目而定*/
-estart/*程序入口*/
MEMORY
{
PAGE0:
/*定义程序存贮区*/
EPROM:
org=0e000Hlen=0100H/*定义EPROM区,起始地址0090H,长度0F70H*/
VECS:
org=0ff80Hlen=0004H/*定义VECS区,起始地址0080H,长度0010H*/
PAGE1:
/*定义数据存贮区*/
SPRAM:
org=0060Hlen=0020H/*定义SPRAM区,起始地址1000H,长度1000H*/
DARAM:
org=0080Hlen=0100H/*定义DARAM区,起始地址2000H,长度2000H*/
}
SECTIONS
{
.text:
>EPROMPAGE0/*将.text段映射到PAGE0的EPROM区*/
.data:
>EPROMPAGE0/*将.text段映射到PAGE0的EPROM区*/
.bss:
>SPRAMPAGE1/*将.text段映射到PAGE1的SPRAM区*/
STK:
>DARAMPAGE1/*将.text段映射到PAGE1的DARAM区*/
}
7、编写中断向量表文件
参照“程序的控制与转移”实验,可不作修改。
8、对项目进行编译和链接:
把shiyan2b.asm、shiyan2b.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。
9、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的shiyan2b.out文件就可以将程序装载到DSP的内部存储器中。
10、运行程序并查看结果:
a)首先打开欲查看的数据空间:
点击
View-Memory,弹出“MemoryWindowOptions”对话框,把欲查看的地址改为0x0081,如下图所示:
b)点击OK按钮,然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与下图一致:
实验三汇编语言基本程序设计
(二)
一、实验目的
1、掌握各种双操作数乘法指令。
2、掌握长字运算和并行运算指令。
二、实验设备
计算机、ZY13DSP12BD实验箱、5416EVM板。
三、实验原理
参见教材
四、实验内容
3.编写程序,实现y=
。
4.用长字运算指令实现
,用并行运算指令实现z=x+y和f=e+d。
五、实验步骤
“双操作数乘法指令”实验步骤:
1、修改软件的“setup”设置,使CCS软件工作于“软件仿真器”模式,然后运行CCS软件。
2、新建一个项目:
点击Project-New,将项目命名为shiyan3a,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3、新建一个源文件:
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(zhao4),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为shiyan3a.asm。
4、在项目中添加源文件:
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击shiyan3a.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的shiyan3a.asm文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击shiyan3a.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
*************************************************
**
*用单操作数指令方案实现*
*y=(a1*x1+a2*x2+···a19*x19+a20*x20)*
**
*************************************************
.title"shiyan3a.asm"
.mmregs
STACK.usect"STACK",30H
.bssa,20
.bssx,20
.bssy,2
.data
table:
.word1,2,3,4,5,6,7,8,9,10,11
.word12,13,14,15,16,17,18,19,20
.word21,22,23,24,25,26,27,28
.word29,30,1,2,3,4,5,6,7,8,9,10
.def_c_int00
.text
_c_int00:
STM#a,AR1
RPT#39
MVPDtable,*AR1+
LD#0,B
STM#a,AR2
STM#x,AR3
STM#19,BRC
RPTBdone-1
LD*AR2+,T;单操作数指令
MPY*AR3+,A;单操作数指令
ADDA,B
done:
STHB,*(y)
STLB,*(y+1)
end:
Bend
.end
6、编写链接配置文件:
参照实验二的链接配置文件,需要更改的地方如下:
更改前
更改后
shiyan2a.obj
shiyan3a.obj
-oshiyan2a.out
-oshiyan3a.out
-mshiyan2a.map
-mshiyan3a.map
8、对项目进行编译和链接:
把shiyan3a.asm、shiyan3a.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。
9、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的shiyan3a.out文件就可以将程序装载到DSP的内部存储器中。
10、运行程序并查看结果:
a)首先打开欲查看的数据空间:
点击View-Memory,弹出“MemoryWindowOptions”
对话框,把欲查看的地址改为0x1000,如右图所示。
b)点击OK按钮,然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与下图一致:
11、查看执行的周期数:
a)关闭上述数据观察窗口,在文件shiyan3a.asm的
“end:
Bend”处设置断点:
在该语句的左边灰色区域双击鼠标即可,如右图所示:
b)点击菜单Profiler——EnableClock,使EnableClock
上出现一个小钩(如右图所示);然后再点击Profiler——ViewClock,则会在CCS窗口中出现一个“Clock=0”的小窗口。
c)对项目进行重新编译下载:
点击Project-RebuildAll,编译成功后点击File——ReloadProgram,最后点击Debug——Run运行程序,则可发现Clock窗口中出现“Clock=165”,显然这个数字即是程序运行所耗机器周期数N。
12、试使用双操作数指令方案实现上述程序的功能:
把上述程序shiyan3a.asm的两语句“LD*AR2+,T”和“MPY*AR3+A”删去,然后用语句“MPY*AR2+,*AR3+,A”替换,编译下载,然后再查看程序运行所耗的机器周期数(注意要先使Clock窗口清零)。
13、进一步优化上述程序:
利用双操作数指令进行乘法累加运算,完成N项乘积求和需2N个机器周期。
但是,若将乘法累加器单元、多总线以及硬件循环操作结合在一起,可以形成一个优化的乘法累加程序。
完成一个N项乘积求和的操作(注:
同学们可再建一个工程项目,如shiyan3b.pjt,完成程序的优化),观察周期数可参照步骤11、12。
程序如下:
************************************************
*用进一步优化的方案实现*
*y=(a1*x1+a2*x2+···a19*x19+a20*x20)*
************************************************
.title"shiyan3b.asm"
.mmregs
STACK.usect"STACK",30H
.bssa,20
.bssx,20
.bssy,2
.data
table:
.word1,2,3,4,5,6,7,8,9,10,11
.word12,13,14,15,16,17,18,19,20
.word21,22,23,24,25,26,27,28
.word29,30,1,2,3,4,5,6,7,8,9,10
.def_c_int00
.text
_c_int00:
STM#0,SWWSR
STM#STACK+30H,SP
STM#a,AR1
RPT#39
MVPDtable,*AR1+
CALLSUM;调用中断子程序SUM
end:
Bend
SUM:
STM#a,AR3;中断子程序SUM
STM#x,AR4
RPTZA,#19;累加器A清零,并且重复执行下一条指令
MAC*AR3+,*AR4+,A
STLA,*(y)
STHA,*(y+1)
RET
.end
编写链接配置文件:
参照实验二的链接配置文件,需要更改的地方如下:
更改前
更改后
shiyan2a.obj
shiyan3b.obj
-oshiyan2a.out
-oshiyan3b.out
-mshiyan2a.map
-mshiyan3b.map
实验四FIR滤波器的DSP实现
一、实验目的
掌握FIR滤波器的设计方法
二、实验设备
计算机、ZY13DSP12BD实验箱、5416EVM板。
三、实验原理
参考教材《FIR滤波器的DSP实现方法》。
四、实验内容
将采集到的信号经过DSP处理,将FIR滤波处理后的波形在CCS中显示出来。
五、实验步骤
1、用仿真机将计算机与ZY13DSP12BD实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。
2、新建一个项目:
点击Project-New,将项目命名为fir1,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3、新建一个源文件:
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(fir1),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为fir1.asm。
4、在项目中添加源文件:
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击fir1.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的fir1.asm文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击fir1.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
**********************************************************
*用线性缓冲区和直接寻址方法实现FIR滤波器*
*N=5,y(n)=h0*x(n)+h1*x(n-1)+h2*x(n-2)+h3*x(n-3)+h4*x(n-4)*
**********************************************************
.title"fir1.asm"
.mmregs;定义寄存器名称及对应地址
.def_c_int00;定义程序入口
;分配数据存储区
L.set10
.refSinTable
.bssy,1;y
XN.usect"XN",1;x(n)
XNM1.usect"XN",1;x(n-1)
XN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 指导书