数字逻辑课程设计-—数字钟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字逻辑课程设计

—数字钟

班级:计114

学号:119074122

姓名:石险峰

指导老师:苏小虎

一、任务与要求

设计任务:设计一个具有整点报时功能的数字钟

要求:

1、设计一个有“时”、“分”、“秒”(23小时59分59秒)显示且有校时功能的数字钟。

2、有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。

3、计时过程具有整点报时功能,当时间到达整点前10秒进行报时。

4、用中小规模集成电路组成数字钟,并在实验箱上进行组装、调试。

5、画出框图和逻辑电路图。

功能:

1、计时功能:

要求准确计时,以数字形式显示时、分、秒的时间。小时的计时要求为“23翻1”。

2、校时功能:

当数字钟接通电源或者计时出现误差时,需要校正时间(简称校时)。校时是数字钟应具备的基本功能,一般电子手表都具有时、分、秒等校时功能。

3、整点报时:

每当数字钟计时快要到整点时发出声响,此实验设计当时钟计时到59分50秒时开始报时,持续10秒。

二、设计方案

电路组成框图:

图1 数字钟电路组成框图

数字钟电路是一个典型的数字电路系统,其由时、分、秒计数器以及校时和显示电路组成。其主要功能为计时、校时和报时。利用60进制和24进制递增计数器子电路构成数字钟系统,由2个60进制同步递增计数器完成秒、分计数,由24进制同步递增计数器完成小时计数。秒、分、时之间采用同步级联的方式。按键func_sel产生单脉冲,控制数字钟在计时/校时/校分/校秒四个状态间切换。报时功能为整点来临时蜂鸣器发出声响。

三、设计和实现过程

1.各部分电路的设计过程

(1)时分秒计数器的设计

时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器

及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器。

秒/分钟显示电路:由于秒钟与分钟的都是为60进制的,所以它们的电路大体上是一样的,都是由一个10进制计数器和一个6进制计数器组成;有所不同的是分钟显示电路中的10进制计数器的ENP 和ENT引脚是由秒钟显示电路的进位信号控制的。

分和秒计数器都是模M=60的计数器,其计数规律为00—01—…—58—59—00…。可选两片74LS160设计较为简单。

时计数器是一个“23翻0”的特殊进制计数器,即当数字钟运行到23时59分59秒时,秒的个位计数器再输入一个秒脉冲时,数字钟应自动显示为00时00分00秒,实现日常生活中习惯用的计时规律。可选两片74LS160设计。

图 2 60进制同步递增计数器

图3 24进制同步递增计数器(2)校时电路的设计

校时模块采用AHDL语言描述,源码如下:

SUBDESIGN COUNT_CONTROL

(

FUNC_SEL:INPUT;

SETN:INPUT;

SEC_CO,MIN_CO:INPUT;

SEC_EN,MIN_en,HOUR_EN:OUTPUT;

)

VARIABLE

Q[1..0]:DFF;

BEGIN

Q[].CLK=FUNC_SEL;

Q[]=Q[]+1;

IF(q[]>3)THEN Q[]=0;

END IF;

CASE Q[] IS

WHEN 0=>SEC_EN=VCC;

MIN_EN=SEC_CO;

HOUR_EN=MIN_CO;

WHEN 1=>SEC_en=gnd;

min_en=gnd;

hour_en=!setn;

when 2=>sec_en=gnd;

min_en=!setn;

hour_en=gnd;

when 3=>sec_en=!setn;

min_en=gnd;

hour_en=gnd;

end case;

end;

(3)整点报时电路的设计

因报时须在59分50秒开始,故可在分计时电路引出“5”“9”状态,秒计时电路引出“5”“0”状态,用与门连接后即可接到蜂鸣器,起到报时作用。电路部分截图如下:

图 5 报时电路(4)显示电路及完整原理图

图表1显示电路

1/相关器件源码

counter6

subdesign counter6 (

clk:input;

q[2..0]:output;

)

variable ss:machine of bits(q[2..0]) with states

(s0=0,

s1=1,

s2=2,

s3=3,

s4=4,

s5=5

);

begin

ss.clk=clk;

table

ss=>ss;

s5=>s4;

s4=>s3;

s3=>s2;

s2=>s1;

s1=>s0;

s0=>s5;

end table;

end;

select_disp

subdesign select_disp (

sel[2..0]:input;

in0[3..0]:input;

in1[3..0]:input;

in2[3..0]:input;

in3[3..0]:input;

in4[3..0]:input;

in5[3..0]:input;

out[3..0]:output;

)

begin

case sel[] is

when 0=>out[]=in0[]; when 1=>out[]=in1[]; when 2=>out[]=in2[]; when 3=>out[]=in3[]; when 4=>out[]=in4[]; when 5=>out[]=in5[]; end case; end;

deled

SUBDESIGN deled

(

num[3..0]:INPUT;

a,b,c,d,e,f,g:OUTPUT;

)

BEGIN

TABLE

NUM[3..0]=>a,b,c,d,e,f,g; H"0" =>1,1,1,1,1,1,0; H"1" =>0,1,1,0,0,0,0; H"2" =>1,1,0,1,1,0,1; H"3" =>1,1,1,1,0,0,1; H"4" =>0,1,1,0,0,1,1; H"5" =>1,0,1,1,0,1,1; H"6" =>1,0,1,1,1,1,1; H"7" =>1,1,1,0,0,0,0; H"8" =>1,1,1,1,1,1,1; H"9" =>1,1,1,1,0,1,1; H"A" =>1,1,1,0,1,1,1; H"B" =>0,0,1,1,1,1,1; H"C" =>1,0,0,1,1,1,0; H"D" =>0,1,1,1,1,0,1; H"E" =>1,0,0,1,1,1,1; H"F" =>1,0,0,0,1,1,1; END TABLE;

END;

相关文档
最新文档