基于TMS320C54x流水灯设计.docx

上传人:b****7 文档编号:10798783 上传时间:2023-02-23 格式:DOCX 页数:21 大小:803.66KB
下载 相关 举报
基于TMS320C54x流水灯设计.docx_第1页
第1页 / 共21页
基于TMS320C54x流水灯设计.docx_第2页
第2页 / 共21页
基于TMS320C54x流水灯设计.docx_第3页
第3页 / 共21页
基于TMS320C54x流水灯设计.docx_第4页
第4页 / 共21页
基于TMS320C54x流水灯设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于TMS320C54x流水灯设计.docx

《基于TMS320C54x流水灯设计.docx》由会员分享,可在线阅读,更多相关《基于TMS320C54x流水灯设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于TMS320C54x流水灯设计.docx

基于TMS320C54x流水灯设计

【摘要】DSP(DigitalSignalProcessing)也就是我们常说的数字信号处理,它是利用计算机或专用处理设备,以数字形式对信号进行采集,变换,滤波,估值,增强,压缩,识别等处理,以得到符合人们需要的信号形式。

一DSP芯片

1.1DSP芯片特点

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

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

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

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

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

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

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

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

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

可以并行执行多个操作。

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

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

1.2DSP芯片分类

DSP芯片可以按照下列三种方式进行分类。

1.按基础特性分

这是根据DSP芯片的工作时钟和指令类型来分类的。

如果在某时钟频率范围内的任何时钟频率上,DSP芯片都能正常工作,除计算速度有变化外,没有性能的下降,这类DSP芯片一般称为静态DSP芯片。

例如,日本OKI电气公司的DSP芯片、TI公司的TMS320C2XX系列芯片属于这一类

如果有两种或两种以上的DSP芯片,它们的指令集和相应的机器代码机管脚结构相互兼容,则这类DSP芯片称为一致性DSP芯片。

例如,美国TI公司的TMS320C54X就属于这一类。

2.按数据格式分

这是根据DSP芯片工作的数据格式来分类的。

数据以定点格式工作的DSP芯片称为定点DSP芯片,如TI公司的TMS320C1X/C2X、TMS320C2XX/C5X、TMS320C54X/C62XX系列,AD公司的ADSP21XX系列,AT&T公司的DSP16/16A,Motolora公司的MC56000等。

以浮点格式工作的称为浮点DSP芯片,如TI公司的TMS320C3X/C4X/C8X,AD公司的ADSP21XXX系列,AT&T公司的DSP32/32C,Motolora公司的MC96002等。

不同浮点DSP芯片所采用的浮点格式不完全一样,有的DSP芯片采用自定义的浮点格式,如TMS320C3X,而有的DSP芯片则采用IEEE的标准浮点格式,如Motorola公司的MC96002、FUJITSU公司的MB86232和ZORAN公司的ZR35325等。

3.按用途分

按照DSP的用途来分,可分为通用型DSP芯片和专用型DSP芯片。

通用型DSP芯片适合普通的DSP应用,如TI公司的一系列DSP芯片属于通用型DSP芯片。

专用DSP芯片是为特定的DSP运算而设计的,更适合特殊的运算,如数字滤波、卷积和FFT,如Motorola公司的DSP56200,Zoran公司的ZR34881,Inmos公司的IMSA100等就属于专用型DSP芯片。

1.3DSP芯片应用

在近20年里,DSP芯片在信号处理,通信,雷达等许多领域得到广泛的应用。

目前,DSP芯片的价格越来越低,性能价格比日益提高,具有巨大的应用潜力。

它的应用主要有:

1.信号处理---如数字滤波,快速傅立叶变换,相关运算,谱分析,卷积,模式匹配,加窗,波形产生等;

2.通信---如调制解调器,自适应均衡,数据加密,数据压缩,回波抵消,多路复用,传真,扩频通信,纠错编码,可视电话等;

3.语音---如语音编码,语音合成,语音识别,语音增强,说话人辨认,说话人确认,语音邮件,语音存储等;

4.图形/图像---如二维和三维图形处理,图像压缩与传输,图像增强,动画,机器人视觉等;

5.军事---如保密通信,雷达处理,声纳处理,导航,导弹制导等;

6.仪器仪表---如频谱分析,函数发生,锁相环,地震处理等;

