实验教程电子钟ppt培训课件

上传人:aa****6 文档编号:54691502 上传时间:2018-09-17 格式:PPT 页数:37 大小:228.50KB
返回 下载 相关 举报
实验教程电子钟ppt培训课件_第1页
第1页 / 共37页
实验教程电子钟ppt培训课件_第2页
第2页 / 共37页
实验教程电子钟ppt培训课件_第3页
第3页 / 共37页
实验教程电子钟ppt培训课件_第4页
第4页 / 共37页
实验教程电子钟ppt培训课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《实验教程电子钟ppt培训课件》由会员分享,可在线阅读,更多相关《实验教程电子钟ppt培训课件(37页珍藏版)》请在金锄头文库上搜索。

1、2018/9/17,1,计算机EDA设计实验教程,实验十一 电子日历和电子时钟,北航计算机学院 艾明晶,2018/9/17,2,内容概要,实验目的 实验要求 实验原理 实验指导 实验内容 实验报告,2018/9/17,3,实验目的,掌握电子日历和电子时钟的原理。 熟悉同步及异步时序电路和相应计数器的设计方法。 综合应用前面的设计如计数器、分频电路、数码管扫描显示等知识。,2018/9/17,4,实验要求,设计一个电子日历和电子时钟 计时功能:包括对时间和日期的计时; 校时功能:能用按钮方便地设置各时间单位计数初值,且当选择了某对象后,所对应的数码管闪烁点亮; 清零功能:能用按钮将时间清为0点0

2、分0秒,或将日期清为00年1月1日,星期一;或将闹钟定时设置清为0点0分;,2018/9/17,5,定时提醒(闹钟)的功能:能在设定的时间发出闹铃音,即持续20秒的急促的“嘀嘀”音,若按住setn键不放,可屏蔽闹铃音; 整点报时功能:每逢整点,产生“嘀嘀嘀嘀嘟”四短一长的报时音; 显示功能:同时采用6个数码管扫描显示时间或日历或闹钟定时的值。使用显示模式切换按钮(moden),当按动不同的次数时,分别选择显示时间、日期、星期和闹钟定时。,2018/9/17,6,利用GW48-SOPC+实验开发系统实现设计的编程下载 编程器件为EP1C12Q240C8; 系统时钟fclk = 20MHz; 使用

3、实验箱上的未防抖开关键9进行显示模式切换,使用键10和键11选择设置计数初值对象和设置计数初值; 使用数码管数码1、2、4、5、7、8实现计数值的扫描显示; 使用扬声器SPEAKER播放闹铃音和整点报时音; 使用键12、键13和键14实现对时间、日期和闹钟定时的清零功能 。,2018/9/17,7,实验原理,电子日历和电子时钟在设计思想上并无多少差异,二者都是利用几级分频电路对时钟信号分频计数,以达到计时的功能。 开发系统上采用的时钟信号的频率是20MHz,可分别设计计数器对其分频计数,包括计秒、分、小时、日、周、月以及年等。在每一级上显示输出,即构成了一个电子日历和时钟的模型。 为了可以随意

4、调整计数值,还应包含设定计数初值的电路。,2018/9/17,8,实验指导,1. 信号定义及下载板资源分配 输入信号 clk:系统时钟信号 20MHz,接Pin28 moden:选择显示时间或日历或闹钟定时的显示模式切换信号,接按钮开关键9 selectn:选择设置计数初值对象信号,接按钮开关键10 setn:设置计数初值信号,接按钮开关键11 clr_timen:时间复位信号,接按钮开关键12 clr_daten:日期复位信号,接按钮开关键13 clr_alarm_setn:清除闹钟定时设置信号,接按钮开关键14,注意:键9 14输出均为负脉冲有效!,2018/9/17,9,输出信号 ala

5、rm:输出到扬声器的信号,产生闹铃音和整点报时音; out70:从高到低分别对应数码管的p(小数点)、g、f、e、d、c、b、a各段; scan_en18:分别驱动8个数码管数码18的扫描显示控制端 。,2018/9/17,10,2. 设计思路,建议采用顶层图形设计方法,为快速仿真,先不考虑下载时实际使用的系统时钟是多少,假定这里的输入时钟周期为T=1ms。 将整个电路划分为7个子模块: 时钟分频子模块(两个); 按钮消抖电路子模块; 选择设置计数初值对象子模块; 分频计数子模块(关键); 闹钟定时和整点报时子模块(关键) ; 数码管扫描显示子模块; 七段码译码器子模块。,2018/9/17,

