《最新DSP课程设计.doc》由会员分享,可在线阅读,更多相关《最新DSP课程设计.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateDSP课程设计毕业设计说明书课程设计说明书实验课程: DSP技术及其应用 实验内容:基于TMS320的 Led显示控制系统设计 院 (系): 计算机学院 专 业: 通信工程 2014年7月5日- 目录一、设计任务 1二、实验目的 1三、设计内容 2四、 实验原理 2 4.1 DSP(2812)性能概述 2 4.2 TMS320F2812的引脚图及功能 4 4.3 DS
2、P最小系统 4五、 程序设计 7 5.1 流程图 7 5.2 程序源代码 8六、实验总结13七、参考资料14序言 DSP芯片的特点DSP芯片,也称数字信号处理器, 是一种具有特殊结构的微处理器。DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:在一个指令周期内可完成一次乘法和一次加法。 程序和数据空间分开,可以同时访问指令和数据。 片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。 具有低开销或无开销循环及跳转的硬件支持。
3、 快速的中断处理和硬件I/O支持。 具有在单周期内操作的多个硬件地址产生器。 可以并行执行多个操作。 支持流水线操作,使取指、译码和执行等操作可以重叠执行。 与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。一、设计任务:1、 基于TMS320X2812的 Led流水灯显示控制系统设计要求:(1)绘制系统框图(VISIO);(2)包括复位电路设计、JTAG接口设计、时钟电路设计、电源设计等,并且用Protel软件绘制原理图; (3)编写程序,实现流水灯; (4)系统理论分析和设计陈述; (5)设计过程、源代码和注释、设计说明书。二、实验目的: 学习并了解DSP开发版的基本原理; 学习并了
4、解TMS320X2812芯片的基本结构和原理; 熟悉流水灯的软件实现原理和硬件设计; 熟悉Emulator方式下的程序调试规程,并最终能够熟练掌握在DSP软硬件环境下的程序开发流程;能够对现有器件进行简单地编程,实现各种简单地显示控制; (5)熟练CCS软件及使用VISIO画系统流程图。三、设计内容:(1)使用Altium Designer软件绘制原理图。(2)使用VISIO软件绘制系统框图和软件流程图。(3)使用CCStudio v3.3软件设计程序实现流水灯。四、实验原理:4.1 DSP(2812)性能概述1、F2812 DSP芯片采用高性能静态CMOS技术 (1)主频高达150MHz,每
5、个时钟周期为6.67ns。 (2)采用低电压供电,当主频为135MHz时,内核电压为1.8V,主频150MHz时内核电压为1.9V,I/O引脚电压为3.3V。2、支持JTAG在线仿真接口3、32位高性能处理器 (1)支持16bX16b和32bX32b的乘法加法运算。 (2) 支持16bX16b双乘法运算。 (3)采用哈佛总线结构模式。 (4) 快速的中断响应和中断处理能力。 (5)统一的存储设计模式。 (6)兼容C/C+语言以及汇编语言。4、片内存储空间 (1)片内FLASH空间大小为128KX16b,分为4个8KX16b和6个16KX16b存储段。 (2)OTP ROM空间大小1KX16b。
6、 (3)L0、L1两块4KX16b单地址寻址随机存储器(SARAM)。 (4)H0:一块8KX16b随机存储器(SARAM)。 (5)M0、M1:两块1KX16bSARAM。5、 Boot ROM空间 空间大小为4KX16b,内含软件启动模式以及标准数学函数库。6、 外部接口 (1)高达1MX16b的总存储空间。 (2)可编程的等待时间。 (3)可编程的等待读写时序。 (4) 3个独立的片选信号。7、时钟和系统控制 (1)支持动态锁相环倍频。 (2)片内振荡器。 (3)内含看门狗定时模块。8、3个外部中断9、外设中断模块(PIE)可以支持45个外设中断10、3 个32位CPU定时器11、128
7、位安全密钥 (1)可以包含Flash ROM OTP以及L0 L1SARAM。 (2) 防止系统硬件、软件被修改。12、用于控制电机的外设 两路事件管理(EVA、EVB)。13、串行通信端口 (1)串行外设接口SPI。 (2)两路串行通信接口SCI,标准URAT口。 (3)增强型CAN模块(eCAN)。 (4)多通道缓冲串行接口(MSBSP)。14、12位ADC转换模块 (1)2X8路输入通道。 (2)两个采样保持器。 (3)单一或级联转换模式。 (4)最高转换速度80ns/12.5Msps。15、56个通用GPIO口16、先进的仿真模式 (1) 具有实时仿真及设置断点的功能。 (2)支持硬件
8、仿真。17、开发工具 (1)DSP集成环境CCS。 (2)JTAG仿真器。18、低电模式和电源存储 (1)支持IDLE、STANDBY、HALT模式。 (2)禁止/使能独立外设时钟。19、封装 (1)179引脚BGA封装,带扩展存储接口。 (2)176引脚PGF封装,带扩展存储接口。4.2 TMS320F2812的引脚图及功能 如图4-2-1为TMS320F2812引脚图以及各个引脚的作用。 图4-2-14.3 DSP最小系统 系统整体框图如下图4-3-1所示。图4-3-1 系统整体框图1、 电源转换DSP最小系统仅有5V电源供电,由于DSP芯片供电电压只能是3.3V,所以在设计电路时,需要将
9、5V电源转换为3.3V给CPU供电,因此使用了TI公司的5V/3V的TPS7333Q高性能稳压芯片,并可提供上电复位信号,该信号/RSDSP接到DSP的复位引脚上。该芯片最大输出电流500mA。TPS7333Q输出后的10f和0.1f的电容不能省略,否则得不到稳定的3.3V电压。图4-3-2为电源转换原理图。 图4-3-2电源转换原理图2、复位电路DSP系统的复位电路的设计对于系统性能有重要影响。 DSP2812为低电平复位,由于内部有复位电路,所以直接在复位引脚/xrs接一个10K的上拉电阻即可;有些电源芯片有复位引脚,可用于DSP的直接复位。复位电路原理图如图4-3-3所示: 图4-3-3
10、复位电路原理图3、时钟电路TMS320 F2812 DSP的时钟可以有两种连接方式,即外部振荡器方式和谐振器方式。有源晶振驱动能力较强,频率范围较宽,在1HZ400MHZ之间。无源晶振驱动能力差,价格便宜,频率范围较窄。本文采用的是外部有源时钟方式,直接选择一个3.3V供电的30MHz有源晶振实现。晶振电路如图4-3-4所示。 图 4-3-4时钟电路4、JTAG仿真接口电路几乎所有的高速控制器和可编程器件都配有标准仿真接口JTAG,F2812也不例外。JTAG扫描逻辑电路用于仿真和测试,采用JTAG可实现在线仿真,同时也.是调试过程装载数据、代码的唯一通道。通过JTAG接口可将仿真器与目标系统
11、相连接。为了与仿真器通信,DSP控制板必须带有14引脚的双排直插管座。F2812和14针仿真插座连接的电路如图4-3-5。 图4-3-5 JTAG接口设计电路5、流水灯控制系统电路 流水灯控制电路如下图4-3-6所示。图4-3-6 流水灯电路图 五、程序设计:5.1 程序流程图这里用软件延时的方法来调整发光二极管的延时时间间隔。当发光二极管被点亮之后,通过改变端口的数据输出,达到点亮不同的LED显示管的目的。实验要求实现LED显示管的循环显示:先第1个LED亮,然后是第2个LED亮,第3个LED显示管亮。第4个灯亮。如此循环显示。首先给temp赋初值0000 0001(由于高八位都为0000
12、0000,这里只写低八位),再给寄存器GPBCLEAR的值与temp的值相或,其相应位被写1,实现相应的端口输出低电平,LED灯亮,通过寄存器GPBSET的值再与temp值相或,则相应的端口输出高电平,LED等灭,通过tenp的值左移便可以完成0000 0001 10000000的改变,每改变一次就可以实现相应的LED灯的亮灭。当数据的最高位等于1的时候,temp重新赋初值,即给程序重新赋值为0000 0001,进行下一轮的循环。如此即可以实现实验要求的功能。程序流程图如下图5-1-1所示。图5-1-1 程序流程图5.2 程序源代码 (1)系统初始化子程序DSP28_sysctrl.c#inc
13、lude DSP281x_Device.h#include System.h #pragma CODE_SECTION(InitFlash, ramfuncs);/*-*/*形式参数:void */*返回值:void */*函数描述:初始化系统 */*-*/ void InitSysCtrl(void) DisableDog();/禁止看门狗 InitPll(0x02);/设置系统时钟=XCLKIN*2/2 InitPeripheralClocks();/设置外设时钟 DINT; / 关闭总中断 IER = 0x0000; / 关闭外设中断 IFR = 0x0000; / 清中断标志 Init
14、PieCtrl();/初始化PIE控制寄存器 InitPieVectTable();/使能PIE向量表 /*-*/*形式参数:void */*返回值:void */*函数描述:禁止看门狗 */*-*/ void DisableDog(void) EALLOW; SysCtrlRegs.WDCR= 0x0068; EDIS;/*-*/*形式参数:void */*返回值:void */*函数描述:喂看门狗 */*-*/ void KickDog(void) EALLOW; SysCtrlRegs.WDKEY = 0x0055; SysCtrlRegs.WDKEY = 0x00AA; EDIS; /
15、*-*/*形式参数:void */*返回值:void */*函数描述:设置锁相环倍频系数 */*-*/ void InitPll(Uint16 val) volatile Uint16 iVol; if (SysCtrlRegs.PLLCR.bit.DIV != val) EALLOW; SysCtrlRegs.PLLCR.bit.DIV = val; EDIS; for(iVol= 0; iVol4096; iVol+); /*-*/*形式参数:void */*返回值:void */*函数描述:初始化外设时钟 */*-*/ void InitPeripheralClocks(void) EA
16、LLOW; SysCtrlRegs.HISPCP.all = 0x0001;/设置高速时钟 2分频 SysCtrlRegs.LOSPCP.all = 0x0002;/设置低速时钟 4分频 /使能外围模块时钟 SysCtrlRegs.PCLKCR.bit.EVAENCLK=1; SysCtrlRegs.PCLKCR.bit.EVBENCLK=1; SysCtrlRegs.PCLKCR.bit.SCIAENCLK=1; SysCtrlRegs.PCLKCR.bit.SCIBENCLK=1; SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=1; SysCtrlRegs.PCLKC
17、R.bit.SPIENCLK=1; SysCtrlRegs.PCLKCR.bit.ECANENCLK=1; SysCtrlRegs.PCLKCR.bit.ADCENCLK=1; EDIS;/*-*/*形式参数:void */*返回值:void */*函数描述:初始化Flash */*-*/ void InitFlash(void) EALLOW; FlashRegs.FPWR.bit.PWR = 3;/设置Flash为正常工作状态 FlashRegs.FBANKWAIT.bit.RANDWAIT = 5;/设置随机存取等待时间 FlashRegs.FBANKWAIT.bit.PAGEWAIT
18、= 5;/设置页面存取等待时间 FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;/设置从睡眠到等待的转换时间 FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;/设置从等待到激活的转换时间 FlashRegs.FOPT.bit.ENPIPE = 1;/使能流水线模式 EDIS; asm( RPT #7 | NOP);/软件延时,等待流水线刷新/*-*/*形式参数:void */*返回值:状态值 */*函数描述:unlocks the CSM */*-*/ #define STATUS_FAIL 0#define
19、STATUS_SUCCESS 1Uint16 CsmUnlock() volatile Uint16 temp; / 写入密钥,应将0xFFFF替换成密钥值 EALLOW; CsmRegs.KEY0 = 0xFFFF; CsmRegs.KEY1 = 0xFFFF; CsmRegs.KEY2 = 0xFFFF; CsmRegs.KEY3 = 0xFFFF; CsmRegs.KEY4 = 0xFFFF; CsmRegs.KEY5 = 0xFFFF; CsmRegs.KEY6 = 0xFFFF; CsmRegs.KEY7 = 0xFFFF; EDIS; / 执行空读 temp = CsmPwl.PS
20、WD0; temp = CsmPwl.PSWD1; temp = CsmPwl.PSWD2; temp = CsmPwl.PSWD3; temp = CsmPwl.PSWD4; temp = CsmPwl.PSWD5; temp = CsmPwl.PSWD6; temp = CsmPwl.PSWD7; if (CsmRegs.CSMSCR.bit.SECURE = 0) return STATUS_SUCCESS; else return STATUS_FAIL; (2)程序主函数#include DSP281x_Device.h#include System.h/*端口宏定义*/*常量宏定义
21、*/ /*全局变量定义*/*函数声明*/ void Init_LED(void);/*形式参数:void */*返回值:void */*函数描述:主函数 */void main(void)unsigned int i,j,temp;InitSysCtrl(); / 系统初始化子程序,在DSP28_sysctrl.c中Init_LED();temp=0x0001;while(1)GpioDataRegs.GPBCLEAR.all |=temp;/*向寄存器GPBCLEAR的相应位写1,GPIOBX引脚输出低电平,灯亮*/for(i=0;i10;i+)for(j=0;j60000;j+);Gpio
22、DataRegs.GPBSET.all |=temp;/*向寄存器GPBST的相应位写1,GPIOBX引脚输出高电平,灯灭*/temp=1;if(temp=0x0100)temp=0x0001; /*形式参数:void */*返回值:void */*函数描述:初始化LED端口为输出 */void Init_LED(void)EALLOW; /*写保护*/GpioMuxRegs.GPBDIR.all |=0x00FF;/将GPIOB0GPIOB7引脚配置为输出口EDIS; 六、 实验总结 通过调试以上程序运行无误,利用程序延时,使用数码管显示和接口转换实现了使用dsp芯片设计流水灯。 通过本次课
23、程设计实现了用DSP芯片设计LED流水灯 , 学习到了很多关于DSP 的基础知识。并且更加深刻的巩固了课堂上所学的课本知识,DSP技术有了更进一步的认识和了解。掌握了DSP的基本实验方法,更加深了对CSS软件、protel软件和VISIO软件的使用,提高了工程设计和组织实验能力。通过这次的课程设计,让我明白了,书本上的东西光看看是很难掌握好的,很多东西要理论与实践结合在一起才能算真正的掌握,要通过自己动手去做,去实践,去研究,才能真正的将它转化成自己的东西。能完成这次的课程设计,我要谢谢袁老师在上课时说的,现在才发现这些都是很有用的,在实践中的重要性,是不可缺少的东西,也要谢谢那些给过我意见和帮助的同学,没有他们的意见和帮助,我是很难这么快的完成的。七 参考文献刘和平DSP原理及电机控制应用北京航空航天大学出版社2006年顾卫钢手把手教你学DSP北京航空航天大学出版社2011年 戴明帧 周建江TMS320C2407X DSP结构、原理及应用(第二版)北京航空航天大学出版社 2007
限制150内