7.自动控制---如引擎控制,声控,自动驾驶,机器人控制,磁盘控制等;

8.医疗---如助听,超声设备,诊断工具,病人监护等;

9.家用电器---如高保真音响,音乐合成,音调控制,玩具与游戏,数字电话/电视等。

二TMS320C54x芯片介绍

2.1TMS320C54x芯片特点

本设计用到的芯片是IT公司的TMS320C54x。

TMS320C54x是为实现低功耗,高性能而专门设计的定点DSP芯片,它主要应用于无线系统中。

TMS320C54x基本特点:

1.中央处理单元

先进的多总线结构,有一条程序总线(PB),三条数据总线(CB,DB和EB)和四条地址总线(PAB,CAB,DAB和EAB);1个40位的算术逻辑单元(ALU),1个40位的桶形移位器和2个独立的40位累加器A和B;1个17x17的乘法器和两个40位加法器,乘法器可以耦合到加法器以完成单周期的MAC指令;内部集成了维特比加速器以及与它相关的比较,选择和存储单元(CSSU);指数编码器用来在单周期内计算40位累加器值的指数;2个地址产生器,其中包括8个辅助寄存器和2个辅助寄存器运算单元。

2.存储器

192Kx16-bit可寻址存储空间,其中包括64K字程序空间,64K字数据空间和64K字I/O空间,对于548,549,5402和5410还可以外部扩展程序空间

3.数据寻址

54X提供了7种数据寻址方式:

立即数寻址;

绝对寻址;

累加器寻址;

直接寻址;

间接寻址;

存储器映射寄存器寻址;

堆栈寻址;

4.程序存储器寻址

使用程序计数器(PC)寻址,但是,对于一些指令需要用到绝对寻址。

5.中断

54X支持软件中断(如INTR,TRAP,RESET)和硬件中断,中断可分为可屏蔽中断(如TINT,INT0等)和不可屏蔽中断(如RESET和NMI),其中RESET的优先级最高,不可屏蔽中断的优先级高于可屏蔽中断的优先级,硬件中断的优先级则高于软件中断的优先级。

6.流水线

54X有6级流水线:

预取指,取指,解码,访问,读取和执行。

7.运算速度

指令周期为25/20/15/12.5/10ns,运算能力为40/50/66/80/100MIPS(百万条指令/秒)。

8.低功耗方式

TMS320C54X可以在3.3V或2.7V电压下工作,三个低功耗方式(IDLE1,IDLE2和IDLE3)可以节省DSP的功耗,所以它特别适合于无线移动设备。

9.片上的外设

可软件编程的等待状态发生器,使得与速度较慢的设备通讯更加方便;片上的锁相环时钟发生器可以对外部始终信号进行倍频或分频,从而得到自己所需要的时钟频率,当分频时还可节省系统的功耗;可以禁止对外部数据总线,地址总线以及控制信号的控制;可以软件编程的定时器;

10.符合国际IEEE1149.1标准的边界扫描逻辑接口,即JTAG扫描逻辑电路,用于仿真和测试,可以实现在线仿真。

2.2TMS320C54X的指令集

54X的指令可以分为四个大类:

算术指令,逻辑指令,程序控制指令,读取和存储指令

1.算术指令

包括了加法指令(ADD...),减法指令(SUB...),乘法指令(MPY...),乘加指令(MAC...)和乘减指令(MAS...),32位操作数指令(DADD,DSUB...)和一些专用指令(ABDST,FIRS,SQDST...)。

其中大部分指令都只需要一个指令周期,只有个别指令需要2-3个指令周期。

2.逻辑指令

包括了与指令(AND...),或指令(OR...),异或指令(XOR...),移位指令(ROL...)和测试指令(BITF...)。

根据操作数的不同,这些指令需要1-2个指令周期。

3.程序控制指令

包括了转移指令(B,BC...),调用指令(CALL...),中断指令(INTR,TRAP),返回指令(RET...),重复指令(RPT...),堆栈操作指令(FRAME,POPD...)和其它程序控制指令(IDLE,NOP...)。

这些指令根据情况不同分别需要1-6个指令周期。

4.读取和存储指令

包括了读取指令(LD...),存储指令(ST...),条件存储指令(CMPS,SACCD...),并行的读取和乘法指令(LD||MAC...),并行的读取和存储指令(ST||LD...),并行的存储和乘法指令(ST||MAC...),并行的读取和加减指令(LD||ADD,LD||SUB)以及其它读取类型和存储类型指令(MVDD,PORTW,READA...)。