6、11,顶层图形文件ecc.bdf,(3)选择设置计数初值对象,(4)分频计数,(2)按钮消抖,(1)时钟分频,2018/9/17,12,顶层图形文件ecc.bdf(续),(6)数码管扫描显示,(7)七段码译码器,(5)闹钟定时和整点报时,2018/9/17,13,(1)时钟分频子模块,时钟分频子模块有两个 clkdiv1000.v对输入时钟(f=1KHz,T=1ms)进行1000分频,获得1Hz的时钟,作为分频计数子模块fdiv_cnt.bdf的输入时钟。 clkout必须在计够分频计数值后才有一个正跳变,这样才与实际情况相符!,2018/9/17,14,(1)时钟分频子模块(续),clkdi

7、v.v对输入时钟(f=1KHz)进行250分频,获得4Hz的时钟,作为产生闹铃音,以及数码管闪烁显示的时钟信号;对输入时钟进行100分频,获得10Hz的时钟,作为设置计数初值时按下setn键能够连续快速加1的时钟信号。,注意:在设计clkdiv.v时,使输出时钟信号clk_4Hz为方波!,2018/9/17,15,clkdiv.v的仿真波形,2018/9/17,16,(2)按钮消抖电路子模块,将按钮开关的负脉冲信号转换为正脉冲信号输出(其定时宽度至少为500ms,若定时长度选得过短,抖动不能够完全消除!)。,500ms,响应pbn信号,signal由“0”变为“1”,并保持500ms。,201

8、8/9/17,17,(3)选择设置计数初值对象子模块,功能 根据显示模式切换信号mode选择是显示时间,或是日历,或是闹钟定时; 在不同的显示模式下,当按动select,使计数器sel10加1计数,从而选择不同的计数初值对象(如在显示时间模式下,按动select,则可以选择是设置小时,还是设置分钟,或是设置秒); 并根据显示模式、sel10的值和set产生设置不同对象计数初值的时钟信号。,2018/9/17,18,(3)选择设置计数初值对象子模块(续),整个子模块可分成4个部分,包括3个always块和一组assign连续赋值语句: mode信号控制显示不同的输出信号always (posed

9、ge mode) 使选择设置对象的计数器sel2:0加1always (posedge select or posedge mode) 若长时间按下set键,则生成num1信号,用于设置初值时连续快速加1 采用连续赋值语句,根据计数器disp_mode10 和sel10的值以及set确定调整时间的信号set_hr等的值 例:assign set_hr= (disp_mode=0) ,2018/9/17,19,(4)分频计数子模块fdiv_cnt.bdf,总体设计思路 由6个分频子模块组成。假定系统时钟20MHz已被分频为f=1Hz后送入fdiv_cnt.bdf作为输入时钟,则对其逐级分频计数,

10、包括秒、分、小时、日,以及周、月和年的计数。 计数时均使用了二进制编码的十进制(即BCD码)计数并直接显示。 采用异步计数方式。 选用异步清零方式。,2018/9/17,20,fdiv_cnt.bdf的原理图,2018/9/17,21,fdiv_cnt.bdf的原理图(续),2018/9/17,22,对日的计数子模块,功能:对输入的日时钟clki进行28或31分频,根据是否闰年和月份对天计数,输出日期;并产生月时钟信号mon_clk。 在计日时,必须考虑当前的月份是几月来确定终值; 当月份为二月时还要判断是否为闰年。,注意:当清零信号有效时,日的初始值为1,而不是0!,2018/9/17,23

