[毕业设计精品] 基于DSP系统计时器系统的嵌入式设计A.doc_第1页
[毕业设计精品] 基于DSP系统计时器系统的嵌入式设计A.doc_第2页
[毕业设计精品] 基于DSP系统计时器系统的嵌入式设计A.doc_第3页
[毕业设计精品] 基于DSP系统计时器系统的嵌入式设计A.doc_第4页
[毕业设计精品] 基于DSP系统计时器系统的嵌入式设计A.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

dsp dsp 嵌入式通信系统嵌入式通信系统 课程设计报告课程设计报告 题目 题目 基于基于 dspdsp 系统计时器系统的嵌入式设计系统计时器系统的嵌入式设计 学院 学院 专业 专业 通信工程通信工程 班级 班级 通信通信 0815208152 学号 学号 姓名 姓名 指导老师 指导老师 20122012 年年 1 1 月月 2 2 日日 课课 程程 设设 计计 任任 务务 书书 分院 系 专业通信工程 学生姓名学号 设计题目 基于 dsp 系统计时器系统的嵌入式设计 内容及要求 内容及要求 1 使用 dsp 芯片设计计时器 2 使用数码管显示时间 3 使用键盘修改时间 进度安排 进度安排 2011 年 12 月 28 日 选题 查阅资料及编写软件程序 或硬件原理图设计 2011 年 12 月 29 日 课外上机调试程序及仿真 2011 年 12 月 31 日 调试出结果 调试结果验收并写报告 2011 年 01 月 01 02 日 修改报告及提交报告电子版 修改之后 2012 年 01 月 04 日 正式提交报告 打印版 及参加第一次答辩 目目 录录 摘 要 1 1 基于 dsp 系统计时器系统的嵌入式设计相关知识 2 1 1 tms320c55x开发环境 2 1 2 计时器 2 1 3 中断 3 2 基于 dsp 系统计时器系统的嵌入式设计原理 4 2 1 计时器计时程序 4 2 2 计时器输出程序 4 2 3 按键输入程序 4 2 4 程序流程图 5 3 基于 dsp 系统计时器系统的嵌入式设计编程及注释 6 3 1 计时器计时程序 6 3 2 计时器输出程序 10 3 3 按键输入程序 11 3 4 sdram 初始化程序 13 3 5 命令文件 15 4 ccs ads matlab 系统仿真 波形分析附图 16 5 总 结 19 致 谢 20 参考文献 21 0 摘摘 要要 dsp 芯片既具有高速数字信号处理功能又具有实时性强 功耗低 集成度高等嵌入式微计算机 的特点 所以随着科技的发展 dsp 技术在机电控制领域的应用愈加广泛 led 数码管显示清晰美 观 功耗低 现在已成为电子产品中应用最广泛的显示方式 本次课程设计就是通过对 dsp 芯片和 数码管的分析研究 利用 dspc55x 构建一个时间显示系统 采用数码管显示时间 用按键调整时间 该时钟系统包括计时 时钟输出 按键输入三个设计部分 并给出了各部分汇编程序 关键字关键字 dsp 芯片 数码管 按键 汇编程序 1 1 1 基于基于 dspdsp 系统计时器系统的嵌入式设计相关知识系统计时器系统的嵌入式设计相关知识 1 1 1 1 tms320c55xtms320c55x 开发开发环境环境 c55x 编程可以采用汇编语言 也可以采用 c c 语言 本次编程主要采用汇编语言完成 所以 执行效率高 c55x 的软件开发环境是 ccs v3 1 code composer studio 是 it 公司推出的用于开发 dsp 芯片的集成环境 它集编辑 编译 链接 软件仿真 硬件调试 以及实时跟踪功能于一体 1 21 2 计时器计时器 tms320vc5509 dsp 有两个独立的 20 bit 软件可编程通用减数计数定时器 它们可用于向 cpu 提供周期性的中断信号 或者给 dma 控制器发送中期同步事件 也可以用于给外部设备提供周期信 号 还可以用于外部事件计数 定时器的工作始终可以来自 dsp 内部的 cpu 时钟 也可以来自引脚 tin tout 利用定时器控 制寄存器 tcr 中的字段 func 可以确定输入时钟源和 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 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 中断可以分成可屏蔽中断和不可屏蔽中断两类 可屏蔽中断可以通过软件来加以屏蔽 不可屏 蔽中断则不能被屏蔽 所有的软件中断都是不可屏蔽中断 dsp 处理中断的步骤如下 1 接收中断请求 软件和硬件都要求 dsp 将当前程序挂起 2 相应中断 cpu 必须响应中断 如果是可屏蔽中断 响应必须满足某些条件 如果是不可 屏蔽中断 则 cpu 立即响应 3 准备进去中断服务子程序 cpu 要执行的主要任务有 完成当前指令的执行 并冲掉流水线上还未解码的指令 自动将某些必要的寄存器的值保存到数据堆栈和系统堆栈 从用户事先设置好的向量地址获取中断向量 该中断向量指向中断服务子程序 4 执行中断服务子程序 cpu 执行用户编写的 isr isr 以一条中断返回指令结束 自动回 复步骤 3 中自动保存的寄存器值 注意 外部中断只能发生在 cpu 退出复位后的至少 3 个周期后 否则无效 在硬件复位后 不论 intm 位的设置和寄存器 ier0 ier1 的值如何 所有的中断都被禁止 直 到通过软件初始化堆栈后才开放中断 3 2 2 基于基于 dspdsp 系统计时器系统的嵌入式设计原理系统计时器系统的嵌入式设计原理 数字时钟除基本的计时功能外还要可以通过按键设定时间 所以除了主循环程序和输出程序外 还要有按键判断程序 来设定时间 程序设计为三大部分 时钟计时程序是程序 时钟输出程序 按键输入程序 除此外还有 sdram 初始化程序和命令文件 2 12 1 计时器计时器计时程序计时程序 时钟计时程序是主程序 由 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 时要判断是否满 12 2 22 2 计时器计时器输出程序输出程序 时钟输出程序 是将时钟的秒 分 时 输出到外设数码管上 设 时钟秒的个位十位 分的 个位十位 时的个位十位对应的数码管地址分别为是 0100h 0101h 0102h 0103h 0104h 0105h 想将时钟计时程序中的秒 分 时的个位十位提取 出 只需除以数字 10 商为十位 余数是个位 分别输出至数码管即可 2 32 3 按键输入程序按键输入程序 按键输入程序的功能是 通过外部按键设置时钟的分 时 设按键 s1 s2 s3 地址分别为 0200 0201 0202 定为当 s1 按下时进去时钟输入程序 让 cpu 随时读取按键 s1 的地址 判断是 否置一 设按键按下为高电平 置一则进入时钟输入程序 程序开头设定一个延时子程序 防止 电子颤抖 进入时钟输入程序后 再读取 s2 s3 的地址是否置一 分别让 ar3 ar2 加 1 加 1 后 判断是否溢出 当 s1 s2 s3 都为 0 时退出时钟输入程序回到时钟计时程序 4 2 42 4 程序流程图程序流程图 图 3 1 程序流程图 5 3 3 基于基于 dspdsp 系统计时器系统的嵌入式设计编程及注释系统计时器系统的嵌入式设计编程及注释 3 13 1 计时器计时器计时程序计时程序 title shizhong asm mmregs def c int00 程序入口 def timer0 timer0 中断服务程序入口 ref shuchu 引用外部变量 时钟输出程序入口 ref key 引用外部变量 按键输入程序入口 ref sdram init 引用外部变量 sdram 初始化程序入口 led set 400001h tim0 set 0 x1000 prd0 set 0 x1001 tcr0 set 0 x1002 prsc0 set 0 x1003 sysr set 0 x07fd clkmd set 0 x1c00 时钟模块寄存器地址 pdp timer0 set tim0 128 stack usect stack 200h 分配堆栈空间 sysstack usect sysstack 200h data led i word 1 2 4 8 4 2 sect vectors rsv b c int00 nop align 8 nmi loop 8 nop endloop 6 int0 loop 8 nop endloop int2 loop 8 nop endloop tint0 b timer0 nop align 8 主程序 text c int00 amov 0h xar1 初始化时钟的秒 amov 0h xar2 初始化时钟的分 amov 0h xar3 初始化时钟的时 amov 0 xdp amov stack 200h xsp amov sysstack 200h xssp interupt 初始化中断 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 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 ar5 loop nop b loop 等待中断 中断服务程序 timer0 mov ar5 ar4 bcc next1 ar0 0h 判断是否中断 150 次 mov 149 ar0 重新装载计数器重新计数 amar ar1 时钟秒自动加 1 call shuchu bcc fen ar1 3ch 判断 ar1 是否满 60 b next2 8 fen mov 0 ar1 amar ar2 call shuchu bcc shi ar2 3ch b next2 shi mov 0 ar2 amar ar3 call shuchu bcc loop1 ar3 0ch b next2 loop1 mov 0 ar3 b next2 next1 amar ar0 next2 mov port 0200 ar6 读取 s1 按键装载到 ar4 bcc loop2 ar6 1h call key 当按键 s1 按下时调用按键子程序 loop2 reti 中断返回 end 9 3 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 ac0 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 将余数输出到时的个位 ret end 10 3 33 3 按键输入程序按键输入程序 def key ref shuchu text key 延时 mov 500 ar5 l1 amar ar5 mov 10 ar4 l2 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 0h 按键 s3 按下 高电平 跳转 shi amar ar3 bcc yichu1 ar3 0ch 判断是否溢出 call shuchu 调用时钟输出子程序 b key yichu1 mov 0 ar3 call shuchu 调用时钟输出子程序 b key fen amar ar2 bcc yichu2 ar2 3ch 11 call shuchu 调用时钟输出子程序 b key yichu2 mov 0 ar3 call shuchu 调用时钟输出子程序 b key l ret end 12 3 43 4 sdramsdram 初始化程序初始化程序 def sdram init ebsr set 0 x6c00 egcr set 0 x800 emirst set 0 x801 emibe set 0 x802 ce01 set 0 x803 ce02 set 0 x804 ce03 set 0 x805 ce11 set 0 x806 ce12 set 0 x807 ce13 set 0 x808 ce21 set 0 x809 ce22 set 0 x80a ce23 set 0 x80b ce31 set 0 x80c ce32 set 0 x80d ce33 set 0 x80e sdc1 set 0 x80e sdper set 0 x810 sdcnt set 0 x811 init set 0 x812 sdc2 set 0 x813 sdram pdp set egcr 128 text sdram 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 port sdc1 mov 0 x38f port sdc2 mov 0 x0 port init ret end 14 3 53 5 命令文件命令文件 stack 200h sysstack 200h memory page 0 mmr origin 0000000h length 00000c0h spram origin 00000c0h length 0000040h vecs origin 0000100h length 0000100h daram0 origin 0000200h length 0001e00h daram1 origin 0002000h length 0002000h daram2 origin 0004000h length 0002000h daram3 origin 0006000h length 0002000h daram4 origin 0008000h length 0002000h daram5 origin 000a000h length 0002000h daram6 origin 000c000h length 0002000h daram7 origin 000e000h length 0002000h sections vectors vecs page 0 bss daram0 page 0 stack daram1 page 0 sysstack daram1 page 0 text daram4 page 0 data daram5 page 0 15 4 4 ccsccs adsads matlabmatlab 系统仿真 波形分析附图系统仿真 波形分析附图 16 5 5 总总 结结 通过调试以上程序运行无误 完成了时钟设计要求 使用 dsp 芯片设计时钟 使用数码管显示 时间 使用键盘修改时间 通过本次课程设计实现了用 dsp 定时器做时钟 学习到了很多关于 dsp 定时器和中断的知识 并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论