DSP系统课程设计课程论文Word格式.docx
《DSP系统课程设计课程论文Word格式.docx》由会员分享,可在线阅读,更多相关《DSP系统课程设计课程论文Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
DSP5509A板上有RTL8019AS网络接口芯片,方便用户实现以太网通讯
DSP5509A板上有TLV320AIC23高保真音频编解码器,方便用户实现录音和播音
DSP5509A板上有RS232转换电路,方便与上位机实现通讯
DSP5509A板上有LCD接口
DSP5509A板上有多达5个按键,方便用户配合LCD实现人机对话
DSP5509A板上提供3路的外扩可屏蔽中断源输入接口
DSP5509A板上提供多达2路10位A/D输入接口
DSP5509A板上提供8路GPIO接口,带指示灯
DSP5509A板上提供总线开放,数据线,地址线,控制线、特殊功能引脚全部引出,方便用户二次开发
DSP5509A板上带Altera公司最新的MAX-IICPLD,使用户在学习DSP的同时掌握第二代CPLD的使用(EPM7064、EPM7128等为第一代)
(2)DSP处理器:
DSP处理器TMS320VC5509A,32位定点高速数字处理器,最高工作频率200MHz
DSP片内内置64KBytesROM,可存放用户程序,可加密
DSP片内内置128K*16位RAM,包括:
32K*16位双通道RAM(DARAM),96K*16位单
通道RAM(SARAM)
DSP片外扩展4M*16位同步动态SDRAM(基本配置),最大可扩展到8M*16位
DSP片外外扩1MBytesFLASH(基本配置),方便用户样机开发
DSP自带2路10位ADC
DSP自带USB2.0FullSpeed接口,可以传输图像、视频等高速数据
DSP自带MMC/SD卡接口,支持热插拔数码相机通用的MMC/SD卡
2、CCS4环境介绍
CodeComposerStudio&
amp™(CCS或CCStudio)是一种针对TI的DSP、微控制器和应用处理器的集成开发环境。
CCStudio包括一套用于开发和调试嵌入式应用程序的工具。
它包括用于各种TI设备系列的编译器、源代码编辑器、项目生成环境、调试程序、探查器、模拟器和其他许多功能。
CCStudio提供一个单一用户界面,指导用户完成应用程序开发流程的每一步骤。
类似的工具和界面使用户能够比以前更快地开始使用,并且能够向他们的应用程序添加功能,这些都归功于成熟的生产能力工具。
CCStudio版本4(CCSv4)以Eclipse开源软件框架为基础。
CCSv4之所以以Eclipse为基础,是因为Eclipse为开发环境提供了一个优异的软件框架,是众多嵌入式软件供应商所使用的标准框架。
CCSv4将Eclipse软件框架的优势和来自TI的高级嵌入式调试功能相结合,为嵌入式程序开发人员生成一个功能丰富的吸引人的开发环境。
(1)调试程序
CCStudio的集成调试程序具有用于简化开发的众多功能和高级断点。
条件断点或硬件断点以全C表达式、本地变量或寄存器为基础。
高级内存窗口允许您检查内存的每一级别,以便您可以调试复杂的缓存一致性问题。
CCStudio支持复杂的多处理器或多核系统的开发。
全局断点和同步操作提供了对多个处理器和多核的控制。
(2)分析
CCStudio的交互式探查器使快速测量代码性能并确保在调试和开发过程中目标资源的高效使用变得更容易。
探查器使开发人员能够轻松分析其应用程序中指令周期内或其他事件内的所有C/C++函数,例如缓存未命中/命中率、管道隔栏和分支。
分析范围可用于在优化期间将精力集中在代码的高使用率方面,帮助开发人员开发出经过优化的代码。
分析可用于任何组合的汇编、C++或C代码范围。
为了提高生产能力,所有分析设备在整个开发周期中都可供使用。
(3)脚本
某些任务,例如测试,需要运行数小时或数天而不需要用户交互。
要完成此类任务,IDE应能自动执行一些常见任务。
CCStudio拥有完整的脚本环境,允许自动进行重复性任务,例如测试和性能基准测试。
一个单独的脚本控制台允许您在IDE内键入命令或执行脚本。
(4)图像分析和虚拟化
CCStudio拥有许多图像分析及图形虚拟化功能。
其中包括以图形方式在能够自动刷新的屏幕上查看变量和数据的能力。
CCStudio还能以本机格式(YUV、RGB)查看主机PC或在目标电路板中加载的图像和视频数据。
(5)编译器
TI已经开发了专门为了最大程度地提高处理器的使用率和性能而优化的C/C++编译器。
TI编译器使用各种各样经典的、面向应用的、成熟的、因设备而异的优化,专为所有支持的结构而优化。
其中部分优化包括:
●消除公共子表达式
●软件流水
●强度折减
●自动增量寻址
●基于成本的寄存器分配
●指令预测
●硬件循环
●函数内联
●矢量化
TI编译器还执行程序级别优化,在应用程序级别评估代码性能。
通过程序级别视图,编译器能够像具有完整系统视图的汇编程序开发人员一样生成代码。
编译器充分利用此应用程序级别视图,找出能够显著提升处理器性能的折衷。
TIARM和MicrocontrollerC/C++编译器经过专门针对代码大小和控制代码效率的优化。
它们具备行业领先的性能和兼容性。
(6)模拟
模拟器向用户提供一种在能够使用开发板之前开始开发的方式。
模拟器还具有更加透彻地了解应用程序性能和行为的优势。
提供了几种模拟器,让用户能够权衡周期精确性、速度和外围设备模拟,一些模拟器特别适合算法基准测试,而另一些特别适合更加详细的系统模拟。
(7)硬件调试(仿真)
TI设备包含高级硬件调试功能。
这些功能包括:
●IEEE1149.1(JTAG)和边界扫描
●对寄存器和内存的非侵入式访问
●实时模式,用于调试与不得禁用的中断进行交互的代码。
实时模式允许您在中断事件挂起后台代码,同时继续执行时间关键中断服务例程。
●多核操作,例如同步运行、步进和终止。
其中包括跨核触发,该功能可以让一个核触发另一个核终止。
高级事件触发(AET),可在选定设备上使用,允许用户依据复杂事件或序列,例如无效数据或程序内存访问,终止CPU或触发其他事件。
它能够以非侵入式方式测量性能及统计系统事件数量(例如缓存事件)。
CCStudio提供有关选定设备的处理器跟踪,帮助客户发现以前“看不到的”复杂实时缺陷。
跟踪能够探测很难发现的缺陷-事件之间的争用情况、间歇式实时干扰、堆栈溢出崩溃、失控代码和不停用处理器的误中断。
跟踪是一种完全非侵入式调试方法,依赖处理器内的调试单元,因此不会干扰或更改应用程序的实时行为。
跟踪可以微调复杂开关密集型多通道应用程序的代码性能和缓存优化。
处理器跟踪支持程序、数据、计时和所选处理器与系统事件/中断的导出。
可以将处理器跟踪导出到XDS560跟踪外部JTAG仿真器或选定设备上,或导出到芯片缓存嵌入式跟踪缓存(ETB)上。
(8)实时操作系统支持
CCSv4具有两个版本的TI实时操作系统:
●DSP/BIOS5.4x是一种为DSP设备提供预清空多任务服务的实时操作系统。
其服务包括ISR调度、软件中断、信号灯、消息、设备I/O、内存管理和电源管理。
此外,DSP/BIOS5.x还包括调试诊断和加工,包括低系统开销打印和统计数据收集。
●BIOS6.x是一种高级可扩展实时操作系统,支持ARM926、ARMCortexM3、C674x、C64x+、C672x和基于28x的设备。
它提供DSP/BIOS5.x没有的若干内核和调试增强,包括更快、更灵活的内存管理、事件和优先级继承互斥体。
CCS4.12与CCS3.3的区别
CCS4.0版均基于Eclipse开放源码软件框架。
Eclipse软件框架可用于多种不同的应用,但是它最初被开发为开放框架以用于创建开发工具。
我们之所以选择让CCS基于Eclipse,是因为它为构建软件开发环境提供了出色的软件框架,并且正成为众多嵌入式软件供应商采用的标准框架。
CCS将Eclipse软件框架的优点和德州仪器(TI)先进的嵌入式调试功能相结合,为嵌入式开发人员提供了一个引人注目、功能丰富的开发环境。
版本CCS3.3,只有一套软件,可以支持除3000系列以外的所有DSP芯片开发。
TI公司最新推出的几款芯片(例如2833x、672x等)必须用3.3版本的CCS来开发。
3、实验原理
所有C55x中断,无论是硬件还是软件中断,都可以分为可屏蔽中断和非屏蔽中断两类,如图所示:
向CPU发中断请求
设置相应的IFR标志位
否
IFR中响应
的为被使能
是
否INMT=0?
是
转移到相应的中断服务程序
(ISR),同时,清除相应的
IFR标志同时完成现场保护;
为ISR创建新环境
执行相应的中断服务程序
返回主程序
在工程文件中,有一个名为vectors_exint,s55的文件,这是一个汇编文件,里面的内容就是中断向量表。
此时这个中断向量表就是一个空的架子,并没有相应的中断服务子程序,在主程序中的中断环境设置函数voidINTconfig中,有一句IRQ_plug(eventIdea0,&
int1),就是相当于把中断程序放入中断向量表中。
程序首先设置并初始化工作时钟,EMIF接口等,然后使能中断,进入循环中等待中断的发生。
中断服务子程序前面有一个关键字interrupt,表示它是一个中断服务子程序,并且它的返回值和参数都必须是空(void)。
附录:
主程序源码
exint.c
/******************************************************************************/
/*Copyright2004bySEEDElectronicTechnologyLTD.*/
/*Allrightsreserved.SEEDElectronicTechnologyLTD.*/
/*Restrictedrightstouse,duplicateordisclosethiscodeare*/
/*grantedthroughcontract.*/
/**/
/*----------------------------------------------------------------------------*/
/*MODULENAME...EMIF*/
/*FILENAME......emif.c*/
/*DATECREATED..Wed2/4/2004*/
/*PROJECT.......writeandreaddatabetweentheCPUandSDRAM*/
/*COMPONENT.....*/
/*PREREQUISITS..*/
/*DESCRIPTION:
*/
/**/
/*ThisisanexampleforEMIFofC5509*/
#include<
csl.h>
csl_irq.h>
csl_pll.h>
csl_emif.h>
csl_chip.h>
stdio.h>
CSLBoolb;
Uint16eventId0;
intold_intm;
interruptvoidint1(void);
//---------Functionprototypes---------
/*Referencestartofinterruptvectortable*/
/*Thissymbolisdefinedinfile,vectors_IP.s55*/
externvoidVECSTART(void);
/*锁相环的设置*/
PLL_ConfigmyConfig={
0,//IAI:
thePLLlocksusingthesameprocessthatwasunderway
//beforetheidlemodewasentered
1,//IOB:
IfthePLLindicatesabreakinthephaselock,
//itswitchestoitsbypassmodeandrestartsthePLLphase-locking
//sequence
12,//PLLmultiplyvalue;
multiply12times
1//Divideby2PLLdividevalue;
itcanbeeitherPLLdividevalue
//(whenPLLisenabled),orBypass-modedividevalue
//(PLLinbypassmode,ifPLLmultiplyvalueissetto1)
};
/***************5509A中断设置,使能INT1中断***********************/
/*参考资料:
TMS320C55xChipSupportLibraryAPIReferenceGuide(Rev.J)
TMS320VC5509ADataSheet
HX-5509A开发板使用手册*/
voidINTconfig()
{
/*Temporarilydisableallmaskableinterrupts*/
IRQ_setVecs((Uint32)(&
VECSTART));
old_intm=IRQ_globalDisable();
/*GetEventIdassociatedwithExternalINT1(8019),forusewith*/
eventId0=IRQ_EVT_INT0;
/*ClearanypendingINT1interrupts*/
IRQ_clear(eventId0);
/*Placeinterruptserviceroutineaddressat*/
/*associatedvectorlocation*/
IRQ_plug(eventId0,&
int1);
/*EnableINT1(8019)interrupt*/
IRQ_enable(eventId0);
/*Enableallmaskableinterrupts*/
IRQ_globalEnable();
}
main()
/*初始化CSL库*/
CSL_init();
/*EMIF为全EMIF接口*/
CHIP_RSET(XBSR,0x0a01);
/*设置系统的运行速度为144MHz*/
PLL_config(&
myConfig);
//设置并使能5509A芯片的INT0中断(EXINT中断)
INTconfig();
while
(1);
//ExternalINT0(EXINT)中断处理函数
interruptvoidint1()
printf("
EXINTouccers\n"
);
/******************************************************************************\
*Endofpll2.c
\******************************************************************************/
4、分析:
在本次实验中,每次按下按键时,一般情况下会打印出两个EXINTouccers,即产生两次中断。
但结果却和预料中的有所不同,有时候往往不会产生两次中断,有时产生一次,有时却又多于两次。
对于这个现象,我认为可能和没有按键消抖程序有关。
还有可能和按键的时间长短有关。
DSP作为嵌入式处理器家族的一大类,其结构特点决定了它尤其适合做数字信号处理的应用,而学好数字信号处理对日后的信息处理的深入学习和应用有着重要意义,因而学好DSP技术也就有着深远的意义。
通过此次课程设计我熟悉了CCS工程的建立和基于TMS320C55x的DSP程序的运行。
在此次课程设计中我也遇到了很多问题,首先是创建CCS工程后cmd文件和中断向量表的详细配置,这两个文件的修改需要清楚DSP的结构以及存储器映射情况,通过阅读几本参考书和其他一些资料,自己已经基本明白了他们的作用和配置方法。
还有就是程序的调试,DSP的结构比单片机要复杂的多,相应的寄存器也就较多,而很多情况下编写DSP程序都需要操作和配置寄存器,这既要求对冯诺依曼体系结构的处理器的共性有一定了解,同时也要针对DSP的特点来进行,编程前需对各个硬件模块之间的内在联系进行整体考虑,这样可以训练自己的系统思维。
当然这些问题都有一定的难度,但是想办法解决它们的过程也就是学习和进步的过程。
通过此次课程设计我对TMS320C55x系列DSP的硬件结构有了较为深刻的认识,值得一提的是55x的DSP没有大量的GPIO可使用,这显然是不能满足实际应用的需求的,试验箱上采用的是使用CPLD作为DSP与其他器件之间的桥梁,通过IO端口的访问来进行输入和输出操作,同时使用AD7822时也是通过CPLD来为它提供必要的时序,这样就大大简化了DSP对外围器件的控制任务,使其能够专注于运行各种算法,该设计方案为自己设计DSP系统提供了有益的参考。
此次课程设计持续时间虽然不长,但是自己在设计过程中却学到了不少的知识和技能,包括从查阅和参考的各种资料中也学到了DSP的硬件和软件设计技巧,以及CCS的使用和常见问题的排除和程序的调试组装等等。
参考文献:
1、董长虹等.
MATLAB信号处理与应用.北京:
国防工业出版社,2005
2、[美]
M.H.海因斯
著,张建华等
译.数字信号处理.北京:
科学出版社,2002
3、张葛祥,李
娜.
MATLAB仿真技术与应用.北京:
清华大学出版社,2003
4、邹彦等,DSP原理及应用,电子工业出版社.