DSP实验:常用指令及数据存储实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP实验一:常用指令及数据存储实验

一、实验目的

1、了解DSP开发系统的组成和结构;

2、熟悉DSP开发系统的连接;

3、熟悉CCS的开发界面;

4、熟悉C54X系列的寻址系统;

5、熟悉常用C54X系统指令的用法

6、掌握TMS320C54的程序空间和数据空间的分配

7、熟悉操作TMS320C54数据空间的指令

二、实验设备

计算机、CCS2.0版软件,DSP仿真器、实验箱。

三、实验系统相关资源

1、DSP芯片引脚XF连接LED5,可通过ssbx,rsbx改变XF的值来控制LED5

2、系统时钟频率为10MHz

3、TMS320VC54存储器分配图

四、实验步骤

1、用仿真机将计算机与数字信号处理实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。

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

3、编写源程序:

3.1 新建一个源文件File-New-Source File,出现文本编辑窗口

3.2 复制以下代码到编辑窗口

;File Name:exp01.asm

;the program is compiled at no autoinitialization mode

.mmregs

.global _main

;声明_main可被其他模块引用,程序加载到目标板后,

;会自动跳转到标号为_main的汇编指令

STACK: .usect ".stack",10h

.text

_main:

stm #STACK+10h,sp ;设置堆栈指针

STM #0, CLKMD ; (to divider mode before setting) TstStatu1:

LDM CLKMD, A

AND #01b, A ;poll STATUS bit

BC TstStatu1, ANEQ

STM #0xF7FF, CLKMD ; set C5402 DSP clock to 10MHz loop:

ssbx xf ;将XF置1,熄灭LED5

call delay ;调用延时子程序,延时

rsbx xf ;将XF置0,点亮LED5

call delay ;调用延时子程序,

b loop ;程序跳转到"loop"

;延时子程序

delay:

stm 270fh,ar3 ; 270fh=9999

loop1:

stm 0f9h,ar4 ; 0f9h=249

loop2:

banz loop2,*ar4-

banz loop1,*ar3-

ret

.end

注意:

(1)源代码的书写有一定的格式,每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标识时的名称。指令区在标号区之后,以空格或TAB格开。如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶格开始。(2)一般区分大小写,除非加编译参数忽略大小写。

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

3.3 保存源程序在exp1目录下,文件名为exp1.asm,文件类型为asm文件

4、把exp1.asm加入工程Exp1:Project—Add File to Project,此时点击工程窗口Source,可以看到exp1.asm已在Project中。

5、把链接命令文件exp1.cmd保存到工程文件夹,并加入到工程中。

6、修改链接选项:

Project-Build option-Linker:Aotoinit Model: no autoinitialization mode

7、对项目进行编译和链接:Project-Build All,在项目编译链接成功之后,生成exp1.out文件,存储在工程文件子目录Debug下。

8、装载可执行文件:

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

9、单击Debug—RUN,运行程序并查看结果:

可见指示灯LED5以一定频率闪烁:单击“Halt”暂停程序运行,指示灯LED5停止闪烁,再单击“Run”,指示灯LED5又开始闪烁。

10、打开工程文件test1.pjt,编译、链接生成可执行代码,装载到目标板,运行程序并查看结果。查看存储器结果:View--Memory

五、思考题

1、系统时钟频率为10MHz,已知BANZ指令执行时间为4个时钟周期,计算延时程序的延时多少秒?

s T T clk

d 1)10

101(425010000]1)442502(100002[6=⨯⨯⨯⨯≈⨯++⨯+⨯+=

2、如何修改exp1.asm,使得LED5闪烁频率为原来的两倍。

把 stm 0f9h,ar4 ;0f9h=249 改为:

stm 07ch,ar4 ;07ch=125

3、工程test1实现的功能是什么,为test1.asm 添加注释?检查数据存储器的哪些单元可以验证程序的正确性?

①功能:把数据先存储到数据存储器Data1里,再将Data1里的数据存储到Data2里面。

②注释:

.title "test1.asm"

.mmregs

.def _main .data

table: .word 1,2,3,4,5,6,7,8,9,10

.bss DATA1,10 ;为Data1分配10个字节的存储空间

.bss DATA2,10

.text _main:STM #DATA1,AR1

RPT #9 ;重复执行下一条指令10次

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

STM #DATA1,AR2 ;将AR2指向DATA1地址

STM #DATA2,AR3

RPT #9 MVDD *AR2+,*AR3+ ;将Data1数据存储器传送到Data2数据存储器

end:

B end

.end

相关文档
最新文档