1、数字逻辑课程设计报告设计题目:数字电子钟组员:李堪普、翁现平、郑维坛、叶俏梦指导老师:麦山日期:2013/07/01实习题目1摘要 数字电子钟是一种用数字显示秒、分、时的计时装置,本次数字时钟电路设计采用 GAL 系列芯片来分别实现时、分、秒的 24 进制和 60 进制的循环电路,并支持手动校正的功能。关键词 数字电子钟;计数器;GAL1 设计任务及其工作原理用集成电路设计一台能自动显示时、分、秒的数字电子钟,只要将开关置于手动位置,可分别对秒、分、时进行手动脉冲输入调整或连续脉冲输入的校正。1.1 工作原理本数字电子钟的设计是根据时、分、秒各个部分的的功能的不同,分别用GAL16V8D 设计
2、成六十进制计数器和用 GAL22V10。秒的个位,设计成十进制计数器,十位设计成六进制进制计数器(计数从 00 到 59 时清零并向前进位) 。分部分的设计与秒部分的设计完全相同;时的个位,设计成二进制计数器,十位设计为四进制计数器,当时钟计数到 23 时 59 分 59 秒时,使计数器的小时部分清零,进而实现整体循环计时的功能。2 电路的组成2.1 计数器部分:利用 GAL16V8D 和 GAL22V10 芯片分别组成二十四进制计数器和六十进制计数器,它们采用同步连接,利用外接标准脉冲信号进行计数。2.2 显示部分:将三片 GAL 芯片对应的引脚分别接到实验箱上的七段共阴数码显示管上,根据脉
3、冲的个数显示时间。3.3 分频器:由于实验箱上提供的时钟脉冲的时间间隔太小,所以使用 GAL16V8D 和GAL22V10 芯片设计一个分频器,使连续输出脉冲信号时间间隔为 0.5s3 设计步骤及方法 3.1 分和秒部分的设计:分和秒部分的设计是采用 GAL16V8D 芯片来设计的 60 进制计数器,具体设计如图1 示:指导教师职 称学生姓名学 号日 期2图 1 分和秒部分设计图秒部分的设计是秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成从 00-59 的六十进制计数器。当计数到 59 时清零并重新开始计数。3.2 小时的设计:具体设计如图 2 示:图 2 小时部分设计图3小时部分的
4、设计是二十四进制的计数器,由 00 到 23 的二十四进制循环计数。3.3 分频器的设计分频器的设计原理是通过计数器把时钟源脉冲的频率降低。因 T = 1/f,f=0.1M要使 T=0.5s,则有 f = 2所以 0.1M / X = 2,得 X=50000所以得做一个模为 50000 的计数器,这里用 GAL16V8D 和 GAL22V10 来构建。图 3 分频器设计图6 电路总体说明:正常显示:在外接分频器的作用下,将开关 1 打开,秒加法计数器开始记数,通过七段数码显示管显示秒的数字。当经过 60 个脉冲信号后,秒计数器完成一次循环。当秒计数器的由 59 变为 00 时,co 由低电平跳
5、到高电平,致使分加法计数器的 cen 使能端有效,分加法计数器加一,完成秒向分的进位。分进时和秒进分的原理一样。手动校正:原理如下表:cen adj 状态1 X 计数0 0 保持0 1 校正(不进位)4电路图总体设计如图 3 所示:7 设计所用器材序号 作用 器材 件数1 六十进制计数器 GAL16V8D、GAL22V103 片2 分频器 GAL16V8D、GAL22V102 片3 导线 若干8 小结在实验室泡了一个星期,我们小组终于把电子时钟弄出来了,期间遇到了很多问题,但是在我们的努力和老师的指导下都一一攻克了。其中有一个问题我们弄了两三5天都没头绪,那就是电子时钟接上单脉冲时,秒进分没问
6、题,但分进时就出现这样的问题:分在 0 到 59 的某个期间就向时进位,而且当接分频器时,秒进分,分进时都乱了。一开始我们都觉得代码没问题,应该是实验箱、芯片、导线等硬件问题,后来我们大胆地把异步计数改为同步计数就解决了这个问题。通过现象,让我们学到,考虑问题要周全,即使是一开始认为对的东西,也要用怀疑的心态来看待它,这样才能发现问题,从而解决问题。计算机系的同学相对偏软件,硬件的东西我们很少接触,所以很多同学很不喜欢数字逻辑这门课。做完这个电子时钟,我们发现自己有点爱上硬件设计了,小时候买的电子表,今天我们却能亲手弄出来,太兴奋了。兴奋的同时,我们初步掌握了abel-hdl 语言以及 isp
7、EXPERT 的使用以及对 GAL 系列芯片的设计方法有进一步的了解。在这里,我们想说,困难像弹簧,看你强不强,你强它就弱,你弱它就强。注:电子时钟芯片设计代码见附录一6附录一秒计数器的代码:MODULE secTITLE secdeclarationsclock PIN 1; cen PIN 2; adj PIN 3; /校正co PIN 19 istype reg; /进位q6q4 PIN 1816 istype reg;q3q0 PIN 1512 istype reg;D1=q6q4;D0=q3q0;equationsD1.clk=clock;D0.clk=clock;7WHEN !ce
8、n THEN when !adj thenD1:=D1; D0:=D0;elseWHEN (D0=9) THEN D0:=0;WHEN (D1=5) THEN D1:=0;ELSE D1:=D1+1;ELSE D0:=D0+1; D1:=D1; ELSEWHEN (D0=9) THEN D0:=0;WHEN (D1=5) THEN co:=1;D1:=0;ELSE D1:=D1+1;ELSE D0:=D0+1; D1:=D1; 8 END分计数器的代码:MODULE minTITLE mindeclarationsclock PIN 1; cen PIN 2; adj PIN 3; q6q4
9、PIN 1816 istype reg;q3q0 PIN 1512 istype reg;co PIN 19 istype reg; D1=q6q4;D0=q3q0;equationsD1.clk=clock;D0.clk=clock;WHEN !cen THEN9when !adj thenD1:=D1; D0:=D0;elseWHEN (D0=9) THEN D0:=0;WHEN (D1=5) THEN co:=0;D1:=0;ELSE D1:=D1+1;ELSE D0:=D0+1; D1:=D1; ELSEwhen(adj # !adj)then WHEN (D0=9) THEN10 D
10、0:=0;WHEN (D1=5) THEN D1:=0;co:=1;ELSE D1:=D1+1;ELSE D0:=D0+1; D1:=D1; END时计数器的代码:MODULE houTITLE houdeclarationsclock PIN 1; cen PIN 2; adj PIN 3;q6q4 PIN 2220 istype reg;q3q0 PIN 1916 istype reg;D1=q6q4;11D0=q3q0;equationsD1.clk=clock;D0.clk=clock;WHEN !cen THENwhen !adj thenD1:=D1; D0:=D0;elsewhe
11、n(D1=2)D0:=0;elsewhen(D0=9) thenD0:=0;D1:=D1+1; ELSEWHEN (adj # !adj) thenWHEN (D1=2)D0:=0;ELSE WHEN (D0=9) THEND0:=0;12D1:=D1+1;ELSED0:=D0+1;D1:=D1; END分频器代码:GAL 22V10:MODULE Cnt10TITLE 10 bit binary counterDECLARATIONSclock PIN 1;cen PIN 2;co PIN 23;q8q0 PIN 2214 ISTYPE REG;D=q8q0;EQUATIONSD.clk=clock;WHEN cen THEN D:=D+1;ELSE D:=D;co=cen13ENDGAL 16V8D:MODULE Cnt_98TITLE mode 98 binary counterDECLARATIONSclock PIN 1;cen PIN 2;co PIN 19;q6q0 PIN 1812 ISTYPE REG;D=q6q0;EQUATIONSD.clk=clock;WHEN cenELSE D:=D+1;co=cen14END