dsp实验指导书.docx
《dsp实验指导书.docx》由会员分享,可在线阅读,更多相关《dsp实验指导书.docx(87页珍藏版)》请在冰豆网上搜索。
dsp实验指导书
电气工程学院
《DSP技术及应用》
实验指导书
尉学军编写
适用专业:
电子信息工程
贵州大学
二OO八年八月
前言
《数字信号处理》实验是理论教学的深化和补充,具有较强的实践性,是一门重要的专业必修课,可作为通信类、电子类专业学生的选修课。
所开设的实验以具体实例为实验内容,让学生深刻理解DSP芯片的特点,培养学生应用DSP设计解决实际问题的能力。
通过上机与实验,理解实验原理及实验方案,掌握正确的操作规程,掌握5410USBEVM实验箱的正确使用方法。
掌握CCS软件的使用,熟练掌握DSP的汇编语言的编写和程序调试,掌握DSP的中断技术和定时器的初始化方法以及应用,以及利用串口进行数据采集。
并要求学生利用北京闻亭5410USBEVM实验箱进行数字式信号发生器和滤波器的设计。
作者在此设计了10个实验,其中4个验证性实验,6个设计性实验。
在开设实验过程中,可以根据大纲选作部分实验。
目录
1、实验一:
CCS的安装与simulate的使用·····················································3
2、实验二:
汇编语言基本算术运算································································7
3、实验三:
程序的控制和转移······································································10
4、实验四:
数字式正弦信号发生器·······························································14
5、实验五:
FIR数字滤波器·········································································21
6、实验六:
IIR数字滤波器·········································································27
7、实验七:
图象的伽玛增强········································································35
8、实验八:
快速傅立叶变换(FFT)的实现······················································42
9、实验九:
控制XF引脚周期性变化·····························································49
10、实验十:
多通道缓冲串口的使用·····························································54
11实验报告基本内容要求···········································································62
12、实验报告格式··························································································63
13、参考文献·································································································65
实验一:
CCS的安装与simulate的使用
实验学时:
2
实验类型:
验证
实验要求:
必修
一、实验目的
学会CCS的安装和设置,
熟悉程序的开发流程,
初步掌握Simulator的使用方法.
二、实验内容
安装CCS软件,并利用CCSsetup进行设置
对一个简单程序进行调试
三、实验原理、方法和手段
利用软件对指令进行仿真分析。
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用教师简单讲解,学生自己动手操作的形式。
五、实验条件
计算机一台
六、实验步骤
1、CCSset的设置
CCS设置程序是用于建立CCS集成开发环境与目标板或simulator之间通信的接口.CCS是一个开放的环境,通过设置不同的驱动完成对不同环境的支持.本教案以CCS2.0为例说明CCS下的驱动设置方法.
假设安装路径为:
d:
\ti下,对CCS的设置如下:
(1)双击桌面上的”setupccs2(c5000)”,开始运行程序,回出现如图1-1所示的界面;
图1-1CCS的首界面
(2)单击”CLOSE”按纽关闭对话框.
(3) 在“AvailableBoard/SimulatorTypes”栏选择“54xxsimulator”在“BoardPropertis”对话框中点击按纽“next”,一直到“Finish”如图1-2所示。
图1-2选择仿真板界面
此处对要仿真的方式进行选择,是进行软件仿真(Simulator)还是硬件仿真(Eimulator),并可以选择要仿真的板子的型号,在此我们选择软件仿真.用的是C54xxSimulator.
(4)在菜单File中选择”StartCodeComposerStudio”,启动CCS5000.
设置完毕
2、一个简单DSP程序的调试
(1)创建工程
运行CCS5000(54XXSimulaor/CPU)
在Project菜单中选择New项,将弹出ProjectCreation的窗口
图1-3创建工程界面
将新建的工程存入E盘,CCS将建立一个名为*.pjt的工程,此文件保存了工程的设置信息及工程中的文件引用情况.
(2)将文件添加到工程
从Files->new菜单中选择SourceFile,输入源程序.这里请大家输入以下的源程序.将程序存为*.asm的程序
.title"wx1.asm"
.mmregs
STACK.usect"STACK",10H
.bssa,4
.bssx,4
.bssy,1
.defstart
.data
table:
.word1,2,3,4
.word8,6,4,2
.text
start:
STM#0,SWWSR
STM#STACK+10H,SP
STM#a,AR1
RPT#7
MVPDtable,*AR1+
LD#1,DP
CALLSUM
end:
Bend
SUM:
STM#a,AR3
STM#x,AR4
RPTZA,#3
MAC*AR3+,*AR4+,A
STLA,@y
RET
.end
从Project菜单中选取AddFilestoProject,将刚才编写的程序添加到本工程.
双击的Source右边的”+”,可以观察到刚才所添加的源文件.
(3)生成和运行程序
执行菜单Project->RebuildAll,对文件进行编译,汇编,链接,Output窗口将显示编译,汇编,链接的信息,错误提示等.最后生成*.out文件.编译通过时会出现两个警告.
图1-4Output窗口
执行菜单Project->LoadProgram,将刚才所生成的*.out文件加载到DSP中,CCS将会自动打开一个反汇编窗口,显示加载程序的反汇编指令.
(4)观察程序结果:
分别点击菜单Viex->Memory和Registers可以观察程序执行后存储器的变化,程序执行的结果以及寄存器值的变化情况
七、思考题
1.按照实验要求写出实验报告;将程序显示的结果粘贴到实验报告里面.
2.程序调试过程中,出现什么错误,什么原因造成的,怎样改正的?
3.熟悉CCS其他菜单的功能,如何设置断点进行程序调试?
八、实验报告
在实验分析过程中,要对寄存器的变化以及存贮器的分配有仔细的分析,实验报告要将程序结果,存储器和寄存器的结果抓下来。
九、其它说明
1.学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2.认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
3.做好实验预习、实验记录,并按要求按时完成实验报告。
实验二:
汇编语言基本算术运算
实验学时:
2
实验类型:
验证
实验要求:
必修
一、实验目的
进一步熟悉CCS进行程序编译,调试的步骤.
掌握进行算术运算的常用指令,以及伪指令的作用.
掌握汇编语言进行整数运算,小数运算以及双操作数运算.浮点运算的方法.注意双操作数运算所允许使用的辅助寄存器.
二、实验内容
加减法和乘法运算
小数运算
三、实验原理、方法和手段
利用软件对指令进行仿真分析。
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用教师简单讲解,学生自己动手操作的形式。
五、实验条件
计算机一台
六、实验步骤
1、计算z=x+y-w
.tiltle“example.asm”
.mmregs
STACK.usect“stack”,10H
.bssx,1
.bssy,1
.bssw,1
.bssz,1
.defstart
.data
table:
.word10,26,23
.text
Start:
STM#0,SWWSR
STM#STACK+10H,SP
STM#x,AR1
RPT#2
MVPDtable,*AR1+
CALLSUMB
end:
Bend
SUMB:
LD@x,A
ADD@y,A
SUB@w,A
LD#1,DP
STLA,@z
RET
.end
2、乘加运算
.tiltle“example.asm”
.mmregs
STACK.usect“stack”,10H
.bssa,4
.bssx,4
.bssy,1
.defstart
.data
table.word1,2,3,4
.word8,6,4,2
.text
start:
STM#0,SWWSR
STM#STACK+10H,SP
STM#x,AR1
RPT#7
MVPDtable,*AR1+
CALLSUM
end:
Bend
SUM:
STM#a,AR3
STM#x,AR4
RPTZA,#3
MAC*AR3+,*AR4+,A
STLA,@Y
RET
.end
3、小数运算
.tiltle“example.asm”
.mmregs
STACK.usect“stack”,10H
.bssa,4
.bssx,4
.bssy,1
.defstart
.data
table.word1*32768/10
.word2*32768/10
.word-3*32768/10
.word4*32768/10
.word8*32768/10
.word6*32768/10
.word-4*32768/10
.word-2*32768/10
start:
SSBXFRCT
STM#a,AR1
RPT#7
MVPDtable,*AR1+
STM#a,AR3
STM#x,AR4
RPTZA,#3
MAC*AR3+,*AR4+,A
STLA,@Y
end:
Bend
.end
观察程序结果:
分别点击菜单Viex->Memory和Registers可以观察程序执行后存储器的变化,程序执行的结果以及寄存器值的变化情况.
七、思考题
1.按照实验要求写出实验报告;将程序显示的结果粘贴到实验报告里面.
2.程序调试过程中,出现什么错误,什么原因造成的,怎样改正的?
3.在小数运算的过程中,小数大于1,比如a2=1.2,程序如何修改.
八、实验报告
要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。
九、其它说明
1.学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2.认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
3.做好实验预习、实验记录,并按要求按时完成实验报告。
实验三:
程序的控制和转移
实验学时:
2
实验类型:
验证
实验要求:
必修
一、实验目的
了解堆栈的使用方法,掌握指令的重复操作,程序的跳转,调用和返回.
掌握条件算符组合时候应注意的三点;
掌握*.cmd文件,特别是伪指令MEMORY,SECTION的作用.
二、实验内容
程序的转移和调用,重复执行,堆栈的使用
三、实验原理、方法和手段
利用软件对指令进行仿真分析。
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用集中讲解和学生动手的形式。
五、实验条件
安装CCS的电脑一台
六、实验步骤
程序调试步骤参考实验一
1、程序的转移和调用
.title“example.asm”
.mmregs
STACK.usect“stack”,10H;
.bssx,5
.bssy,1
.defstart
.data
table:
.word10,30,4,5,6
.text
start:
STM#0,SWWSR
STM#STACK+10H,SP;SP=
STM#x,AR1;AR1=
RPT#4
MVPDtable,*AR1+;AR1=
LD#0,A
CALLSUM
end:
Bend
SUM:
STM#x,AR3
STM#4,AR2
loop:
ADD*AR3+,A
BANZloop,*AR2-
STLA,@y;AR2=,AR3=,A=
RET
.end
将以上文件存为*.ASM格式.
以下是*.CMD文件:
*.obj;注意:
此处文件名要与上面的*.ASM文件的名字要一致.
-o*.out
-m*.map
-estart
MEMORY
{
PAGE0:
EPROM:
org=0E000Hlen=0100H
VECS:
org=0FF80Hlen=0004H
PAGE1:
SPRAM:
org=0060Hlen=0020H
DARAM:
org=0080Hlen=0100H
}
SECTIONS
{
.text:
>EPROMPAGE0
.data:
>EMROMPAGE0
.bss:
>SPRAMPAGE1
STACK:
>DARAMPAGE1
.vectors:
>VECSPAGE0
}
2)堆栈段的初始化
.title“wxample3.asm”
.mmregs
size.set100
stack.usect“STK”,10H
.bsslength,10H
.defstart
.text
start:
STM#0,SWWSR
STM#stack+size,SP
LD#-8531,A
STM#length,AR1
MVMMSP,AR7
loop:
STLA,*AR7-
BANZloop,*AR1-
.end
CMD文件
example.obj
-oexample.out
-mexample.map
-estart
MEMORY
{
PAGE0:
EPROM:
ORG=0E000H,LEN=0100h
VECS:
ORG=0FF80H,LEN=0004H
PAGE1:
SARAM:
ORG=0060H,LEN=0010H;
DARAM:
ORG=0070H,LEN=0100H
}
SECTIONS
{
.text:
>EPROMPAGE0
.data:
>EPROMPAGE0
.bss:
>SARAMPAGE1
.STACK:
>DARAMPAGE1
}
3、重复操作
下面程序实现对数组进行初始化以后再对每个元素加1
.title“example.asm”
.mmregs
stack.usect“STACK”,10H
.bssx,5
.defstart
.text
start:
STM#x,AR1
LD#2,A;将每个数组初始化为2
RPT#4
STLA,*AR1+
LD#1,16,A
STM#4,BRC
STM#X,AR4
PRTBnext-1
ADD*AR4,16,B,A
STHA,*AR4+
next:
LD#0,B
end:
Bend
.end
七、思考题
1.按照实验要求写出实验报告;将程序显示的结果粘贴到实验报告里面.
2.程序调试过程中,出现什么错误,什么原因造成的,怎样改正的?
3.简要写出*.cmd文件,特别是伪指令MEMORY,SECTION的作用
4.试将程序1的运行结果填写的相应的横线上。
八、实验报告
要求学生按本实验指导书后附的实验报告格式和要求的内容写出实验报告,实验报告应包括实验预习、实验记录和实验报告等三部分内容。
九、其它说明
1.学生实验时,应严格准守实验室规则、安全制度和学生实验守则;
2.认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关规仪器设备,不要做与本实验无关的事情;
3.做好实验预习、实验记录,并按要求按时完成实验报告。
实验四:
数字式正弦信号发生器
实验学时:
2
实验类型:
设计型
实验要求:
必修
一、实验目的
掌握正弦信号发生器的算法;
学会用断点进行程序调试.
二、实验内容
利用DSP设计一个正弦信号发生器
三、实验原理、方法和手段
在高等数学中,正弦函数和余弦函数可以展开为泰勒级数,其表达式为:
sinx=x-
+
-
+…
cosx=1-
+
-
+…
如果要计算一个角度的正弦和余弦,可以取泰勒级数的前5项进行近似计算.
上两个式子可以化为:
sinx=x(1-
(1-
(1-
(1-
))))
cosx=1-
(1-
(1-
(1-
)))
然后利用这两个式子,计算出0o___45o(间隔为0.5o)的正弦和余弦值.
再利用sin2x=2sinxcos公式,计算0o___90o的正弦值.
最后通过复制取反,获得0o___359o的正弦值.
四、实验组织运行要求
根据本实验的特点、要求和具体条件,采用集中讲授和学生动手的形式。
五、实验条件
安装CCS软件的电脑一台
六、实验步骤
程序调试步骤参考实验一
1、源程序
.mmregs
.defstart
.refd_xs,d_sinx,d_xc,d_cosx,sinx,cosx
sin_x:
.usect"sin_x",360
STACK.usect"STACK",10H
PA0.set0
k_theta.set286
start:
.text
STM#STACK+10H,SP
STMk_theta,AR0
STM0,AR1
STM#sin_x,AR6
STM#90,BRC
RPTBloop1-1
LDMAR1,A
LD#d_xs,DP
STLA,@d_xc
STLA,@d_xs
CALLsinx
CALLcosx
LD#d_sinx,DP
LD@d_sinx,16,A
MPYA@d_cosx
STHB,1,*AR6+
MAR*AR1+0;计算0—45度的正弦值
loop1:
STM#sin_x+89,AR7
STM#88,BRC
RPTBloop2-1
LD*AR7-,A
STLA,*AR6+;计算45-89度的正弦值
loop2:
STM#179,BRC
STM#sin_x,AR7
RPTBloop3-1
LD*AR7+,A
NEGA
STLA,*AR6+;计算90-179度的正弦值
loop3:
STM#sin_x,AR6
STM#1,AR0
STM#360,BK;计算180-359度的正弦值
loop4:
PORTW*AR6+0%,PA0
Bloop4
sinx:
sinx子程序
.defd_xs,d_sinx
.data
table_s.word01C7H
.word030BH
.word0666H
.word1556H
d_coef_s.usect"coef_s",4
d_xs.usect"sin_vars",1
d_square_xs.usect"sin_vars",1
d_temp_s.usect"sin_vars",1
d_sinx.usect"sin_vars",1
d_l_s.usect"sin_vars",1
.text
SSBXFRCT
STMd_coef_s,AR5
RPT#3
MVPD#table_s,*AR5+
STM#d_coef_s,AR3
STM#d_xs,AR2
STM#d_l_s,AR4
STM#7FFFH,d_l_s
SQUR*AR2+,A
STA,*AR2
||LD*AR4,B
MASR*AR2+,*AR3+,B,A
MPYAA
STHA,*AR2
MASR*AR2-,*AR3+,B,A
MPYA*AR2+
STB,*AR2
||LD*AR4,B
MASR*AR2-,*AR3+,B,A
MPYA*AR2+
STB,*AR2
||LD*AR4,B
MASR*AR2-,*AR3+,B,A
MPYAd_xs
STHB,d_sinx
RET
cosx:
;cosx子程序
.defd_xc,d_cosx
.data
table_c.word0249H
.word0444H
.word0aabH
.word4000H
d_coef_c.usect"coef_c",4
d_xc.usect"cos_vars",1
d_square_xc.usect"cos_vars",1
d_temp_c.usect"cos_vars",1
d_cosx.us