五邑大学TMS320VC5402定时器试验DSP报告作业.docx
- 文档编号:23432960
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:25
- 大小:200.49KB
五邑大学TMS320VC5402定时器试验DSP报告作业.docx
《五邑大学TMS320VC5402定时器试验DSP报告作业.docx》由会员分享,可在线阅读,更多相关《五邑大学TMS320VC5402定时器试验DSP报告作业.docx(25页珍藏版)》请在冰豆网上搜索。
五邑大学TMS320VC5402定时器试验DSP报告作业
五邑大学实验报告
实验课程名称:
院系名称:
信息工程学院
专业名称:
电子信息工程
实验项目名称:
1、TMS320VC5402定时器实验
2、基于DSPLib的FFT程序设计
3、基于DSPLib的滤波器程序设计
班级:
学号:
报告人:
一、TMS320VC5402定时器实验
一实验目的
1.了解DSP汇编程序与C语言程序的构成;
2.了解DSP程序各段的含义;
3.熟悉如何编写中断服务程疗;;
4.掌握片内定时器的设置方法;
5.掌握长时间间隔的定时器的处理
二实验内容
1.DSP的初始设置;
2.DSP中断向量表的建立;
3.定时器的使用;
设实验板时钟频率为20MHz,编程实现以下要求:
1、TMS320C5402的时钟频率为100MHz
2、TMS320C5402XF端输出一个周期为500ms的方波,周期性地点亮LED
3、采用定时中断方法实现
4、用C语言编程,画出程序流程图并给出源代码。
5、上机调试。
三实验背景知识
1通用TIMER简介
TMS320VC5402的定时器的说明:
VC5416中有两个可编程的片上定时器,总共包含有三个可由用户设置的寄存器,并可以申请主机的中断。
这三个寄存器分别为TIM、PRD、TCRo这些寄存器与对应的存贮空间地址如下表所示:
Timer0
Address
Timor1
Address「5402only)
Register
Description
002>1h
OO3Oh
TIM
Timerregister
0025h
0031h
PRD
Timerperiodregister
0026h
0032h
TCR
Timercontrolregister
时间寄存器(TIM)是一个16位的存贮器映射寄存器,它的值山周期寄存器来进行装载,并且做减一操作。
周期寄存器(PRD)是一个16位的存贮器映射寄存器,它是用来重装时间寄存器(TIM)寄存器的值的。
定时器控制寄存器(TCR)是一个16位的存贮器映射寄存器,包含了定时器的控制与状态信息。
2、CMD文件简介
cmd文件用于DSP代码的定位。
由3部分组成:
1、
(1)输入/输出定义:
•obj文件:
链接器要链接的口标文件。
•1让文件:
链接器要链接的库文件。
•map文件:
链接器生成的交义索引文件。
•out文件:
链接器生成的可执行代码;链接器选项。
(2)MEMORY命令:
描述系统实际的硬件资源。
(3.)SECTIONS命令:
描述"段"如何定位。
下面例子则可说明其基本格式:
-o(可缺省)
-m(可缺省)
-stack100(可缺省)
(可缺省)
-1(可缺省)
MEMORY{
PAGE0:
RESEVE:
org=00hlen=0x80
PAGE0:
PR0G1:
org=0x0100len=0x1200
PAGE0:
VECT:
org=0x0080,len=0x80
PAGE1:
RESEVE1:
org=OOhlen=0x1300
PAGE1:
DARAM2:
org=0x1300len=0x400
PAGE1:
}
DARAM1:
org=0x1700
len=0x2900
SECTIONS{
・text:
>
PROG1
PAGE0
・cinit:
>
PROG1
PAGE0
・switch:
>
PROG1
PAGE0
・vectors
:
>
VECT
PAGE0
・const:
>
DARAM1
PAGE1
・bss:
>
DARAM1
PAGE1
・stack:
>
DARAM2
PAGE1
・system:
>
DARAM2
PAGE1
・data:
>
DARAM2
PAGE1
}
下面介绍一下CMD文件中常用的程序段名与含义
•cinit存放C程序中的已初始化的变量初值和常数表;
.const存放C程序中的字符常量和用const声明的常量;
•text存放C程序的代码;
•bss为C程序中的未初始化的全局和静态变量保留存储空间;
•far为C程序中用far声明的全局和静态变量保留空间;
•stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传
递、存储局部变量和保存中间结果;
.sysmem用于C程序中malloc>calloc和realloc函数动态分配存储空间
.vectors用于自定义的".vectors”段,这里是中断向量表
.switch用于C程序中的switch语句
•data已初始化的数据段
3中断向量表文件
中断服务程序的地址(中断向量)要装载到存储器的合适区域。
一般用中断向量表文件编制中断向量表,中断向量表文件多釆用汇编语言编写;在文件中一般用汇编指令.sect来生成一个表,表中各中断占4个字。
这个表包含中断向量的地址和跳转指令。
因为中断跳转地址的标志符在汇编语言模块外部使用,所以
标志符用・ref或.global定义。
4、GEL文件
GEL文件有两大作用:
(1)配置CCS工作环境。
(2)直接访问目标处理器(包括软硬件访真器),在这是主要使用GEL文件的初始化DSP。
以下面的例子介绍一
下GEL文件的构成#definePRDOttdefineTCRO
0x0025u
0x0026u
#definePRD1
#defineTCR1
0x0031u
0x0032u
StartUp()
GEL.MapOn();GEL_MapReset();
/*存储空间打开*/
/*存储空间复位*/
GEL_MapAdd(0x80u,0,0x3F80u,1,1);/*定义程序空间0x80-0x3FFF可读写*/
GEL_MapAdd(0x4000u,0,OxCOOOu,1,1);/*泄义程序空间0x4000-OxFFFF可读写*/
/*定义数据空间O—OxFFFF可读写*/
GEL_MapAdd(0x0u,1,0x60u,1,1):
/*MMRs*/
GEL_MapAdd(0x60u,1,0x3FA0u,1,1);/*DARAM*/
GEL_MapAdd(0x4000u,1,OxCOOOu,1,1);/*External*/
}
实验流程图:
四、实验步骤
1、根据实验要求编写输出周期500ms方波的汇编语言源代码,和C语言源代码(c语言中加入外部中断,通过按键改变方波频率)。
2、编译无误后下载到C5402开发板中,运行程序,观察LED是否周期性亮灭。
3、下载c程序到开发板上,通过按下连接在外部中断上的按键,观察能否改变LED灯的亮灭频率。
五、程序源代码
1、主函数:
#includeinttO_count;
voidmain()
{CLKMD二0x00;ect".vectors"
・ref_c_intOO
・reftimer
rs:
BD_c_int00
:
Rest
nop
nop
nmi:
・space4*16SINT16
sintl?
:
・space4*16sintl8:
・space4*16sintl9:
・space4*16
SINT17
SINT18
SINT19
sint20:
・space
4*16
sint21:
・space
4*16
sint22:
・space
4*16
sint23:
・space
4*16
sint24:
・space
4*16
sint25:
・space
4*16
sint26:
・space
4*16
sint27:
・space
4*16
sint28:
・space
4*16
sint29:
・space
4*16
sint30:
・space
4*16
intO:
・space4*16inti:
・space4*16int2:
・space4*16
SINT20
SINT21
SINT22
SINT23
SINT24
SINT25
SINT26
SINT27
SINT28
SINT29
SINT30
INTO,SINTO
INTI,SINTI
INT2,SINT2
tintO:
BDtimer;TINTO,SINT3
nop
nop
brintO:
・space4*16bxintO:
・space4*16dmacO:
・space4*16dmacl:
・space4*16
;BRINTO,SINT4
;BXINTO,SINT5
:
DMACO,brint2,SINT6;DMAC1,bxint2,SINT7
int3:
・space4*16;INT3,SINT8
hpint:
・space4*16
;HPINT,
SINT9
brintl:
・space4*16
;BRINT1
orDMAC2,SINT1O
bxintl:
・space4*16
;BXINT1
orDMAC3,SINTI1
dmac4:
・space4*16
;DMAC4,
SINT12
dmac5:
・space4*16
;DMAC3,
SINT13
rsvdl:
・space4*16
:
reserved
rsvd2:
・space4*16
;reserved
・end
3>链接文件:
MEMORY
PAGE0:
RESERVER:
origin=0x00,
:
origin=0x80,
origin=0x100,
len=0x80
len=0x80
len=0x1000
INT.VECT
PROG.RAM:
PAGE
1:
DATA.l:
origin=0x1100,
len=OxOeOO
DATA.2:
origin=0x2000,
len=0x2000
}
SECTIONS
.vectors:
{}>INT.VECTPAGE0
.text:
{}>PROG.RAMPAGE0
.stack:
{}>DATA_1PAGE1
vars:
{}>DATA_1PAGE1
.data:
{}>DATA_2PAGE1
.bss:
{}>DATA_2PAGE1
}
六、实验结果及体会
实验结果:
每次按下按键,LED灯亮灭周期发生变化。
实验体会:
一开始写入程序没成功,但是按下按键后,LED灯亮灭周期也发生变化,出现这种情况是实验板内部已经因为上一个人在试验中写入了程序,所以会出现插电后,程序没写入也能够按键改变亮灭周期。
最后在老师的提醒下,成功写入程序,验证发现功能也得到了实现。
在实验过程中每一步都要细心的去完成,多想想出现某种情况的原因,有不懺的就向老师、同学请教,这样才能在实验中进步。
二、基于DSPLib的FFT程序设计
一、实验目的
1、了解FFT的原理;
2、了解在DSP中FFT的设计及编程方法;
3、熟悉对DSPLIB的调用方法;
二、实验内容
编写256点的实序列FFT的DSP程序,利用数据文件对FFT程序进行调试。
三、实验要求
1、产生256点的数据文件,表示方波、正弦等信号;
2、编写236点的实序列FFT的DSP程序对上述信号进行傅立叶变换:
3、利用CCS中VIEW菜单中的Graph调试工具观察信号时域波形及其频谱。
四、背景知识
1、时间抽选基2FFT算法的基本原理。
(参阅《数字信号处理》教材)
2、DSPLib的应用
CCS提供DSPL让,其中包含了基本的数学计算和数字信号处理常用算法模块的函数,可直接调用这些函数实现一些数字信号处理算法。
本实验主要使用了DSPLib的cbrev,rfft两个函数实现数字序列的逆序和DFT的汁算。
有关这两个函数的说明请参阅《dspl让中文版_TMS32034X_函数库中文用户指南.pdf》程序流程图为:
五、实验步骤
1、根据实验要求编写256点FFT的C语言代码,中断向量表和CMD文件;
2、编译成功无误后下载到C5402开发板中,然后运行程序;
3、程序运行完成后,通过CCS中的View->Graph选项查看输入和输出波形,
4、分析实验结果是否符合要求。
六、程序源代码
1、主程序:
ttinclude""nclude<>
#include<>
nclude<>
#defineNx256nput")
iipragmaDATA_SECTION(x_tempt,".input_tempt")
iipragmaDATA_SECTION(y,"・outputz/)
staticvoiddatalO(void):
voidmain()
PMST=OxOOaO;ef_c_intOO:
Rest
・sect"・vectors"
rs:
BD_c_int00
nop
nop:
Rest
nmi:
・space4*16
;NMI,SINT16
sintl7:
・space4*16
;SINT17
sintl8:
・space4*16
;SINTIS
sintl9:
・space4*16
;SINT19
sint20:
・space4*16
;SINT20
sint21:
・space4*16
;SINT21
sint22:
・space4*16
;SINT22
sint23:
・space4*16
;SINT23
sint24:
・space4*16
;SINT24
sint25:
・space4*16
;SINT25
sint26:
・space4*16
;SINT26
sint27:
・space4*16
;SINT27
sint28:
・space4*16
;SINT28
sint29:
・space4*16
;SIXT29
sint30:
・space4*16
;SINT3O
intO:
・
space4*16
;INTO,SINTO
inti:
・
space4*16
;INTI,SINTI
int2:
・
space4*16
;INT2,SINT2
tintO:
・space4*16
;INTO,SINT3
brintO:
・space4*16
;BXINTO,SINT4
bxintO:
・space4*16
;BXINTO,SINT5
dmacO:
・space4*16
;DMACO,brint2,SINT6
dmacl:
・space4*16
;DMACO,brint2,SINT7
int3:
・
space4*16
;INT3,SIXTS
hpint:
・space4*16
;HPINT1,SINT9
brintl:
・space4*16
;BRIXT1orDMAC2,SINT10
bxintl:
・space4*16
:
BRINT1orDMAC3,SIXTH
dmac4:
・space4*16
;DMAC4,SINT12
dmac5:
・space4*16
;DMAC5,SINT13
rsvdl:
・space4*16
;reserved
rsvd2:
・space4*16
;reserved
・end
3、链接文件:
MEMORY
PAGE0:
RESERVER:
origin二0x00,
FFT.VECT:
origin=0x80,
PROG:
origin=0x100,
PAGE1:
DATA_1:
origin=0x1100,DATA_2:
origin=0x2000,
}
・vectors:
{}>.text:
{}>PROG.data:
{}>PROG.bss:
{}>DATA_2.cinit:
{}>PROG
FFT_VECTPAGE0
PAGE
PAGE
PAGE
PAGE
0
0
1
0
len=0x80
len=0x80
len=0x1000
len=OxOeOO
len=0x2000
SECTIONS
.stack:
{}>DATA_2PAGE1.input:
{}>DATA.2PAGE1,align(512)
.input_tempt:
{}>DATA_2PAGE1
.output:
{}>DATA_2PAGE1
・sintab:
{}>DATA.lPAGE1
・const:
{}>PROGPAGE0}
7.实验结果及体会
实验结果:
cip"
A
'\
」a.
E
ti■”FrrwreoF)Iw1<7^403ktnIkf*
IoFlf•••>•Of■・IM|«eOrwr**r.
-4rK/
实验体会:
傅里叶变换是将信号从时域的一种变换形式,是信号处理领域中的一种重要的分析工具,所以学好FFT变换在DSP技术中很重要。
在这次实验中,进一步熟悉了CCS软件的使用,实验过程中感觉自己的基础知识很不牢固,需要多加强对CCS软件的操作,对编译环境的熟悉对实验的完成和理解则有更加的帮助。
感觉要想学好DSP这门课程,必须脚踏实地的一步步努力的学好基础知识,才能更加顺利的完成实验。
三、基于DSPLib的滤波器程序设计
一、实验目的
1、了解FIR、IIR数字滤波器的原理;
2、掌握FIR、IIR数字滤波器的设讣方法。
3、熟悉对DSPLib的调用方法以及数字滤波器在DSP系统中的实现;
二、实验内容(要求)
现有连续时间信号x(/)=2000cos(2000^)+4000cos(4000^),已基于采样频
率fs=16000Hz对W)采样,获得离散数据心)。
设计一个FIR(或IIR)数字低通滤波器,对数据x(n)滤波,滤除x(〃)中2000Hz频率分量,保留1000Hz频率分量。
要求:
1、设计FIR(或HR)数字低通滤波器,得到滤波器的有关参数;
2、基于DSPLib编制DSP的C语言程序,实现上述低通滤波,并对数据心)滤波。
3、利用CCS中VIEW菜单中的G“ph调试工具观察信号时域波形及其频谱。
三、背景知识
1、FIR、IIR数字滤波器的基本原理。
(参阅《数字信号处理》教材)。
2、MATLAB的数字滤波器设计工具FDAtoolo(详细请参阅MATLAB帮助文档。
)启动滤波器设讣分析器
在MATLAB的start菜单中选择Toolboxes-〉FilterDesign-〉FilterDesign&AnalysisTools(fdatool),或者在命令行中输入fdatool来启动滤波器设计分析器。
启动后界面如图所示:
图
滤波器设计
在选项中选择或输入滤波器参数,然后点击”DesignFilter”按钮完成滤波器设计。
设计成功后的结果如图所示。
图
导出FIR滤波器系数。
在fdatool中,选择Targets->CodeComposerStudio1MIDE<>
在出现的对话框中选择输出文件类型为file,输出系数类型为signed16-bitinteger,如图所示。
点击OK按钮,选择路径,即可输出询一步设讣出的FIR滤波器系数表。
图
3、DSPLib的应用
CCS提供DSPL让,其中包含了基本的数学计算和数字信号处理常用算法模块的函数,可直接调用这些函数实现一些数字信号处理算法。
本实验主要使用了f让、firs、firs2>iircas4>iircas5>iircasol等函数实现数字滤波。
有关这些函数的说明请参阅《dspHb中文版_TMS32034X_函数库中文用户指南.pdf》实验程序流程图为:
四、实验步骤
1、根据实验要求,利用Matlab的fdatools设计FIR低通滤波器和带通滤
器,导出有FIR系数数组的头文件。
2、根据实验要求编FIR滤波器的C语言代码,中断向量表和CMD文件;
3、编译成功无误后下载到C5402开发板中,然后运行程序;
4、程序运行完成后,通过CCS中的View->Graph选项查看输入和输出波形,分析实验结果是否符合要求。
1、主函数:
^include
^include
#includeitinclude
#include
五、程序原代码
<>
<>
<>
〃〃
"”oeffsO
itpragmaDATA_SECTION(db,".dbuffer")voiddatalO(void);ect"・vectors,z
・ref_c_int00
・ref_timer
・ref_change_frequency
rs:
BDcintOO;Rest
NOP
NOP
nmi:
.space4*16;NMI,SINT16
sintl?
:
・space4*16
sintl8:
・space
4*16
sintl9:
・space
4*16
sint20:
・space
4*16
sint21:
・space
4*16
sint22:
・space
4*16
sint23:
・space
4*16
sint24:
・space
4*16
sint25:
・space
4*16
sint26:
・space
4*16
sint27:
・space
4*16
sint28:
・space
4*16
sint29:
・space
4*16
sint30:
・space
4*16
intO:
・
space4*16
inti:
・
space4*16
int2:
・
space4*16
tintO:
.space4*16;BD
SINT17
SINT18
SINT19
SINT20
SINT21
SINT22
SINT23
SINT24
SINT25
SINT26
SINT27
SINT28
SINT29
SINT30
INTO,SIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 TMS320VC5402 定时器 试验 DSP 报告 作业