CCS实验报告文档格式.docx
《CCS实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《CCS实验报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
添加方法是在工程管理器中右键单击ex1.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的ex1.asm文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击ex1.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:
.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
;
loop:
.end
提示:
(1)源代码的书写有一定的格式。
每一行代码分为三个区:
标号区、指令区和注释区。
标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。
指令区在标号区之后,以空格或TAB格开。
如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。
注释区在标号区、程序区之后,以分号开始。
注释区前面可以没有标号区或程序区。
另外还有专门的注释行,以*打头,必须顶格开始。
(2)一般区分大小写,除非加编译参数忽略大小写。
(3)标点符号有时不注意会打成中文全角版本号导致错误。
6、编写链接配置文件:
只有汇编源程序是不够的,一个完整的DSP程序至少包含两个部分:
主程序、链接配置文件(*.cmd)。
链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:
1.存贮器的分配2.标明程序入口。
由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考该实验的例程来完成:
/*ex1.cmd*/
-oex1.out/*产生可执行下载文件,文件名可以根据不同项目而定*/
-mex1.map/*产生存储器映射文件,文件名可以根据不同项目而定*/
MEMORY{
PAGE0:
EPROM:
origin=0E00h,len=100h
PAGE1:
SARAM:
origin=0060h,len=0020h
DARAM:
origin=0080h,len=100h
}
SECTIONS{
.text:
>
EPROMPAGE0
.data:
.bss:
SARAMPAGE1
STACK:
DARAMPAGE1
7、对项目进行编译和链接:
把ex1.asm、ex2.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
8、装载可执行文件:
要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:
File-LoadPrograme再选择生成的ex1.out文件就可以将程序装载到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、分析“宏”和“子程序”的异同点。
1、在“实验一”的基础上,修改程序,设计一个三数相加求和的“宏”来计算DAT0+DAT1+DAT2的值。
2、新编写一个多数求和程序,要求通过“子程序”调用来计算y=
的值,程序中用.bss指令来开辟六个字的存储空间来存放
…
和y。
1、分析实验要求,分别编写“宏求和”、“子程序求和”程序ex2-1.asm、ex2-2.asm。
2、参照“实验一”编写链接配置文件ex2-1.cmd、ex2-2.cmd。
3、对项目进行编译和链接:
把汇编源文件和链接配置文件依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
4、装载可执行文件:
File-LoadPrograme再选择生成的*.out文件就可以将程序装载到DSP的内部存储器中。
5、运行程序并查看结果:
a)查看CPU寄存器
方法参考“实验一”;
b)查看数据空间
首先打开欲查看的数据空间:
点击View-Memory,弹出“MemoryWindowOptions”对话框,输入欲查看的地址,比如0x00000060。
然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与预想结果一样:
编写程序如下:
ex2-1.asm
ex2-1.cmd
/*ex2-1.cmd*/
-oex2-1.out/*产生可执行下载文件,文件名可以根据不同项目而定*/
-mex2-1.map/*产生存储器映射文件,文件名可以根据不同项目而定*/
ex2-1运行结果:
ex2-2.asm
ex2-2.cmd
/*ex2-2.cmd*/
-oex2-2.out/*产生可执行下载文件,文件名可以根据不同项目而定*/
-mex2-2.map/*产生存储器映射文件,文件名可以根据不同项目而定*/
ex2-2运行结果:
实验三
1、掌握MVPD、MAC、MAX等一些高效率指令的使用。
2、掌握算法优化的基本原理和实现。
编写两个子程序分别实现“乘法累加”运算和“寻找乘积最大值”运算。
1、分析实验要求,编写两个子程序。
.title"
ex3.asm"
STACK.usect"
STACK"
10H;
堆栈的设置
.bssa,5;
为变量分配6个字的存储空间
.bssx,5
.bssy,1
.bssz,1
.data
table:
.word1,1,1,1,5
.word5,4,3,2,2
Bstart
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、参照“实验一”编写链接配置文件ex3.cmd。
运行程序,查看CPU寄存器和数据空间
6、查看执行的周期数:
a)关闭上述数据观察窗口,在文件ex3.asm的“end:
Bend”处设置断点:
在该语句的左边灰色区域双击鼠标即可,如下图所示:
b)点击菜单Profiler——EnableClock,使Enable上出现一个小钩(如下图所示);
然后再点击Profiler——ViewClock,则会在CCS窗口中出现一个“Clock=0”的标记。
c)对项目进行重新编译下载:
点击Project-RebuildAll,编译成功后点击File——ReloadProgram,最后点击Debug——Run运行程序,则可发现Clock图标处显然这个数字“116”即是程序运行所耗机器周期数N。
7、对编写的程序进行优化,比较指令周期的消耗大小。
实验过程:
每个实验都是经过反复调试,修改错误最终达到预期目的。