EDA数字时钟课程设计_第1页
EDA数字时钟课程设计_第2页
EDA数字时钟课程设计_第3页
EDA数字时钟课程设计_第4页
EDA数字时钟课程设计_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报4

学生姓名学号

班级

专业__________电子信息工程___________

题目数字时钟设计

指导教师

课程设计报告

一、任务和设计要求

1.熟悉集成电路的引脚安排。

2.掌握各芯片的逻辑功能及使用方法。

3.了解数字钟的组成及工作原理。

4.熟悉数字钟的设计与制作。

1.设计指标

(1)时间以24小时为一个周期;

(2)显示时、分、秒;

(3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;

(4)计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时。

2.设计要求

(1)画出电路原理图(或仿真电路图);

(2)元器件及参数选择;

(3)电路仿真与调试

二、设计原理

设计思路

根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部

分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。

1)时钟计数:

首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可以调整时

钟的小时部分,setmin可以调整分钟,步进为1。

由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这

里取lOOHzoCLK端连接外部10Hz的时钟输入信号elk。对elk进行计数,当clk=10时,秒

加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。

用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT(6DOWNTO0)上的信号

来点亮指定的LED七段显示数码管。

2)时间设置:

手动调节分钟、小时,可以对所设计的时钟仟意调时间,这样使数字钟真正具有使用

功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是

1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。

3)清零功能:

reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意

时间的复位。

总体结构图

课程设计报告

三、系统设计

1)时、分、秒计时器

时计时器为一个24进制计数器,分、秒计时器均为6()进制计数器。当秒计时器接受

到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、…、59、

00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值

在原有基础上加1,其显示器将显示00、01、02、…、59、00;每当分计数器数到0()时,

就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将

显示00、01、02、…、23、00o即当数字钟运行到23点59分59秒时,当秒计时器在接

受一个秒脉冲,数字钟将自动显示00点00分00秒,

2)校时电路

当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校

对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动resei

开关,电子钟从设置的时间开始往后计时。

四、参考程序

Alert模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYalertIS

