如何改进六进制记数器设计的方法
---私立华联学院电子信息工程系龙志
摘要:本文主要通过对同步十进制加法计数器74LS160实现六进制计数器的的常规设计分析,进而研究并实现对六进制计数器的改进设计,本设计主要是对74LS160的异步复位端进行分析设计,使用74LS160能克服触发器的工作速度的差异情况以及竞争冒险现象,实现了使异步复位信号能够持续足够长的时间,从而使74LS160能够从0110这一状态复位变为0000状态,成功得竞争结果,实现我的设计思想。
关键字:同步计数器、加法计数器、触发器、计数脉冲、异步复位、预置数
引言:任何一个数字系统几乎都包含计数器。
计数器不仅可以用来计数,也可用来定时、分频和进行数字运算。
所谓计数,就是计算输入脉冲的个数,而计数器就是实现计数功能的时序部件。
计数器的种类很多。
按照组成计数器各触发器的状态转换所需CP是否来自统一的计数脉冲,可以分为同步计数器和异步计数器;按照计数数值的增减情况可以分为加法计数器、减法计数器和可逆计数器;按照计数进位制不同可分为二进制计数器、十进制计数器和任意进制计数器;按照集成工艺不同可分为双极型计数器和单极型计数器。
另外,计数器既有中规模集成组件,也可以用小规模集成电路组成。
正文:除了计数功能外,计数器还有一些附加功能,如异步复位、预置数(注意,有同步预置数和异步预置数两种。
前者受时钟脉冲控制,后者不受时钟脉冲控制)、保持(注意,有保持进位和不保持进位两种)。
虽然计数器产品一般只有二进制和十进制两种,有了这些附加功能,我们就可以方便地用我们可以得到的计数器来构成任意进制的计数器。
同时我们也知道计数器是一种应用十分广泛的时序电路,除用于计数,分频外,还广泛用于数字测量,运算和控制,从小型数字仪表,到大型数字电子计算机,几乎无所不在,是任何现代数字系统中不可缺少的组成部分。
计数器可利用触发器和门电路构成.但在实际工作中,主要是利用集成计数器来构成.在用集成计数器构成N进制计数器时,需要利用置数控制端或清零端,让电路跳过某些状态来获得N进制计数器。
下面我举自己设计的用同步十进制加法计数器74LS160构成一个六进制计数器。
首先,在做出设计之前,我们先来了解一下同步加法计数器74LS160主要功能,如表1:
表1 74160的功能表
由表1可知,74LS160具有以下功能:
①异步清零。
当R D=0时,不管其他输入端的状态如何,不论有无时钟脉冲CP,计数器输出将被直接置零(Q3Q2Q l Q0=0000),称为异步清零。
②同步并行预置数。
当R D=1、L D=0时,在输入时钟脉冲CP上升沿的作用下,并行输入端的数据d3d2d1d0被置入计数器的输出端,即Q3Q2Q l Q0=d3d2d1d0。
由于这个操作要与CP上升沿同步,所以称为同步预置数。
③计数。
当R D=L D=EP=ET=1时,在CP端输入计数脉冲,计数器进行二进制加法计数。
④保持。
当R D=L D=1,且ET
EP =0,即两个使能端中有0时,则计数器保持原来的状态不变。
这时,如EP=0、ET=1,则进位输出信号RCO保持不变;如ET=0则不管EP状态如何,进位输出信号RCO为低电平0。
有了以上的功能,我们就可以很灵活的对74LS160芯片进行应用操作
因为六进制计数器的有效状态有六个,而十进制计数器的有效状态有十个,所以用十进制计数器构成六进制计数器时,我只需保留十进制计数器的六个状态即可。
74LS160的十个有效状态是BCD编码的,即0000、0001、0010、0011、0100、0101、0110、0111、1000、1001图1-1。
图1-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状态呢?我用一个混合逻辑与非门构成一个译码器图1-2,当74LS160的状态为0100时,与非门输出低电平,这个低电平使74LS160工作在预置数状态,当下一个时钟脉冲到来时,由于等于1001,74LS160就会预置成1001,从而实现了状态跳跃。
图1-2 用置数法将74LS160接成六进制计数器(置入1001)
另外一个方法的六进制计数器就是如图1-3,是用74LS160实现六进制计数器的参考电路。
当Q3Q2Q1Q0=0111时,经过与非门所产生的零脉冲迅速使计数器清零,之后在输入CP脉冲的作用下,并很快依次输出
0000→0001→0010→0011→0100→0101→0000。
当输入6个低频连续脉冲,从而可通过数码管来观察显示设计的结果。
图1-3 74LS160实现六进制计数器的设计
再者,在设计方面,我们还可采用异步方法,所以下面的设计,比以上这两个方案稍微
繁琐一点的是利用74LS160的异步复位端。
下面这个电路中图1-3,也有一个由混合逻辑与非门构成的译码器。
图1-3 用置零法将74LS160接成六进制计数器
不过,这个译码器当输入为0110时才输出低电平,使74LS160异步复位,进入0000这个状态。
从0000状态开始,随着时钟脉冲的不断到来,74LS160依次变为0001、0010、0011、0100、0101、和0110状态图1-4。
可能有人说:“不对!这个电路总共有七个状态,应该是七进制计数器呀!”但你想,这个电路虽然要经历七个状态,但是只需六个脉冲就完成一个计数循环,因此它仍是六进制计数器,这就是我们常常所要注意的问题。
图1-4
我们仔细分析一下。
假设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取决于和的竞争结果。
怎样使异步复位信号持续足够长的时间呢?我们来看看这个电路图1-5。
图1-5 图1-3电路的改进
两个与非门构成了RS锁存器,以它的端输出的低电平作为74LS160的异步复位信号。
若74LS160从0000状态开始计数,则第六个时钟脉冲上升沿到达时进入0110状态,使RS锁存器置位,端输出低电平。
74LS160在0110状态作短暂停留后,迅速转入其它状态,如0010或0100,译码器输出的负脉冲消失。
如果我们把这个窄脉冲直接作为74LS160的异步复位信号,计数器不一定能够可靠地工作。
如果我们把这个窄脉冲作为RS锁存器的置位信号,把时钟脉冲作为RS锁存器的复位信号,再将RS锁存器的作为74LS160的异步复位信号,计数器一定能够可靠地工作,因为输出的负脉冲的宽度与时钟脉冲高电平的持续时间相等。
以上就是我用同步十进制加法计数器74LS160实现一个六进制计数器的设计分析研究。
参考文献:[1] 康华光. 电子技术基础. 2002,第50期30-40
[2] 阎石. 数字电子技术基础.高等教育出版社,2004,5(1):18-19。