DSP实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档