3.7 计数器的分析与设计
计数器是怎样分类的?
1)按计数器中触发器翻转的时序异同分
按这种方式可分为同步计数器和异步计数器。同步计数器中各触发器均采用同一个CP脉冲触发,而异步计数器中各触发器的CP在两个以上。
2)按计数器的功能(即其数字的变化规律)分
按这种方式可分为加法(递增)计数器、减法(递减)计数器和可逆(加法、减法)计数器。
3)按计数体制分
按这种方式可分为二进制计数器、二—十进制计数器(或称十进制计数器)、任意进制(或称N进制)计数器。如果构成计数器的触发器个数为n,则二进制计数器在计数脉冲作用下的有效循环的状态数为2n个;十进制计数器有效循环的状态数为10个;状态数不等于2n和10的,就是任意进制了。
3.7.1 三位异步二进制减法计数器的设计
往往一涉及电路设计,大家心里总会有些忐忑,会担心自己有没有这个能力去设计一些电路?实际上,只要你多付出些耐心,你就会获得在其他场合难以得到的成就感。一起来试试看吧!
首先从初态列出三位异步二进制减法计数器的计数状态表,如表3-15所示。
表3-15 三位异步二进制减法计数器的计数状态表
从表3-15可以看到,对Q0而言,在CP脉冲的作用下,每来一个脉冲,Q0反转一次;对Q1而言,在Q0从0翻转为1时,Q1发生了状态翻转;同样,Q2的状态翻转在Q1从0翻转为1时发生。因此,选择上升沿触发的D触发器构成的三位异步二进制减法计数器如图3-46所示,每个D触发器接成了T′触发器的形式,FF1的触发脉冲来自Q0,FF2的触发脉冲则来自Q1。
图3-46 由上升沿动作触发的D触发器构成的三位异步二进制减法计数器
如果选择下降沿触发的JK触发器,如何实现异步二进制减法计数器的功能?
提示:我们对表3-15进行了进一步的分析,列出了和的状态,如表3-16所示。可以发现在由1到0的下降沿变化过程中,Q1的状态发生了翻转;在由1到0的下降沿变化过程中,Q2的状态发生了翻转。JK触发器在怎样的组合下可以实现状态翻转,每个JK触发器的CP脉冲又应该从哪里引过来?知道该怎么做了吗?
表3-16 异步二进制减法计数器的状态表
如果需要设计四位乃至五位、八位的二进制减法计数器,应该也不难了吧?
三位异步二进制减法计数器的理论推导
步骤1:寻找各触发器的触发脉冲。
仔细观察表3-15的计数状态表,可知Q0在每个计数脉冲来临时均发生状态翻转,因此选CP0=CP;而Q1共翻转4次,而且都在Q0由“0”到“1”瞬间翻转,因此可取Q0的上升沿作为Q1的触发边沿,即CP1=Q0;Q2共翻转2次,都在Q1由“0”到“1”瞬间翻转,因此取Q1的上升沿作为Q2的触发边沿,即CP2=Q1。
步骤2:按触发信号作用确定各输出的真值表并求解状态方程。
Q0在外脉冲作用下的真值表如图3-47(a)所示,进行卡诺图化简如图3-47(b)所示,可求得:。
Q1在Q0上升沿作用下的真值表如图3-48(a)所示,进行卡诺图化简如图3-48(b)所示,可求得:。
图3-47 Q0的化简
图3-48 Q1的化简
同理可得到Q2在Q1上升沿作用的逻辑表达式。
步骤3:确定触发器的类型,根据特性方程推导驱动方程。
(1)选择D触发器:D触发器的特性方程为Qn+1=D,且触发方式为上升沿触发,因此可知:
(2)选择JK触发器:JK触发器的特性方程为,因触发方式为下降沿触发,脉冲由反相端取,因此有:
步骤4:验证逻辑关系后按驱动方程和触发脉冲方程连线。(略)
3.7.2 异步十进制加法计数器的设计
十进制的编码方式很多,其计数器的种类也很多,因为其读出结果都是BCD码,所以十进制计数器也称二—十进制计数器。以三位二进制加法计数器为基础,可进行四位二进制加法计数器的设计。在二进制计数中,“1001”状态在脉冲作用下将翻转到“1010”状态,而十进制计数在“1001”状态后,应循环翻转回“0000”状态,其计数状态表如表3-17所示。
可以看到,Q0的状态变化仍然取决于输入的CP脉冲。来一个脉冲,Q0的状态翻转一次;Q看起来在Q0从0到1的下降沿来临时发生翻转,但在第10个CP脉冲作用于Q0,使Q0产生0到1的下降沿时,Q1并没有发生状态翻转,而是保持了“0”状态;对Q2来说,很明显,Q1产生1到0的下降沿时,Q2发生了状态翻转;而Q3也没有直接考虑用Q2做它的时钟脉冲,因为Q2的输出状态无法产生Q3在一个周期中的第二次状态跳变时需要的脉冲。
表3-17 异步十进制加法计数器的计数状态表
我们仍然选择下降沿触发的JK触发器进行计数器的设计。对Q0而言,在CP脉冲的作用下,只需要一个J=K=1的状态翻转过程;而Q1输出的产生略为复杂,注意第1~7个CP脉冲的作用过程对Q1而言,可以视为J=K=1的状态翻转过程,而第8、9个CP脉冲作用时,JK触发器处于“置0”的状态,即J=0、K=1的状态,由于的状态与我们需要的J端的状态完全相同,所以在用Q0的输出信号作为Q1对应的触发器的时钟信号时,还需要引进作为其J端信号;从状态表可以看到,Q2的状态翻转完全由Q1的下降沿决定,因此,直接用Q1作为Q2触发器的时钟输入端,将该触发器设置在状态翻转状态就可以了;Q3对应的触发器需要从Q0处引入时钟脉冲,从而满足Q3两次状态翻转的需要,这时就需要考虑如何在Q0的前三次脉冲下降沿避免Q3对应的触发器动作了,也就是在这个时候必须让J=0。由于计数器不可能人为地在需要的时刻送入对应的电平信号,所以需要在电路现成的状态端口中寻找需要的条件,这里选择了用Q1和Q2的输出信号相与的方式。从状态表看到,在第1~5个CP脉冲作用时,Q1和Q2相与,如愿以偿地产生了“0”,在Q0的下降沿状态,对应的触发器都为“置0”状态,在第7、8个CP脉冲作用时,Q1和Q2相与产生的“1”使Q3状态翻转,而第9、10个脉冲作用时,触发器又处于“置0”状态,从而获得了Q3所需要的输出效果。由JK触发器组成的异步十进制加法计数器的逻辑电路如图3-49所示。
图3-49 由JK触发器组成的异步十进制加法计数器的逻辑电路
图3-50 十进制加法计数器的时序图
从状态表3-17可以看到,十进制计数器是在4位二进制的16个组合状态中除去Q3Q2Q1Q0=1010~1111这6个状态后构成的。其时序图和状态转换图分别如图3-50和图3-51所示(MSB:最高有效位;LSB:最低有效位)。
图3-51 十进制加法计数器的状态转换图
异步十进制加法计数器的理论推导
步骤1:寻找各触发器的触发脉冲。
触发脉冲选择原则:“触发脉冲”的边沿的跳变应覆盖需触发对象的各状态变化,且以状态翻转次数最接近为宜,例如,Q0的脉冲应选外部CP;Q1共翻转4次,每次翻转时Q1的状态均为下降沿,因此选Q1比用外部CP更合适;同理可知Q2的脉冲虽可选Q0或Q1,但Q1更合适;而Q3的脉冲只能选Q0。
步骤2:按触发信号作用确定各输出的真值表并求解状态方程。
Q0在外脉冲作用下的真值表如图3-52(a)所示,进行卡诺图化简如图3-53(b)所示,其中“1010~1111”六种状态属于无关项,经化简可求得:。
图3-52 Q0的化简
在Q0的下降沿作用下,绘出Q1的真值表和卡诺图如图3-53所示。由卡诺图化简可得:。
在Q1的下降沿作用下,绘出Q2的真值表和卡诺图如图3-54所示。Q2的真值表由图3-53(a)真值表推出,其中Q3Q2由“01”转“10”后,Q3的翻转已与Q2无关,因此Q3Q2的“10”状态亦属无关项,由卡诺图化简可得:。
图3-53 Q1的化简
图3-54 Q2的化简
Q3的触发脉冲只能由Q0产生,由此绘制真值表如图3-55所示,并根据卡诺图获得状态方程:。(此处不一定要化简,与驱动方程有关,请自行分析)
步骤3:根据特性方程推导驱动方程如下。
步骤4:验证逻辑关系的正确性。(略)
图3-55 Q3的化简
3.7.3 同步二进制加法计数器的设计
异步计数器电路较为简单,但由于它的进位(或借位)信号是逐级传递的,所以使其计数速度受到限制,工作频率不能太高。而由于同步计数器的时钟脉冲同时触发计数器中的全部触发器,各个触发器的翻转与时钟脉冲同步,所以其工作速度较快,工作频率较高。
表3-18为三位同步二进制加法计数器的计数状态表,同步计数器的特点决定了各触发器均由同一时钟脉冲输入。从表中可以看到,对Q0而言,在CP脉冲的作用下,每来一个脉冲,Q0翻转一次,因此,Q0所对应的触发器功能设计只需要考虑脉冲作用下的状态翻转功能;而Q1、Q2在CP脉冲的作用下,并没有产生非常一致的工作状态,有时状态得以保持,有时状态又发生了翻转,如何确定触发器的设计思路?当我们把Q1、Q2状态翻转点在表3-18中标注出来后发现,当Q0为0时,Q1在CP脉冲作用下保持了原状态,只有在Q0为1时,下一个脉冲作用将使Q1发生状态的翻转;而在Q0、Q1同时为1的状态发生后,Q2才会在CP脉冲作用下发生状态翻转,也即满足Q0·Q1=1的条件。由此,可选择下降沿触发的JK触发器来设计三位同步二进制加法计数器,如图3-56所示。
表3-18 三位同步二进制加法计数器的计数状态
图3-56 三位同步二进制加法计数器的逻辑电路图
同步二进制加法计数器的理论推导
因本电路为同步触发,不需考虑各触发器的脉冲来源。
步骤1:绘制各输出的卡诺图并求解状态方程。按表3-18绘制卡诺图如图3-57所示。
图3-57 同步二进制加法计数器卡诺图化简
由图3-57进行卡诺图化简得状态方程:
步骤2:选择触发器,与特性方程对比获得驱动方程,这里选择JK触发器,其特性方程为,推导出驱动方程如下:
这个结论与前面推导的结论一致吗?
你能用D触发器完成三位同步二进制加法计数器的设计吗?如果要求把三位同步二进制加法计数器的计数结果显示在数码管上,后续电路如何设计?你能设计一个四位同步二进制加法计数器吗?
3.7.4 同步二进制减法计数器的设计
表3-19为三位同步二进制减法器的计数状态表。从表中可以看到,与加法器相同,Q0在每个CP脉冲的作用下均发生状态的翻转;Q1则在Q0为0且脉冲来临时发生状态翻转。若Q0为1,Q1状态保持;Q2则在Q0、Q1同时为0且脉冲来临时发生状态翻转,否则状态保持。Q1和Q2状态变化条件与加法器设计中的条件极为相似,唯独有0和1的差异。考虑到触发器的反相输出端和,问题可迎刃而解。用JK触发器设计的三位同步减法计数器的逻辑电路图如图3-58所示。
图3-58 三位同步减法计数器的逻辑电路图
能根据前述理论推导方法推出图3-58的逻辑电路图吗?
表3-19 三位同步二进制减法器的计数状态表
3.7.5 周期性特殊时序电路的设计
很多生产控制过程都是周期性的,但是往往很难与加法器或减法器的逻辑联系到一起,这时用观察的方法无法直接获得控制逻辑关系,下面用卡诺图分析的方法来看看对没有明显相关性的周期性时序如何进行设计。
图3-59 某工程控制系统中各设备的工作时序图
如图3-59所示为某工程控制系统中各设备的工作时序图,从时序图可知,该系统的各设备工作呈周期性,且仅有Q4Q3Q2Q1=0100、0111、0001、1000四个状态。画出对应的状态转换表,如表3-20所示。这里采用同步触发控制方式,电路的输出次态取决于初态的状态,因此,画出各输出的对应卡诺图,如图3-60所示,其中该系统不可能出现的Q4Q3Q2Q1的十二种组合作为约束项处理,在卡诺图中用“×”表示。若使用JK触发器进行设计,结合JK触发器的特征方程进行卡诺图化简,可得到电路的状态方程为:
表3-20 设备的工作状态转换表
图3-60 各输出对应的卡诺图
对特征方程进行相应分析,即得到各触发器的驱动方程为:
图3-61 控制逻辑电路图
对应的控制逻辑电路如图3-61所示。
在设计的最后,需要把系统中Q4Q3Q2Q1不可能出现的12种状态组合代入电路进行验证,获得的状态转换图如图3-62所示。由此可见,无论何种状态,最终都进入了稳态循环。
图3-62 控制系统的状态转换图
3.7.6 集成异步计数器的应用——百进制计数器的设计
为使用便利,计数器电路往往被集成化,且功能各异。下面来了解利用一些典型的集成计数器芯片进行计数电路设计的方法。
可预置的二—五—十进制异步加法计数器74LS196
如图3-63所示为74LS196的逻辑符号和引脚图,其引脚功能如下。
图3-63 74LS196的逻辑符号和引脚图
(1):异步清除端,低电平有效。
(2):计数/置数控制端。当为低电平时,不管时钟端的、状态如何,输出Q3~Q0即可预置成与数据输入端D3~D0的状态相一致;当为高电平时,在、端脉冲下降沿进行计数操作。
(3)D3~D0:数据输入端。
(4)Q3~Q0:数据输出端。
(5)、:时钟脉冲端,低电平有效。
74LS196二—五—十进制计数器的功能,如表3-21所示。
表3-21 74LS196二—五—十进制计数器的功能
从表中可以看到:
(1)优先级最高;
(2)在、低电平有效的情况下,芯片起到预置数的效果,直接把D3~D0端的数据送到Q3~Q0端;
(3)当计数脉冲由输入,则Q0端得到二分频输出;当另一个计数脉冲由端输入时,则Q1~Q3端得到五分频输出。
(4)当计数脉冲由输入,Q0端的输出接到端时,其电路图如图3-64(a)所示,相应的计数时序图如图3-64(b)所示,此时74LS196构成了Q3Q2Q1Q0为8421码的十进制计数方式。
图3-64 由74LS196构成的8421码十进制计数器
(5)当计数脉冲由端输入,Q3端的输出接到端时,其电路图如图3-65(a)所示,相应的计数时序图如图3-65(b)所示,此时74LS196构成了Q0Q3Q2Q1为5421码的十进制计数方式。
图3-65 由74LS196构成的5421码十进制计数器
构成百进制计数器时,需要0~99的计数,因此,74LS196芯片应连接成8421码的进位形式,即选择图3-64所示的连接方式,同时两片芯片级联,将低位芯片的Q3端与高位芯片的端相连,如图3-66所示。
图3-66 用两片74LS196构成的百进制计数器
如果需要设计一个0~999的计数器,对输入脉冲进行计数,需要如何设计?
3.7.7 可预置同步二进制加法计数器的应用——十二进制加法计数器设计
可预置同步二进制加法计数器74LS163
74LS163的逻辑符号如图3-67(a)所示,引脚图如图3-67(b)所示,其引脚功能如下。
(1)D0~D3:四位并行预置数据输入端。D0端为数据低位端,D3端为数据高位端。
(2)Q0~Q3:四位二进制计数输出端。Q0端为数据低位端,Q3端为数据高位端。
(3)CP:时钟输入端。
(4)EP、ET:计数允许控制端。
(5):清零端,低电平有效。
(6):预置数据控制端,低电平有效。
(7)CO:进位输出端。
图3-67 74LS163的逻辑符号和引脚图
74LS163的功能,如表3-22所示。
表3-22 74LS163的功能
从功能表可知:
(1)清零的优先级最高,且为同步清零,即且在CP脉冲上升沿时计数器清零;
(2)当时,具有次优先权,当=0且在CP脉冲上升沿时,计数器置数,即Q3Q2Q1Q0=D3D2D1D0;
(3)当,且优先级别最低的使能端EP=ET=1时,在CP脉冲上升沿触发下,计数器进行计数,CO=Q3·Q2·Q1·Q0;
(4)当,且EP和ET中至少有一个为0时,CP脉冲将不起作用,计数器保持原状态不变。
四位二进制数可表示十六种状态,设计十二进制计数器只用到其中的十二种,因此可以采用以下两种设计方式。
1.反馈清零方式
74LS163芯片的计数周期为“0000~1111”,十二进制的计数要求从0000计数到1011后重新从0000开始,即当Q3Q2Q1Q0为“1011”时,下一个脉冲作用下的状态将翻转为“0000”,这对74LS163芯片来说就是“同步清零”的效果,因此,可考虑从输出端Q3Q1Q0引信号通过与非门到端实现清零功能,从而使计数从0000开始。十二进制加法计数器的电路原理图如图3-68(a)所示。
图3-68 十二进制加法计数器的逻辑电路图
这种利用计数器清零端的清零作用,截取计数过程中的某一个中间状态控制清零端,使计数器由此状态返回到零重新开始计数的计数器设计方式称为反馈清零方式。
2.反馈置数方式
如果利用74LS163的置数控制端LD,在Q3Q2Q1Q0从“1011”转“0000”的过程中,令,从置数端送入“0000”,同样能够达到与反馈清零方式相同的效果,其逻辑原理图如图3-68(b)所示。
如果需要设计一个计数器,从“0001”计数到“1100”,参考图3-68(b)进行设计能否实现这个功能?
3.7.8 可预置同步十进制计数器的应用——六十进制加法计数器设计
1.可预置同步十进制加法计数器74LS160
如图3-69所示为可预置同步十进制加法计数器74LS160的逻辑符号和引脚图,其引脚功能如下。
(1)P0~P3:四位并行预置数据输入端。P0端为数据低位端,P3端为数据高位端。
(2)Q0~Q3:四位BCD码计数输出端。Q0端为数据低位端,Q3端为数据高位端。
(3)CP:时钟输入端。
(4)CEP、CET:计数允许控制端。
(5):清零端,低电平有效。
(6:并行输入使能端,低电平有效。
(7)TC:进位输出端。
图3-69 可预置同步十进制加法计数器74LS160的逻辑符号和引脚图
74LS160的功能,如表3-23所示。
表3-23 可预置同步十进制加法计数器74LS160的功能
从功能表可知:
(1)清零的优先级最高,且为异步清零,即时,计数器立即清零;
(2)当时,具有次优先权,当且CP为上升沿时,计数器置数,即Q3Q2Q1Q0=P3P2P1P0;若P3P2P1P0为“1001”且CET为1,则TC端输出高电平;
(3)当,且优先级别最低的使能端CEP=CET=1时,在CP脉冲上升沿触发下,计数器进行计数;当Q3Q2Q1Q0=1001时,TC端输出高电平,下一个CP脉冲来临时,输出端清零;
(4)当,且CEP和CET中至少有一个为0时,CP脉冲将不起作用,计数器保持原状态不变。
2.可预置同步十进制可逆计数器74HC192
如图3-70所示为可预置同步十进制可逆计数器74HC192的逻辑符号和引脚图,其引脚功能如下。
图3-70 可预置同步十进制可逆计数器74HC192的逻辑符号和引脚图
(1)D0~D3:四位并行预置数据输入端。D0端为数据低位端,D3端为数据高位端。(2)Q0~Q3:四位二进制计数输出端。Q0端为数据低位端,Q3端为数据高位端。
(3)CPD:减计数时钟输入端。
(4)CPU:加计数时钟输入端。
(5)CR:清零端,高电平有效。
(6):预置数据控制端,低电平有效。
(7):进位输出端,低电平有效。
(8:借位输出端,低电平有效。
74HC192的功能,如表3-24所示。
表3-24 可预置同步十进制可逆计数器74HC192的功能
从功能表可知:
(1)清零的优先级最高,且为异步清零,高电平有效,即CR=1时,计数器立即清零;
(2)当CR=0时,具有次优先权;当=0时,计数器异步置数,即Q3Q2Q1Q0=D3D2D1D0;
(3)当CR=0和时,若减计数时钟输入端CPD置高电平,加计数时钟输入端CPU送入计数脉冲,脉冲上升沿进行加法计数;若加计数时钟输入端CPU置高电平,减计数时钟输入端CPD送入计数脉冲,脉冲上升沿进行减法计数;若两个端子均为高电平,状态保持。
我们需要关注的是进位输出端和借位输出端的状态。74LS192的工作时序图如图3-71所示,加法时的进位输出条件为;减法时借位输出条件为。
也就是说,进行加计数,当Q3Q0均为1、CPU=0,即计数状态为1001时,给出一进位信号;进行减计数,当Q3Q2Q1Q0均为0且CPD=0,即计数状态为0000时,给出一借位信号。
图3-71 74HC192的工作时序
3.六十进制加法计数器的设计
设计六十进制加法计数器,可用以下两种方法来实现。
1)用74LS160实现
六十进制计数器中出现的最大数是(59)10,显然需要用两片74LS160才能实现相应功能。从六十进制的个位对应的功能可以看到,这里需要的是一个完整的十进制加法计数器,设计的关键在于“个位”向“十位”的进位信号的产生和计满59后的清零问题。74LS160芯片带进位端TC,当“个位”的Q3Q2Q1Q0=1001时,对应TC端将输出高电平,由于74LS160上升沿计数的特性,所以不能把“个位”的进位信号作为“十位”的CP脉冲信号,而是把进位信号送入“十位”芯片的使能端CEP和CET。两片芯片采用同步触发的形式,在下一个CP脉冲作用下,低位清零,高位计数加一,逻辑电路图如图3-72(a)所示。74LS160芯片的清零信号为异步清零,因此不能采用在计数到“59”时取对应位状态产生清零信号的方式,而需要在计数到“60”的瞬间取清零信号。
2)用74HC192实现
使用74HC192芯片进行设计时需注意减计数端的处理。同时,从图3-71可以看到,在加计数状态,当“个位”的计数状态为1001时,其端获得了一个脉冲信号,恰好可以作为“十位”的计数脉冲,因此,只需要将“个位”的端接到“十位”的CPU端就可以了。逻辑电路图如图3-72(b)所示。
图3-72 六十进制计数的逻辑电路图
至此可以看到,只要把芯片的逻辑功能分析清楚,就可以轻松地进行各种时序逻辑控制系统的设计了。