当前位置:文档之家› 根据DSP的流水灯系统设计

根据DSP的流水灯系统设计

课程设计说明书题目: 基于DSP的流水灯系统设计学院:专业班级:学号:学生姓名:指导教师:2017年1月13日安徽理工大学课程设计(论文)任务书电气与信息工程学院安徽理工大学课程设计成绩评定表摘要 (1)第一章TMS320VC5416芯片 (1)1.1 TMS320VC5416芯片特点 (2)1.中央处理单元 (2)2.存储器 (3)3.数据寻址 (3)4.程序存储器寻址 (3)5.中断 (3)6.流水线 (3)7.运算速度 (3)8.低功耗方式 (3)9.片上的外设 (4)10.JTAG扫描逻辑电路 (4)1.2 TMS320VC5416的指令集 (4)1.算术指令 (4)2.逻辑指令 (4)3.程序控制指令 (5)4.读取和存储指令 (5)第二章硬件设计 (5)2.1 整体框图 (5)2.2 电源电路 (6)2.3 存储电路 (6)2.4 时钟电路 (7)2.5 复位电路 (7)2.6 JTAG电路 (8)2.7 键盘电路 (8)2.8 显示模块 (9)第三章软件设计 (9)1.1设计流程 (10)1.2软件设计步骤 (10)3.2.1 进入CCS (10)3.2.2 新建一个项目 (10)3.2.3 新建一个源文件 (10)3.2.4 在项目中添加源文件 (11)3.2.5 程序代码 (11)1.初始化程序 (11)2.主函数程序: (12)3.向量文件 (13)4.MEMORY程序 (15)3.2.6对项目进行编译和链接 (15)3.2.7装载可执行文件 (15)3.2.8运行程序并查看结果: (16)设计心得及体会 (16)DSP(Digital Signal Processing)也就是我们常说的数字信号处理,它是利用计算机或专用处理设备,以数字形式对信号进行采集,变换,滤波,估值,增强,压缩,识别等处理,以得到符合人们需要的信号形式。

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.1 TMS320VC5416芯片特点本设计用到的芯片是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扫描逻辑电路符合国际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 ...),异或指令(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 电源电路NC NC 1GND 1EN 1IN 1IN NC NC 2EN 2IN 2IN NC NC 1RESETNC NC1FB/SENSE1OUT 1OUT 2RESETNC NC 2SENSE 2OUT 2OUT NC NC2GND U173HD3XX321P1CON3GNDC110uFC20.1uFRV150kR1RES1GNDVcore C310uFC40.1uF+3.3VC50.1ufC610uF+5vGND2.3 存储电路2.4 时钟电路2.5 复位电路2.6 JTAG 电路TMS TDI DVDD TDOTCK_RET TCK EMU0EMU1GND GND GND NC GND TRST R1R2DVddG N DTMS TDI DVdd TDO TCKEMU0EMU12.7 键盘电路2.8 显示模块第三章软件设计1.1设计流程1.2软件设计步骤3.2.1 进入CCS用仿真机将计算机与ZY13DSP12BD实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS软件。

3.2.2 新建一个项目点击Project-New,并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS 软件不能识别以中文命名的文件夹。

3.2.3 新建一个源文件点击File-New-Source File可以打开一个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(main),保存类型选择*.ASM(如果源文件是 C 语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型)。

3.2.4 在项目中添加源文件在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。

添加方法是在工程管理器中右键单击LED.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的main.asm文件添加到该项目中去。

3.2.5 程序代码输入以下程序代码:1.初始化程序.mmregs.include c54.inc.def c54init.sect "progsys"c54init:STM #0x7208,SWWSR ;0 111 001 000 001 000STM #0,SWCRSTM #0xF800,BSCR ;1111 1000 0000 0000STM #0,ST0STM #0x2b00,ST1 ;0010 1011 0000 0000STM #0x2fe4,PMST ;0010 1111 1110 0100STM #0xFFFF,IFRSTM #0x0000,IMR ;关闭所有中断STM #0,CLKMDclkcon: LDM CLKMD,AAND #0x01,ABC clkcon,ANEQSTM #0x43ff,CLKMD ;0100 0011 1111 1111STM #0x0010,TCR1 ;timer1 stopSTM #0x0010,TCR ;TSS=1 Timer stopSTM #12800,PRDSTM #0x0020,TCRRSBX INTMNOPNOPRET.end2.主函数程序:.mmregs.ref _c_int00.include c54.inc.ref c54init;数码管地址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,SPCALL c54initLD #DATA ,DPLOOP:STM #DATA+7,AR1PORTW *AR1-,Digital7CALL DelayPORTW *AR1-,Digital6CALL DelayPORTW *AR1-,Digital5CALL DelayPORTW *AR1-,Digital4CALL DelayPORTW *AR1-,Digital3CALL DelayPORTW *AR1-,Digital2CALL DelayPORTW *AR1-,Digital1CALL DelayPORTW *AR1-,Digital0CALL DelayB LOOPDelay:STM #999,AR3 ;循环次数1000LOOP1: STM #999, AR2 ;循环次数1000LOOP2: BANZ LOOP2,*AR2- ;如果AR2不等于0,AR2减1,再判断BANZ LOOP1,*AR3- ;如果AR1不等于0,AR1减1,跳转到LOOP1RET.end3.向量文件**************************** vectors.asm ***************** Plug in the entry point at RESET in the interrupt vector table**.include c54.inc.sect ".vectors".ref _c_int00; main progrom;.ref timer0 ,hpisys,usb_read.align 0x80 ; must be aligned on page boundaryRESET: ; reset vectorB _c_int00 ; branch to main progromNOPNOPnmi: RETE ; enable interrupts and return from oneNOPNOPNOP ;NMI~; software interruptssint17 .space 4*16sint18 .space 4*16sint19 .space 4*16sint20 .space 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^`NOPNOPNOPint1: RETENOPNOPNOPint2: RETENOPNOPNOPtint: RETENOPNOPNOPrint0: RETENOPNOPNOPxint0: RETENOPNOPNOPDMAC0: RETENOPNOPNOPDMAC1: RETE ;tint1NOPNOPNOPint3: RETENOPNOPNOPHPINT: RETENOPNOPNOPDMAC2: RETE ;rint1NOPNOPNOPNOPxint1: RETENOPNOPNOPDMAC4: RETENOPNOPNOPDMAC5: RETENOPNOPNOP.end4.MEMORY程序-m sensor.mapMEMORY{PAGE 0: PROG: origin = 0x2000, len = 0x0f80 /*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 16}3.2.6对项目进行编译和链接点击Project-Compile File,在项目编译成功之后点击Project-Build 选项对该项目进行链接,生成*.out 文件。

相关主题