DSP实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 程序的控制与转移
一、实验目的
1、掌握条件算符的使用。
2、掌握循环操作指令(BNAZ )和比较操作指令(CMPR )
二、实验设备
计算机、ZY13DSP12BD 实验箱、5402EVM 板。
三、实验原理
程序控制指令主要包括分支转移、子程序调用、子程序返回、条件操作及循环操作等。通过传送控制到程序存储器的其他位置,转移会中断连续的指令流。转移会影响在PC 中产生和保护的程序地址。其中转移可以分为两种形式的,一种是有条件的,另一种是无条件的。
四、实验内容
编写程序,实现计算y=
∑=5
1
i i
x
的值。
五、实验步骤
1、用仿真机将计算机与ZY13DSP12BD 实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。
2、新建一个项目:点击Project -New ,将项目命名为example2,并将项目保存在自己定义的文件夹下。
3、新建一个源文件example2.asm 。将该文件添加到工程example2.pjt 中。
4、在工程管理器中双击example2.asm ,编写源程序: .tiltle ”example2.asm ” .mmregs
STACK .usect ”STACK ”,10H ;堆栈的设置
.bss x,5 ;为变量分配6个字的存储空间 .bss y,1 .def start .data
table: .word 10,20,3,4,5 ;x1,x2,x3,x4,x5 .text
Start: STM #0,SWWWSR ;插入0个等待状态 STM #STACK+10H,sp ;设置堆栈指针
STM #x,AR1 ;AR1指向x
RPT #4 ;下一条被重复执行5遍
MVPD table,*AR1+ ;把程序存储器中的数据传送到数据存储器 LD #0,A ;A 清零
CALL SUM ;调用求和函数 end: B end
SUM: STM #x,AR3 ;AR3指向x STM #4,AR2 ;AR2=4
loop: ADD *AR3+,A ;*AR3+A-->A,然后AR3+
BANZ loop,*AR2- ;如果AR2的值不为0,则跳到loop 处;否则执行下一条指令 STL A,*(y) ;把A 的低16位赋给变量y
RET
.end
6、编写链接配置文件:
/*example2.cmd */
vectors.obj /*中断向量的目标文件*/
example2.obj /*产生目标文件*/
-o example2.out /*产生可执行下载文件,文件名可以根据不同项目而定*/
-m example2.map /*产生存储器映射文件,文件名可以根据不同项目而定*/
-estart /*程序入口*/
MEMORY
{
PAGE 0: /*定义程序存贮区*/
EPROM:org=0090H len=0F70H /*定义EPROM区,起始地址0090H,长度0F70H*/ VECS: org=0080H len=0010H /*定义VECS区,起始地址0080H,长度0010H*/
PAGE 1: /*定义数据存贮区*/
SPRAM:org=1000H len=1000H /*定义SPRAM区,起始地址1000H,长度1000H*/ DARAM:org=2000H len=2000H /*定义DARAM区,起始地址2000H,长度2000H*/
}
SECTIONS
{
.text :>EPROM PAGE 0 /*将.text段映射到PAGE0的EPROM区*/
.data :>EPROM PAGE 0 /*将.text段映射到PAGE0的EPROM区*/
.bss :>SPRAM PAGE 1 /*将.text段映射到PAGE1的SPRAM区*/
STACK :>DARAM PAGE 1 /*将.text段映射到PAGE1的DARAM区*/
.vectors :>VECS PAGE 0 /*将中断向量表定位到PAGE0的VECS区*/
}
7、编写中断向量表文件
/* vectors.asm */
.title "vectors.asm" /*中断向量表的文件名*/
.ref start /*引用外部定义的标号*/
.sect ".vectors" /*定义初始化的段名*/
B start /*引用start*/
.end
8、对项目进行编译和链接:
把example2.asm、vectors.asm、example2.cmd依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。
9、装载可执行文件:
点击:File-Load Programe再选择生成的example2.out文件就可以将程序装载到DSP的内部存储器中。M
10、运行程序并查看结果:
首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,把欲查看的地址改为0x1000。
下面是运行结果:
实验二 加减法和乘除法运算
一、实验目的
掌握加减法和乘除法运算指令。
二、实验设备
计算机、ZY13DSP12BD 实验箱、5402EVM 板。
三、实验原理
加减法是通过指令ADD 和SUB 来实现的。乘法是通过MPY 和MAC 来实现的。 而在C54X 指令中没有除法器硬件,也就没有专门的除法指令,但是可以一条条件减法指令加上重复指令“#RPT #15”就可以实现两个无符号数的除法运算。
四、实验内容
1、编写程序,分别实现计算z=x+y-w 、y=mx+b 、y=x1×a2+x2×a
2、y=∑=4
1
i i
i x
a 。
2、分别编写程序,实现计算0.4÷(-0.8)和16384÷512的值。
五、实验步骤
1、用仿真机将计算机与ZY13DSP12BD 实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。
2、新建一个项目,将项目命名为example4。
3、新建一个源文件保存在和项目相同的一个文件夹下面(example4),保存类型选择*.ASM ,保存名字命名为example4.asm 。
4、在项目中添加源文件:将刚才建立的example4.asm 文件添加到该项目中去。
5、编写源程序:
在工程管理器中双击example4.asm ,将出现文本编辑窗口,在该文本编辑窗口中输入计算z=x+y-w 的代码如下: .title "example4.asm" .mmregs
STACK .usect "STACK",10H ;堆栈的设置 .bss x,1 ;为变量分配4个字的存储空间 .bss y,1 .bss w,1 .bss z,1 .def start .data
table .word 10,26,23 ;x,y,w .text
start: STM #0,SWWSR ;插入0个等待状态 STM #STACK+10H,SP ;设置堆栈指针 STM #x,AR1 ; AR1指向x RPT #2
MVPD table,*AR1+ ;把程序存储器中的数据移动到数据存储器 CALL SUMB end: B end
SUMB: LD *(x),A