基于DSP的流水灯系统设计说明.docx
《基于DSP的流水灯系统设计说明.docx》由会员分享,可在线阅读,更多相关《基于DSP的流水灯系统设计说明.docx(24页珍藏版)》请在冰豆网上搜索。
基于DSP的流水灯系统设计说明
课程设计说明书
题目:
基于DSP的流水灯系统设计
学院:
专业班级:
学号:
学生:
指导教师:
2017年1月13日
理工大学课程设计(论文)任务书
电气与信息工程学院
学号
学生
专业(班级)
题目
基于DSP的流水灯系统设计
设计
技术
参数
1.使用TMS320VC5416作为CPU;
2.具有简单的键盘输入可控制功能;
3.具有存放程序的外部FLASH芯片;
4.外部输入电压+5V电源;
5.设计JTAG接口方便测试以及调试;
6.设计8为数码管显示电路,实现8个流水灯正向反向依次闪烁,时间间隔为0.5s
设计
要求
1.画出最小DSP系统电路图以及控制电路图(电源、存储、JTAG、复位等),使用Protell或者Visio画出硬件设计电路图或者框图;
2.给出系统设计软件流程图以及程序;
3.掌握运用CCS软件实现软件调试以及烧写。
工
作
量
注:
可填写说明书(论文)的字数要求或要完成的图纸数量。
1.不少于3000字;
2.页数不少于8页;
3.给出所有电路图结构图。
工作
计划
1.选择DSP芯片;
2.硬件设计与调试;
3.软件编程与调试;
4.系统集成;
5.系统调试与性能测试;
参考
资料
1.红怡.DSP技术与应用实例.电子工业,2003.6.
2.雄伟.DSP集成开发与应用实例.电子工业,2002.6
3.雄伟.DSP芯片原理的开发与应用.电子工业,2000.2
4.戴逸民.基于DSP的现代电子系统设计.电子工业,2002.12
5.钮心忻,义先.软件无线电技术与应用.邮电,2000.9
6.小牛,楼义才,徐建良.软件无线电原理与应用.电子工业,2001.1
7.红,吴冠.TMS320C54xDSP应用系统设计.航空航天大学,2002.5
指导教师签字
系主任签字
理工大学课程设计成绩评定表
学生:
学号:
专业班级:
课程设计题目:
基于DSP的流水灯系统设计
指导教师评语:
成绩:
指导教师:
年月日
摘要1
第一章TMS320VC5416芯片2
1.1TMS320VC5416芯片特点2
1.中央处理单元2
2.存储器3
3.数据寻址3
4.程序存储器寻址3
5.中断3
6.流水线3
7.运算速度3
8.低功耗方式4
9.片上的外设4
10.JTAG扫描逻辑电路4
1.2TMS320VC5416的指令集4
1.算术指令4
2.逻辑指令5
3.程序控制指令5
4.读取和存储指令5
第二章硬件设计6
2.1整体框图6
2.2电源电路6
2.3存储电路7
2.4时钟电路7
2.5复位电路8
2.6JTAG电路8
2.7键盘电路9
2.8显示模块9
第三章软件设计10
1.1设计流程10
1.2软件设计步骤10
3.2.1进入CCS10
3.2.2新建一个项目10
3.2.3新建一个源文件11
3.2.4在项目中添加源文件11
3.2.5程序代码11
1.初始化程序11
2.主函数程序:
12
3.向量文件13
4.MEMORY程序15
3.2.6对项目进行编译和15
3.2.7装载可执行文件16
3.2.8运行程序并查看结果:
16
设计心得及体会17
摘要
DSP(DigitalSignalProcessing)也就是我们常说的数字信号处理,它是利用计算机或专用处理设备,以数字形式对信号进行采集,变换,滤波,估值,增强,压缩,识别等处理,以得到符合人们需要的信号形式。
DSP的主要应用有数字化移动,数据调制解调器,磁盘/光盘控制器需求,图形图像处理需求,汽车电子系统等。
DSP在航空航天方面,主要用于雷达和声纳信号处理;在通信方面,主要用于移动,IP,ADSL和HFC的信号传输;在控制方面,主要用于电机控制,光驱和因公安驱动器;在电子娱乐方面,主要用于高清晰电视,机顶盒,家庭影院,DVD等应用;还有数字相机,网络相机等等。
可以说没有DSP就没有对互联网的访问,也没有多媒体,也没有无线通信。
随着科学技术的发展,将会出现更多的DSP新应用领域。
本设计使用TMS320VC5416作为CPU,进行基于DSP的流水灯系统设计,要求:
1.具有简单的键盘输入可控制功能;
2.具有存放程序的外部FLASH芯片;
3.外部输入电压+5V电源;
4.设计JTAG接口方便测试以及调试;
5.设计8为数码管显示电路,实现8个流水灯正向反向依次闪烁,时间间隔为0.5s
关键词:
DSP;TMS320VC5416;流水灯;最小系统;JTAG接口
第一章TMS320VC5416芯片
1.1TMS320VC5416芯片特点
本设计用到的芯片是IT公司的TMS320VC5416,其引脚封装图如下所示:
TMS320VC5416是为实现低功耗,高性能而专门设计的定点DSP芯片,它主要应用于无线系统中。
TMS320VC5416基本特点:
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.数据寻址
5416提供了7种数据寻址方式:
立即数寻址;绝对寻址;累加器寻址;直接寻址;间接寻址;存储器映射寄存器寻址;堆栈寻址;
4.程序存储器寻址
使用程序计数器(PC)寻址,但是,对于一些指令需要用到绝对寻址。
5.中断
5416支持软件中断(如INTR,TRAP,RESET)和硬件中断,中断可分为可屏蔽中断(如TINT,INT0等)和不可屏蔽中断(如RESET和NMI),其中RESET的优先级最高,不可屏蔽中断的优先级高于可屏蔽中断的优先级,硬件中断的优先级则高于软件中断的优先级。
6.流水线
5416有6级流水线:
预取指,取指,解码,访问,读取和执行。
7.运算速度
指令周期为25/20/15/12.5/10ns,运算能力为40/50/66/80/100MIPS(百万条指令/秒)。
8.低功耗方式
TMS320VC5416可以在3.3V或2.7V电压下工作,三个低功耗方式(IDLE1,IDLE2和IDLE3)可以节省DSP的功耗,所以它特别适合于无线移动设备。
9.片上的外设
可软件编程的等待状态发生器,使得与速度较慢的设备通讯更加方便;片上的锁相环时钟发生器可以对外部始终信号进行倍频或分频,从而得到自己所需要的时钟频率,当分频时还可节省系统的功耗;可以禁止对外部数据总线,地址总线以及控制信号的控制;可以软件编程的定时器;
10.JTAG扫描逻辑电路
符合国际IEEE1149.1标准的边界扫描逻辑接口,即JTAG扫描逻辑电路,用于仿真和测试,可以实现在线仿真。
1.2TMS320VC5416的指令集
5416的指令可以分为四个大类:
算术指令,逻辑指令,程序控制指令,读取和存储指令
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个指令周期。
第二章硬件设计
2.1整体框图
2.2电源电路
2.3存储电路
2.4时钟电路
2.5复位电路
2.6JTAG电路
2.7键盘电路
2.8显示模块
第三章软件设计
1.1设计流程
1.2软件设计步骤
3.2.1进入CCS
用仿真机将计算机与ZY13DSP12BD实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。
3.2.2新建一个项目
点击Project-New,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
3.2.3新建一个源文件
点击File-New-SourceFile可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(main),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型)。
3.2.4在项目中添加源文件
在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。
添加方法是在工程管理器中右键单击LED.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的main.asm文件添加到该项目中去。
3.2.5程序代码
输入以下程序代码:
1.初始化程序
.mmregs
.includec54.inc
.defc54init
.sect"progsys"
c54init:
STM#0x7208,SWWSR;0111001000001000
STM#0,SWCR
STM#0xF800,BSCR;1111100000000000
STM#0,ST0
STM#0x2b00,ST1;0010101100000000
STM#0x2fe4,PMST;0010111111100100
STM#0xFFFF,IFR
STM#0x0000,IMR;关闭所有中断
STM#0,CLKMD
clkcon:
LDMCLKMD,A
AND#0x01,A
BCclkcon,ANEQ
STM#0x43ff,CLKMD;0100001111111111
STM#0x0010,TCR1;timer1stop
STM#0x0010,TCR;TSS=1Timerstop
STM#12800,PRD
STM#0x0020,TCR
RSBXINTM
NOP
NOP
RET
.end
2.主函数程序:
.mmregs
.ref_c_int00
.includec54.inc
.refc54init
;数码管地址
Digital0.set0x0010
Digital1.set0x0011
Digital2.set0x0012
Digital3.set0x0013
Digital4.set0x0014
Digital5.set0x0015
Digital6.set0x0016
Digital7.set0x0017
.data
DATA:
.word80FCH,8060H,80DAh,80F2h,8066H,80B6H,80BEH,80E0H;测试数据
.sect"progsys"
.align0x10
_c_int00:
STM#0x0f80,SP
CALLc54init
LD#DATA,DP
LOOP:
STM#DATA+7,AR1
PORTW*AR1-,Digital7
CALLDelay
PORTW*AR1-,Digital6
CALLDelay
PORTW*AR1-,Digital5
CALLDelay
PORTW*AR1-,Digital4
CALLDelay
PORTW*AR1-,Digital3
CALLDelay
PORTW*AR1-,Digital2
CALLDelay
PORTW*AR1-,Digital1
CALLDelay
PORTW*AR1-,Digital0
CALLDelay
BLOOP
Delay:
STM#999,AR3;循环次数1000
LOOP1:
STM#999,AR2;循环次数1000
LOOP2:
BANZLOOP2,*AR2-;如果AR2不等于0,AR2减1,再判断
BANZLOOP1,*AR3-;如果AR1不等于0,AR1减1,跳转到LOOP1
RET
.end
3.向量文件
****************************vectors.asm****************
*PlugintheentrypointatRESETintheinterruptvectortable
*
*
.includec54.inc
.sect".vectors"
.ref_c_int00
;mainprogrom
;.reftimer0,hpisys,usb_read
.align0x80;mustbealignedonpageboundary
RESET:
;resetvector
B_c_int00;branchtomainprogrom
NOP
NOP
nmi:
RETE;enableinterruptsandreturnfromone
NOP
NOP
NOP;NMI~
;softwareinterrupts
sint17.space4*16
sint18.space4*16
sint19.space4*16
sint20.space4*16
sint21.space4*16
sint22.space4*16
sint23.space4*16
sint24.space4*16
sint25.space4*16
sint26.space4*16
sint27.space4*16
sint28.space4*16
sint29.space4*16
sint30.space4*16
int0:
RETE
NOP
NOP
NOP
int1:
RETE
NOP
NOP
NOP
int2:
RETE
NOP
NOP
NOP
tint:
RETE
NOP
NOP
NOP
rint0:
RETE
NOP
NOP
NOP
xint0:
RETE
NOP
NOP
NOP
DMAC0:
RETE
NOP
NOP
NOP
DMAC1:
RETE;tint1
NOP
NOP
NOP
int3:
RETE
NOP
NOP
NOP
HPINT:
RETE
NOP
NOP
NOP
DMAC2:
RETE;rint1
NOP
NOP
NOP
NOP
xint1:
RETE
NOP
NOP
NOP
DMAC4:
RETE
NOP
NOP
NOP
DMAC5:
RETE
NOP
NOP
NOP
.end
4.MEMORY程序
-msensor.map
MEMORY
{
PAGE0:
PROG:
origin=0x2000,len=0x0f80/*8k-128word*/
VECT:
origin=0x2f80,len=0x80/*128word*/
PAGE1:
DRAM:
origin=0x3000,len=0xf80/*4kword*/
}
SECTIONS
{
.progsys:
load=PROGPAGE0
.vectors:
load=VECTPAGE0
.data:
load=DRAMPAGE1align16
}
3.2.6对项目进行编译和
点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行,生成*.out文件。
3.2.7装载可执行文件
要让程序代码在DSP部运行必需将生成的*.OUT文件装载到DSP部,装载方法是点击:
File-LoadPrograme再选择生成的LED.out文件就可以将程序装载到DSP的部存储器中。
3.2.8运行程序并查看结果:
点击Debug-Run让程序在DSP部运行。
结果如下图:
设计心得及体会
为期两周的DSP课程设计结束了,在这次课程设计过程中,我学会了很多课本以外的东西,获得了许多难能可贵的经验。
通过这次的课程设计,提高自己动手能力的同时也学到了很多有关方面的知识,对DSP有了更深入的理解,巩固了以前学到的知识,是自己更加充实。
通过调试以上程序运行无误,完成了流水灯要求,使用DSP芯片设计流水灯;使用数码管显示;利用程序延时,接口转换实现流水灯。
通过本次课程设计实现了用DSP芯片设计流水灯,学习到了很多关于DSP的基础知识。
并且更加深刻的巩固了课堂上所学的课本知识,DSP技术有了更进一步的认识和了解。
掌握了DSP的基本实验方法,提高了工程设计和组织实验能力。
通过这次课程设计,我学会了原理图的绘制,元件的生成与调用,学会了流程图的绘制,这些技术的掌握对以后的工作、学习都有很大的帮助。
在这次课程设计中,通过自己查找相关资料,遇到问题积极解决,与同学积极讨论,最终完成了课程设计,我也体会到了成功的喜悦。