数字电子时钟逻辑电路设计

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

《数字逻辑》

课程设计报告

设计题目:数字电子钟

组员:冯燕升、吴永涛、卓小林、蔡卿指导老师:麦山

日期:2013/12/27

摘要数字电子钟是一种用数字显示秒、分、时的计时装置,本次数字时钟电路设计采用GAL系列芯片来分别实现时、分、秒的24进制和60进制的循环电路,并支持手动校正的功能。

关键词数字电子钟;计数器;GAL

1设计任务及其工作原理

用集成电路设计一台能自动显示时、分、秒的数字电子钟,只要将开关置于手动位置,可分别对秒、分、时进行手动脉冲输入调整或连续脉冲输入的校正。

1.1工作原理

本数字电子钟的设计是根据时、分、秒各个部分的的功能的不同,分别用GAL16V8D 设计成六十进制计数器,个位设计成十进制计数器,十位设计成六进制进制计数器(计数从00到59时清零并向前进位)。分部分的设计与秒部分的设计完全相同;用GAL22V10D设计时的个位,设计成二进制计数器,十位设计为四进制计数器,当时钟计数到23时59分59秒时,使计数器的小时部分清零,进而实现整体循环计时的功能。

2电路的组成

2.1 计数器部分:利用GAL22V10和GAL16V8D芯片分别组成二十四进制计数器和六十进制计数器,它们采用同步连接,利用外接标准脉冲信号进行计数。

2.2 显示部分:将三片GAL芯片对应的引脚分别接到实验箱上的七段共阴数码显示管上,根据脉冲的个数显示时间。

3.3 分频器:由于实验箱上提供的时钟脉冲的时间间隔太小,所以使用GAL16V8D和CD4040芯片设计一个分频器,使连续输出脉冲信号时间间隔为0.5s

3设计步骤及方法

3.1 分和秒部分的设计:

分和秒部分的设计是采用GAL16V8D芯片来设计的60进制计数器,具体设计如图1示:

图1 分和秒部分设计图

秒部分的设计是秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成从00-59的六十进制计数器。当计数到59时清零并重新开始计数。

3.2 小时的设计:

具体设计如图2示:

图2 小时部分设计图

小时部分的设计是二十四进制的计数器,由00到23的二十四进制循环计数。

3.3 分频器的设计

分频器的设计原理是通过计数器把时钟源脉冲的频率降低。

因T = 1/f,f=0.1M

要使T=0.5s,则有f = 2

所以0.1M / X = 2,得X=50000

所以得做一个模为50000的计数器,这里用GAL16V8D和CD4040来构建。

图3 分频器设计图

6电路总体说明:

正常显示:

在外接分频器的作用下,将开关1打开,秒加法计数器开始记数,通过七段数码显示管显示秒的数字。当经过60个脉冲信号后,秒计数器完成一次循环。当秒计数器的由59变为00时,co由低电平跳到高电平,致使分加法计数器的cen使能端有效,分加法计数器加一,完成秒向分的进位。分进时和秒进分的原理一样。

手动校正:

原理如下表:

cen adj 状态

1 X 计数

0 0 保持

0 1 校正(不进位)

电路图总体设计如图3所示:

7设计所用器材

8小结

在实验室做了几天,我们小组终于把电子时钟弄出来了,期间遇到了很多问题,但是在我们的努力和同学的帮助下都一一攻克了。其中有一个问题我们弄了两三天都没头绪,秒进分的时候出现了时间差,发现当秒从59跳到00的时候,分未能及时进位,等到秒变为01的时候分才进位,小时也是一样。之后通过检查程序,不断修改,在小组成员的努力下,把进位的寄存状态变成组合逻辑,这样使得进位能够及时,上述情况不发生。

这是第一次接触这种类型的课程设计,虽然在书本上学了理论知识,但没有实践的经验,对电子时钟设计成功比较期待。刚开始觉得没头绪,比较困难,通过查找资料,在老师的指导下明白了设计原理,之后一步一步实现秒、分、时的功能,在这个过程中,对ABEL-HDL语言有一定的了解,同时也增强了团队意识,对数字逻辑这门课程理解得更加透彻。

注:电子时钟芯片设计代码见附录一

附录一秒计数器的代码:

MODULE sec

TITLE 'sec'

declarations

clock PIN 1;

cen PIN 2;

adj PIN 3; //校正

co PIN 19 istype 'reg'; //进位

q6..q4 PIN 18..16 istype 'reg';

q3..q0 PIN 15..12 istype 'reg';

D1=[q6..q4];

D0=[q3..q0];

equations

D1.clk=clock;

D0.clk=clock;

WHEN cen==0 THEN

{

when adj==0 then

{

D1:=D1; D0:=D0;

}

else

{

WHEN (D0==9) THEN

{

D0:=0;

WHEN (D1==5) THEN {D1:=0;}

ELSE D1:=D1+1;

}

ELSE

{D0:=D0+1; D1:=D1;}

}

}

ELSE

{

WHEN (D0==9) THEN

{

D0:=0;

WHEN (D1==5) THEN {co==1;D1:=0;}

ELSE D1:=D1+1;

}

ELSE

{ D0:=D0+1; D1:=D1; }

}

END

分计数器的代码:

MODULE min

TITLE 'min'

declarations

clock PIN 1;

cen PIN 2;

adj PIN 3;

q6..q4 PIN 18..16 istype 'reg';

q3..q0 PIN 15..12 istype 'reg';

co PIN 19 istype 'reg';

D1=[q6..q4];

D0=[q3..q0];

相关文档
最新文档