DSP课程设计心得模版.docx

上传人:b****9 文档编号:24946162 上传时间:2023-06-03 格式:DOCX 页数:20 大小:211.71KB
下载 相关 举报
DSP课程设计心得模版.docx_第1页
第1页 / 共20页
DSP课程设计心得模版.docx_第2页
第2页 / 共20页
DSP课程设计心得模版.docx_第3页
第3页 / 共20页
DSP课程设计心得模版.docx_第4页
第4页 / 共20页
DSP课程设计心得模版.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

DSP课程设计心得模版.docx

《DSP课程设计心得模版.docx》由会员分享,可在线阅读,更多相关《DSP课程设计心得模版.docx(20页珍藏版)》请在冰豆网上搜索。

DSP课程设计心得模版.docx

DSP课程设计心得模版

课程设计说明书

实验课程:

DSP技术及其应用

实验内容:

基于TMS320的Led显示控制系统设计

院(系):

计算机学院

专业:

通信工程

2014年7月5日

 

一、设计任务………………………………………………………………………1

二、实验目的………………………………………………………………………1

三、设计内容………………………………………………………………………2

4、实验原理………………………………………………………………………2

4.1DSP(2812)性能概述……………………………………………………2

4.2TMS320F2812的引脚图及功能……………………………………………4

4.3DSP最小系统………………………………………………………………4

5、程序设计………………………………………………………………………7

5.1流程图………………………………………………………………………7

5.2程序源代码…………………………………………………………………8

六、实验总结………………………………………………………………………13

七、参考资料………………………………………………………………………14

 

序言

DSP芯片的特点

DSP芯片,也称数字信号处理器,是一种具有特殊结构的微处理器。

DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。

根据数字信号处理的要求,DSP芯片一般具有如下的一些主要特点:

在一个指令周期内可完成一次乘法和一次加法。

程序和数据空间分开,可以同时访问指令和数据。

片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问。

具有低开销或无开销循环及跳转的硬件支持。

快速的中断处理和硬件I/O支持。

具有在单周期内操作的多个硬件地址产生器。

可以并行执行多个操作。

支持流水线操作,使取指、译码和执行等操作可以重叠执行。

与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

一、设计任务:

1、基于TMS320X2812的Led流水灯显示控制系统设计

要求:

(1)绘制系统框图(VISIO);

(2)包括复位电路设计、JTAG接口设计、时钟电路设计、电源设计等,并且用Protel软件绘制原理图;

(3)编写程序,实现流水灯;

(4)系统理论分析和设计陈述;

(5)设计过程、源代码和注释、设计说明书。

二、实验目的:

⑴学习并了解DSP开发版的基本原理;

⑵学习并了解TMS320X2812芯片的基本结构和原理;

⑶熟悉流水灯的软件实现原理和硬件设计;

⑷熟悉Emulator方式下的程序调试规程,并最终能够熟练掌握在DSP软硬件环境下的程序开发流程;能够对现有器件进行简单地编程,实现各种简单地显示控制;

(5)熟练CCS软件及使用VISIO画系统流程图。

三、设计内容:

(1)使用AltiumDesigner软件绘制原理图。

(2)使用VISIO软件绘制系统框图和软件流程图。

(3)使用CCStudiov3.3软件设计程序实现流水灯。

四、实验原理:

4.1DSP(2812)性能概述

1、F2812DSP芯片采用高性能静态CMOS技术

(1)主频高达150MHz,每个时钟周期为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)OTPROM空间大小1KX16b。

(3)L0、L1两块4KX16b单地址寻址随机存储器(SARAM)。

(4)H0:

一块8KX16b随机存储器(SARAM)。

(5)M0、M1:

两块1KX16bSARAM。

5、BootROM空间

空间大小为4KX16b,内含软件启动模式以及标准数学函数库。

6、外部接口

(1)高达1MX16b的总存储空间。

(2)可编程的等待时间。

(3)可编程的等待读写时序。

(4)3个独立的片选信号。

7、时钟和系统控制

(1)支持动态锁相环倍频。

(2)片内振荡器。

(3)内含看门狗定时模块。

8、3个外部中断

9、外设中断模块(PIE)可以支持45个外设中断

10、3个32位CPU定时器

11、128位安全密钥

(1)可以包含FlashROMOTP以及L0L1SARAM。

(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)支持硬件仿真。

17、开发工具

(1)DSP集成环境CCS。

(2)JTAG仿真器。

18、低电模式和电源存储

(1)支持IDLE、STANDBY、HALT模式。

(2)禁止/使能独立外设时钟。

