图3-13 模6计数器
由于74160为异步清零,根据图3-13可知,当计数器计数到“BCA”为“110”,即6时,“CLRN”变为低电位,使计数器马上清零,开始下一轮计数。图中所示计数器的输入脉冲为1KHZ。
译码部分:译码电路分两部分,一是显示译码,二是动态译码(轮流选中数码管)。其中显示译码器以24选4数据选择器的4个输出为译码信号。
图3-14 显示译码电路
图3-15 动态译码电路
24选4数据选择器部分:由于没有现成的24选4数据选择器,因此需要进
- 11 -
行组合产生24选4数据选择器,在此,为方便起见,选用4个8选1数据选择器74151,每个74151只使用“D0~D5”6个数据输入引脚。它们以上述模6计数器的输出为输入脉冲,因此它们将同时选中“D0”,并依次循环选中“D0”、“D1”、“D2”、“D3”、“D4”“D5”,送到输出端输出。根据上述数据选择器的特点,为了实现动态显示,可以将秒的个位的4个输出分别送到4数据选择器的“D0”, 将秒的十位的4个输出分别送到个4数据选择器的“D1”, 将分的个位的4个输出分别送到4个数据选择器的“D2”, 将分的十位的4个输出分别送到4个数据选择器的“D3”,??依次类推。将4个74151的输出送至7447译码显示,这样就实现了动态显示的功能。
3.6、报时电路
根据实验要求,当时钟计到59’53”时开始报时,在59’53”, 59’55”,59’57” 时报时频率为512Hz(低鸣报时), 59’59”时报时频率为1KHz(高鸣报时)。蜂鸣器的总体控制电路如图3-16所示,一旦有相应的控制信号输入,则蜂鸣器就会开始鸣叫。
图3-16 蜂鸣器的总体控制电路
由以上的,报时电路的设计主要在于500HZ控制信号与1KHZ控制信号的获得,这可以通过简单的逻辑门电路的组合来实现,具体设计方法如下。 首先设计获得低鸣报时电路的控制信号。由于时钟在59’53”, 59’55”,59’57” 时报时,可知,当计分计数器为59分,计秒计数器在53、55、57时将产生控制信号。当达到59分时,计分计数器输出为:十位D11 C11 B11 A11=0101,个位D10 C10 B10 A10=1001。因此得59分的信号产生电路如图3-17所示。
图3-17 59分信号产生电路
- 12 -
而计秒计数器要在53秒、55秒、57秒均产生信号,因此对于其个位,可列表如下:(设个位为DCBA) BA 00 01 11 10 DC 00 01 11 10 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 由表得3、5、7的控制信号为S?DCA?DBA。由于个位最高计数到9,即1001,得S可简化为S?CA?BA。因此的53秒、55秒、57秒信号产生电路如
图3-18所示。
图3-18 53~57秒信号产生电路
59秒的信号产生电路与59分信号产生电路相似,如图3-19所示。
图3-19 59秒信号产生电路
- 13 -
通过以上的分析与设计,我们得到了59分,59秒,53~57秒的信号,利用这些信号即可用来获得500HZ控制信号与1KHZ控制信号,最终得到蜂鸣器的控制电路如图3-20所示。
图3-20 蜂鸣器的控制电路
3.7、闹铃电路(功能拓展)
闹铃功能是指,人为任意设定一个闹铃时间,包括时、分,当计时器计时到该设定时间时,蜂鸣器工作,闹铃时间到。由此可见,闹铃电路的设计包括闹铃的设定电路、闹铃的显示电路、闹铃时间与计时时间的比较电路以及蜂鸣器工作(闹铃)电路。
3.7.1、闹铃时间的设定电路
为了能实现之后的闹铃时间与计时时间的比较,需要对设定的闹铃时间进行保存,因此可以再使用一个模24计数器和一个模60计数器分别作为时与分,并利用它们的保持功能进行闹铃时间的设定与保存。具体电路实现见图3-21。
图3-21闹铃时间的设定电路
- 14 -
3.7.2、闹铃的显示电路
为了设定闹铃,就需要显示闹铃时间,而限于数码管数目,需要一个开关来控制数码管显示的是闹铃时间还是计时时间。该显示切换开关功能就是在闹铃时间与计时时间之间做选择,可通过下面的电路实现(图3-22)。
图3-22 一位闹铃时间与一位计时时间之间的切换示意图 该电路实质上就是一个2选1数据选择器。
在进入24选4数据选择器之前,对闹铃时间于计时时间的相对应的每一位都作如上的处理,就可以在显示时对闹铃时间与计时时间进行切换。
3.7.3、闹铃时间与计时时间的比较电路
如果要判断是否到达闹铃时间,就需要对闹铃时间的每一位和对应的计时时间的每一位进行比较,并且只有在所有的位都对应相等时,才算作闹铃时间到,开始闹铃。由此可知,需要比较的位总共有16对,如果选用7485比较器,则需
要4个该比较器。具体设计电路如图3-23所示。
图3-23闹铃时间与计时时间的比较电路
3.7.4、蜂鸣器工作(闹铃)电路
如果以500HZ驱动下的蜂鸣器作为闹铃,则可以对上面报时电路中的500HZ控制信号作适当改动即可,如将原有的500HZ控制信号与闹铃信号经过一个2输入的或门,以其输出作为新的500HZ控制信号。
4、编译与仿真
在设计过程中对个子模块分别进行编译与仿真,确保设计无误,尤其是脉冲发生电路和计时电路。
- 15 -
5、下载
经过编译与仿真没有错误之后,则可将程序下载至FPGA芯片,但在此之前要先进行管脚分配。根据教材分配好管脚之后,即可将程序下载到FPGA芯片上,进行运行。
二、结论
通过将程序下载运行,最终确定程序没有错误。
三、实验中的问题与感想
问题:在整个实验中,我遇到两个问题,一是计数器不能正确计数,当两片74160级联后,若后一片以前一片的进位为脉冲信号,后一片计数器总是在前一片计数器计数到8时就已经计数了。通过分析,这是由于74160计数器,一旦计数到9就马上产生一个进位信号,进位引脚电平由低电平变成高电平,而它又是以上升沿触发的计数器,因此后一片计数器马上就计数了。为了解决这一问题,我在前一片计数器的进位进入后一片计数器之前先经过一个D触发器,使得在前一片计数器从9变作0时后一片计数器才计数一次,这样就避免了上述问题。 遇到的第二个问题是开关的抖动问题。实验开始我并没有使用D触发器来组成消颤开关,这样在运行程序时,每每切换保持开关,使继续开始计数时,电路总是不能正常连续计数,而是跳变到一个不确定的数字开始计数。在采用了D触发器组成的消颤开关之后,该问题得到了解决。
感想:通过整个实验的学习,我认识到了独立思考的重要性。记得在做实验的第一天,为了设计一个模48计数器,我花了整整一天的时间也没能完成,原因在于对计数器芯片74160的不了解,以上来就动手做,这使得我带有一种盲目性,以至于遇到了上述第一个问题,后来通过看书,了解到74160为同步计数,异步清零,这才顺利设计出了模48计数器。
参考文献:
【1】 《数字逻辑电路与系统设计》,蒋立平 主编,姜平 谭雪琴 花汉兵 编,电子工业出版社
【2】 《EDA实验指导书》,南京理工大学,电子技术中心
- 16 -