PORT(clk:INSTD_LOGIC;

dain:INSTD_LOGIC_VECTOR(6DOWNTO0);

2

课程设计报告

ENDPROCESSlamper;

ENDfun;

Hour模块

LIBRARYIEEE;

useIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYhourIS

PORT(clk,rcsct:INSTD_LOGIC;

daout:outSTD_L0GIC_VECT0R(5DOWNTO0));

ENDENTITYhour;

ARCHITECTUREfunOFhourIS

SIGNALcount:STD_LOG!C_VECTOR(5DOWNTO0);

BEGIN

daout<=count;

PROCESS(clk,reset)

BEGIN

IF(reset='O,)THENcount<=>,000000H;一若reset=(),则异步清零

ELSIF(clk'eventandelk=T)THEN--否则,若elk上升沿到

IF(count(3DOWNTO0)=n1001n)THEN一若个位计时恰好到“1001”即9

IF(count<16#23#)THEN-23进制

count<=count+7;一若到23D则

else

count<="000000";一复0

ENDIF;

ELSIF(count<16#23#)THEN--若未到23D,则count进1

count<=count+l;

ELSE-否则清零

count<=nOOOOOO";

ENDIF;-ENDIF(count(3DOWNTO0)="1001”)

ENDIF;-ENDIF(reset=,O')

ENDPROCESS;

ENDfun;

Minute模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYminuteIS

PORT(clk,clk1,reset,sethour:INSTD_LOGIC;

enhour:OUTSTD_LOGIC;

4

课程设计报告

daout:OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDENTITYminute;

ARCHITECTUREfunOFminuteIS

SIGNALcount:STD_LOGIC_VECTOR(6DOWNTO0);

SIGNALenhour.l,enhour_2:STD_LOGIC;-enmin_l为59分时的进位信号

BEGIN-enmin_2由elk调制后的手动调时脉冲信号串

daout<=count;

enhour_2<=(sethourandclkl);—seihour为手动调时控制信号,高电平有效

enhour<=(enhour_lorenhour_2);

PROCESS(clk,reset,sethour)

BEGIN

IF(reset='O')THEN一若reset为0,则异步清零

count〈二”0000000”;

ELSIF(clk'eventandelk=T)THEN--否则,若elk上升沿到

IF(count(3DOWNTO0)="1001")THEN-若个位计时恰好到“1001、即9

lF(count<16#60#)THEN-又若count小于16#60#,即60

IF(count="1011001M)THEN—又若已至lj59D

enhour」v=T;・■则置进位为1

count<="00()0()0()”;-count复0

ELSE

count〈二count+7;—若count未至lj59D,则加7,即作"加6校正"

ENDIF;-使前面的16#60#的个位转变为8421BCD的容量

ELSE

count<="0000000,,;-countfi0(有此句,则对无效状态电路可自启动)

ENDIF;-ENDIF(count<16#60#)

ELSIF(count<16#60#)THEN

count<=count+l;--若count<16#60#则count力口1

enhour_l<='0'after100ns;一没有发生进位

ELSE

countv="0000000";--否贝(J»若count不小于16#60#count复0

ENDIF;-ENDIF(count(3DOWNTO0)="1001”)

ENDIF;-ENDIF(reset='O')

ENDprocess;

ENDfun;

Second模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

5

课程设计报告

ENTITYsecondIS

PORT(elk,reset,setmin:STD_LOGIC;

enmin:OUTSTD.LOGIC;

daout:OUTSTD_LOGIC_VECTOR(6DOWNTO0));

ENDENTITYsecond;

ARCHITECTUREfunOFsecondIS

SIGNALcount:STD_LOGIC_VECTOR(6DOWNTO0);

SIGNALenmin_l,enmin_2:STD_LOGTC;-enmin_l为59秒时的进位信号

BEGIN-enmin_2由elk调制后的手动调分脉冲信号串

daout<=count;

enmin_2<=(setminandelk);—setmin为手动调分控制信号,高电平有效

enmin<=(enmin_lorenmin_2);-enmin为向分进位信号

PROCESS(clk,reset,setmin)

BEGIN

IF(reset='O')THENcount<=M0000000";一若reset为0,则异步清零

ELSIF(clk•eventandclk='l')then--否则,若elk上升沿到

IF(count(3downto0)="1001")then--若个位计时恰好到“1001”即9

IF(count<16#60#)then一又若count小于16#60#,即60H

IF(count=n101100r')then一又若已到59D

enmin_l<=T;count<="0()000()()";--贝ij置进位为1及count复0

ELSE一未到59D

count<=counl+7;—贝IJ力口7,而+7=+1+6,即作"加6校正"

ENDIF;

ELSE-若count不小于16#60#(即count等于或大于16#60#)

count<=,,()()00()00n;-count复0

ENDIF;-ENDIF(count<l6#60#)

ELSIF(count<l6#60#)then一若个位计数未到“1001”则转此句再判

count<=count+l;--若count<16#60#则count力口1

enmin_l<='0'after100ns;--没有发生进位

ELSE--否则,若count不小于16#60#

count<="0000000";一则count复0

ENDIF;-ENDIF(count(3DOWNTO0)="1001”)

ENDIF;-ENDIF(reset=V)

ENDPROCESS;

ENDfun;

6

课程设计报告

五、系统调试与性能分析

时基T产生电路

数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部

分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。

由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、

非常稳定的计数时钟脉冲,

调时、调分信号的产生

由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到5g时,再来

一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,

使分计数器计数加lo现在我们把电路稍做变动:把杪计数器的进位脉冲和一个频率为2Hz

的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲

按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分

计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择将将另外一

个2Hz的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按

键开关,从而达到调时的目的。调节小时的时间也一样的实现。

计数显示电路

由计数部分、数据选择器、译码器组成,是时钟的关键部分。

7

课程设“•报告

1、计数部分:由两个60进制计数器和一个24进制计数器组成,其中60进制计数

器可用6进制计数器和10进制计数器构成;24进制的小时计数同样可用6进制计数器

和10进制计数器得到:当计数器计数到24时,“2”和“4”同时进行清零,则可实现24

进制计数。

2、数据选择器:84输入14输出的多路数据选择器,因为本实验用到了8个数码管

(有两个用来产生隔离符号'一')。

3、译码器:七段译码器。译码器必须能译出‘一',由实验二中译码器真值表可得:

字母F的8421BCD码为“1111”,译码后为“10001H”,现在如果只译出'—即字母F

的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为‘一"

QA

%氢16.6M

o

80000

温馨提示

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

评论

0/150

提交评论