您好,欢迎来到九壹网。
搜索
您的当前位置:首页DSP实验

DSP实验

来源:九壹网


实验一

一、实验目的

1、了解CCS集成开发环境。

2、掌握DSP简单程序(三个数累加求和)的建立和调试。

二、实验设备

计算机、ccs软件、DSP实验箱(这个可以没有)。

三、实验内容

编写程序,实现计算DAT0 + DAT1+ DAT2。

四、实验步骤

1、修改软件的“setup”设置,使CCS软件工作于“软件仿真器”模式,然后运行CCS软件。

2、新建一个项目:点击Project-New,将项目命名为ex1,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。

3、新建一个源文件:点击File-New-Source File可以打开一个文本编辑窗口,点

击保存按键,保存在和项目相同的一个文件夹下面,保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为ex1.asm 。

4、在项目中添加源文件:在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击ex1.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的ex1.asm文件添加到该项目中去。

5、编写源程序:

在工程管理器中双击ex1.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

.title \"ex1\"

.mmregs

.def _c_int00

DAT0 .set 60H

DAT1 .set 61H

DAT2 .set 62H

DAT3 .set 63H

.text

_c_int00: B start

start:

LD #0000h,A

LD #004h,DP ;置数据页指针

STM #1000h,SP ;置堆栈指针

SSBX INTM ;状态寄存器置位

RSBX CPL

ST #0036h,DAT0 ;把0036h放到\"DP(9位地址)+偏移地址(指令中7位地址)\"的16位地址中去

ST #0049h,DAT1

ST #1330h,DAT2

LD @DATA0,A ;三数相加操作: DAT3 = DAT0 + DAT1 + DAT2

ADD @DATA1,A

ADD @DATA2,A

STL A,DAT3

NOP

NOP

NOP

NOP

;loop: B start

.end

提示:

(1)源代码的书写有一定的格式。

每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。指令区在标号区之后,以空格或TAB格开。如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶

格开始。

(2)一般区分大小写,除非加编译参数忽略大小写。

(3)标点符号有时不注意会打成中文全角版本号导致错误。

6、编写链接配置文件:

只有汇编源程序是不够的,一个完整的DSP程序至少包含两个部分:主程序、链接配置文件(*.cmd)。

链接配置文件有很多功能,这里先介绍最常用的也是必须的两条:1.存贮器的分配 2.标明程序入口。

由于每个程序都需要一个链接配置文件,每个程序的链接配置文件根据实际情况的需要都略有不同,下面就为本实验的程序编写一个链接配置文件,其它实验的链接配置文件都可以参考该实验的例程来完成:

/*ex1.cmd */

-o ex1.out /*产生可执行下载文件,文件名可以根据不同项目而定*/

-m ex1.map /*产生存储器映射文件,文件名可以根据不同项目而定 */

MEMORY{

PAGE 0:

EPROM: origin=0E00h,len=100h

PAGE 1:

SARAM: origin=0060h,len=0020h

DARAM: origin=0080h,len=100h

}

SECTIONS{

.text :> EPROM PAGE 0

.data :> EPROM PAGE 0

.bss :> SARAM PAGE 1

STACK :> DARAM PAGE 1

}

7、对项目进行编译和链接:

把ex1.asm、ex2.cmd依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。

8、装载可执行文件:

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:File-Load Programe再选择生成的ex1.out文件就可以将程序装载到DSP的内部存储器中。

9、运行程序并查看结果:

a)首先打开CPU寄存器:点击

View-Registers-CPU Registers,如下图所示,弹出“CPU Registers”对话框,可看到CPU个寄存器的当前值。

b)然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“CPU Registers”中累加器A的值,是否为DAT0 + DAT1+ DAT2.

实验二

一、实验目的

1、掌握加法、BNAZ、RPT、MVPD等DSP指令的使用。

2、掌握“宏”的概念和基本工作原理。

3、掌握“子程序”的概念和基本工作原理。

4、分析“宏”和“子程序”的异同点。

二、实验设备

计算机、ccs软件、DSP实验箱(这个可以没有)。

三、实验内容

1、在“实验一”的基础上,修改程序,设计一个三数相加求和的“宏”来计算DAT0 + DAT1+ DAT2的值。

2、新编写一个多数求和程序,要求通过“子程序”调用来计算y=用.bss指令来开辟六个字的存储空间来存放x1…x5和y。

xi15i的值,程序中

四、实验步骤

1、分析实验要求,分别编写“宏求和”、“子程序求和”程序ex2-1.asm、ex2-2.asm。

2、参照“实验一”编写链接配置文件ex2-1.cmd、ex2-2.cmd。

3、对项目进行编译和链接:

把汇编源文件和链接配置文件依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。

4、装载可执行文件:

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:File-Load Programe再选择生成的*.out文件就可以将程序装载到DSP的内部存储器中。

5、运行程序并查看结果:

a)查看CPU寄存器

方法参考“实验一”;

b) 查看数据空间

首先打开欲查看的数据空间:点击View-Memory,弹出“Memory Window Options”对话框,输入欲查看的地址,比如0x00000060。

然后点击Debug-Run让程序在DSP内部运行,最后点击Debug-Halt,再观察“Memory ”对话框,看是否与预想结果一样:

实验三

一、实验目的

1、掌握MVPD、MAC、MAX等一些高效率指令的使用。

2、掌握算法优化的基本原理和实现。

二、实验设备

计算机、ccs软件、DSP实验箱(这个可以没有)。

三、实验内容

编写两个子程序分别实现“乘法累加”运算和“寻找乘积最大值”运算。

四、实验步骤

1、分析实验要求,编写两个子程序。

.title \"ex3.asm\"

.mmregs

STACK .usect \"STACK\;堆栈的设置

.bss a,5 ;为变量分配6个字的存储空间

.bss x,5

.bss y,1

.bss z,1

.def _c_int00

.data

table:.word 1,1,1,1,5

.word 5,4,3,2,2

.text

_c_int00:

B start

start: STM #0,SWWSR ;插入0个等待状态

STM #STACK+10H,sp ;设置堆栈指针

STM #a,AR1 ;AR1指向x

RPT #9 ;下一条被重复执行10遍

MVPD table,*AR1+ ;把程序存储器中的数据传送到数据存储器

LD #0,A ;A清零

CALL SUM ;调用求和函数

CALL SEARCH ;调用求最大值函数

end: B end

SUM:

SEARCH:

.end

2、参照“实验一”编写链接配置文件ex3.cmd。

3、对项目进行编译和链接:

把汇编源文件和链接配置文件依次添加到项目后,点击Project-Compile File,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.OUT文件。

4、装载可执行文件:

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是点击:File-Load Programe再选择生成的*.out文件就可以将程序装载到DSP的内部存储器中。

5、运行程序并查看结果:

运行程序,查看CPU寄存器和数据空间

6、查看执行的周期数:

a)关闭上述数据观察窗口,在文件ex3.asm的“end: B end”处设置断点:在该语句的左边灰色区域双击鼠标即可,如下图所示:

b)点击菜单Profiler——Enable Clock,使Enable 上出现一个小钩(如下图所示);

然后再点击Profiler——View Clock,则会在CCS窗口中出现一个“Clock=0”的标记。

c)对项目进行重新编译下载:

点击Project-Rebuild All,编译成功后点击File——Reload Program,最后点击Debug——Run运行程序,则可发现Clock图标处显然这个数字“116”即是程序运行所耗机器周期数N。

7、对编写的程序进行优化,比较指令周期的消耗大小。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务