![[毕业设计精品]基于DSP系统计时器系统的嵌入式设计A_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/80da8bdb-dc62-40b1-ad26-2856114a0030/80da8bdb-dc62-40b1-ad26-2856114a00301.gif)
![[毕业设计精品]基于DSP系统计时器系统的嵌入式设计A_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/80da8bdb-dc62-40b1-ad26-2856114a0030/80da8bdb-dc62-40b1-ad26-2856114a00302.gif)
![[毕业设计精品]基于DSP系统计时器系统的嵌入式设计A_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/80da8bdb-dc62-40b1-ad26-2856114a0030/80da8bdb-dc62-40b1-ad26-2856114a00303.gif)
![[毕业设计精品]基于DSP系统计时器系统的嵌入式设计A_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/80da8bdb-dc62-40b1-ad26-2856114a0030/80da8bdb-dc62-40b1-ad26-2856114a00304.gif)
![[毕业设计精品]基于DSP系统计时器系统的嵌入式设计A_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/80da8bdb-dc62-40b1-ad26-2856114a0030/80da8bdb-dc62-40b1-ad26-2856114a00305.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 dspdsp 嵌入式通信系统嵌入式通信系统 课程设计报告课程设计报告题目:题目:基于基于 dspdsp 系统计时器系统的嵌入式设计系统计时器系统的嵌入式设计 学院:学院: 专业:专业: 通信工程通信工程 班级:班级: 通信通信 0815208152 学号:学号: 姓名:姓名: 指导老师:指导老师: 20122012 年年 1 1 月月 2 2 日日 课课 程程 设设 计计 任任 务务 书书分院(系) 专业通信工程学生姓名学号 设计题目 基于 dsp 系统计时器系统的嵌入式设计内容及要求:内容及要求:1. 使用 dsp 芯片设计计时器 2. 使用数码管显示时间 3. 使用键盘修改时间进度安排:
2、进度安排:2011 年 12 月 28 日 选题、查阅资料及编写软件程序(或硬件原理图设计) 。2011 年 12 月 29 日 课外上机调试程序及仿真。2011 年 12 月 31 日 调试出结果、调试结果验收并写报告。2011 年 01 月 01-02 日 修改报告及提交报告电子版(修改之后) 。2012 年 01 月 04 日 正式提交报告(打印版)及参加第一次答辩。目目 录录摘 要 .11 基于 dsp 系统计时器系统的嵌入式设计相关知识 .21.1 tms320c55x开发环境.21.2 计时器.21.3 中断.32.基于 dsp 系统计时器系统的嵌入式设计原理.42.1 计时器计时
3、程序.42.2 计时器输出程序.42.3 按键输入程序.42.4 程序流程图.53.基于 dsp 系统计时器系统的嵌入式设计编程及注释.63.1 计时器计时程序.63.2 计时器输出程序.103.3 按键输入程序.113.4 sdram 初始化程序.133.5 命令文件.154. ccs、ads、matlab 系统仿真、波形分析附图.165.总 结.19致 谢 .20参考文献 .210摘摘 要要dsp 芯片既具有高速数字信号处理功能又具有实时性强、功耗低、集成度高等嵌入式微计算机的特点,所以随着科技的发展,dsp 技术在机电控制领域的应用愈加广泛。led 数码管显示清晰美观、功耗低,现在已成为
4、电子产品中应用最广泛的显示方式。本次课程设计就是通过对 dsp 芯片和数码管的分析研究,利用 dspc55x 构建一个时间显示系统,采用数码管显示时间,用按键调整时间。该时钟系统包括计时、时钟输出、按键输入三个设计部分。并给出了各部分汇编程序。关键字关键字:dsp 芯片;数码管;按键;汇编程序11.1. 基于基于 dspdsp 系统计时器系统的嵌入式设计相关知识系统计时器系统的嵌入式设计相关知识1.1.1 1 tms320c55xtms320c55x 开发开发环境环境c55x 编程可以采用汇编语言,也可以采用 c/c+语言,本次编程主要采用汇编语言完成,所以执行效率高。c55x 的软件开发环境
5、是 ccs v3.1(code composer studio) ,是 it 公司推出的用于开发 dsp芯片的集成环境,它集编辑、编译、链接、软件仿真、硬件调试、以及实时跟踪功能于一体。1.21.2 计时器计时器tms320vc5509 dsp 有两个独立的 20 bit 软件可编程通用减数计数定时器,它们可用于向 cpu提供周期性的中断信号,或者给 dma 控制器发送中期同步事件,也可以用于给外部设备提供周期信号,还可以用于外部事件计数。定时器的工作始终可以来自 dsp 内部的 cpu 时钟,也可以来自引脚 tin/tout。利用定时器控制寄存器(tcr)中的字段 func 可以确定输入时钟
6、源和 tin/tout 引脚功能。在定时器中,预定标记计数寄存器(psc)由输入时钟驱动,psc 在每个输入时钟周期减 1。当其减到 0 时,tim 减 1,当 tim 减到 0 时,定时器向 cpu 发出一个中断请求(tint)或者向 dma 控制器发送同步事件。定时器发送中断信号或同步事件信号的频率可用下公式计算,即tint 频率=输入时钟频率/【(tddt+1)*(prd+1) 】定时器初始化步骤如下:(1)停止定时器(tss=1) ,定时器装载时能(tlb=1) ,定时器控制寄存器 tcr 的其他位设置成对应数值。(2)装载欲分频计数周期寄存器 prsc。(3)装载主周期寄存器 prd
7、。(4)关闭定时器装载(tlb=0) ,启动定时器(tss=0) 。 dsp 复位(1)停止定时(tss=1)(2)预定标计数器值为 0(3)住计数器值为 ffffh(4)定时器不进行自动重装(arb=0)2(5)idle 指示不能使定时器进入省电模式(6)仿真时遇到软件断点定时器立即停止工作(7)tin/tout 为高电阻,时钟源是内部时钟(func=00b)1.31.3 中断中断中断是由硬件或软件驱动的信号,使 dsp 将当前的程序挂起,执行另外一个称为中断服务子程序(isr)的任务。c5x 支持 32 个 isr。中断可以分成可屏蔽中断和不可屏蔽中断两类。可屏蔽中断可以通过软件来加以屏蔽
8、,不可屏蔽中断则不能被屏蔽。所有的软件中断都是不可屏蔽中断。dsp 处理中断的步骤如下:(1)接收中断请求。软件和硬件都要求 dsp 将当前程序挂起。(2)相应中断。cpu 必须响应中断。如果是可屏蔽中断,响应必须满足某些条件;如果是不可屏蔽中断,则 cpu 立即响应。(3)准备进去中断服务子程序。cpu 要执行的主要任务有:完成当前指令的执行,并冲掉流水线上还未解码的指令。自动将某些必要的寄存器的值保存到数据堆栈和系统堆栈。从用户事先设置好的向量地址获取中断向量,该中断向量指向中断服务子程序。(4)执行中断服务子程序。cpu 执行用户编写的 isr。isr 以一条中断返回指令结束,自动回复步
9、骤(3)中自动保存的寄存器值。注意:外部中断只能发生在 cpu 退出复位后的至少 3 个周期后,否则无效。在硬件复位后,不论 intm 位的设置和寄存器 ier0、ier1 的值如何,所有的中断都被禁止,直到通过软件初始化堆栈后才开放中断。32.2. 基于基于 dspdsp 系统计时器系统的嵌入式设计原理系统计时器系统的嵌入式设计原理数字时钟除基本的计时功能外还要可以通过按键设定时间,所以除了主循环程序和输出程序外还要有按键判断程序,来设定时间。程序设计为三大部分:时钟计时程序是程序、时钟输出程序、按键输入程序,除此外还有 sdram 初始化程序和命令文件。2.12.1 计时器计时器计时程序计
10、时程序时钟计时程序是主程序,由 cup 提供输入时钟信号,再由 dsp 的片上外设通用定时器完成计时功能,其中可以通过中断次数来计数。设定寄存器 ar1、ar2、ar3 分别保存时钟的秒、分、时。设cpu 时钟为 144mhz,当 psc=15;tim=59999 可以计算出中断频率是 1/150hz,所以用 ar0 做计数器,每 150 次中断时钟的秒(ar1)自动加 1,并判断是否等于 60,等于 60 则时钟的分(ar2)自动加1,时钟的秒(ar1)清零;不等于 60 跳转到等待中断程序,再次计数 150 次中断。其中时钟的分(ar2)加 1 时也要判断是否满 60,而时钟的时加 1 时
11、要判断是否满 12。2.22.2 计时器计时器输出程序输出程序时钟输出程序,是将时钟的秒、分、时,输出到外设数码管上。设:时钟秒的个位十位、分的个位十位、时的个位十位对应的数码管地址分别为是0100h、0101h、0102h、0103h、0104h、0105h。想将时钟计时程序中的秒、分、时的个位十位提取出,只需除以数字 10,商为十位,余数是个位,分别输出至数码管即可。2.32.3 按键输入程序按键输入程序按键输入程序的功能是,通过外部按键设置时钟的分、时。设按键 s1、s2、s3、地址分别为:0200、0201、0202。定为当 s1 按下时进去时钟输入程序,让 cpu 随时读取按键 s1
12、 的地址,判断是否置一(设按键按下为高电平) ,置一则进入时钟输入程序,程序开头设定一个延时子程序,防止电子颤抖,进入时钟输入程序后,再读取 s2、s3 的地址是否置一,分别让 ar3、ar2 加 1(加 1 后判断是否溢出),当 s1、s2、s3 都为 0 时退出时钟输入程序回到时钟计时程序。42.42.4 程序流程图程序流程图图 3.1 程序流程图53.3. 基于基于 dspdsp 系统计时器系统的嵌入式设计编程及注释系统计时器系统的嵌入式设计编程及注释3.13.1 计时器计时器计时程序计时程序 .title shizhong.asm .mmregs .def _c_int00 ;程序入口
13、 .def _timer0 ;timer0 中断服务程序入口 .ref shuchu ;引用外部变量,时钟输出程序入口 .ref key ;引用外部变量,按键输入程序入口 .ref sdram_init ;引用外部变量 sdram 初始化程序入口led .set 400001htim0 .set 0 x1000prd0 .set 0 x1001tcr0 .set 0 x1002prsc0 .set 0 x1003sysr .set 0 x07fd clkmd .set 0 x1c00 ;时钟模块寄存器地址 pdp_timer0 .set tim0/128stack .usect .stack,
14、200h ;分配堆栈空间sysstack .usect .sysstack,200h .dataled_i .word 1,2,4,8,4,2 .sect .vectorsrsv: b _c_int00 nop .align 8nmi: .loop 8 nop.endloop6int0: .loop 8 nop.endloopint2: .loop 8 nop.endlooptint0: b _timer0 nop.align 8;=;主程序;= .text_c_int00: amov #0h,xar1 ;初始化时钟的秒 amov #0h,xar2 ;初始化时钟的分 amov #0h,xar3
15、 ;初始化时钟的时 amov #0,xdp amov #stack+200h,xsp amov #sysstack+200h,xsspinterupt: ;初始化中断 bset intm mov #1,ivpd mov #1,ivph mov #10h,ier0 mov #10h,dbier0 mov #0,ier1 mov #0ffffh,ifr0 mov #0ffffh,ifr1 call sdram_init ;调用 sdram 初始化程序7 call shuchu ;调用时钟输出子程序;=;初始化定时器并启动计时器;= mov #pdp_timer0,pdp mov #149,ar0
16、mov #0438h,port(#tcr0) mov #15,port(#prsc0) mov #59999,port(#prd0) and #0fbefh,port(#tcr0) ;停止从周期寄存器装入并启动定时器 bclr intm ;使能全局中断bset ar5lc amov #led,xar4 mov #6,bk03 amov #led_i,xar5 mov #led_i,bsa23 mov #0,ar5loop: nop b loop ;等待中断 ;= ;中断服务程序;=_timer0: mov *ar5,*ar4 bcc next1,ar0!=#0h ;判断是否中断 150 次 m
17、ov #149,ar0 ;重新装载计数器重新计数 amar *ar1+ ;时钟秒自动加 1 call shuchu bcc fen,ar1 =#3ch ;判断 ar1 是否满 60 b next28fen: mov #0,ar1 amar *ar2+ call shuchu bcc shi,ar2 =#3ch b next2shi: mov #0,ar2 amar *ar3+ call shuchu bcc loop1,ar3 =#0ch b next2loop1: mov #0,ar3 b next2next1: amar *ar0-next2: mov port(#0200),ar6 ;读
18、取 s1 按键装载到 ar4 bcc loop2,ar6!=#1h call key ;当按键 s1 按下时调用按键子程序 loop2: reti ;中断返回 .end93.23.2 计时器计时器输出程序输出程序 .def shuchu .data .text shuchu: bclr sxmd ;清零 sxmd(关闭符号扩展) mov #10,ar6 ;设置除数为 10 mov ar1,ac0 ;把被除数(秒)放入 ac0 rpt #15 ;执行 subc16 次 subc ar6,ac0,ac0 ;条件减法 mov ac0,port(#0101h) ;将商输出到秒的十位 mov hi(ac
19、0),port(#0100h) ;将余数输出到秒的个位 mov ar2,ac0 ;把被除数(分)放入 ac0 rpt #0fh ;执行 subc16 次 subc ar6,ac0,ac0 mov ac0,port(#0103h) ;将商输出到分的十位 mov hi(ac0),port(#0102h) ;将余数输出到分的个位 mov ar3,ac0 ;把被除数(时)放入 ac0 rpt #0fh ;执行 subc16 次 subc ar6,ac0,ac0 mov ac0,port(#0105h) ;将商输出到时的十位 mov hi(ac0),port(#0104h) ;将余数输出到时的个位 re
20、t .end103.33.3 按键输入程序按键输入程序 .def key .ref shuchu .textkey:;=;延时;= mov #500,ar5l1: amar *ar5- mov #10,ar4l2: amar *ar4- bcc l2,ar4!=#0h bcc l1,ar5!=#0h mov port(#0200h),ar6 bcc l, ar6=#0h ;按键 s1 电平消失跳转到 l 退出程序 mov port(#0201h),ar6 bcc shi,ar6!=#0h ;按键 s2 按下(高电平)跳转 mov port(#0202h),ar6 bcc fen,ar6!=#0
21、h ;按键 s3 按下(高电平)跳转shi: amar *ar3+ bcc yichu1,ar3 =#0ch ;判断是否溢出 call shuchu ;调用时钟输出子程序 b keyyichu1: mov #0,ar3 call shuchu ;调用时钟输出子程序 b key fen: amar *ar2+ bcc yichu2,ar2 =#3ch11 call shuchu ;调用时钟输出子程序 b keyyichu2: mov #0,ar3 call shuchu ;调用时钟输出子程序 b keyl: ret .end 123.43.4 sdramsdram 初始化程序初始化程序 .def
22、 sdram_initebsr .set 0 x6c00egcr .set 0 x800emirst .set 0 x801emibe .set 0 x802ce01 .set 0 x803ce02 .set 0 x804ce03 .set 0 x805ce11 .set 0 x806ce12 .set 0 x807ce13 .set 0 x808ce21 .set 0 x809ce22 .set 0 x80ace23 .set 0 x80bce31 .set 0 x80cce32 .set 0 x80dce33 .set 0 x80esdc1 .set 0 x80esdper .set 0
23、x810sdcnt .set 0 x811init .set 0 x812sdc2 .set 0 x813sdram_pdp .set egcr/128 .textsdram_init: mov #0 xa01,port(#ebsr) mov #sdram_pdp,pdp mov #0 x220,port(#egcr)13 mov #0 x3000,port(#ce01) mov #0 x1fff,port(#ce11) mov #0 x1fff,port(#ce21) mov #0 x1fff,port(#ce31) mov #0 x0,port(#emirst) mov #0 x5958,
24、port(#sdc1) mov #0 x38f,port(#sdc2) mov #0 x0,port(init) ret .end143.53.5 命令文件命令文件-stack 200h -sysstack 200hmemory page 0: mmr : origin = 0000000h, length = 00000c0h spram : origin = 00000c0h, length = 0000040h vecs :origin = 0000100h, length = 0000100h daram0 : origin = 0000200h, length = 0001e00h
25、daram1 : origin = 0002000h, length = 0002000h daram2 : origin = 0004000h, length = 0002000h daram3 : origin = 0006000h, length = 0002000h daram4 : origin = 0008000h, length = 0002000h daram5 : origin = 000a000h, length = 0002000hdaram6 : origin = 000c000h, length = 0002000h daram7 : origin = 000e000h, length = 0002000hsections.vectors : vecs page 0 .bss: daram0 page 0 .stack: daram1 page 0 .sysstack: daram1 page 0 .text : daram4 page 0 .data: daram5 page 015 4.4. ccsccs、adsads、matlabmatlab 系统仿真、波形分析附图系统仿真、波形分析附图165.5.总总 结结通过调试以上程序运行无误,完成了时钟设计要求,使用 dsp 芯片设计时钟;使用数码管显示时间;使用键盘修改时间。通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于教育生态学的课程思政评价体系研究
- 个人对公借款合同范本
- 2026届浙江省金华市义乌市宾王中学数学九年级第一学期期末质量跟踪监视试题含解析
- 推动住房保障工作高质量发展实施方案
- 临期商品购销合同范本
- 工厂数字化协同生产管理方案
- 学校冬季供暖负荷计算与调整方案
- 科技型中小企业财务风险防范与控制策略
- 人防工程设施维护保养计划
- 江苏护理考试题库及答案
- 《大体积混凝土》课件
- 六西格玛改善案例课件
- 标准法兰、阀门螺栓对照表
- 《艺术概论》考试复习题库(附答案)
- Soreha-Biodex-S4-多关节等速肌力测试训练系统课件
- 派车单(标准样本)
- 混凝土膨胀剂检试验报告
- 村卫生室基本公共卫生服务项目绩效考核指标明细表格模板(参照省级标准)
- 中北大学火炮概论终极版
- 《建设工程文件归档规范》讲义课件
- 舒伯特的艺术歌曲《魔王》
评论
0/150
提交评论