闹钟系统的设计gaoqian.docx
《闹钟系统的设计gaoqian.docx》由会员分享,可在线阅读,更多相关《闹钟系统的设计gaoqian.docx(14页珍藏版)》请在冰豆网上搜索。
闹钟系统的设计gaoqian
东北石油大学
课程设计
课程EDA技术课程设计
题目闹钟系统的设计
院系电子科学学院
专业班级电子信息工程
学生姓名高倩
学生学号070901140402
指导教师
2011年3月11日
东北石油大学课程设计任务书
课程EDA技术课程设计
题目闹钟系统的设计
专业电子信息工程姓名高倩学号070901140402
主要内容、基本要求、主要参考资料等
主要内容:
设计并制作一个带闹钟功能的24小时计时器。
它包括以下几个组成部分:
1、显示屏,由4个七段数码管组成,用于显示当前时间(时:
分)或设置的闹钟时间;
2、数字键,实现‘0’—‘9’的输入,用于输入新的时间或新的闹钟时间;
3、TIME(时间)键,用于确定新的时间设置;
4、ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;
5、扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声
基本要求:
1、计时功能:
这是本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。
2、闹钟功能:
如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。
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)顶层文件:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYclockIS
PORT(CLK12MHZ:
INSTD_LOGIC;
CLK8HZ:
INSTD_LOGIC;
SPKOUT:
OUTSTD_LOGIC;
CLK:
INSTD_LOGIC;
KEY1:
INSTD_LOGIC;
KEY2:
INSTD_LOGIC_VECTOR(1DOWNTO0);
H1,H2,M1,M2,S1,S2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
END;
ARCHITECTUREoneOFclockIS
COMPONENTshizhong
PORT(clk:
instd_logic;
md1:
instd_logic;
md2:
instd_logic_vector(1downto0);
clken:
outstd_logic;
h1,h2,m1,m2,s1,s2:
outstd_logic_vector(3downto0));
ENDCOMPONENT;
COMPONENTNoteTabs
PORT(clk:
INSTD_LOGIC;
ToneIndex:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTToneTaba
PORT(Index:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Tone:
OUTSTD_LOGIC_VECTOR(10DOWNTO0);
en:
instd_logic);
ENDCOMPONENT;
COMPONENTSpeakera
PORT(clk:
INSTD_LOGIC;
Tone:
INSTD_LOGIC_VECTOR(10DOWNTO0);
SpkS:
OUTSTD_LOGIC);
ENDCOMPONENT;
SIGNALTone:
STD_LOGIC_VECTOR(10DOWNTO0);
SIGNALToneIndex:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALclken:
STD_LOGIC;
SIGNALen:
STD_LOGIC;
BEGIN
u1:
ShizhongPORTMAP(clk=>CLK,md1=>KEY1,md2=>KEY2,clken=>en,
h1=>h1,h2=>h2,m1=>m1,m2=>m2,s1=>s1,s2=>s2);
u2:
NoteTabsPORTMAP(clk=>CLK8HZ,ToneIndex=>ToneIndex);
u3:
ToneTabaPORTMAP(Index=>ToneIndex,Tone=>Tone,en=>en);
u4:
SpeakeraPORTMAP(clk=>CLK12MHZ,Tone=>Tone,SpkS=>SPKOUT);
END;
(2)时钟控制模块:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityshizhongis
port(clk:
instd_logic;
md1:
instd_logic;
md2:
instd_logic_vector(1downto0);
clken:
outstd_logic;
h1,h2,m1,m2,s1,s2:
outstd_logic_vector(3downto0));
endshizhong;
architectureoneofshizhongis
signalhou1:
std_logic_vector(3downto0);
signalhou2:
std_logic_vector(3downto0);
signalmin1:
std_logic_vector(3downto0);
signalmin2:
std_logic_vector(3downto0);
signalseth1:
std_logic_vector(3downto0);
signalseth2:
std_logic_vector(3downto0);
signalsetm1:
std_logic_vector(3downto0);
signalsetm2:
std_logic_vector(3downto0);
signalsec1:
std_logic_vector(3downto0);
signalsec2:
std_logic_vector(3downto0);
begin
分计时器(second1)
m110:
process(clk,min2,sec1,sec2,md1,md2)
begin
ifclk'eventandclk='1'then
if(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")then
min1<="0000";
elsifmin1="0101"andmin2="1001"and(md1='0'andmd2="00")then
min1<="0000";
elsif(min2="1001"and(sec1="0101"andsec2="1001"))
or(min2="1001"andmd1='0'andmd2="00")thenmin1<=min1+1;
endif;
endif;--endif;
endprocessm110;
m220:
process(clk,sec1,sec2,md1,md2)
begin
ifclk'eventandclk='1'then
ifmin2="1001"and(sec1="0101"andsec2="1001")thenmin2<="0000";
elsifmin2="1001"and(md1='0'andmd2="00")thenmin2<="0000";
elseif(sec1="0101"andsec2="1001")or(md1='0'andmd2="00")then
min2<=min2+1;
endif;
endif;endif;
endprocessm220;
(2)、时计时器(hour1)
h110:
process(clk,hou2,min1,min2,sec1,sec2,md1,md2)
begin
ifclk'eventandclk='1'then
if(hou1="00010"andhou2="00011")and(min1="0101"andmin2="1001")
and(sec1="0101"andsec2="1001")thenhou1<="00000";
elsifhou1="00010"andhou2="00011"andmd1='0'andmd2="01"then
--当时间为23点且处于校时状态时
hou1<="00000";
elsif(hou2="01001"and(min1="0101"andmin2="1001")
and(sec1="0101"andsec2="1001"))or(hou2="01001"andmd1='0'andmd2="01")
thenhou1<=hou1+1;
endif;
endif;
endprocessh110;
h220:
process(clk,min1,min2,sec1,sec2,md1,md2,hou1)
begin
ifclk'eventandclk='1'then
if(hou1="00010"andhou2="00011")and(min1="0101"andmin2="1001")
and(sec1="0101"andsec2="1001")thenhou2<="00000";
elsifhou2="01001"and(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")thenhou2<="0000";
elsif(hou2="01001"andmd1='0'andmd2="01")or(hou1="00010"andhou2="00011")thenhou2<="00000";--md<='1';
elsif((min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001"))
or(md1='0'andmd2="01")thenhou2<=hou2+1;--speak<=clk;
endif;
endif;
endprocessh220;
(3)、报时模块(speak)
speaker:
process(clk,hou1,hou2,min1,min2)
begin
ifclk'eventandclk='1'then
ifseth1=hou1andseth2=hou2andsetm1=min1andsetm2=min2thenspeak<=clk;
elsespeak<='0';
endif;
endif;
endprocessspeaker;
disp:
process(md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)
begin
ifmd1='0'thenh1<=hou1;h2<=hou2;
m1<=min1;m2<=min2;s1<=sec1;s2<=sec2;
else
h1<=seth1;h2<=seth2;m1<=setm1;m2<=setm2;
s1<="1111";s2<="1111";
endif;
endprocessdisp;
endone;
3、仿真及仿真结果分析
(1)、秒时钟
(2)、分时钟
(3)、报时
(4)、功能仿真RTL图
4、实验调试结果
在波形仿真时,结果不能在波形上得到正确的显示:
在设定输入的时钟信号后,数字钟开始计数,但是始终看不到小时、星期的循环计数。
在数多次调试之后,发现是因为输入的时钟信号对于小时、星期来说太短了。
经过多次调试,终于找到了比较合适的输入数值:
分钟的初始值可以设为57(58、59都可以),小时的初始值可以设为23,这样,仿真之后,就能清楚的看出分钟、小时的循环计数。
三、结论及心得体会
经过一周的EDA课程设计,已基本完成课题要求。
功能上基本达标:
时钟的显示,定时功能,调时功能。
在本次设计的过程中,我发现很多的问题,虽然以前没有做过这样的设计但通过这次设计我学会了很多东西,虽然以前写过几次程序,但我们觉的写好一个程序并不是一件简单的事,比如写一个程序看其功能很少认为编写程序简单,但到编的时候才发现一些细微的知识或低级错误经常犯做不到最后常常失败,所以有些东西只有学精弄懂并且要细心才行,只学习理论有些东西是很难理解的,更谈不上掌握。
参考资料
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
[4]谢自美主编《电子线路设计实验测试》华中科技大学出版社
[5]赵世强、许杰等编《电子电路EDA技术》西安电子科技大学出版社
东北石油大学课程设计成绩评价表
课程名称
EDA技术课程设计
题目名称
闹钟系统的设计
学生姓名
高倩
学号
070901140402
指导教师姓名
职称
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
2011年3月11日