19、封装

(1)179引脚BGA封装,带扩展存储接口。

(2)176引脚PGF封装,带扩展存储接口。

4.2TMS320F2812的引脚图及功能

如图4-2-1为TMS320F2812引脚图以及各个引脚的作用。

图4-2-1

4.3DSP最小系统

系统整体框图如下图4-3-1所示。

图4-3-1系统整体框图

1、电源转换

DSP最小系统仅有5V电源供电,由于DSP芯片供电电压只能是3.3V,所以在设计电路时,需要将5V电源转换为3.3V给CPU供电,因此使用了TI公司的5V/3V的TPS7333Q高性能稳压芯片,并可提供上电复位信号,该信号/RS—DSP接到DSP的复位引脚上。

该芯片最大输出电流500mA。

TPS7333Q输出后的10μf和0.1μf的电容不能省略,否则得不到稳定的3.3V电压。

图4-3-2为电源转换原理图。

图4-3-2电源转换原理图

2、复位电路

DSP系统的复位电路的设计对于系统性能有重要影响。

DSP2812为低电平复位,由于内部有复位电路,所以直接在复位引脚/xrs接一个10K的上拉电阻即可;有些电源芯片有复位引脚,可用于DSP的直接复位。

复位电路原理图如图4-3-3所示:

图4-3-3复位电路原理图

3、时钟电路

TMS320F2812DSP的时钟可以有两种连接方式,即外部振荡器方式和谐振器方式。

有源晶振驱动能力较强,频率范围较宽,在1HZ—400MHZ之间。

无源晶振驱动能力差,价格便宜,频率范围较窄。

本文采用的是外部有源时钟方式,直接选择一个3.3V供电的30MHz有源晶振实现。

晶振电路如图4-3-4所示。

图4-3-4时钟电路

4、JTAG仿真接口电路

几乎所有的高速控制器和可编程器件都配有标准仿真接口JTAG,F2812也不例外。

JTAG扫描逻辑电路用于仿真和测试,采用JTAG可实现在线仿真,同时也.是调试过程装载数据、代码的唯一通道。

通过JTAG接口可将仿真器与目标系统相连接。

为了与仿真器通信,DSP控制板必须带有14引脚的双排直插管座。

F2812和14针仿真插座连接的电路如图4-3-5。

图4-3-5JTAG接口设计电路

5、流水灯控制系统电路

流水灯控制电路如下图4-3-6所示。

图4-3-6流水灯电路图

五、程序设计:

5.1程序流程图

这里用软件延时的方法来调整发光二极管的延时时间间隔。

当发光二极管被点亮之后,通过改变端口的数据输出,达到点亮不同的LED显示管的目的。

实验要求实现LED显示管的循环显示:

先第1个LED亮,然后是第2个LED亮,第3个LED显示管亮。

第4个灯亮。

如此循环显示。

首先给temp赋初值00000001(由于高八位都为00000000,这里只写低八位),再给寄存器GPBCLEAR的值与temp的值相或,其相应位被写1,实现相应的端口输出低电平,LED灯亮,通过寄存器GPBSET的值再与temp值相或,则相应的端口输出高电平,LED等灭,通过tenp的值左移便可以完成00000001……10000000的改变,每改变一次就可以实现相应的LED灯的亮灭。

当数据的最高位等于1的时候,temp重新赋初值,即给程序重新赋值为00000001,进行下一轮的循环。

如此即可以实现实验要求的功能。

程序流程图如下图5-1-1所示。

图5-1-1程序流程图

5.2程序源代码

(1)系统初始化子程序DSP28_sysctrl.c

#include"DSP281x_Device.h"

#include"System.h"

#pragmaCODE_SECTION(InitFlash,"ramfuncs");

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

初始化系统*/

/*------------------------------------------*/

voidInitSysCtrl(void)

{

DisableDog();//禁止看门狗

InitPll(0x02);//设置系统时钟=XCLKIN*2/2

InitPeripheralClocks();//设置外设时钟

DINT;//关闭总中断

IER=0x0000;//关闭外设中断

IFR=0x0000;//清中断标志

InitPieCtrl();//初始化PIE控制寄存器

InitPieVectTable();//使能PIE向量表

}

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

禁止看门狗*/

/*------------------------------------------*/

voidDisableDog(void)

{

EALLOW;

SysCtrlRegs.WDCR=0x0068;

EDIS;

}

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

喂看门狗*/

/*------------------------------------------*/

voidKickDog(void)

{

EALLOW;

SysCtrlRegs.WDKEY=0x0055;

SysCtrlRegs.WDKEY=0x00AA;

EDIS;

}

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

