CCS实验报告.docx
《CCS实验报告.docx》由会员分享,可在线阅读,更多相关《CCS实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
CCS实验报告
DSP课程实验报告
实验一
一、实验目的
1、了解CCS集成开发环境。
2、掌握DSP简单程序(三个数累加求和)的建立和调试。
二、实验设备
计算机、ccs软件、DSP实验箱(这个可以没有)。
三、实验内容
编写程序,实现计算DAT0+DAT1+DAT2。
四、实验步骤
1、修改软件的“setup”设置,使CCS软件工作于“软件仿真器”模式,然后运行CCS软件。
2、新建一个项目:
点击Project-New,将项目命名为ex1,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3、新建一个源文件:
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面,保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为。
4、在项目中添加源文件:
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击,在弹出的菜单中选择AddFiles,然后将刚才建立的文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
.title"ex1"
.mmregs
.def_c_int00
DAT0.set60H
DAT1.set61H
DAT2.set62H
DAT3.set63H
.text
_c_int00:
Bstart
start:
LD#0000h,A
LD#004h,DP;置数据页指针
STM#1000h,SP;置堆栈指针
SSBXINTM;状态寄存器置位
RSBXCPL
ST#0036h,DAT0;把0036h放到"DP(9位地址)+偏移地址(指令中7位地址)"的16位地址中去
ST#0049h,DAT1
ST#1330h,DAT2
LDDAT0,A;三数相加操作:
DAT3=DAT0+DAT1+DAT2
ADDDAT1,A
ADDDAT2,A
STLA,DAT3
NOP
NOP
NOP
NOP
;loop:
Bstart
.end
提示:
(1)源代码的书写有一定的格式。
每一行代码分为三个区:
标号区、指令区和注释区。
标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。
指令区在标号区之后,以空格或TAB格开。
如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。
注释区在标号区、程序区之后,以分号开始。
注释区前面可以没有标号区或程序区。
另外还有专门的注释行,以*打头,必须顶格开始。
(2)一般区分大小写,除非加编译参数忽略大小写。
(3)标点符号有时不注意会打成中文全角版本号导致错误。
6、编写链接配置文件:
只有汇编源程序是不够的,一个完整的DSP程序至少包含两个部分:
主程序、链接配置文件(*.cmd)。
链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:
1.存贮器的分配2.标明程序入口。
由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考该实验的例程来完成:
/**/
-o/*产生可执行下载文件,文件名可以根据不同项目而定*/
-m/*产生存储器映射文件,文件名可以根据不同项目而定*/
MEMORY{
PAGE0:
EPROM:
origin=0E00h,len=100h
PAGE1:
SARAM:
origin=0060h,len=0020h
DARAM:
origin=0080h,len=100h
}
SECTIONS{
.text:
>EPROMPAGE0
.data:
>EPROMPAGE0
.bss:
>SARAMPAGE1
STACK:
>DARAMPAGE1
}
7、对项目进行编译和链接:
把、依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
8、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的文件就可以将程序装载到DSP的内部存储器中。
9、运行程序并查看结果:
a)首先打开CPU寄存器:
点击
View-Registers-CPURegisters,如下图所示,弹出“CPURegisters”对话框,可看到CPU个寄存器的当前值。
b)然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“CPURegisters”中累加器A的值,是否为DAT0+DAT1+DAT2.
实验二
一、实验目的
1、掌握加法、BNAZ、RPT、MVPD等DSP指令的使用。
2、掌握“宏”的概念和基本工作原理。
3、掌握“子程序”的概念和基本工作原理。
4、分析“宏”和“子程序”的异同点。
二、实验设备
计算机、ccs软件、DSP实验箱(这个可以没有)。
三、实验内容
1、在“实验一”的基础上,修改程序,设计一个三数相加求和的“宏”来计算DAT0+DAT1+DAT2的值。
2、新编写一个多数求和程序,要求通过“子程序”调用来计算y=
的值,程序中用.bss指令来开辟六个字的存储空间来存放
…
和y。
四、实验步骤
1、分析实验要求,分别编写“宏求和”、“子程序求和”程序、。
2、参照“实验一”编写链接配置文件、。
3、对项目进行编译和链接:
把汇编源文件和链接配置文件依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
4、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的*.out文件就可以将程序装载到DSP的内部存储器中。
5、运行程序并查看结果:
a)查看CPU寄存器
方法参考“实验一”;
b)查看数据空间
首先打开欲查看的数据空间:
点击View-Memory,弹出“MemoryWindowOptions”对话框,输入欲查看的地址,比如0x00000060。
然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与预想结果一样:
编写程序如下:
/**/
-o/*产生可执行下载文件,文件名可以根据不同项目而定*/
-m/*产生存储器映射文件,文件名可以根据不同项目而定*/
MEMORY{
PAGE0:
EPROM:
origin=0E00h,len=100h
PAGE1:
SARAM:
origin=0060h,len=0020h
DARAM:
origin=0080h,len=100h
}
SECTIONS{
.text:
>EPROMPAGE0
.data:
>EPROMPAGE0
.bss:
>SARAMPAGE1
STACK:
>DARAMPAGE1
}
ex2-1运行结果:
/**/
-o/*产生可执行下载文件,文件名可以根据不同项目而定*/
-m/*产生存储器映射文件,文件名可以根据不同项目而定*/
MEMORY{
PAGE0:
EPROM:
origin=0E00h,len=100h
PAGE1:
SARAM:
origin=0060h,len=0020h
DARAM:
origin=0080h,len=100h
}
SECTIONS{
.text:
>EPROMPAGE0
.data:
>EPROMPAGE0
.bss:
>SARAMPAGE1
STACK:
>DARAMPAGE1
}
ex2-2运行结果:
实验三
一、实验目的
1、掌握MVPD、MAC、MAX等一些高效率指令的使用。
2、掌握算法优化的基本原理和实现。
二、实验设备
计算机、ccs软件、DSP实验箱(这个可以没有)。
三、实验内容
编写两个子程序分别实现“乘法累加”运算和“寻找乘积最大值”运算。
四、实验步骤
1、分析实验要求,编写两个子程序。
.title""
.mmregs
STACK.usect"STACK",10H;堆栈的设置
.bssa,5;为变量分配6个字的存储空间
.bssx,5
.bssy,1
.bssz,1
.def_c_int00
.data
table:
.word1,1,1,1,5
.word5,4,3,2,2
.text
_c_int00:
Bstart
start:
STM#0,SWWSR;插入0个等待状态
STM#STACK+10H,sp;设置堆栈指针
STM#a,AR1;AR1指向x
RPT#9;下一条被重复执行10遍
MVPDtable,*AR1+;把程序存储器中的数据传送到数据存储器
LD#0,A;A清零
CALLSUM;调用求和函数
CALLSEARCH;调用求最大值函数
end:
Bend
SUM:
STM#a,AR3
STM#x,AR4
RPTZA,#3
MAC*AR3+,*AR4+,A
STLA,@y
RET
SEARCH:
LD*AR1+,T
MPY*AR2+,B
MAXA
BANZSEARCH,*AR3-
.end
2、参照“实验一”编写链接配置文件。
3、对项目进行编译和链接:
把汇编源文件和链接配置文件依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
4、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的*.out文件就可以将程序装载到DSP的内部存储器中。
5、运行程序并查看结果:
运行程序,查看CPU寄存器和数据空间
6、查看执行的周期数:
a)关闭上述数据观察窗口,在文件的“end:
Bend”处设置断点:
在该语句的左边灰色区域双击鼠标即可,如下图所示:
b)点击菜单Profiler——EnableClock,使Enable上出现一个小钩(如下图所示);
然后再点击Profiler——ViewClock,则会在CCS窗口中出现一个“Clock=0”的标记。
c)对项目进行重新编译下载:
点击Project-RebuildAll,编译成功后点击File——ReloadProgram,最后点击Debug——Run运行程序,则可发现Clock图标处显然这个数字“116”即是程序运行所耗机器周期数N。
7、对编写的程序进行优化,比较指令周期的消耗大小。
实验过程:
每个实验都是经过反复调试,修改错误最终达到预期目的。