《DSP技术与实验》实验指导书.docx

上传人:b****3 文档编号:2942693 上传时间:2022-11-16 格式:DOCX 页数:67 大小:1.35MB
下载 相关 举报
《DSP技术与实验》实验指导书.docx_第1页
第1页 / 共67页
《DSP技术与实验》实验指导书.docx_第2页
第2页 / 共67页
《DSP技术与实验》实验指导书.docx_第3页
第3页 / 共67页
《DSP技术与实验》实验指导书.docx_第4页
第4页 / 共67页
《DSP技术与实验》实验指导书.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

《DSP技术与实验》实验指导书.docx

《《DSP技术与实验》实验指导书.docx》由会员分享,可在线阅读,更多相关《《DSP技术与实验》实验指导书.docx(67页珍藏版)》请在冰豆网上搜索。

《DSP技术与实验》实验指导书.docx

《DSP技术与实验》实验指导书

2010秋季学期“DSP技术与实验”实验教学资料

实验一CCS集成环境的熟悉---2学时

实验二算术运算与数据操作的汇编语言程序设计---2学时

实验三信号发生器的设计---2学时

实验四IIR滤波器的DSP实现---2学时

实验五FIR滤波器的DSP实现---2学时

实验六FFT的DSP实现---2学时

实验七综合实验暨实验考查---4学时

实验一 CCS集成开发环境的熟悉

一、实验内容及步骤

通过编写程序计算y=x1+x2+x3+x4+x5练习CCS2(‘C5000)的使用。

1.在D盘或E盘建立一个自己的文件夹,如e:

\05136101,该文件夹用英文或数字命名。

后面所有与实验内容有关的工程与程序都在此文件夹下保存或操作。

2.运行CCS2(‘C5000)进入CCS集成开发环境。

以下操作如无特殊声明一般都在此环境下操作。

3.新建工程。

点击主菜单Project-New,会出现图1-1所示的ProjectCreation对话框。

参照图1-1按如下顺序进行设置或操作:

Location:

e:

\05136101

Project:

example2

点击完成按钮即可。

4.新建并保存主程序文件、链接命令文件和中断向量表文件。

本次实验三个文件的参考名称为:

主程序文件example2.asm、链接命令文件example2.cmd、中断向量表文件vectors.asm。

点击菜单File-New-SourceFile打开文本编辑窗口Untitled1,如图1-2。

用File-Save功能将其保存到e:

\05136101\example2中,其中文件名称为example2,保存类型为*.asm,如图1-3。

用同样的方法新建并保存文件example2.cmd和vectors.asm。

5.为新建工程添加主程序文件、中断向量表文件和链接命令文件。

在工程管理器中(图1-2中的红色方框处)右键单击example2.pjt,选择AddFilestoProject,在出现的如图1-4所示的AddFilestoProject对话框中查找并选中刚才建立的三个文件example2.asm,example2.cmd,vectors.asm,点击打开按钮将它们一起添加到该工程中去。

6.编写主程序文件。

单击工程管理器中的工程example2.pjt左边的+号展开example2.pjt工程,如图1-5。

找到并双击example2.asm,在出现的example2.asm文本编辑窗口中输入或复制文件内容(注释部分可不输入)。

文件内容如下:

*******计算y=x1+x2+x3+x4+x5的程序**********************************************

.title"example2.asm";伪指令。

用于格式化输出清单文件,声明在每页的顶部打印文件标题

.mmregs;伪指令。

声明CPU寄存器名称

STACK.usect"STACK",10H;伪指令。

自定义未初始化段STACK及大小(10H个字),最左边的STACK是标号

.bssx,5;伪指令。

声明数组x,5个字

.bssy,1;伪指令。

声明变量y,1个字

.defstart;伪指令。

声明本文件中的标号start能被别的文件(程序)引用

.data;伪指令,指示下面的代码为数据段,通常包含初始化的数据(常数)。

table:

.word10,20,3,4,5;伪指令。

声明5个16位整数类型的常数。

table是标号。

.text;伪指令,指示下面的代码为文本段,通常包含可执行的代码。

start:

STM#0,SWWSR;SWWSR=0,插入0个等待状态。

start是标号。

STM#STACK+10H,sp;sp=#STACK+10H,设置堆栈指针指向堆栈段的底部

STM#x,AR1;AR1=#x或AR1指向数组x

RPT#4;下一条指令重复执行4+1=5次

MVPDtable,*AR1+;数据传送。

程序存储器中的table数据表→AR1+指向的数据存储器

LD#0,A;累加器A清零

CALLSUM;调用求和子程序SUM

end:

Bend;无条件转移到标号end所在地方执行程序

SUM:

;标号,指示求和子程序SUM从这里开始

STM#x,AR3;AR3指向数组x

STM#4,AR2;AR2=4

loop:

ADD*AR3+,A;*AR3+A→A,然后AR3=AR3+1。

loop是标号。

BANZloop,*AR2-;如果AR2的值不为0,AR2=AR2-1,跳转到loop处执行;否则执行下一条指令

STLA,*(y);y=AL

RET;子程序返回

.end;伪指令。

指示汇编结束

7)编写链接命令文件。

在工程管理器中双击example2.pjt工程中的example2.cmd,将出现example2.cmd文本编辑窗口。

在该文本编辑窗口中输入或复制文件内容。

文件内容如下:

vectors.obj/*声明要链接的文件---中断向量表文件的目标文件*/

