wangfengDSP实验.docx
- 文档编号:18125484
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:13
- 大小:565.61KB
wangfengDSP实验.docx
《wangfengDSP实验.docx》由会员分享,可在线阅读,更多相关《wangfengDSP实验.docx(13页珍藏版)》请在冰点文库上搜索。
wangfengDSP实验
实验一程序的控制与转移
一、实验目的
1、掌握条件算符的使用。
2、掌握循环操作指令(BNAZ)和比较操作指令(CMPR)
二、实验设备
计算机
三、实验内容
编写程序,实现计算y=
的值。
四、实验步骤
1、点击桌面CCS2(’C5000)图标,运行CCS软件。
2、新建一个项目:
点击Project-New,将项目命名为example1,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3、新建一个源文件:
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(example1),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为example1.asm。
4、在项目中添加源文件:
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击example1.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的example1.asm文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击example1.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容。
(要求:
将以下程序每条加上注解。
)
.title"example1.asm"
.mmregs
STACK.usect"STACK",10H;
.bssx,5;给x保留5个空间
.bssy,1;给y保留1个空间
.defstart;
.data;
table:
.word10,20,3,4,5;
.text
start:
STM#0,SWWSR;
STM#STACK+10H,sp;
STM#x,AR1;
RPT#4;
MVPDtable,*AR1+;
LD#0,A;
CALLSUM;
end:
Bend
SUM:
STM#x,AR3;
STM#4,AR2;
loop:
ADD*AR3+,A;
BANZloop,*AR2-;
STLA,*(y);
RET
.end
提示:
(1)源代码的书写有一定的格式,初学者往往容易忽视。
每一行代码分为三个区:
标号区、指令区和注释区。
标号区必须顶格写,主要是定义变量、常量、程序标致时的名称。
指令区在标号区之后,以空格或TAB格开。
如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。
注释区在标号区、程序区之后,以分号开始。
注释区前面可以没有标号区或程序区。
另外还有专门的注释行,以*打头,必须顶格开始。
(2)一般区分大小写,除非加编译参数忽略大小写。
(3)标点符号有时不注意会打成中文全角版本号导致错误。
6、编写链接配置文件:
只有汇编源程序是不够的,一个完整的DSP程序至少包含三个部分:
主程序(*.asm)、中断向量表(vectors.asm)、链接配置文件(*.cmd)。
这里先介绍一下链接配置文件。
链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:
1.存贮器的分配2.标明程序入口。
由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考此例来完成:
/*example1.cmd*/
vectors.obj
example1.obj
-oexample1.out
-mexample1.map
-estart
MEMORY
{
PAGE0:
EPROM:
org=0090Hlen=0F70H
VECS:
org=0080Hlen=0010H
PAGE1:
SPRAM:
org=1000Hlen=1000H
DARAM:
org=2000Hlen=2000H
}
SECTIONS
{
.text:
>EPROMPAGE0
.data:
>EPROMPAGE0
.bss:
>SPRAMPAGE1
STACK:
>DARAMPAGE1
.vectors:
>VECSPAGE0
}
7、编写中断向量表文件
/*vectors.asm*/
.title"vectors.asm"
.refstart
.sect".vectors"
Bstart
.end
8、对项目进行编译和链接:
把example1.asm、vectors.asm、example1.cmd依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击
Project-Build选项对该项目进行链接,生成*.OUT文件。
9、装载可执行文件:
要让程序代码在DSP内部运行必需将生成
的*.OUT文件装载到DSP内部,装载方法
是点击:
File-LoadPrograme再选择生成的
example1.out文件就可以将程序装载到DSP
的内部存储器中。
10、运行程序并查看结果:
a)首先打开欲查看的数据空间:
点击View-Memory,弹出“MemoryWindowOptions”对话框,把欲查看的地址改为0x1000,如上页右图所示。
b)点击OK按钮,然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory”对话框,看是否与下图一致:
实验二加减法和乘法运算
一、实验目的
掌握加减法和乘法运算指令。
二、实验设备
计算机
三、实验内容
编写程序,分别实现计算z=x+y-w、y=mx+b、y=
。
四、实验步骤
前4项实验步骤与实验一相同。
5、编写源程序:
*****************************************
**
*计算z=x+y-w*
**
*****************************************
.title"example2.asm"
.mmregs
STACK.usect"STACK",10H;堆栈的设置
.bssx,1;为变量分配4个字的存储空间
.bssy,1
.bssw,1
.bssz,1
.defstart
.data
table.word10,26,23;x,y,w
.text
start:
STM#0,SWWSR;插入0个等待状态
STM#STACK+10H,SP;设置堆栈指针
STM#x,AR1;AR1指向x
RPT#2
MVPDtable,*AR1+;把程序存储器中的数据移动到数据存储器
CALLSUMB
end:
Bend
SUMB:
LD*(x),A
ADD*(y),A
SUB*(w),A
STLA,*(z)
RET
.end
.编写计算y=
的程序段,数据均为小数。
其中:
a1=0.1,a2=0.2,a3=-0.3,a4=0.4x1=0.8,x2=0.6,x3=-0.4,x4=-0.2
.title"example13.asm"
.mmregs
STACK.usect"STACK",10H
.bssa,4
.bssx,4
.bssy,1
.defstart
.data
table:
.word1*32768/10
.word2*32768/10
.word-3*32768/10
.word4*32768/10
.word8*32768/10
.word6*32768/10
.word-4*32768/10
.word-2*32768/10
.text
start:
SSBXFRCT
STM#a,AR1
RPT#7
MVPDtable,*AR1+
STM#x,AR2
STM#a,AR3
RPTZA,#3
MAC*AR2+,*AR3+,A
STHA,@(y)
end:
Bend
.end
11、建立项目工程文件example3,使之实现计算y=mx+b;
*****************************************
**
*计算y=mx+b*
**
*****************************************
.title"example3.asm"
.mmregs
STACK.usect"STACK",10H;堆栈的设置
.bssm,1;为变量分配4个字的存储空间
.bssx,1
.bssb,1
.bssy,1
.defstart
.data
table:
.word3,15,20;m,x,b
.text
start:
STM#0,SWWSR;插入0个等待状态
STM#STACK+10H,SP;设置堆栈指针
STM#m,AR1;AR1指向m
RPT#2;把下一条指令重复执行3遍
MVPDtable,*AR1+;把程序存储器中的数据转移到数据存储器
CALLSU
end:
Bend
SU:
LD*(m),T
MPY*(x),A
ADD*(b),A
STLA,*(y)
RET
.end
12建立项目工程文件example4,使之实现计算y=
。
*****************************************
**
*计算y=
*
**
*****************************************
.title"example4.asm"
.mmregs
STACK.usect"STACK",10H;堆栈的设置
.bssa1,4;为变量分配5个字的存储空间
.bssx1,4
.bssy,1
.defstart
.data
table:
.word3,5,15,20,1,2,3,4;输入ai,xi
.text
start:
STM#0,SWWSR;插入0个等待状态
STM#STACK+10H,SP;设置堆栈指针
STM#a1,AR1;AR1指向x1
RPT#7;移动8个数据
MVPDtable,*AR1+;把数据从数据存储器存入程序存储器
CALLSUM
end:
Bend
SUM:
STM#a1,ar2
STM#x1,ar3
PRTZA,*(y);利用间接寻址方式,和重复指令完成乘加运算
MAC*AR2+,*AR3+,A
STLA,*(y)
RET
.end
说明:
1、链接配置文件与中断向量表文件与上一个实验类似
2、观察实验结果与前面实验类似。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- wangfengDSP 实验