稿DSP技术及应用实验指导书Word文件下载.docx
- 文档编号:19886682
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:21
- 大小:211.97KB
稿DSP技术及应用实验指导书Word文件下载.docx
《稿DSP技术及应用实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《稿DSP技术及应用实验指导书Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
.text
_c_int00:
;
程序入口
SSBX
XF
XF置1
CALL
Delay
调用延时程序
RSBX
XF清0
Delay;
B
_c_int00;
跳转到程序开头循环执行
**************************************************************
*延时子程序:
Delay,已知DSP系统初始工作频率为32MHz或160MHz
*用两级减一计数器来延时。
调整AR1和AR2的大小LED闪烁的频率不同
Delay:
STM
#999,AR1
循环次数1000
LOOP1:
#4999,
AR2
循环次数5000
LOOP2:
BANZ
LOOP2,*AR2-
如果AR2不等于0,AR2减1,再判断
LOOP1,*AR1-
如果AR1不等于0,AR1减1,跳转到LOOP1
RET
.end
(4)保存该文件为TestXF.asm;
(5)输入并保存链接命令文件TestXF.CMD,参考内容如下:
MEMORY
{
page
0:
PRAM:
org=0100h
len=0F00h
/*定义程序存贮区,起始0100H,长度0F00H*/
}
SECTIONS
.text:
>
PRAM
0
/*将.text段映射到page0的param区*/
}
(6)向工程中添加文件:
在Project菜单中单击AddFilestoProject,在弹出的的目录中选择待加入的文件TestXF.asm、TestXF.cmd。
(7)练习从工程中删除一个文件。
(8)汇编、链接程序:
执行菜单Project/RebuildAll对源程序进行编译,最后将产生一个TestXF.out文件。
(9)加载程序:
执行File/LoadProgram,选择TestXF.out并打开,即可将可执行文件加载到DSP仿真器中,此时CCS将自动打开一个反汇编窗口。
该窗口中的黄色小箭头表示当前PC指向的代码行。
(10)执行菜单VIEW/Register/CPURegister命令,打开观察窗口观察以便观察CPU类各寄存器的值。
(11)运行程序:
执行Debug/Run,观察SEED-DTK实验箱的D3,应有闪烁现象,适当修改程序,该LED闪烁的频率将有所变化。
XF引脚LEDD3的连接图如图所示。
(12)程序编译过程中若有错误,根据CCS给出的错误提示进行修改。
例如,本程序中若将
.def
_c_int00伪指令删除,则CCS将提示符号_c_int00未定义。
要求学生尝试修改其他内容,如CMD文件,观察有可能发生的错误现象。
(三)根据学生的实验情况适当增加其他程序调试方法的讲解。
五、实验注意事项
实验过程中注意爱护设备,实验完毕要按正常操作关闭设备。
六、讨论、思考题
1.TestXF.asm程序里延迟子程序的延迟时间怎样确定的?
D3闪烁频率是怎样确定?
。
2.观察并思考调试过程中单步执行命令stepover、stepinto、stepout、runtocursor的不同功能。
2.打开其他示例程序并调试通过,在有关窗口中显示正确运行结果。
实验二汇编语言程序设计与调试
2实验名称:
汇编语言程序设计与调试
电子信息工程学时数:
(1)熟悉C54x系列DSP芯片的汇编语言指令。
(2)掌握用汇编语言设计程序的方法。
(3)熟悉用CCS调试程序的过程。
(1)输入提供的汇编语言参考程序,用CCS对其进行调试;
(2)调试程序要记录调试过程中出现的问题及解决办法;
(3)编写程序要规范、正确,上机调试过程和结果要有记录,并注意调试程序集成环境的掌握及应用,不断积累编程及调试经验;
(4)实验后给出本实验的实验报告。
至少PIII计算机,装有ccs2.2(或ccs3.1)软件
(一)教师简单回顾所需知识并演示一个程序的输入调试过程。
1.简单回顾常用汇编伪指令的含义。
2.回顾CCS的操作步骤
3.以一个实现连加的汇编程序为例(PPT的316页),重点演示该汇编程序的调试过程。
(1)该汇编程序的参考内容如下:
.title“exam2.asm”
.mmregs
.bssx,5
.bssy,1
.text
Stm#x,ar1
Stm#4,ar4
Ld#0,a
Loop:
Add*ar1+,a
Banzloop,*ar4-
Stla,@y
.end
(2)参考CMD文件:
MEMORY
page0:
org=1000hlen=0F00h/*定义程序存贮区,起始0100H,长度0F00H*/
page1:
DRAM:
org=1000h,len=100h/*定义数据存贮区,起始1000H,长度0100H*/
PRAMpage0/*将.text段映射到page0的PRAM区*/
.bss:
DRAMpage1/*将.bss段映射到page1的DRAM区*/
(3)运行该程序,但发现无法正确运行,从存储器的安排角度去解决这个问题。
(4)存储器安排问题解决后,再次运行程序,但在y单元未观察到运行结果,要求改写代码,使得在y单元获得正确的计算结果(提示:
从直接寻址的规律角度思考)。
(5)CCS中存储器的观察方法
选择VIEW/memory,打开窗口,在其中Address中输入要观察的x单元地址,被选择观察Datamemory,即可打开指定单元起始的DM进行观察。
要修改某单元内容,只需双击即可修改。
(二)学生按照设计选题编写简单程序
1、设计并调试汇编程序实现连续乘加功能(PPT的325页)
2、学生自行编写其他汇编程序并调试直至满足功能要求
如:
(1)编写一段程序,对数组进行初始化,使x[5]={0,0,0,0,0}(PPT的316页)
(2)编写一段程序,对数组进行初始化,使x[5]={0,1,2,3,4}(读懂PPT325页的程序,自己编写)
(3)编写一段程序,首先对数组x[20]赋值,再将数据存储器中的数组x[20]复制到数组y[20]。
(PPT的278页)
(三)学生在参考程序中添加两行代码:
STLA,AR1
LD*AR1+,T
按调试过程对其进行调试,观察CCS给出的警告提示,并思考为什么会有这种警告以及怎样消除之。
(四)记录调试过程中出现的问题、解决的思路及解决的办法。
五、讨论思考题
1、DSP汇编程序中流水线冲突的解决有哪些规律?
2、怎样比较实现同一功能的两个程序所用的算法的优劣?
实验三使用探测点与文件I/O
3实验名称:
使用探测点与文件I/O
(1)掌握用CCS设计并调试DSP程序的流程。
(2)掌握探测点与文件I/O的使用方法。
(3)掌握从文件读入数据到内存的方法。
(4)掌握CCS波形或图像输入输出的步骤。
(2)输入提供的C语言参考程序,用CCS对其进行调试;
PIII计算机,装有ccs2.2或更高版本软件
(一)教师讲解演示CCS探测点与文件I/O的使用过程
1、探测点即探针断点(ProbePoint)的原理
探针可以从PC机的文件中读取数据,它是开发算法的一个有效工具。
其作用概括为:
(1)将来自PC主机文件的输入数据传送到目标系统的缓存器中供算法使用。
(2)将来自目标系统缓存器中的输出数据传送到PC主机的文件中供分析。
(3)用数据更新窗口,如图形窗口。
2、演示通过探测点实现数据输入并查看图形的步骤。
(二)让学生按照演示步骤练习有关操作。
练习使用探测点与文件I/O,操作步骤:
1.创建工程,并加入C语言程序volume.c及其相应的命令链接文件volume.cmd、头文件、库文件、中断向量表等文件。
点击工具栏按钮或选择Project→RebuildAll。
2.选择File→LodeProgram并选取volume.out,然后点击Open。
3.在ProjectView窗口中,双击volume.c文件。
4.将光标置于主函数中的dataIO()这一行上。
DataIO函数起占位符作用。
现在,它是一个很好的与探针断点相连接的地方,以便于从PC机文件输入数据。
5.
点击工具栏按钮(ToggleProbePoint),则光标所在行变为兰色高亮。
6.选择File→FileI/O,在FileI/O对话窗中可选择输入和输出文件。
7.在FileInput栏中,点击AddFile。
8.选择sine.dat文件。
注意:
在文件类型框中可以选择数据格式,sine.dat文件包含正弦波形的16进制值。
9.点击Open,将该文件添加到FileI/O对话框的列表上,接着出现sine.dat文件控制窗口(CCS窗口可以覆盖它)。
在运行程序时,可用这个窗口开始、停止、重复、或快速前进来控制数据文件。
10.
在FileI/O对话框中,将Address修改为inp_buffer,Length修改为100,选中Wrap Around。
11.点击AddProbePoint,选择将dataio()行的探针对指定数据文件连接:
点击Connect栏尾处的下箭头,在其下拉菜单中选择sine.dat文件;
点击Replace。
ProbePoint列表将显示探测点已连接到sine.dat文件;
点击“确定”。
FileI/O对话框则显示文件现已被连接到探测点。
12.在FileI/O对话框,点击“确定”。
13.
点击
按钮,在dataio()行增加一断点,点击动态运行按钮。
14.选择View→Graph→Time/Frequency。
15.在弹出的GraphPropertyDialog对话窗中,将GraphTitle,StartAddress,AcquisitionBufferSize,DisplayDataSize,DSPDataType,Autoscale和MaximumY-value的属性改变为如下图所示。
向下滚动或调整dialog框的大小可看到所有的属性。
16.点击OK,出现输入缓存的一个图形窗。
17.窗口中右击鼠标,从弹出的菜单中选择ClearDisplay。
18.再次选择View
Graph
Time/Frequency。
19.改变GraphTitle的属性为OutputBuffer,改变StartAddress的属性为Out_buffer,其余的设置都不变。
20.点击OK,又出现一个图形窗,在该图形窗内右击鼠标,从弹出的菜单中选择ClearDisplay。
21.选择view→WatchWindow
22.Watch窗中右击鼠标,并从弹出菜单中选择AddTab。
23.在Expression区敲入gain并单击OK,变量值出现在Watch窗口。
24.如果程序已暂停,点击工具栏按钮(Aminate),重新开始运行程序。
25.在Watch窗口中双击gain。
26.在EditVariable窗口中修改gain值为10,并点击OK。
27.注意在OutputBuffer图形中信号幅度变化反映了增益的提高
31.仿照此例程,编写程序,实现图片的亮度变换算法,要求算法执行前后,图片的亮度相应变化。
如;
1.查找资料思考怎样实现动态刷新图形。
2.查找资料思考并练习怎样显示频谱等图形。
实验四定时器与中断实验
4实验名称:
定时器与中断实验
电子信息工程学时数:
(1)熟悉用CCS设计并调试程序的流程
(2)掌握定时器等片内外设的寄存器的含义及其设置方法
(3)掌握C54X中断系统的原理
(4)掌握长时间时间间隔的定时器的处理方法
(2)编写一个简单的定时器中断程序,利用定时器定时,使与XF引脚相连的LED灯亮灭,用CCS对其进行调试;
(5)做完实验后给出本实验的实验报告。
(一)教师简单回顾定时器原理与中断的原理
1、定时器由三个寄存器组成:
TIM、PRD、TCR,
TIM:
定时器寄存器,用于装载周期寄存器的数值并自动减1
PRD:
周期寄存器,用于装载定时周期的寄存器
TCR:
定时器控制寄存器,包含定时器的控制状态位。
TCR的D6~D9位名字叫PSC,TCR的D3~D0名字叫TDDR。
定时器实际就是16位的减1计数器,它有两级计数:
(1)对CPU时钟CLKOUT计数,每来一个CLKOUT周期,PSC的内容减1。
在PSC减到0前,TIM内容不变。
(2)当PSC的内容减为0时,TIM寄存器内容减1。
一直到TIM减为0时,表示定时时间到,这时CPU发出中断信号,称为定时器中断,用TINT表示。
当TIM减为0时,PRD的内容又重新装入TIM,开始下一次定时。
(3)定时器定时长度计算公式:
Tt=T*(1+TDDR)*(1+PRD)
2.长时间时间间隔的编程思路:
有时定时的长度不能满足需要,比如DSP工作频率160Mhz时,定时最大值约为6ms,如果需要更长的定时,就要在定时器中断子程序中再加一个计数器,直到产生一定次数的定时中断后再执行相应的操作。
3、中断是指:
CPU终止正在执行的程序,转去执行一个请求中断的内部或外部的中断服务程序,待处理完毕后,又返回到被终止的源程序处继续执行。
这一过程称为中断;
中断系统是指:
为实现中断功能而设置的各种硬件和软件。
C54xDSP既支持软件中断,也支持硬件中断。
当同时有多个硬件中断出现时,C54xDSP按照中断优先级别的高低对它们进行服务。
C54xDSP的中断可以分成两大类:
第一类是可屏蔽中断。
这些都是可以用软件来屏蔽或开放的硬件和软件中断。
第二类是非屏蔽中断。
这些中断是不能够用软件指令屏蔽的,C54x对这一类中断必须予以响应,并从主程序转移到中断服务程序。
C54xDSP的非屏蔽中断包括所有的软件中断,以及两个外部硬件中断(复位)和。
(3)与中断有关寄存器有
中断标志寄存器(IFR):
它的D3位是TINT0,是定时器0的中断标志位
中断屏蔽寄存器(IMR):
它的某一位为0时,表示屏蔽该中断
(4)中断方式控制位INTM:
是CPU状态寄存器ST1中的D11位
INTM=1表示关闭所有可屏蔽中断、INTM=0开放所有可屏蔽中断
(二)让学生按照设计步骤调试程序
实验操作步骤:
(1)创建一个新工程:
(2)新建文件,输入实验要求的参考程序(程序的斜体部分用于修改中断向量表地址):
.title"
timer.asm"
.mmregs
.def_c_int00
.defTINT0_ISR
CounterSet.set1000
PERIOD.set49999
.asgAR1,Counter
LDMPMST,A
AND#7FH,A
OR#0180H,A
STLMA,PMST
STM#CounterSet,Counter
STM#0000000000010000B,TCR
STM#PERIOD,TIM
STM#PERIOD,PRD
STM#0000001111001110B,TCR
STM#0008H,IMR
RSBXINTM
End:
NOP
BEnd
TINT0_ISR:
PSHMST0
BANZNext,*Counter-
STM#CounterSet,Counter
BITF*AR2,#1
BCResetXF,TC
setXF:
SSBXXF
ST#1,*AR2
BNext
ResetXF:
RSBXXF
ST#0,*AR2
Next:
POPMST0
RETE
(3)保存该文件为timer.asm;
(4)向工程中添加文件:
在Project菜单中单击AddFilestoProject,在C:
\ti\c5400\cgtool\lib\lnk.cmd,打开该文件,记住它安排.text段从程序存储器的0080H开始存放。
(5)编译、链接程序:
执行菜单Project/RebuildAll,汇编结果在将汇编信息输出窗口中给出。
编译后将产生一个timer.out文件。
(6)加载程序:
执行File/LoadProgram,选择timer.out并打开,即可将可执行文件加载到DSP软件仿真器simulator中,此时CCS将自动打开一个反汇编窗口。
(7)点击鼠标右键,选择弹出菜单的setpctocursor,在弹出的对话框内填入PC指向的地址,这时绿色箭头的位置即为PC指向的地址。
(8)选择菜单VIEW\Register\cpuregister,打开CPU的MMR窗口观察,同时观察实验平台上相应的LED。
(9)运行程序:
执行Debug/Run。
(10)应能观察到LED灯闪烁。
(11)程序编译过程中若有错误,根据CCS给出的错误提示进行修改,若无实验现象,则调试程序使之实现。
(12)修改程序,使LED的闪烁频率为3Hz。
1.写出LED的闪烁频率与CPU主频的关系表达式?
2.认真研究程序timer.asm中的斜体部分有何作用?
3.撰写实验报告时必须为参考程序增加详细注释。
实验二参考程序,要求全部运行一遍并掌握,写到实验报告中时,要增加适当的注释
1.实现y=a*x+b
.title"
exam21.asm"
.def_c_int00
.bssa,1
.bssx,1
.bssb,1
.bssy,1
.text
_c_int00LD#a,DP
LD@a,T;
取a值,T=a
MPY@x,B;
完成ax乘积,B=ax
ADD@b,B;
完成ax+b运算,B=ax+b
STLB,@y
.end
2.实现y=a1*x1+a2*x2ppt第289页
.title"
exam22.asm"
.bssa,2
.bssx,2
.bssy,2
_c_int00LD@x,T
MPY@a,B
LD@x+1,T
MAC@a+1,B
STLB,@y
STHB,@y+1
org=0100hlen=0F00h
DARAM:
org=2000hlen=100h
/*定义数据存贮区,起始2000H,长度0100H*/
PRAMpage0/*将.text段映射到page0的PRAM区*/
DARAMpage1/*将.bss段映射到page1的DARAM区*/
3.连续乘加
.title"
exam23.asm"
.mmregs
.def_c_int00
stack.usect"
STK"
20h
.bssa,5
.bssx,5
.bssy,2;
假设结果超过16位,因此设存放结果单元y为两个单元
.data;
因为后面用MVPD访问该段,说明该段应分配到程序存储器
table:
.word
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 技术 应用 实验 指导书