1、基于DSP的流水灯系统设计课程设计说明书题目:基于DSP的流水灯系统设计学 院:专业班级:学 号:学生:指导教师:2017年1月13日理工大学课程设计(论文)任务书电气与信息工程学院学号学生专业(班级)题目基于DSP的流水灯系统设计设计技术参数1. 使用TMS320VC5416作为CPU;2. 具有简单的键盘输入可控制功能;3.具有存放程序的外部FLASH芯片;4外部输入电压+5V电源;5.设计JTAG接口方便测试以及调试;6.设计8为数码管显示电路,实现8个流水灯正向反向依次闪烁,时间间隔为0.5s设计要求1.画出最小DSP系统电路图以及控制电路图(电源、存储、JTAG、复位等),使用Pro
2、tell或者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
3、的现代电子系统设计. 电子工业, 2002.12 5 钮心忻, 义先. 软件无线电技术与应用. 邮电, 2000.9 6 小牛,楼义才,徐建良. 软件无线电原理与应用. 电子工业, 2001.1 7 红,吴冠. TMS320C54x DSP应用系统设计. 航空航天大学,2002.5 指导教师签字系主任签字理工大学课程设计成绩评定表学生:学号:专业班级:课程设计题目:基于DSP的流水灯系统设计指导教师评语:成绩:指导教师:年 月 日 摘要DSP(Digital Signal Processing)也就是我们常说的数字信号处理,它是利用计算机或专用处理设备,以数字形式对信号进行采集,变换,滤波,估
4、值,增强,压缩,识别等处理,以得到符合人们需要的信号形式。DSP的主要应用有数字化移动,数据调制解调器,磁盘/光盘控制器需求,图形图像处理需求,汽车电子系统等。DSP在航空航天方面,主要用于雷达和声纳信号处理;在通信方面,主要用于移动,IP,ADSL和HFC的信号传输;在控制方面,主要用于电机控制,光驱和因公安驱动器;在电子娱乐方面,主要用于高清晰电视,机顶盒,家庭影院,DVD等应用;还有数字相机,网络相机等等。可以说没有DSP就没有对互联网的访问,也没有多媒体,也没有无线通信。随着科学技术的发展,将会出现更多的DSP新应用领域。本设计使用TMS320VC5416作为CPU,进行基于DSP的流
5、水灯系统设计,要求:1.具有简单的键盘输入可控制功能;2.具有存放程序的外部FLASH芯片;3.外部输入电压+5V电源;4.设计JTAG接口方便测试以及调试;5.设计8为数码管显示电路,实现8个流水灯正向反向依次闪烁,时间间隔为0.5s关键词: DSP;TMS320VC5416;流水灯;最小系统;JTAG接口第一章TMS320VC5416芯片1.1 TMS320VC5416芯片特点本设计用到的芯片是IT公司的TMS320VC5416,其引脚封装图如下所示:TMS320VC5416是为实现低功耗,高性能而专门设计的定点DSP芯片,它主要应用于无线系统中。TMS320VC5416基本特点:1.中央
6、处理单元先进的多总线结构,有一条程序总线(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空
7、间,对于548,549,5402和5410还可以外部扩展程序空间3.数据寻址5416提供了7种数据寻址方式:立即数寻址;绝对寻址;累加器寻址;直接寻址;间接寻址;存储器映射寄存器寻址;堆栈寻址;4.程序存储器寻址使用程序计数器(PC)寻址,但是,对于一些指令需要用到绝对寻址。5.中断5416支持软件中断(如INTR,TRAP,RESET)和硬件中断,中断可分为可屏蔽中断(如TINT,INT0等)和不可屏蔽中断(如RESET和NMI),其中RESET的优先级最高,不可屏蔽中断的优先级高于可屏蔽中断的优先级,硬件中断的优先级则高于软件中断的优先级。6.流水线5416有6级流水线:预取指,取指,解码
8、,访问,读取和执行。7.运算速度指令周期为25/20/15/12.5/10ns,运算能力为40/50/66/80/100MIPS(百万条指令/秒)。8.低功耗方式TMS320VC5416可以在3.3V或2.7V电压下工作,三个低功耗方式(IDLE1,IDLE2和IDLE3)可以节省DSP的功耗,所以它特别适合于无线移动设备。9.片上的外设可软件编程的等待状态发生器,使得与速度较慢的设备通讯更加方便;片上的锁相环时钟发生器可以对外部始终信号进行倍频或分频,从而得到自己所需要的时钟频率,当分频时还可节省系统的功耗;可以禁止对外部数据总线,地址总线以及控制信号的控制;可以软件编程的定时器;10.JT
9、AG扫描逻辑电路符合国际IEEE 1149.1标准的边界扫描逻辑接口,即JTAG扫描逻辑电路,用于仿真和测试,可以实现在线仿真。1.2 TMS320VC5416的指令集5416的指令可以分为四个大类:算术指令,逻辑指令,程序控制指令,读取和存储指令1.算术指令包括了加法指令(ADD.),减法指令(SUB.),乘法指令(MPY.),乘加指令(MAC.)和乘减指令(MAS.),32位操作数指令(DADD,DSUB.)和一些专用指令(ABDST,FIRS,SQDST.)。其部分指令都只需要一个指令周期,只有个别指令需要2-3个指令周期。2.逻辑指令包括了与指令(AND.),或指令(OR .),异或指
10、令(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.),并行的存储和乘法指令(
11、ST | MAC.),并行的读取和加减指令(LD | ADD,LD | SUB)以及其它读取类型和存储类型指令(MVDD,PORTW, READA.)。这些指令根据情况不同分别需要1-5个指令周期。第二章硬件设计2.1整体框图2.2电源电路2.3存储电路2.4时钟电路2.5复位电路2.6 JTAG电路2.7键盘电路2.8显示模块第三章软件设计1.1设计流程1.2软件设计步骤3.2.1进入CCS用仿真机将计算机与ZY13DSP12BD实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。 3.2.2 新建一个项目点击 ProjectNew,并将项目保存在自己定义的文件夹下,注意文件
12、夹一定要用英文名,不要将文件夹取名为中文名,因为 CCS 软件不能识别以中文命名的文件夹。3.2.3新建一个源文件点击FileNewSource File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(main),保存类型选择*.ASM(如果源文件是 C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型)。3.2.4在项目中添加源文件在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击 LED.pjt,在弹出的菜单中选择Add Files,然后将刚
13、才建立的main.asm文件添加到该项目中去。 3.2.5程序代码输入以下程序代码:1.初始化程序.mmregs .include c54.inc .def c54init .sect progsysc54init: STM #0x7208,SWWSR ;0 111 001 000 001 000 STM #0,SWCR STM #0xF800,BSCR ;1111 1000 0000 0000 STM #0,ST0 STM #0x2b00,ST1 ;0010 1011 0000 0000 STM #0x2fe4,PMST ;0010 1111 1110 0100 STM #0xFFFF,IF
14、R STM #0x0000,IMR ;关闭所有中断 STM #0,CLKMDclkcon: LDM CLKMD,A AND #0x01,A BC clkcon,ANEQ STM #0x43ff,CLKMD ;0100 0011 1111 1111 STM #0x0010,TCR1 ;timer1 stop STM #0x0010,TCR ;TSS=1 Timer stop STM #12800,PRD STM #0x0020,TCR RSBX INTM NOP NOP RET .end2.主函数程序:.mmregs .ref _c_int00 .include c54.inc .ref c54
15、init ;数码管地址Digital0 .set 0x0010Digital1 .set 0x0011Digital2 .set 0x0012Digital3 .set 0x0013Digital4 .set 0x0014Digital5 .set 0x0015Digital6 .set 0x0016Digital7 .set 0x0017 .dataDATA: .word 80FCH,8060H,80DAh,80F2h,8066H,80B6H,80BEH,80E0H ;测试数据 .sect progsys .align 0x10_c_int00: STM #0x0f80,SP CALL c5
16、4init LD #DATA ,DPLOOP: STM #DATA+7,AR1 PORTW *AR1-,Digital7 CALL Delay PORTW *AR1-,Digital6 CALL Delay PORTW *AR1-,Digital5 CALL Delay PORTW *AR1-,Digital4 CALL Delay PORTW *AR1-,Digital3 CALL Delay PORTW *AR1-,Digital2 CALL Delay PORTW *AR1-,Digital1 CALL Delay PORTW *AR1-,Digital0 CALL Delay B LO
17、OPDelay: STM #999,AR3 ;循环次数1000LOOP1: STM #999, AR2 ;循环次数1000LOOP2: BANZ LOOP2,*AR2- ;如果AR2不等于0,AR2减1,再判断 BANZ LOOP1,*AR3- ;如果AR1不等于0,AR1减1,跳转到LOOP1 RET .end 3.向量文件* vectors.asm * Plug in the entry point at RESET in the interrupt vector table* .include c54.inc .sect .vectors .ref _c_int00 ; main pro
18、grom ;.ref timer0 ,hpisys,usb_read .align 0x80 ; must be aligned on page boundaryRESET: ; reset vector B _c_int00 ; branch to main progrom NOP NOPnmi: RETE ; enable interrupts and return from one NOP NOP NOP ;NMI ; software interruptssint17 .space 4*16sint18 .space 4*16sint19 .space 4*16sint20 .spac
19、e 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: RETE NOP NOP NOPint1: RETE NOP NOP NOPint2: RETE NOP NOP NOPtint: RETE NOP NOP NOPrint0: RETE NOP NOP NOPxin
20、t0: RETE NOP NOP NOPDMAC0: RETE NOP NOP NOPDMAC1: RETE ;tint1 NOP NOP NOPint3: RETE NOP NOP NOPHPINT: RETE NOP NOP NOP DMAC2: RETE ;rint1 NOP NOP NOP NOPxint1: RETE NOP NOP NOPDMAC4: RETE NOP NOP NOPDMAC5: RETE NOP NOP NOP .end4.MEMORY程序-m sensor.mapMEMORY PAGE 0: PROG: origin = 0x2000, len = 0x0f80
21、 /*8k-128 word*/ VECT: origin = 0x2f80, len = 0x80 /*128word*/ PAGE 1: DRAM: origin = 0x3000, len = 0xf80 /*4k word*/SECTIONS .progsys: load = PROG PAGE 0 .vectors: load = VECT PAGE 0 .data : load = DRAM PAGE 1 align 163.2.6对项目进行编译和点击 ProjectCompile File,在项目编译成功之后点击 ProjectBuild 选项对该项目进行,生成*.out 文件。
22、 3.2.7装载可执行文件要让程序代码在 DSP 部运行必需将生成的*.OUT 文件装载到 DSP 部,装载方法是点击:File Load Programe 再选择生成的 LED.out 文件就可以将程序装载到 DSP 的部存储器中。 3.2.8运行程序并查看结果:点击 DebugRun 让程序在 DSP 部运行。结果如下图:设计心得及体会为期两周的DSP课程设计结束了,在这次课程设计过程中,我学会了很多课本以外的东西,获得了许多难能可贵的经验。通过这次的课程设计,提高自己动手能力的同时也学到了很多有关方面的知识,对DSP有了更深入的理解,巩固了以前学到的知识,是自己更加充实。通过调试以上程序运行无误,完成了流水灯要求,使用DSP芯片设计流水灯;使用数码管显示;利用程序延时,接口转换实现流水灯。通过本次课程设计实现了用DSP芯片设计流水灯 , 学习到了很多关于DSP 的基础知识。并且更加深刻的巩固了课堂上所学的课本知识,DSP技术有了更进一步的认识和了解。掌握了DSP的基本实验方法,提高了工程设计和组织实验能力。通过这次课程设计,我学会了原理图的绘制,元件的生成与调用,学会了流程图的绘制,这些技术的掌握对以后的工作、学习都有很大的帮助。在这次课程设计中,通过自己查找相关资料,遇到问题积极解决,与同学积极讨论,最终完成了课程设计,我也体会到了成功的喜悦。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1