数字电子时钟逻辑电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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];