设置锁相环倍频系数*/

/*------------------------------------------*/

voidInitPll(Uint16val)

{

volatileUint16iVol;

if(SysCtrlRegs.PLLCR.bit.DIV!

=val)

{

EALLOW;

SysCtrlRegs.PLLCR.bit.DIV=val;

EDIS;

for(iVol=0;iVol<4096;iVol++);

}

}

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

初始化外设时钟*/

/*------------------------------------------*/

voidInitPeripheralClocks(void)

{

EALLOW;

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.PCLKCR.bit.SPIENCLK=1;

SysCtrlRegs.PCLKCR.bit.ECANENCLK=1;

SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;

EDIS;

}

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

初始化Flash*/

/*------------------------------------------*/

voidInitFlash(void)

{

EALLOW;

FlashRegs.FPWR.bit.PWR=3;//设置Flash为正常工作状态

FlashRegs.FBANKWAIT.bit.RANDWAIT=5;//设置随机存取等待时间

FlashRegs.FBANKWAIT.bit.PAGEWAIT=5;//设置页面存取等待时间

FlashRegs.FSTDBYWAIT.bit.STDBYWAIT=0x01FF;//设置从睡眠到等待的转换时间

FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT=0x01FF;//设置从等待到激活的转换时间

FlashRegs.FOPT.bit.ENPIPE=1;//使能流水线模式

EDIS;

asm("RPT#7||NOP");//软件延时,等待流水线刷新

}

/*------------------------------------------*/

/*形式参数:

void*/

/*返回值:

状态值*/

/*函数描述:

unlockstheCSM*/

/*------------------------------------------*/

#defineSTATUS_FAIL0

#defineSTATUS_SUCCESS1

Uint16CsmUnlock()

{

volatileUint16temp;

//写入密钥,应将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.PSWD0;

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)

returnSTATUS_SUCCESS;

else

returnSTATUS_FAIL;

}

(2)程序主函数

#include"DSP281x_Device.h"

#include"System.h"

/****************端口宏定义*****************/

/****************常量宏定义*****************/

/***************全局变量定义****************/

/****************函数声明*******************/

voidInit_LED(void);

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

主函数*/

voidmain(void)

{

unsignedinti,j,temp;

InitSysCtrl();//系统初始化子程序,在DSP28_sysctrl.c中

Init_LED();

temp=0x0001;

while

(1)

{

GpioDataRegs.GPBCLEAR.all|=temp;/*向寄存器GPBCLEAR的相应位写1,GPIOBX引脚输出低电平,灯亮*/

for(i=0;i<10;i++)

for(j=0;j<60000;j++);

GpioDataRegs.GPBSET.all|=temp;/*向寄存器GPBST的相应位写1,GPIOBX引脚输出高电平,灯灭*/

temp<<=1;

if(temp==0x0100)

temp=0x0001;

}

}

/*形式参数:

void*/

/*返回值:

void*/

/*函数描述:

初始化LED端口为输出*/

voidInit_LED(void)

{

EALLOW;/*写保护*/

GpioMuxRegs.GPBDIR.all|=0x00FF;//将GPIOB0~GPIOB7引脚配置为输出口

EDIS;

}

六、实验总结

通过调试以上程序运行无误,利用程序延时,使用数码管显示和接口转换实现了使用dsp芯片设计流水灯。

通过本次课程设计实现了用DSP芯片设计LED流水灯,学习到了很多关于DSP的基础知识。

并且更加深刻的巩固了课堂上所学的课本知识,DSP技术有了更进一步的认识和了解。

掌握了DSP的基本实验方法,更加深了对CSS软件、protel软件和VISIO软件的使用,提高了工程设计和组织实验能力。

通过这次的课程设计,让我明白了,书本上的东西光看看是很难掌握好的,很多东西要理论与实践结合在一起才能算真正的掌握,要通过自己动手去做,去实践,去研究,才能真正的将它转化成自己的东西。

能完成这次的课程设计,我要谢谢袁老师在上课时说的,现在才发现这些都是很有用的,在实践中的重要性,是不可缺少的东西,也要谢谢那些给过我意见和帮助的同学,没有他们的意见和帮助,我是很难这么快的完成的。

 

七参考文献

刘和平《DSP原理及电机控制应用》北京航空航天大学出版社2006年

顾卫钢《手把手教你学DSP》北京航空航天大学出版社2011年

戴明帧周建江《TMS320C2407XDSP结构、原理及应用》(第二版)

北京航空航天大学出版社2007

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1