基于TMS320C54x流水灯设计.docx
《基于TMS320C54x流水灯设计.docx》由会员分享,可在线阅读,更多相关《基于TMS320C54x流水灯设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于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原理、开发与应用》哈尔滨工业大学出版社(第二版)