DSP实验说明Word格式.docx
《DSP实验说明Word格式.docx》由会员分享,可在线阅读,更多相关《DSP实验说明Word格式.docx(27页珍藏版)》请在冰点文库上搜索。
5
MP/MC=0
DSP工作微计算机方式
MP/MC=1
DSP工作微处理器方式
6
CPUCS=0
CPU板为54系列
CPUCS=1
CPU板为2X系列
8)SW2拨码开关:
设置CPLD的工作状态
1位
2位
3位
FLASH工作状态
数据空间
0~FFFF64KX16
程序空间
0~FFFFF1MX16
X
不使能
4位
LED灯D5的工作状态
灭
亮
9)P1扩展接口:
CPU数据地址总线扩展接口
10)P2扩展接口:
CPU外设总线扩展接口
11)P3扩展接口:
HPI总线扩展口
12)LED指示灯
D1:
+5V、D2:
+3.3V、D3:
DSP核电压、D4:
复位信号、D5:
CPLD测试
二、C5416存储空间
图c5416程序空间内存映射
图c5416数据空间内存映射
驱动程序的安装与CCS的设置
1.完成USB软件驱动安装完成。
2.进行软件设置,先在桌面上打开SetupCCS2('
C5000)
进入以下画面,点击右边的“InstallaDeviceDriver”
弹出对话框,在CCS的安装目录中找到drivers找到相应的设备,这里举例54XX系列。
点击“OK”按钮,会发现在中的框中多了“tixds54X”这个设备,然后点击“AddToSystem”
出现在“BoardProperties”对话框
在Board下面的下拉菜单中选择第二项“Auto-generateboarddatafilewithextraconfiguratic”,这里“ConfiguraticFile”变成可见,点击“Browse…”
在CCS目录中的drivers目录中找到Techusb2.cfg这个文件,选中打开,然后点击“Next>
”按钮。
出现下面的对话框后,将I/Oport的Value改成0x280。
点击“Next>
”
选中”TMS320C5400”点击旁边的“AddSingle”按钮,在右边的框中会出现“CPU_1”,点击“Next>
在“startupGEL”中点击右边的小按钮,
在打开对话框中选择你需要的文件。
完成上面的操作后。
出现信息如下
点“File”菜单中的“Save”存盘,然后退出,弹出对话点击是,就会启动CCS软件
实验一常用指令实验
一、实验目的
1、了解DSP开发系统的组成和结构;
2、熟悉DSP开发系统的连接;
3、熟悉CCS的开发界面;
4、熟悉C54X系列的寻址系统;
5、熟悉常用C54X系列指令的用法。
二、试验设备
计算机,CCS2.0版软件,DSP仿真器,试验箱。
三、实验步骤与内容
A打开已有的工程:
1、系统连接
进行DSP实验之前,先必须连接好仿真器、试验箱及计算机
2、上电复位
在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,接通仿真器电源,启动计算机,此时,仿真器上的“红色小灯”应亮,否则DSP开发系统有问题。
3、运行CCS程序
待计算机启动成功后,试验箱后面的220V输入电源开关打开,试验箱上电,启动CCS,CCS正常启动,表明系统连接正常;
否则仿真器的连接、JTAG接口或CCS相关设置有问题,关掉电源,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。
成功运行程序后,首先应熟悉CCS的用户界面
学会CCS环境下程序编写、调试、编译、装载,学习如何使用观察窗口等。
4、修改样例程序,尝试DSP其他指令。
5、样例程序实验操作说明
1)仿真口开关K9拨到右侧,即仿真器选择连接右边的CPU:
CPU2;
2)启动CCS2.0,在project→open菜单打开exp01_cpu2目录下的工程文件“exp01.pjt”,双击“source”,可查看源程序;
3)在file→loadprogram菜单下加载exp01_cpu2\debug目录下的exp01.out文件;
加载完毕,单击“run”运行程序;
实验结果:
可见指示灯D1定频率闪烁;
单击“halt”暂停程序运行,则指示灯停止闪烁,如再单击“run”,则指示灯D1又开始闪烁;
B创建一个新工程的具体步骤:
1.创建一个新的工程
2.在新工程中添加一个源程序文件(*.m)或(*.c)。
3.添加一个*.cmd文件
4.编译,加载,运行程序
5.熟悉各个调试窗口。
6.如有故障查找故障原因,熟悉调试环境。
实验步骤:
1.安装仿真器驱动、CCS开发系统。
2.连接仿真器与试验箱,安装USB驱动,设置实验环境。
3.上电复位:
在硬件安装完以后,确定安装正确、连接正常后。
4.双击桌面上的CCS图标。
出现如下的图形:
5.点击Project工具栏,选择New.
6.在ProjectName栏中键入你想要的工程名。
当然,也可以把工程建在其他文件夹中。
7.工程类型选择Executable,目标栏选择你所用的DSP类型。
8.选择Project→AddFilestoProject,选择volume.c并点击Open。
也可以单击右键完成文件添加。
或者点击File→New自己创建文件并按照上述方法进行添加。
下面给出一段用汇编语言编写的代码,使读者了解用汇编编写文件的方法,注意应存为*.asm的文件格式:
***********************************************************************
*
*Thisprogramcomputesthesignedsumofdatamemorylocations
*fromaddress410hto41fh.TheresultisplacedinA.
*A=dmad(410h)+dmad(411h)+.........dmad(41fh)
************************************************************************
.mmregs
.global_c_int00
.text
_c_int00:
STM#10H,AR2;
InitializecounterAR2=10h
STM#410H,AR1;
InitializepointerAR1=410h
LD#0H,A;
InitializesumA=0
SSBXSXM;
Selectsignextensionmode
START:
ADD*AR1+,A;
Addthenextdatavalue
BANZSTART,*AR2-;
Repeatifnotdone
NOP;
NoOperation
.end
9.将源文件(汇编语言文件*.a*,*.s*或c语言文件均可)加入工程后,需要在工程中添加LinkerCommandFile(*.cmd),否则编译时就会按照默认方式进行链接并报警。
下面给出了一个*.cmd文件,供读者参考:
MEMORY
{
PAGE0:
IPROG:
origin=0x1000,len=0x3000
PAGE1:
IDATA:
origin=0x400,len=0x100
}
SECTIONS
.text:
{}>
IPROGPAGE0
.data:
IDATAPAGE1
}
10.选择Project→AddFilestoProject,从库文件夹(C:
\ti\c5400\cgtools\lib)中根据所用DSP类型选择合适的rts.lib(若c语言环境下,应选择相应的库文件,如c5416)并加入工程。
库文件的作用是提供DSP运行时间支持(run-timesupport)。
11.右击工程名,并选择ScanAllDependencies,将会在库文件夹下出现相应的头文件*.h(若在程序中用include,则会出现,否则无)。
这时候展开工程列表将是如下形式:
12.选择Project→RebuildAll或工具栏按键。
CCS下方将出现文件的编译信息。
如果编译通过,选择File→LoadProgram,找到刚刚重建的*.out文件,并打开。
13.选择Debug→Run运行程序。
14.打开选择命令View→CPURegister或单击调试工具条上的”显示寄存器”按钮.CCS将在CCS窗口下方弹出寄存器查看窗口,重新load程序,并选择singlestep执行,观察各寄存器的变化。
实验二数据存储实验
1、掌握TMS320C54的程序空间的分配;
2、掌握TMS320C54的数据空间的分配;
3、熟悉操作TMS320C54数据空间的指令。
二、试验设备
二、实验步骤与内容
连接好DSP开发系统,开关K9拨到右侧,即仿真器选择连接右边的CPU:
1、运行CCS软件;
2、在CCS的memory窗口中查找C5416各个区段的数据存储器地址,在可以改变的数据地址随意改变其中内容;
3、在CCS中装载实验示范程序,单步执行,观察程序中写入和读出的数据存储单元内容的变化;
4、联系其他寻址方式的使用;
①启动CCS2.0,在project→open菜单打开exp02_cpu2目录下的工程文件“exp02.pjt”,双击“source”,可查看源程序;
②在file→loadprogram菜单下加载exp02_cpu2\debug目录下的exp02.out文件;
③用“view”下拉菜单中的“memory”查看内存单元,输入要查看的内存单元地址,本实验要查看0x1000H—0x100FH单元的数值变化,输入地址0x1000H;
④查看0x1000H—0x100FH单元的初始值,单击“run“运行程序,也可以“单步”运行程序;
⑤单击“halt“暂停程序运行;
⑥查看0x1000H—0x100FH单元内数值的变化。
6.CCS的调试指南:
CCS提供了非常丰富的调试手段,在程序执行控制上CCS提供了四种单步执行方式。
从数据流角度上,用户可以对内存单元和寄存器进行查看和编辑,载入/输出外部数据,设置探针等。
一般的调试步骤为:
调入构建好的可执行程序,先在感兴趣的程序段设置断点,然后执行程序停留在断点处,查看寄存器的值或内存单元的值,对中间数据进行在线(或输出)分析,反复这个过程直到程序完成预期的功能。
1)载入可执行程序
命令File→LoadProgram载入编译链接好的可执行程序。
用户也可以修改”Program®
Load”属性,使得在构建工程后自动装入可执行程序。
2)程序执行控制
CCS提供了4种程序执行操作
(1)执行程序命令为Debug→Run或单击调试工具条上的”执行程序”按钮,程序运行直到遇见断点为止。
(2)暂停执行命令为Debug→Halt或单击调试工具条上的”暂停执行”按钮。
(3)动画执行命令为Debug→Animate或单击调试工具条上的”动画执行”按钮,用户可以反复运行执行程序,直到遇见断点为止。
(4)自由运行.命令为Debug→RunFree.此命令禁止所有断点,包括探针断点和Profile断点,然后运行程序.在自由运行中对目标处理器的任何访问都将恢复断点.若用户在基于JTAG设备上使用模拟时,此命令将断开与目标处理器的连接,用户可以折卸JTAG或MPSD电缆.在自由运行状态不用户也可以对目标处理器进行硬件复位.注意在仿真器中RunFree无效.
6.3.CCS提供的单步执行操作
CCS提供的单步执行操作有4种类型,它们在调试工具条上分别有对应的快捷按钮.
(1)单步进入(快捷键F8).命令为Debug®
StepInto或单击调试工具条上的”单步进入”按钮.当调试语句不是最基本的汇编指令时,此操作将进入语句内部(如子程序或软件中断)调试.
(2)单步执行(快捷键F10).命令为Debug®
StepOver或单击调试工具条上的”单步执行”按钮.此命令将函数或子程序当作一条语句执行,不进其内部调试.
(3)单步跳出(快捷键Shift+F7).命令为Debug®
StepOut或单击调试工具条上的”单步跳出”按钮.此命令将从子程序中跳出.
(4)执行到当前光标处(快捷键Ctrl+F10).命令为Debug®
RuntoCursor或单击调试工具条上的”执行到当前光标处”按钮.此命令使程序运行到光标所在的语句处.
6.4断点设置
断点的作用在于暂停程序的运行,以便观察/修改中间变量或寄存器数值.CCS提供了两类断点:
软件断点和硬件断点.这可以在断点属性中设置.设置断点应当避免以下两种情形;
将断点设置在属于分支或调用的语句上.
将断点设置在块重复操作的倒数笫一或笫二条语句上.
软件断点设置
使用断点对话框
选择命令Debug®
Breakpoints在”BreakpointType”,对C代码,由于一条C语句可能对应若干条汇编指令,难以用唯一地址确定位置.为此可以采用”filenamelinelineNumber”的形式定位源程序中的一条C语句.断点类型和位置设置完成后,依次单击”Add”和”OK”按钮即可.断点设置成功后,该语句条用彩色光条显示.
采用工程工具条
将光标移到需要设置断点的语句上,点击工程工具条上的”设置断点”按钮.则该语句位置一断
(3)断点的删除
单击”Breakpoint”列表中的一个断点,然后点击”Delete”按钮可删除此断点.点击”Deleteall”按钮或工程工具条上的”取消所有断点”按钮,将删除所有断点.
6.5内存、寄存器和变量操作
在调试过程中,用户可能需要不断观察和修改寄存器、内存单元和数据变量.下面我们依次介绍如何修改内存块,如何查看和编辑内存单元、寄存器和数据变量.
1内存块操作
CCS提供的内存块操作包括拷贝数据块和填充数据块.这在数据初始化时较为有用.
拷贝数据块
功能:
拷贝某段内存到一新位置.
命令:
Edit®
Memory®
Copy,在对话框中填入源数据块首地址、长度和内存空间类型以及目标数据块首地址和内存空间类型即可.
填充数据块
用特定数据填充某段内存
Fill,在对话框中填入内存首地址、长度、填充数据和内存空间类型即可.
2查看、编辑内存
CCS允许显示特定区域的内存单元数据.方法为选择View®
Memory或单击调试工具条上的”显示内存数据”按钮.在弹出对话框中输入内存变量名(或对应地址)、显示方式即可显示指定地址的内存单元.为改变内存窗口显示属性(如数椐显示格式,是否对照显示等),可以在内存显示窗口中单击右键,从关联莱单中选择Properties即弹出选项对话框.如图所示.
图2-8内存窗口选项对话框
内存窗口选项包括以下内容:
Address:
输入需要显示内存区域的起始地址.
QValue:
显示整数时使用的Q值(定点位置).新的整数值=整数/2Q.
Format:
从下拉菜单中选取数据显示的格式.
UseIEEEFloat:
是否使用IEEE浮点格式.
Page:
选择显示的内存空间类型-程序、数据或I/O.
EnableReferenceBuffer:
选择此检查框将保存一特定区域的内存快照以便用于比较.
例如,用户允许”EnableReferenceBuffer”选择,并定义了地址范围为0x0000~0x002F.此区段的数据将保存到主机内存中.每次用户执行暂停目标板、命中一断点、刷新内存等操作时,编译器都将比较参考缓冲区(ReferenceBuffer)与当前内存段的内容,数值发生变化的内存单元将用红色突出显示.
StartAddress:
用户希望保存到参考缓冲区(ReferenceBuffer)的内存段的起始地址.只有当用户选中”EnableReferenceBuffer”检查框时此区域才被激活.
EndAddress:
用户希望保存到参考缓冲区的内存段的终止地址.只有当用户选中”EnableReferenceBuffer”检查框时此区域才被激活.
UpdateReferenceBufferAutomatically:
若选择此检查框,则参考缓冲区的内容将自动被内存段(由定义参考缓冲区的起始/终止地址所规定的区域)的当前内容覆盖.
在”format”栏下拉条中,用户可以选择多种显示格式显示内存单元,如表3-1所示.
表3-1内存单元数据显示格式
数据格式
描述
C-style
十六进制字,带前缀”0x”
Hex
TI格式的十六进制数
Signedinteger
有符号整型数
Unsignedinteger
无符号整型数
Character
WORD的低字节作为字符显示
Packedcharacter
每个word的高低字节均作为8-bit字符显示
Floatingpoint
十进制浮点显示
Exponentialfloat
指数形式的浮点显示
Binary
二进制显示
实验三I/O实验
一、实验目的
1、了解I/O口的扩展;
掌握I/O口的操作方法;
、
2、熟悉在C语言中访问IO的方法;
3、了解数字量与模拟量的区别和联系。
二、试验设备
开关K9拨到右侧,即仿真器选择连接右边的CPU:
启动CCS2.0,在project→open菜单打开exp03_cpu2目录下的工程文件“exp03.pjt”。
在file→loadprogram菜单下加载exp03_cpu2\debug目录下的exp03.out文件。
运行程序,分别调整开关量输入单元的开关K1~K8,观察LED~LED8亮灭的变化,以及开关量输入和输出状态是否一至。
1、样例程序实验操作说明
①启动CCS2.0,在project→open菜单打开exp03_cpu2目录下的工程文件“exp03.pjt”,并加载”exp03_cpu2\debug\exp03.out“;
②单击“run“运行程序;
③任意调整K1~K8开关,可以观察到对应LED1~LED8灯“亮”或“灭”;
④单击“halt“暂停持续运行,开关将对灯失去控制。
四、实验说明
在本实验中,提供的IO空间分配如下:
CPU2的IO空间:
0x8000拨码开关input8位
0x8001LED灯output8位
实验四定时器实验
一、实验目的
1、数序C54的定时器
2、掌握C54定时器的控制方法
3、学会使用定时器中断方式控制程序流程
二、实验设备
三、实验步骤与内容
1、开关K9拨到右侧,即仿真器选择连接右边的CPU:
启动CCS2.0,在project→open菜单打开exp04_cpu2目录下的工程文件“exp04.pjt”。
在file→loadprogram菜单下加载exp04_cpu2\debug目录下的exp04.out文件。
2、单击“run”运行程序,可观察到LED指示灯LED1~LED8以一定的时间间隔不停摆动;
3、单击“halt”暂停持续运行,LED停止闪烁;
单击“run”运行程序,LED灯又开始闪烁。
四、实验说明
C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时器周期寄存器PRD和定时器减法寄存器TDDR,定时器的中断周期为:
CLKOUT×
(TDDR+1)×
(PRD+1)
在本系统中,如果设置时钟频率为10MHz,令PRD=0x30D3,TDDR=15,这样得到每0.02秒中断一次,通过累计50次,就能实现1秒定时。
0.1μs×
(15+1)×
(12499+1)×
50=1s
实验五键盘接口及七段数码管显示实验
1、了解串行口8位LED数码管及64位键键盘智能控制芯片HD7279A的基本原理;
2、学习用TMS320C54DSP芯片控制芯片HD7279A键盘和LED的基本方法和步骤。
三、HD7279A芯片简介
该芯片是一片具有串行接口的,可同时驱动8位共阴式数码管或(64只独立LED)的智能显示驱动芯片,该芯片同时还可以连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能。
HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有两种译码方式。
此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。
四、实验步骤和内容
启动CCS2.0,在project→open菜单打开exp09_cpu2目录下的工程文件“exp09.pjt”。
在file→loadprogram菜单下加载exp09_cpu2\debug目录下的exp09.out文件;
2、单击“run”运行程序或按F5运行程序,然后观察结果:
可以看到LED全部点亮(包括小数点),然后LED13、LED14显示出0、1、2、3、4、5