11、,注:关于闰年、闰日,一回归年的时间为365天5时48分46秒。阳历把一年定为365天,所余的时间约每4年积累成一天,加在二月里。这样的方法,在历法上叫做闰。 阳历四年一闰,在二月末加一天,这一天叫做闰日(leap day)。阳历有闰日的一年叫做闰年(leap year),这年有366天。所以阳历平常年份每年365天,二月为28天;闰年为366天,二月为29天。因此,每400年中有97个闰年。2000年2099年间有25个闰年。 本实验中按阳历计时! 阳历闰年的计算方法:能被4整除、且不能被100整除的年为闰年(如1904年);能被400整除的年为闰年(如2000年)。不能被4整除的年为平年(

12、如1901年);能被4整除、也能被100整除的年为平年(如1900年)。,2018/9/17,24,功能:对年计数,输出年份;并根据哪年是闰年产生leapyear信号。 关键是对闰年的判断法,最简单的方法是求模(%),也可以采用枚举的方法。 注意:如果采用求模的方法,首先要声明一个二进制计数器(如cnt7:0),将BCD码转换为真正的十进制数!然后再用cnt7:0模4,求得leapyear,否则leapyear不正确!想一想,为什么?,对年计数子模块fdivyear.v,2018/9/17,25,功能:对输入的月时钟12分频,即对月计数,输出月份;并产生年时钟信号year_clk。,对月计数子

13、模块fdiv12.v,注意:清零后其初值应为1而不是0。计数时必须采用非阻塞赋值语句,否则month在clki有效的第一个值为2,而不是1。,2018/9/17,26,(5)闹钟定时和整点报时子模块,主要完成功能 闹钟定时中的小时、分设置; 在正常计时到闹钟设定值时产生持续20s的闹铃音,若按住set键不放,可屏蔽闹铃音; 每逢整点,产生“嘀嘀嘀嘀嘟”四短一长的报时音; 当按动clr_alarm_set键,复位闹钟定时设置为0点0分。,难点 !,2018/9/17,27,输入信号 clk_4Hz(T=250ms),来自clkdiv.v的输出,作为闹铃功能和整点报时功能的基准时钟信号 clk_1

14、KHz(T=1ms),来自clkdiv1000.v的输出,作为产生闹铃音、报时音音调的时钟信号 disp_mode 1:0:显示模式,来自route.v的输出 sec7:0,min7:0,hour7:0:秒、分钟和小时的计数值,来自fdiv_cnt.bdf的输出 set_ahr,set_amin:设定闹钟定时的时钟信号,来自route.v的输出 set:设置计数初值信号,2018/9/17,28,输出信号 amin7:0,ahour7:0:闹钟定时计数器的输出,送至scan_disp.v alarm:输出到扬声器的信号,产生闹铃音和报时音 ear:周期为1s,用于产生整点报时音 alarm2:

15、整点报时信号,2018/9/17,29,/ -(1)闹钟定时中的小时设置 always (posedge set_ahr or posedge clr_alarm_set) /-(2)闹钟定时中的分设置 always (posedge set_amin or posedge clr_alarm_set) /-(3)闹铃功能 always (posedge clk_4Hz) /-(4)整点报时功能 always (posedge clk_4Hz) /(a)产生ear信号(周期为1s),用于产生整点报时音 always /(b)产生整点报时信号alarm2 assign alarm=(alarm1

16、)? clk_4Hz /*(c)产生闹铃音或整点报时音。当alarm1为1时,每0.25s产生一个音频为1KHz的闹铃音:alarm=clk_4Hz&clk_1KHz;并持续20s。*/,整个子模块可分成4个部分,2018/9/17,30,(6)数码管扫描显示子模块,功能 当disp_mode为不同的值3、2、1、0时,分别显示闹钟定时、星期、年月日以及时分秒 。 闪烁功能:当要手动调整时间或设置闹钟定时时,选择了某对象(如时间中的小时)后,所对应的数码管(数码1、数码2)闪烁点亮,以表示要对该对象初值进行设置。,注意:数码3、6始终不亮,闹钟定时只有数码1、2、4、5亮,显示星期只有数码1亮

17、。,2018/9/17,31,(6)数码管扫描显示子模块(续),设计思路: 声明一个reg型变量state2:0作为状态机,它有6个状态s6s1,分别驱动串行扫描控制信号scan_en8、scan_en7、scan_en5、scan_en4、scan_en2、scan_en1。当state2:0分别为s1、s2、s6时,scan_en8: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的值,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号