eda2实验报告数字钟.docx
《eda2实验报告数字钟.docx》由会员分享,可在线阅读,更多相关《eda2实验报告数字钟.docx(31页珍藏版)》请在冰豆网上搜索。
eda2实验报告数字钟
EDAⅡ实验报告
--多功能数字钟
学院:
姓名:
学号:
专业:
指导老师:
完成时间:
2012年11月
摘要
本实验借助于quartusⅡ软件设计一个多功能的数字时钟,具有24小时计时、星期显示、保持、清零、校分校时校星期、整点报时等基本功能,并在此基础上添加了万年历的显示、保持、清零、校准的附加功能。
同时,还能进行闹铃,秒表等功能扩展。
利用quartusⅡ进行相应的设计、仿真、调试,最后下载到SmartSOPC实验系统上验证设计的正确性。
关键词
多功能数字时钟quartusⅡ计时星期显示整点报时万年历显示
Abstract
ThisexperimentistodesignamultifunctionaldigitalclockwithquartusⅡ.Themultifunctionaldigitalclockhasvaritiesofthefunctionslike24-hourtimer,week,keeping,clearingzero,adjustingtimeandchimeonintegralhour.Italsoincludeadditionalfunctionssuchascanlendarandsoon.Atthesametimes,itcanbeaddedotherfunctions.wedesignedandsimulatedwithquartusⅡ.Finallydownloadedittotheexperimentplatformtotest.
Keywords
multifunctionaldigitalclockquartusⅡtimeweekchimeonintegralhourcalendar.
一、实验课题设计要求…………………………………………………4
二、实验方案论证………………………………………………………4
三、基本计时模块设计原理……………………………………………5
1.基本计时电路的设计…………………………………………………………5
1.1脉冲发生电路的设计………………………………………………………5
1.2计时电路的设计……………………………………………………………9
1.3整点报时电路设计………………………………………………………17
2.星期电路设计………………………………………………………………19
3.万年历电路设计……………………………………………………………21
4.译码显示电路设计…………………………………………………………27
5.其它附加电路设计…………………………………………………………31
5.1开关消颤电路……………………………………………………………31
5.2开关分时复用……………………………………………………………32
四、多功能数字时钟的整体结构……………………………………33
五、程序仿真与调试…………………………………………………34
六、编程下载………………………………………………………35
七、实验总结与感想…………………………………………………36八、参考资料………………………………………………………37
一、实验课题设计要求
1.设计一个基本的计时、计星期的数字时钟
2.具体设计要求如下:
2.1能够进行正常的星期、时、分、秒的计时功能;
2.2由七个数码管显示,从左到右分别为时十位、时个位、分十位、分个位、秒十位、秒个位、星期;星期为1、2、3、4、5、6、7来表示周一到周日;或者显示年、月、日。
格式为xxxx:
xx:
xx。
2.3计时电路的开关分配如下表
(1):
K0
K1
K2
K3
K4
K5
K6
K7
保持
清零
显示时间和星期
校分
校小时
校星期
显示年月日
校年
校月
校日
注:
除开关k2为1时显示时间和星期,为0时显示年月日外,其余开关均为1时功能调节。
表
(1)开关功能分配
2.4整点报时功能
当时钟计到59分53秒、55秒、57秒时报时频率为500hz,59秒报时频率为1Khz。
2.5万年历功能
能够进行万年历的正常计数,正常显示年、月、日。
二、实验方案论证
多功能数字时钟的整体框图如图由脉冲发生电路产生数字钟所需的各种频率。
根据要求设计出基本计时、日期模块,各部分显示通过开关功能调节进行切换调节。
其中,计时电路部分设计校分校时保持、校星期、报时和清零等电路。
日期模块部分设计基本日期年、月、日显示,包括闰年非闰年二月天数判定以及其余十一个月天数内正常计数。
还包括年、月、日的校正。
最后报时电路通过蜂鸣器输出,59分53秒、59分55秒、59分57秒三声低音,59分59秒高音。
三、基本计时模块设计原理
1.基本计时电路的设计
基本计时电路原理:
通过分频电路来构成脉冲发生电路,将实验箱48Mhz分成基本计时电路所需的各种脉冲。
基本计时电路由模60、模24和模7计数器组成。
由脉冲发生器产生1hz的信号来计时。
报时电路检测计时电路的小时、分钟,当时间为59分53秒、55秒、57秒时以500hz的频率驱动蜂鸣器,59秒时以1Khz的频率驱动蜂鸣器。
时、分、秒的十位和个位、星期通过译码显示电路动态显示。
用校时校分保持电路、校星期电路和清零电路来控制基本计时电路。
1.1脉冲发生电路的设计
实验箱能提供48MHz的频率,而计时需要1Hz频率,校时校分需要2Hz频率,整点报时需要1KHz和500KHz频率,因此分频电路要将将实验箱48MHz的频率分频成1Hz,2Hz以及1KHz和500KHz频率。
将48MHz经24分频再经2次1000分频后得2Hz频率,再经2分频后得到1Hz,将48MHz经24分频再经1次1000分频后得2KHz频率,再经2分频后得到1KHz频率。
脉冲发生电路原理图如下:
a.2分频电路
模块封装:
此处由一个D触发器Q端接非门送入D实现二分频。
二分频电路仿真波形:
b.3分频电路
模块封装:
3分频电路即为1模3计数器,个使用74160组成模3计数器实现3分频。
当计数到0100(即2)时同步置数为0000,因此将QB接到LDN端,实现从0000、0001、0010、0000、0001、0010...计数,从而实现三分频。
仿真波形:
c.8分频电路
模块封装:
8分频电路由3个D触发器组成,在此不再讨论
仿真波形:
d.1000分频电路
模块封装:
1000分频电路由3个模10计数器组成,其中模10计数器由74160组成,在模1000计数器末端加了一些门电路,使得输出为
化简得如图的门电路形式,即当模10计数为0000,0001,0010,0011,0100时输出为1,其他输出为0,即0~4为1,5~9为0,从而实现1:
1占空比。
仿真波形:
e.总分频电路
模块封装:
1.2计时电路的设计
计时电路包括秒,分,时,星期四个模块,依次进位,设计采用同步计数电路,将分秒时和星期的时钟端和清零端设为同一个1Hz脉冲。
其中,秒和分模块类似,都是一个模60计数器,只是秒模块的进位为1Hz脉冲,而分模块的使能端为秒模块的进位;时模块是一个模24计数器,使能端由秒模块和分模块的进位相与得到,而星期则是一个特殊的模7计数器,使能端由秒模块、分模块和是模块的进位相与得到。
计时电路示意如下:
虽然秒模块和分模块都是摸60的计数器,但是由于考虑到秒模块正常计数到59秒同步置数为00即可,分模块必须等秒模块计数到59秒时才能进位,并且分模块计数到59分时不能马上清零,必须要等到秒模块计数到59秒时才能进位,因此有所差异,故分开设计封装。
a.秒计时模块
模块封装:
管脚说明:
输入:
CP为外部的1Hz脉冲,RD为清零信号。
输出:
Y1[3..0]为秒个位,Y2[3..0]为秒十位。
CO为秒向分的进位信号,当计数到59秒时,CO由1变为0。
秒计时模块的实质是一个模60计数器。
如图,前一个74160为个位,后一个为十位,每当个位计数到1001时,RCO由0变为1,将十位的ENT置位,十位的74160计1,当十位的计数到5(0101),个位的计数到9(1001)时,将59时个位的
QD、QA十位的QA、QC与非之后送给LDN,74160置位端LDN低电平有效,此时置位两个计数器为0000,重新由0开始,这样就完成了模60计数。
在0到59之间时,LDN=1,无效;59时,LDN=0,计数器将被置位为0。
仿真波形:
b.分计时模块
模块封装:
管脚说明:
输入:
CP为外部的1Hz脉冲,RD为清零信号,SCO为秒想分的进位信号。
输出:
Y1[3..0]为分个位,Y2[3..0]为分十位。
MCO为分向时的进位信号,当计时到59分59秒时MCO由1变为0。
分计时模块同样是一个模60计数器。
如图,前一个74160为个位,后一个为十位,但是与秒计时模块不同,秒模块正常计数到59秒同步置数为00即可,分模块必须等秒模块计数到59秒时才能进位,需增加使能端;并且,分模块计数到59分时不能马上置数,必须要等到秒模块计数到59秒时才能置为00。
因此,将秒向分的进位信号SCO经过非门后再送入分模块的使能端,当秒模块计时到59秒时,SCO由1变为0,经非门后SCO变为1,在下一个时钟脉冲上升沿到来后驱动分模块的使能端使分模块开始计时。
每当分个位计数到1001时,RCO由0变为1,将十位的ENT置位,十位的74160计数加1,当十位的计数到5(0101),个位的计数到9(1001)时,不能马上将分将位置为00,必须等到秒位也计时到59才行,因此将个位的
QD、QA十位的QA、QC与非并与秒向分的进位信号相或之后送给LDN,74160置位端LDN低电平有效,此时置位两个计数器为0000,即计时到59分59秒时分位才能清零,重新由0开始,这样完成了分模块的设计。
仿真波形同秒计时模块。
c.小时计时模块
模块封装:
管脚说明:
输入:
CP为外部的1Hz脉冲,RD为清零信号,MCO为分向时的进位信号。
输出:
Y1[3..0]为时个位,Y2[3..0]为时十位。
CO为时向星期的进位信号。
时计时模块是一个模24计数器。
如图,前一个74160为个位,后一个为十位,但是同样要注意:
时模块必须等分模块和秒模块计数到59分59秒时才能进位,需增加使能端;并且,时模块计数到23时时不能马上置数,必须要等到分模块和秒模块计数到59分59秒时才能置为00。
因此,将分向时的进位信号MCO经过非门后再送入分模块的使能端,当前两个模块计时到59分59秒时,MCO由1变为0,经非门后HCO变为1,在下一个时钟脉冲上升沿到时后驱动时模块的使能端使分模块开始加计时。
每当分个位计数到1001时,RCO由0变为1,将十位的ENT置位,十位的74160计数加1,当十位的计数到2(0010),个位的计数到3(0011)时,不能马上置为00,必须等到分秒模块计时到59分59秒,因此将59时个位的
QD、QA十位的QA、QC与非并与分向时的进位信号(当计时到59秒59分时由1变为0)相或之后送给LDN,74160置位端LDN低电平有效,此时置位两个计数器为00,即计时到23时59分59秒时分位才能清零,重新由0开始,这样完成了时模块的设计。
仿真波形:
d.星期计时模块
模块封装:
管脚说明:
输入:
CP为外部的1Hz脉冲,RD为清零信号,HCO为时向星期的进位信号。
输出:
Y[3..0]为星期输出。
星期电路实际是一个从1到7的模7计数器,但是74160只能从0开始计数,故使用全加器将74160的输出加一即可,同分时电路,星期电路需要爱增加使能端,以控制星期模块在时分秒模块计时到23时59分59秒时才能开始加进位,将HCO经非门后作为星期模块的使能端。
当前三个模块计时到23时59分59秒时,HCO由1变为0,经非门后HCO变为1,在下一个时钟脉冲上升沿到时后驱动时模块的使能端使分模块开始加计时。
每当星期模块计数到7(0111)时,不能马上置为0,必须等到时分秒模块计时到23时59分59秒,因此将星期的QA、QB、QC与非并与时向星期的进位信号HCO(当计时到23时59秒59分时由1变为0)相或之后送给LDN,74160置位端LDN低电平有效,此时置位O,即计时到星期日23时59分59秒时分位才能清零,重新由0开始,这样完成了时模块的设计。
仿真波形:
e.计时电路
模块封装:
管脚说明:
输入:
CP为外部的1Hz脉冲,RD为清零信号。
输出:
SL[3..0]为秒个位,SH[3..0]为秒十位;ML[3..0]为分个位,MH[3..0]为分十位;HL[3..0]为时个位,HH[3..0]为时十位;WK[3..0]为星期。
仿真波形:
1.3整点报时电路设计
模块封装:
管脚说明:
输入:
SL、SH、ML、MH分别对应秒、分个位、十位的BCD码的相应位。
500hz与1khz为报时电路的两种驱动频率;
输出:
BAOSHI
当计时到59’53”,59’55”,59’57”时,报时频率为500Hz;当计时到59’59”时,报时频率为1KHz。
59’53”、59’55”、59’57”、59’59”对应的四个输出分别为:
(0101,1001,0101,0011);(0101,1001,0101,0101);(0101,1001,0101,0111);(0101,1001,0101,1001)。
可见,报时功能选择出的高电平输出端的分十位,分个位,秒十位均是相同的,即0101,1001,0101;但秒个位是不同的,对应于0011,0101,0111,1001,秒各位的QA(即SL[0])也是相同的,因此首现将ML[0]、ML[3]、MH[0]、MH[2]相与后确定分十位为5,分个位为9,再将SH[1]、SH[2]、SL[0]相与确定秒个位的最低位为1,十位为5,将SL[1]和SL[2]相或再与500Hz频率相与,SL[3]与1KHz相与,再将两者相与的结果相或,最后将2个与门一个非门的结果相与,即
f=ML[0]ML[3]MH[0]MH[2]SH[1]SH[2]SL[0]((SL[1]+SL[2])500Hz+SL[3]1KHz)就能确保计时到59’53”,59’55”,59’57”时,分别发出一声较低的蜂鸣声(500hz);当计时到59’59”时,发出一声较高的蜂鸣声(1khz)。
由此可以实现报时电路。
2.计时+保持+清零+校时校分+报时电路
电路设计图如下:
模块封装:
管脚说明:
输入:
1hz、2Hz、500hz、1khz、为外部脉冲;K1是系统的使能开关(K1=0正常工作,K1=1时钟保持不变);K2是系统的清零开关(K2=0正常工作,K2=1时钟的分、秒全清零);K3是系统的校分开关(K3=0正常工作,K3=1时可以快速校分);K4是系统的校时开关(K4=0正常工作,K4=1时可以快速校时);K5是系统的校星期开关(K5=0正常工作,K5=1时可以快速校星期);
输出:
SL[3..0]为秒个位,SH[3..0]为秒十位;ML[3..0]为分个位,MH[3..0]为分十位;HL[3..0]为时个位,HH[3..0]为时十位;WK[3..0]为星期输出,BAOSHI接蜂鸣器。
各子模块分别如下:
a.保持功能
将经消颤后的k1再经非门后接星期、时、分、秒模块的时钟端CP,可见当保持开关k1为低电平时,正常计时;为高电平时秒个位无时钟信号输入,从而整个系统处于保持状态。
b.清零功能
将经消颤后的k2再经非门后接星期、时、分、秒模块的清零端,可见当开关k2为低电平时,正常计时;为高电平时清零信号有效,从而将星期时分秒的各位都清零。
c.校时、校分、校星期功能
当校分开关k3=0时正常计时,k3=1时,屏蔽了秒向分的进位输入,使得进位脉冲为2hz,从而实现快速校分;当校时开关k4=0时正常计时,k4=1时,屏蔽了分向时的进位,进位脉冲为2hz,实现快速校时。
当校时开关k5=0时正常计时,k5=1时,屏蔽了分向时的进位,进位脉冲为2hz,实现快速校星期。
3.万年历电路设计
对于万年历计数电路,由于一年中有的月份是有30天,而有的月份是有31天,甚至特殊的二月份则是有时候29天,有时候28天,根据不同的月份来选择天份的计数器,我们设置了天数判断模块,从而分别控制上述模28,29计数器,模30计数器,模31计数器的使能端,这样就能实现不同月份按照不同的天数来计数。
对于月份计数电路,实际上也就是一个模12计数器,但是我们增加一个天份计数判断模块,也就是对于1,3,5,7,7,10,12月份,我们应该保证是31天也就是模31计数,而对于4,6,9,11月份,我们应该保证是30天也就是模30计数器,对于2月份我们应该用模28或29计数器。
要选择使用那种计数器我们只需要设计一个天数判断器,根据年份和月份判断出天数,然后由天数给计数器信号实现模数的选择。
对于年份计数器,我们运用四片74160计数的级联来实现10000年的计数,这在实际生活中时间足够长。
除此之外,由于二月份在润年,平年的时候是有不同的天数,所以我们需要判断年份是否是闰年,从而控制二月份是28天还是29天。
而要想判断年份是否是闰年,则将年份整除100,若能整除,则继续整除4,能整除则是闰年,否则平年;若不能被100整除,则整除4,能整出就是闰年,不能整除则是闰年,通过这种方法,我们就能判断出是否闰年。
从而确定二月份应该有几天。
a.年、月计数设计
模块封装:
管脚说明:
输入:
clk为1kz的时钟信号,kclr为清零开关,djmi为天向月进位,dh[1]、dh[0]分别为天的高位二进制码的低两位。
dl[0]为天低位二进制码的最后一位。
Kjm为校天输入,kjy为校年输入。
输出:
ml[0..3]、mh[0..3]、yll[0..3]、ylh[0..3]、yhl[0..3]、yhh[0..3]分别表示月个位、月十位、年个位、年十位、年百位、年千位输出。
如图可知年月计数器分别是由74163构成的模12计数器,和由4片74160构成的模10000计数器。
由外部天数信号以及开关信号可以进行年月的正常计数和校正。
仿真波形:
b.天计数器设计
模块封装:
管脚说明:
输入:
1khz为芯片脉冲信号,a1、b1为控制选择输出是闰年二月、非闰年二月、非二月31天、非二月30天信号。
由下面日期天数选择模块提供输出。
Clr为清零开关,kjiaoday为校天开关。
输出:
dl[3..0]、dh[3..0]、out、分别为天的个位和十位,以及天的进位端。
仿真波形如下:
可见,
A1
B1
输出天数
0
0
28
0
1
30
1
0
29
1
1
31
c.天数判断模块
对非整百且能被4整除的年份分析后发现,当十位为偶数0、2、4、6、8,个位为0、4、8时能被4整除。
同时也考虑到个位为0时,十位不能为0。
对于整百且能被400整除的年份,同上,只需个位和十位为0,且百位为0、4、8,且千位为0、2、4、6、8。
将判断后的结果再与月份进行相应计算,就可以得到四种天数输出信号。
原理图如下:
封装模块:
管脚说明:
输入:
ml[0..3]、mh[0..3]、yll[0..3]、ylh[0..3]、yhl[0..3]、yhh[0..3]分别表示月个位、月十位、年个位、年十位、年百位、年千位。
输出:
a1、b1
仿真波形如下:
仿真图中可得:
年份
月份
A1
B1
天数
2010
10
1
1
31
2008
2
1
0
29
2000
4
0
1
30
2012
3
1
1
31
备注:
之前没有发现没有仿真到非闰年二月,到后期检查时本想补上,但由于软件试用期已到,不能再使用了。
但在实验过程中四种情况仿真结果是正确的。
d.日期电路模块
封装模块:
管脚说明:
输入:
clk为1kz的时钟信号,kclr为清零开关,Kjiaoday为校天输入,Kjm为校月输入,kjy为校年输入,xinqiin为星期信号输入。
输出:
dl[3..0]、dh[3..0]分别为天的个位和十位,ml[0..3]、mh[0..3]、yll[0..3]、ylh[0..3]、yhl[0..3]、yhh[0..3]分别表示月个位、月十位、年个位、年十位、年百位、年千位。
当校天开关kjiaoday=0时正常计数,kjiaoday=1时,使得进位脉冲为2hz,从而实现快速校天;当校月开关kjm=0时正常计时,kjm=1时,屏蔽了天向月的进位,进位脉冲为2hz,实现快速校月。
同理kjy用于校年。
5.译码显示电路设计
动态译码显示电路原理:
显示电路主要由数据选择器74151、译码器74138、计数器、显示译码器7447和数码显示管组成。
显示电路示意图如下:
用动态扫描显示法进行数据显示,即每次只显示一位,按照一定的显示时间间隔轮流显示。
每个显示位均为四位二进制数,所以需要4片数选器;要显示的位有时分秒6位(HH,HL,MH,ML,SH,SL),加上星期显示1位(W),再加上一个空位,共8位。
数选器的选择信号有三位,要用一个模8循环计数器作为数选器的地址选择端,供轮流选择带显示的数据;此外,还要用一个3-8译码器74138来选择数码管(DIG位)来显示对应的数据。
由于要显示内容包括了年份,月份,天份,星期,小时,分钟,秒钟,所以8个LED灯不够用,需要用开关k实现显示复用。
通过开关的选择,选通不用的信号到动态显示电路上。
这样年份,月份,天份为一组,星期,小时,分钟,秒钟为另一组,通过开关就能实现分组显示。
实现该功能需要8片74157数据选择器,有开关k控制需要选择输入的数据。
封装模块:
管脚说明:
输入:
1kin为脉冲输入,k为显示模式控制开关,tla[0..3]-tlh[0..3]为时间输入。
Dla[0..3]-dlh[0..3]为日期输入。
输出:
en[6..0]控制8个数码管的使能端,led[0..6]为数码管的七段。
计数器74160设计为模8的循环计数器,其输出既作为4片74151的控制端,又作为3-8译码器74138的控制端。
当计数器计数到某一个数值时,四片74151同时选取对应位的输入组成计时器某一位的BCD编码,接入显示译码器7447,与此同时根据计数器的数值,74138译码器也通过数码管的使能端选择对应位有效,从而在实验箱上显现数据。
扫描的频率为1KHz,因为人眼的视觉停留,会感觉七个数码管同时显示。
5.其它附加电路设计
5.1开关消颤电路
由D触发器构成消颤电路,利用D触发器锁存开关的动作信号,并避免颤抖。
封装模块:
开关总消颤电路:
封装模块:
管脚说明:
输入:
2hz为脉冲输入,k0-k7为开关信号输入
输出:
k0o-k7o为消颤后开关输出。
5.2开关分时复用
由于要进行校时、校分、校星期、校年、校月、校日、保持、清零、显示转换功能,而开发板上