这些指令根据情况不同分别需要1-5个指令周期。

TMS320C54x的引脚图:

三整体设计

3.1原理:

通过对DSP结构、原理及应用的学习。

在初步了解DSP结构和原理的基础上,进行简单的应用实验,掌握DSP的基本应用。

通过熟悉DSP模板的内部结构以及CCS软件,掌握DSP语言编程和调试方法,了解DSP的指令和I/O端口的寄存器的配置,并结合DSP实验模板对DSP进行编程控制数字输入/输出端口点亮LED显示管。

1.时钟电路:

时钟信号的产生的两种方法:

一是使用外部时钟源的时钟信号。

外部时钟源可以采用频率稳定的晶体振荡器,使用方便,价格便宜,因而得到广泛应用。

二是利用DSP芯片内部的振荡器构成时钟电路。

2.复位电路:

复位电路的作用是确保微机系统中电路稳定可靠工作,复位状态决定了芯片的最初情况。

利用RC电路的延迟特性给出复位需要的低电平时间。

在上电瞬间,由于电容C上的电压不能突变,所以通过电阻R进行充电,充电时间由RC的乘积值决定。

3.JTAG仿真接口电路:

仿真电缆和DSPJTAG测试口的连接是通过一个14脚的插头座(仿真头)来实现的。

3.2CCS软件设计:

DSP实验室开发平台有八个LED,LED低电平为亮,高电平为灭。

CCS软件编译步骤:

打开CCS软件,建立工程、新建文件并编译链接。

下载.out文件到实验平台:

File→LoadProgram

Debug→Run。

运行实验平台的程序,查看LED的亮灭:

程序实现的LED流水灯功能是:

全亮:

前四个灯亮:

后四个灯亮:

第一个和第八个亮:

第二个和第七个亮:

第三个和第六个亮:

第四个和第五个亮:

第四个和第五个亮:

第三个和第六个亮:

第二个和第七个亮:

第一个和第八个亮:

程序如下:

/************************文件预处理***************************/

#include"tms320uc5402.h"

/*************************************************************/

/********************全局变量定义与初始化*********************/

ioportunsignedport8001;

unsignedintshow=0x00aa;

unsignedintnum=0x0000;

Unsignedchar

a[]={0x0000,0x000f,0x00f0,0x007e,0x00bd,0x00db,0x00e7,0x00e7,0x00db,0x00bd,0x007e};

/*************************************************************/

/*******************函数、子程序声明与定义********************/

voidsys_ini()//系统初始化子程序

{

asm("ssbxINTM");//全局禁止所有可屏蔽中断

PMST&=0x00FF;//(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间

SWWSR=0x7000;//io空间7个等待周期,程序与数据空间0个等待周期

CLKMD=0x17FA;//CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间

}

voidtimer0_ini()//定时器0初始化子程序

{

TCR|=0x0010;//停止定时器0

PRD=0x2710;//PRD=10000(D)

TCR|=0x000A;//TDDR=10(D),所以定时器时钟=1/(20M/10/10000)=5ms

IMR=0x0008;//使能定时器0中断

IFR=0xFFFF;//清除所有中断标志位

asm("rsbxINTM");//全局使能可屏蔽中断

TCR&=0xFFEF;//开始定时器0

TCR|=0x0020;//复位定时起0

}

/*************************************************************/

/*************************************************************/

/*************************************************************/

/*****************中断服务子程序声明与定义********************/

interruptvoidtimer0()

{

if(num==100)

{

show=a[0];//全亮

num++;

}

elseif(num==200)

{

show=a[1];//前四个灯亮

num++;

}

elseif(num==300)

{

show=a[2];//后四个灯亮

num++;

}

elseif(num==500)

{

show=a[3];//第一个和第八个亮

num++;

}

elseif(num==600)

{

show=a[4];//第二个和第七个亮

num++;

}

elseif(num==700)

{

show=a[5];//第三个和第六个亮

num++;

}

elseif(num==800)

{

show=a[6];//第四个和第五个亮

num++;

}

elseif(num==900)

{

show=a[7];//第四个和第五个亮

num++;

}

elseif(num==1000)

{

show=a[8];//第三个和第六个亮

num++;

}

elseif(num==1100)

{

show=a[9];//第二个和第七个亮

num++;

}

elseif(num==1200)

{

show=a[10];//第一个和第八个亮

num=0;

}

num++;

return;

}

