基于DSP的流水灯系统设计.docx
《基于DSP的流水灯系统设计.docx》由会员分享,可在线阅读,更多相关《基于DSP的流水灯系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
![基于DSP的流水灯系统设计.docx](https://file1.bdocx.com/fileroot1/2023-2/3/70714d32-6333-4b00-b03d-e06c3abddf1f/70714d32-6333-4b00-b03d-e06c3abddf1f1.gif)
基于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的流水灯系统设计
指导教师评语:
成绩:
指导教师:
年月日
摘要
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的基本实验方法,提高了工程设计和组织实验能力。
通过这次课程设计,我学会了原理图的绘制,元件的生成与调用,学会了流程图的绘制,这些技术的掌握对以后的工作、学习都有很大的帮助。
在这次课程设计中,通过自己查找相关资料,遇到问题积极解决,与同学积极讨论,最终完成了课程设计,我也体会到了成功的喜悦。