eda闹钟系统的设计1Word文件下载.docx
《eda闹钟系统的设计1Word文件下载.docx》由会员分享,可在线阅读,更多相关《eda闹钟系统的设计1Word文件下载.docx(10页珍藏版)》请在冰点文库上搜索。
3、设置新的计时器时间:
用户用数字键输入新的时间,然后按"
TIME"
键确认。
在输入过程中,输入数字在显示屏上从右到左依次显示。
例如,用户要设置新的时间12:
34,则按顺序输入“1”,“2”,“3”,“4”,与之对应,显示屏上依次显示的信息为:
“1”,“12”,“123”,“1234"
。
如果用户在输入任意几个数字后较长时间内,例如5s,没有按任何键,则计时器恢复到正常的计时显示状态。
主要参考资料:
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2011.3.11
指导教师
专业负责人
2011年3月7日
一、总体设计思想
1.基本原理
数字闹钟电路基本功能有计时功能、定点报时功能和重置时间功能。
主要由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。
秒计数器的计数时钟CLK为1Hz的标准信号。
当数字闹钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号时、分、秒的计时结果通过6个数码管来动态显示。
因此,通过模式选择信号KEY1、KEY2控制数字钟的工作状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定闹钟分、时5个状态。
当数字闹钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为CLK,秒的进位,分的进位;
当数字闹钟处于调整时间状态时,被调的分或时会一秒一秒地增加;
当数字钟处于闹钟定时状态时,可以设定小时和分;
当计时到所设定的时刻时,驱动扬声器,持续1分钟。
2.设计框图
外部控制信号
二、设计步骤和调试过程
1、总体设计电路
2、模块设计和相应模块程序
(1)、分计时器(second1)
-----------------------分钟十位
m110:
process(clk,min2,sec1,sec2,md1,md2)
begin
ifclk'
eventandclk='
1'
then
if(min1="
0101"
andmin2="
1001"
)and(sec1="
andsec2="
)then
min1<
="
0000"
;
elsifmin1="
andmin2="
and(md1='
0'
andmd2="
00"
)then
elsif(min2="
and(sec1="
))
or(min2="
andmd1='
)thenmin1<
=min1+1;
endif;
--endif;
endprocessm110;
-----------------------分钟个位
m220:
process(clk,sec1,sec2,md1,md2)
ifmin2="
)thenmin2<
elsifmin2="
elseif(sec1="
)or(md1='
min2<
=min2+1;
endprocessm220;
(2)、时计时器(hour1)
-----------------------------------------------小时十位
h110:
process(clk,hou2,min1,min2,sec1,sec2,md1,md2)
if(hou1="
00010"
andhou2="
00011"
)and(min1="
)
)thenhou1<
00000"
elsifhou1="
andhou2="
01"
--当时间为23点且处于校时状态时
hou1<
elsif(hou2="
01001"
and(min1="
))or(hou2="
thenhou1<
=hou1+1;
endprocessh110;
-----------------------------------------------小时个位
h220:
process(clk,min1,min2,sec1,sec2,md1,md2,hou1)
)thenhou2<
elsifhou2="
)or(hou1="
--md<
='
elsif((min1="
))
or(md1='
=hou2+1;
--speak<
=clk;
endprocessh220;
(3)、报时模块(speak)
--------------------------------------------闹铃
speaker:
process(clk,hou1,hou2,min1,min2)
then
ifseth1=hou1andseth2=hou2andsetm1=min1andsetm2=min2thenspeak<
elsespeak<
endprocessspeaker;
disp:
process(md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)
ifmd1='
thenh1<
=hou1;
h2<
=hou2;
---------------计时时间显示和设置模式
m1<
=min1;
m2<
=min2;
s1<
=sec1;
s2<
=sec2;
else-----------闹铃时间现实和设置模式
h1<
=seth1;
=seth2;
m1<
=setm1;
=setm2;
s1<
1111"
endprocessdisp;
endone;
3、仿真及仿真结果分析
(1)、秒时钟
(2)、分时钟
(3)、报时
(4)、功能仿真RTL图
4、实验调试结果
在波形仿真时,结果不能在波形上得到正确的显示:
在设定输入的时钟信号后,数字钟开始计数,但是始终看不到小时、星期的循环计数。
在数多次调试之后,发现是因为输入的时钟信号对于小时、星期来说太短了。
经过多次调试,终于找到了比较合适的输入数值:
分钟的初始值可以设为57(58、59都可以),小时的初始值可以设为23,这样,仿真之后,就能清楚的看出分钟、小时的循环计数。