计数器应用实例
除了计数功能外,计数器产品还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。下面我们举两个例子。在这两个例子中,我们分别用同步十进制加法计数器74LS160构成一个六进制计数器和一个一百进制计数器。
因为六进制计数器的有效状态有六个,而十进制计数器的有效状态有十个,所以用十进制计数器构成六进制计数器时,我们只需保留十进制计数器的六个状态即可。74LS160的十个有效状态是BCD编码的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001[图5-1]。
图5-1
我们保留哪六个状态呢?理论上,我们保留哪六个状态都行。然而,为了使电路最简单,保留哪六个状态还是有一点讲究的。一般情况下,我们总是保留0000和1001两个状态。因为74LS160从1001变化到0000时,将在进位输出端产生一个进位脉冲,所以我们保留了0000和1001这两个状态后,我们就可以利用74LS160的进位输出端作为六进制计数器的进位输出端了。于是,六进制计数器的状态循环可以是0000、0001、0010、0011、0100和1001,也可以是0000、0101、0110、0111、1000和1001。我们不妨采用0000、0001、0010、0011、0100和1001这六个状态。
如何让74LS160从0100状态跳到1001状态呢?我们用一个混合逻辑与非门构成一个译码器[图5.3.37b],当74LS160的状态为0100时,与非门输出低电平,这个低电平使74LS160工作在预置数状态,当下一个时钟脉冲到来时,由于等于1001,74LS160就会预置成1001,从而我们实现了状态跳跃。
图5.3.37b 用置数法将74160接成六进制计数器(置入1001)
比这个方案稍微繁琐一点的是利用74LS160的异步复位端。下面这个电路中[图5.3.34],也有一个由混合逻辑与非门构成的译码器。
图5.3.34 用置零法将74LS160接成六进制计数器
不过,这个译码器当输入为0110时才输出低电平,使74LS160异步复位,进入0000这个状态。从0000状态开始,随着时钟脉冲的不断到来,74LS160依次变为0001、0010、0011、0100、0101、和0110状态[图5-2]。可能有人说:“不对!这个电路总共有七个状态,应该是七进制计数器呀!”我们说,这个电路虽然要经历七个状态,但是只需六个脉冲就完成一个计数循环,因此它仍是六进制计数器。
图5-2
我们仔细分析一下。假设74LS160的初始状态为0000,第一个时钟脉冲到达后,它的状态变为0001,第二个时钟脉冲到达后,它的状态变为0010,……,第五个时钟脉冲到达后,它的状态变为0101,第六个时钟脉冲到达后,它的状态变为0110。当74LS160处于0110这个状态时,译码器输出低电平,使74LS160异步复位,进入0000这个状态。这段话里,“异步复位”是一个关键词。与同步复位不同,异步复位不受时钟脉冲的控制。于是,译码器的输出刚变成低电平,74LS160的状态就变成了0000。理想情况下,74LS160在第六个时钟周期内首先在0110状态停留片刻,然后就稳定地停留在0000状态。我们知道,计数器的工作对象是时钟脉冲。计数,就是计时钟脉冲的个数。在我们这个例子中,74LS160从0000状态出发,经过六个(而不是七个)时钟周期又回到了0000状态,也就是说,每六个(而不是七个)时钟脉冲就使74LS160的状态循环一次。因此,这个电路是一个六进制计数器。计数循环中包括0000、0001、0010、0011、0100和0101这六个稳定状态。可能有人说:“唔,听你这么一解释,我也觉得它是六进制计数器。不过,把七个状态算成六个总是有点儿别扭。唉,只要它能工作,我就不计较它是经历六个状态还是七个状态了。”我说:“对,我也这样想。然而,事与愿违呀!不改进的话,这个电路还真不能工作。”为什么呢?我们知道,计数器的状态是触发器记忆的。74LS160有四个触发器,分别记忆。这四个触发器的工作速度是有差异的。在74LS160从0110变成0000的过程中,和的状态不变,和的状态要从1变成0。我们假设比快,那么刚刚从1变0时,仍然处于1状态。这时,译码器的输出就不是低电平了,74LS160的异步复位信号就消失了。在异步复位信号持续时间过短的情况下,将保持1状态不变。于是74LS160将停留在0010状态,而不是我们期望的0000状态。显然,这是一种竞争冒险现象,因为74LS160是否能够从0110变成0000取决于和的竞争结果。怎样使异步复位信号持续足够长的时间呢?我们来看看这个电路[图5.3.36]。
- 基于MSI的N进制计数器设计方法研究(02-01)
- 基于门控时钟的低功耗时序电路设计(07-13)
- N进制异步计数器设计方案(12-06)
- 具有数据记录功能的无线温度监控系统(06-05)
- 基于CC4060的环境湿度测试仪的设计与实现(07-16)
- 一种简单的二进制/BCD转换电路(07-11)