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