/*************************************************************/

/**************************主程序*****************************/

voidmain(void)

{

sys_ini();

timer0_ini();

for(;;)

{

port8001=show;

}

}

/***************************结束******************************/

 

四CCS集成开发工具与测试

4.1CCS是什么

通常,DSP厂商和第三方都会为DSP的开发应用提供各种各样的软硬件开发工具(代码生成工具和代码调试工具等)。

早期的DSP开发工具没有集成化,需要在DOS环境下键入比较复杂的命令,使用起来不很方便,调试、开发的效率也不高。

1999年,TI公司推出了CCS(CodeComposerStudio)集成开发工具(直译为代码设计工作室),为DSP用户提供了十分便利的开发环境。

CCS内部集成了以下软件工具:

◆DSP代码生成工具(包括DSP的C编译器、汇编优化器、汇编器和链接器等)

◆CCS集成开发工具(编辑、链接和调试DSP目标程序)。

◆实时分析插件DSP/BIOS和实时数据交换模块RTDX等(必须有硬件开发板)。

CCS是一种可视化集成开发工具,它集代码生成软件和代码调试工具

于一体,具有强大的应用开发功能:

可视化代码编辑界面:

可以直接编写汇编语言和C语言程序、.H头文件和.CMD命令文件等。

代码生成工具:

包括DSP的汇编器、C编译器和链接器等。

各种调试工具:

包括加载执行文件、运行、单步操作、设置断点、查看编辑存储器和寄存器、观察变量、评估程序和执行时间等。

探针工具:

可将PC机数据文件中的数据传到DSP,或者将DSP中数据传到PC机数据文件中,以便实现各种算法仿真和数据监视。

图形显示工具:

可以将DSP程序生成的数据绘制成时域/频域图等,以便于观察和分析。

通用扩展语言GEL:

可以让用户通过GEL语言编程,建立需要的GEL函数来扩展CCS的功能,包括配置各种参数、修改变量等。

DSP/BIOS工具:

它是DSP芯片简化了的操作系统内核,即各种DSP芯片操作系统的底层文件,为嵌入式系统应用提供基本的运行服务,具有代码较少、逻辑精简等优点。

开放式的插入架构技术:

只需安装相应的驱动程序,就能够集成第三方的专用插件。

4.2CCS窗口简介

CCS系统设置完成后,就可以打开CCS应用程序,在CCS集成开发环境下完成工程定义,程序的编辑、编译、链接和调试,以及程序运行结果的分析和评估等工作。

一个典型的CCS集成开发环境住窗口如下图所示。

该示例窗口由菜单栏、工具栏、工程窗口、源程序编辑和调试窗口、存储器窗口、CPU寄存器窗口、输出窗口等组成。

此外,还可以根据需要打开反汇编窗口、图形显示窗口、变量观察窗口,以及时钟窗口等。

4.3CCS中常用的工具

菜单栏——和CCS所有功能相关的菜单都在这里面。

编译工具栏——编译程序时常用的一些工具。

调试工具栏——调试程序时常用的一些工具。

工程文件框——打开的工程所有文件会按类别放在这里,便于我们编程时在各个文件之间的切换。

代码编辑区——顾名思义,代码都是在这里编辑完成的了,是我们最主要的工作区域。

编译信息输出区——编译时产生的信息会在这个区域内输出,能让我们直观的了解到正在编译哪个文件,编译过程中是否产生了错误,而这些错误是哪些,由于什么原因引起的,这些内容都会显示在这里。

五课程设计总结体会

通过这次的课程设计,提高自己动手能力的同时也学到了很多有关方面的知识,对DSP有了更深入的理解,巩固了以前学到的知识,是自己更加充实。

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

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

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

掌握了DSP的基本实验方法,提高了工程设计和组织实验能力。

【参考文献】张卫宁《DSP原理与应用教程》科学出版社

丁玉美《数字信号处理》西安电子科技大学出版社

张刚毅《DSP原理、开发与应用》哈尔滨工业大学出版社(第二版)

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

当前位置:首页 > 工程科技 > 机械仪表

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

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