分频1ppt课件.ppt_第1页
分频1ppt课件.ppt_第2页
分频1ppt课件.ppt_第3页
分频1ppt课件.ppt_第4页
分频1ppt课件.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2020 4 7 1 计算机EDA设计 实验教程 实验十一电子日历和电子时钟 北航计算机学院艾明晶 2020 4 7 2 内容概要 实验目的实验要求实验原理实验指导实验内容实验报告 2020 4 7 3 实验目的 掌握电子日历和电子时钟的原理 熟悉同步及异步时序电路和相应计数器的设计方法 综合应用前面的设计如计数器 分频电路 数码管扫描显示等知识 2020 4 7 4 实验要求 设计一个电子日历和电子时钟计时功能 包括对时间和日期的计时 校时功能 能用按钮方便地设置各时间单位计数初值 且当选择了某对象后 所对应的数码管闪烁点亮 清零功能 能用按钮将时间清为0点0分0秒 或将日期清为00年1月1日 星期一 或将闹钟定时设置清为0点0分 2020 4 7 5 定时提醒 闹钟 的功能 能在设定的时间发出闹铃音 即持续20秒的急促的 嘀嘀 音 若按住setn键不放 可屏蔽闹铃音 整点报时功能 每逢整点 产生 嘀嘀嘀嘀 嘟 四短一长的报时音 显示功能 同时采用6个数码管扫描显示时间或日历或闹钟定时的值 使用显示模式切换按钮 moden 当按动不同的次数时 分别选择显示时间 日期 星期和闹钟定时 2020 4 7 6 利用GW48 SOPC 实验开发系统实现设计的编程下载编程器件为EP1C12Q240C8 系统时钟fclk 20MHz 使用实验箱上的未防抖开关键9进行显示模式切换 使用键10和键11选择设置计数初值对象和设置计数初值 使用数码管数码1 2 4 5 7 8实现计数值的扫描显示 使用扬声器SPEAKER播放闹铃音和整点报时音 使用键12 键13和键14实现对时间 日期和闹钟定时的清零功能 2020 4 7 7 实验原理 电子日历和电子时钟在设计思想上并无多少差异 二者都是利用几级分频电路对时钟信号分频计数 以达到计时的功能 开发系统上采用的时钟信号的频率是20MHz 可分别设计计数器对其分频计数 包括计秒 分 小时 日 周 月以及年等 在每一级上显示输出 即构成了一个电子日历和时钟的模型 为了可以随意调整计数值 还应包含设定计数初值的电路 2020 4 7 8 实验指导 1 信号定义及下载板资源分配输入信号clk 系统时钟信号20MHz 接Pin28moden 选择显示时间或日历或闹钟定时的显示模式切换信号 接按钮开关键9selectn 选择设置计数初值对象信号 接按钮开关键10setn 设置计数初值信号 接按钮开关键11clr timen 时间复位信号 接按钮开关键12clr daten 日期复位信号 接按钮开关键13clr alarm setn 清除闹钟定时设置信号 接按钮开关键14 注意 键9 14输出均为负脉冲有效 2020 4 7 9 输出信号alarm 输出到扬声器的信号 产生闹铃音和整点报时音 out 7 0 从高到低分别对应数码管的p 小数点 g f e d c b a各段 scan en 1 8 分别驱动8个数码管数码1 8的扫描显示控制端 2020 4 7 10 2 设计思路 建议采用顶层图形设计方法 为快速仿真 先不考虑下载时实际使用的系统时钟是多少 假定这里的输入时钟周期为T 1ms 将整个电路划分为7个子模块 时钟分频子模块 两个 按钮消抖电路子模块 选择设置计数初值对象子模块 分频计数子模块 关键 闹钟定时和整点报时子模块 关键 数码管扫描显示子模块 七段码译码器子模块 2020 4 7 11 顶层图形文件ecc bdf 3 选择设置计数初值对象 4 分频计数 2 按钮消抖 1 时钟分频 2020 4 7 12 顶层图形文件ecc bdf 续 6 数码管扫描显示 7 七段码译码器 5 闹钟定时和整点报时 2020 4 7 13 1 时钟分频子模块 时钟分频子模块有两个clkdiv1000 v对输入时钟 f 1KHz T 1ms 进行1000分频 获得1Hz的时钟 作为分频计数子模块fdiv cnt bdf的输入时钟 clkout必须在计够分频计数值后才有一个正跳变 这样才与实际情况相符 2020 4 7 14 1 时钟分频子模块 续 clkdiv v对输入时钟 f 1KHz 进行250分频 获得4Hz的时钟 作为产生闹铃音 以及数码管闪烁显示的时钟信号 对输入时钟进行100分频 获得10Hz的时钟 作为设置计数初值时按下setn键能够连续快速加1的时钟信号 注意 在设计clkdiv v时 使输出时钟信号clk 4Hz为方波 2020 4 7 15 clkdiv v的仿真波形 2020 4 7 16 2 按钮消抖电路子模块 将按钮开关的负脉冲信号转换为正脉冲信号输出 其定时宽度至少为500ms 若定时长度选得过短 抖动不能够完全消除 500ms 响应pbn信号 signal由 0 变为 1 并保持500ms 2020 4 7 17 3 选择设置计数初值对象子模块 功能根据显示模式切换信号mode选择是显示时间 或是日历 或是闹钟定时 在不同的显示模式下 当按动select 使计数器sel 1 0 加1计数 从而选择不同的计数初值对象 如在显示时间模式下 按动select 则可以选择是设置小时 还是设置分钟 或是设置秒 并根据显示模式 sel 1 0 的值和set产生设置不同对象计数初值的时钟信号 2020 4 7 18 3 选择设置计数初值对象子模块 续 整个子模块可分成4个部分 包括3个always块和一组assign连续赋值语句 mode信号控制显示不同的输出信号always posedgemode 使选择设置对象的计数器sel 2 0 加1always posedgeselectorposedgemode 若长时间按下set键 则生成num1信号 用于设置初值时连续快速加1 采用连续赋值语句 根据计数器disp mode 1 0 和sel 1 0 的值以及set确定调整时间的信号set hr等的值例 assignset hr disp mode 0 2020 4 7 19 4 分频计数子模块fdiv cnt bdf 总体设计思路由6个分频子模块组成 假定系统时钟20MHz已被分频为f 1Hz后送入fdiv cnt bdf作为输入时钟 则对其逐级分频计数 包括秒 分 小时 日 以及周 月和年的计数 计数时均使用了二进制编码的十进制 即BCD码 计数并直接显示 采用异步计数方式 选用异步清零方式 2020 4 7 20 fdiv cnt bdf的原理图 2020 4 7 21 fdiv cnt bdf的原理图 续 2020 4 7 22 对日的计数子模块 功能 对输入的日时钟clki进行28或31分频 根据是否闰年和月份对天计数 输出日期 并产生月时钟信号mon clk 在计日时 必须考虑当前的月份是几月来确定终值 当月份为二月时还要判断是否为闰年 注意 当清零信号有效时 日的初始值为1 而不是0 2020 4 7 23 注 关于闰年 闰日 一回归年的时间为365天5时48分46秒 阳历把一年定为365天 所余的时间约每4年积累成一天 加在二月里 这样的方法 在历法上叫做闰 阳历四年一闰 在二月末加一天 这一天叫做闰日 leapday 阳历有闰日的一年叫做闰年 leapyear 这年有366天 所以阳历平常年份每年365天 二月为28天 闰年为366天 二月为29天 因此 每400年中有97个闰年 2000年 2099年间有25个闰年 本实验中按阳历计时 阳历闰年的计算方法 能被4整除 且不能被100整除的年为闰年 如1904年 能被400整除的年为闰年 如2000年 不能被4整除的年为平年 如1901年 能被4整除 也能被100整除的年为平年 如1900年 2020 4 7 24 功能 对年计数 输出年份 并根据哪年是闰年产生leapyear信号 关键是对闰年的判断法 最简单的方法是求模 也可以采用枚举的方法 注意 如果采用求模的方法 首先要声明一个二进制计数器 如cnt 7 0 将BCD码转换为真正的十进制数 然后再用cnt 7 0 模4 求得leapyear 否则leapyear不正确 想一想 为什么 对年计数子模块fdivyear v 2020 4 7 25 功能 对输入的月时钟12分频 即对月计数 输出月份 并产生年时钟信号year clk 对月计数子模块fdiv12 v 注意 清零后其初值应为1而不是0 计数时必须采用非阻塞赋值语句 否则month在clki有效的第一个值为2 而不是1 2020 4 7 26 5 闹钟定时和整点报时子模块 主要完成功能闹钟定时中的小时 分设置 在正常计时到闹钟设定值时产生持续20s的闹铃音 若按住set键不放 可屏蔽闹铃音 每逢整点 产生 嘀嘀嘀嘀 嘟 四短一长的报时音 当按动clr alarm set键 复位闹钟定时设置为0点0分 难点 2020 4 7 27 输入信号clk 4Hz T 250ms 来自clkdiv v的输出 作为闹铃功能和整点报时功能的基准时钟信号clk 1KHz T 1ms 来自clkdiv1000 v的输出 作为产生闹铃音 报时音音调的时钟信号disp mode 1 0 显示模式 来自route v的输出sec 7 0 min 7 0 hour 7 0 秒 分钟和小时的计数值 来自fdiv cnt bdf的输出set ahr set amin 设定闹钟定时的时钟信号 来自route v的输出set 设置计数初值信号 2020 4 7 28 输出信号amin 7 0 ahour 7 0 闹钟定时计数器的输出 送至scan disp valarm 输出到扬声器的信号 产生闹铃音和报时音ear 周期为1s 用于产生整点报时音alarm2 整点报时信号 2020 4 7 29 1 闹钟定时中的小时设置always posedgeset ahrorposedgeclr alarm set 2 闹钟定时中的分设置always posedgeset aminorposedgeclr alarm set 3 闹铃功能always posedgeclk 4Hz 4 整点报时功能always posedgeclk 4Hz a 产生ear信号 周期为1s 用于产生整点报时音always b 产生整点报时信号alarm2assignalarm alarm1 clk 4Hz c 产生闹铃音或整点报时音 当alarm1为1时 每0 25s产生一个音频为1KHz的闹铃音 alarm clk 4Hz clk 1KHz 并持续20s 整个子模块可分成4个部分 2020 4 7 30 6 数码管扫描显示子模块 功能当disp mode为不同的值3 2 1 0时 分别显示闹钟定时 星期 年月日以及时分秒 闪烁功能 当要手动调整时间或设置闹钟定时时 选择了某对象 如时间中的小时 后 所对应的数码管 数码1 数码2 闪烁点亮 以表示要对该对象初值进行设置 注意 数码3 6始终不亮 闹钟定时只有数码1 2 4 5亮 显示星期只有数码1亮 2020 4 7 31 6 数码管扫描显示子模块 续 设计思路 声明一个reg型变量state 2 0 作为状态机 它有6个状态s6 s1 分别驱动串行扫描控制信号scan en 8 scan en 7 scan en 5 scan en 4 scan en 2 scan en 1 当state 2 0 分别为s1 s2 s6时 scan en 8 1 分别为128 64 16 8 2 1 使得数码管8 7 5 4 2 1分时点亮 整个程序包括3个部分 1 状态机的状态转移 注意使数码6和数码3始终不亮 采用if else语句描述状态转移 2 闪烁使能信号赋值 3 产生七段码数码管的输入信号和使能信号 采用case语句的嵌套 根据disp mode和state的值来决定串行扫描数据scan data和扫描控制信号scan en的值 2020 4 7 32 实验内容 1 设计一个电子日历和电子时钟2 仿真对两个时钟分频子模块clkdiv1000 v和clkdiv v进行仿真对选择设置计数初值对象子模块route v进行仿真对fdiv cnt bdf中的几个主要子模块进行仿真对fdiv cnt bdf仿真重点仿真alarm v对数码管扫描显示子模块scan disp v仿真对ecc bdf仿真 2020 4 7 33 3 编程下载 仿真完全正确后 将原顶层图形设计文件ecc bdf另起名保存 如ecc download bdf 并在其时钟输入引脚后增加一个时钟分频模块clkdiv1ms v 输出为对称方波 将输入时钟fclk 20MHz分频为f 1KHz 即T 1ms 编译 再对ecc download bdf进行引脚锁定 实验箱设置 下载 2020 4 7 34 4 在线校验 验证检查步骤设置时间初值为02小时1分00秒 设置日期初值为04年2月1日 并接着按setn键 注意观察当增到2月28日时 再按1次setn键 日期将跳为2月29 还是直接跳为3月1日 设置星期初值为6 设置闹钟定时为2点3分 验证闹钟功能 验证清除闹钟定时设置功能 验证

温馨提示

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

评论

0/150

提交评论