example2.obj/*声明要链接的文件---主程序文件的目标文件*/

-oexample2.out/*声明链接产生的可执行文件名称,默认为a.out*/

-mexample2.map/*声明链接产生的存储器映射文件*/

-estart/*声明主程序入口*/

MEMORY/*关键字加一对{},存储器配置*/

{

PAGE0:

/*程序存储区*/

EPROM:

org=0090Hlen=0F70H/*定义EPROM区,起始地址0090H,长度0F70H*/

VECS:

org=0080Hlen=0010H/*定义VECS区,起始地址0080H,长度0010H*/

PAGE1:

/*数据存储区*/

SPRAM:

org=1000Hlen=1000H/*定义SPRAM区,起始地址1000H,长度1000H*/

DARAM:

org=2000Hlen=2000H/*定义DARAM区,起始地址2000H,长度2000H*/

}

SECTIONS/*关键字加一对{},定位段*/

{

.text:

>EPROMPAGE0/*将.text段映射或定位到PAGE0的EPROM区*/

.data:

>EPROMPAGE0/*将.text段映射或定位到PAGE0的EPROM区*/

.bss:

>SPRAMPAGE1/*将.text段映射或定位到PAGE1的SPRAM区*/

STACK:

>DARAMPAGE1/*将.text段映射或定位到PAGE1的DARAM区*/

.vectors:

>VECSPAGE0/*将.vectors段映射或定位到PAGE0的VECS区*/

}

8.编写中断向量表文件。

在工程管理器中双击example2.pjt工程中的vectors.asm,将出现vectors.asm文本编辑窗口。

在该文本编辑窗口中输入或复制文件内容。

文件内容如下:

.title"vectors.asm"

.refstart;伪指令。

声明要引用其他程序中定义的标号start

.sect".vectors";伪指令。

定义初始化的段名.vectors,这一种伪指令声明的段与.data和.text功能一致

Bstart;无条件转移到标号start所在的地方执行程序

.end

9.对工程中的文件进行编译和链接。

点击菜单Project-RebuildAll,对工程中的所有文件进行编译、链接。

工程中的文件如果编译链接成功,会生成example2.out文件;如果不成功,会出现出错信息,这时应按照提示的出错信息对文件进行修改,然后再RebuildAll。

10.装载可执行文件。

要让程序代码在DSP内部运行必需将生成的*.out文件装载到DSP内部。

点击菜单File-LoadPrograme,选择并双击刚才生成的example2.out文件将程序装载到DSP的内部存储器中。

11.运行程序,查看并记录相关结果。

点击菜单Debug-Run运行程序。

①查看数据的保存情况。

点击菜单View-Memory,会出现图1-6(a)所示的“MemoryWindowOptions”对话框,按图1-6(a)设置Address=0x1000(为什么?

),Page=Data。

点击OK按钮,观察出现的如图1-6(b)所示的“Memory”对话框,这个对话框显示的是变量在数据存储器中的地址(是如何确定的?

)与值。

图1-6(a)(b)

②查看程序的保存情况。

点击菜单View-Memory,按图1-7(a)设置Address=0x0090(为什么?

),Page=Program。

点击OK按钮,观察出现的如图1-7(b)所示的“Memory”对话框,这个对话框显示的是可执行程序在程序存储器中的地址(是如何确定的?

)与指令代码。

图1-7(a)(b)

③查看寄存器的状况。

第一步:

点击菜单View-Registers-CPURegisters。

基本界面如图1-8。

图1-8

第二步:

点击菜单File-LoadProgram。

第三步:

点击菜单Debug-StepInto或按F8,观察程序在单步运行时,CPURegisters的变化。

④查看指令代码。

装载并运行程序,点击菜单View-Disassembly,查看并记录指令及其对应的指令代码并进行理解。

图1-9

12.改变程序中x1~x5的值(自定),重新执行9~11①。

记录x1~x5、y的值并验算。

13.修改example2.cmd(自定),重新执行9~11②。

记录程序、数据、标号、中断矢量的地址空间。

二、实验习题---见实验步骤11、12、13的要求。

 

实验二算术运算与数据操作的汇编语言程序设计实验

一、实验内容与步骤(2、3、4、5、7选做,6、8必做)

1、运行CCS。

2、编写程序,计算y=x1+x2+…+x10(xi的值自己定义)。

3、编写程序,计算z=x+y-w、y=mx+bx、y=x1×a2-x2×a2(自变量的值自己定义)。

4、编写程序,计算y=a1x1+a2x2+…+a40x40(aixi的值自己定义)。

5、编写程序,用长字运算指令实现Z32=X32+Y32,用并行运算指令实现z=x+y和f=e+d。

6、编制程序,计算y=a1x1+a2x2+…+a10x10,其中数据均为小数(aixi的值自己定义)。

7、分别编写程序,计算(-0.24)÷0.48和1024÷128。

8、编写浮点乘法程序,计算x1×x2×x3=0.2×(-0.4)×0.25。

上述每个实验内容基本操作步骤与要求同实验一的步骤3~11①。

二、实验习题---编写浮点乘法程序,用调用子程序的方法计算x1×x2×x3×x4=0.2×(-0.4)×0.25×0.66。

三、参考程序

1)用单操作数指令计算y=(a1*x1+a2*x2+···a19*x19+a20*x20)

.title"sy21.asm"

.mmregs

ST

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1