1、数字逻辑课程设计报告 设计题目:数字电子钟组员:李堪普、翁现平、郑维坛、叶俏梦 指导老师:麦山 日期:2013/07/01实习题目指导教师职 称学生姓名学 号日 期摘要 数字电子钟是一种用数字显示秒、分、时的计时装置,本次数字时钟电路设计采用GAL系列芯片来分别实现时、分、秒的24进制和60进制的循环电路,并支持手动校正的功能。关键词 数字电子钟;计数器;GAL1设计任务及其工作原理用集成电路设计一台能自动显示时、分、秒的数字电子钟,只要将开关置于手动位置,可分别对秒、分、时进行手动脉冲输入调整或连续脉冲输入的校正。1.1工作原理本数字电子钟的设计是根据时、分、秒各个部分的的功能的不同,分别用
2、GAL16V8D设计成六十进制计数器和用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示: 图1 分和秒部分设计图秒部分的设计是秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成从00-59的六十进制计数器。当计数到59时清零并重新开始计数。3.2 小时的设计:具体设计如图2示:图2 小时部分设计图小时部分的设计是二十四进制的计数器,由00到23的二十四进制循环计数。3.3 分频器的设计分频器的设
4、计原理是通过计数器把时钟源脉冲的频率降低。因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由低电平跳到高电平,致使分加法计数器的cen使能端有效,分加法计数器加一,完成秒向分的进位。分进时和秒进分的原理一样。手动校正:原理如下表: cen a
5、dj 状态 1 X 计数 0 0 保持 0 1 校正(不进位)电路图总体设计如图3所示:7设计所用器材序号作用器材件数1六十进制计数器GAL16V8D、GAL22V103片2分频器GAL16V8D、GAL22V102片3导线若干8小结 在实验室泡了一个星期,我们小组终于把电子时钟弄出来了,期间遇到了很多问题,但是在我们的努力和老师的指导下都一一攻克了。其中有一个问题我们弄了两三天都没头绪,那就是电子时钟接上单脉冲时,秒进分没问题,但分进时就出现这样的问题:分在0到59的某个期间就向时进位,而且当接分频器时,秒进分,分进时都乱了。一开始我们都觉得代码没问题,应该是实验箱、芯片、导线等硬件问题,后
6、来我们大胆地把异步计数改为同步计数就解决了这个问题。通过现象,让我们学到,考虑问题要周全,即使是一开始认为对的东西,也要用怀疑的心态来看待它,这样才能发现问题,从而解决问题。计算机系的同学相对偏软件,硬件的东西我们很少接触,所以很多同学很不喜欢数字逻辑这门课。做完这个电子时钟,我们发现自己有点爱上硬件设计了,小时候买的电子表,今天我们却能亲手弄出来,太兴奋了。兴奋的同时,我们初步掌握了abel-hdl语言以及ispEXPERT的使用以及对GAL系列芯片的设计方法有进一步的了解。在这里,我们想说,困难像弹簧,看你强不强,你强它就弱,你弱它就强。注:电子时钟芯片设计代码见附录一附录一秒计数器的代码
7、:MODULE secTITLE secdeclarations 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 THEN when !adj then D1:=D1; D0:=D0; else WHEN (D0=9) THEN D0:=0; WHEN (D1=5) TH
8、EN 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 minTITLE mindeclarations 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;
9、 D1=q6.q4; D0=q3.q0;equations D1.clk=clock; D0.clk=clock; WHEN !cen THEN when !adj then D1:=D1; D0:=D0; else WHEN (D0=9) THEN D0:=0; WHEN (D1=5) THEN co:=0;D1:=0; ELSE D1:=D1+1; ELSE D0:=D0+1; D1:=D1; ELSE when(adj # !adj)then WHEN (D0=9) THEN D0:=0; WHEN (D1=5) THEN D1:=0; co:=1; ELSE D1:=D1+1; ELS
10、E D0:=D0+1; D1:=D1; END时计数器的代码:MODULE houTITLE houdeclarations clock PIN 1; cen PIN 2; adj PIN 3; q6.q4 PIN 22.20 istype reg; q3.q0 PIN 19.16 istype reg; D1=q6.q4; D0=q3.q0;equations D1.clk=clock; D0.clk=clock; WHEN !cen THEN when !adj then D1:=D1; D0:=D0; else when(D1=2)&(D0=3) then D1:=0; D0:=0; e
11、lse when(D0=9) then D0:=0;D1:=D1+1; ELSE WHEN (adj # !adj) then WHEN (D1=2)&(D0=3) THEN D1:=0; D0:=0; ELSE WHEN (D0=9) THEN D0:=0; D1:=D1+1; ELSE D0:=D0+1; D1:=D1; END分频器代码:GAL 22V10:MODULE Cnt10TITLE 10 bit binary counterDECLARATIONS clock PIN 1; cen PIN 2; co PIN 23; q8.q0 PIN 22.14 ISTYPE REG; D=q8.q0;EQUATIONS D.clk=clock; WHEN cen THEN D:=D+1; ELSE D:=D; co=cen&(D=511);ENDGAL 16V8D:MODULE Cnt_98TITLE mode 98 binary counterDECLARATIONS clock PIN 1; cen PIN 2; co PIN 19; q6.q0 PIN 18.12 ISTYPE REG; D=q6.q0; EQUATIONS D.clk=clock; WHEN cen&(D=97) THEN D:=0; ELSE D:=D+1; co=cen&(D=97);END14