第9章 计数器 (2011)_第1页
第9章 计数器 (2011)_第2页
第9章 计数器 (2011)_第3页
第9章 计数器 (2011)_第4页
第9章 计数器 (2011)_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章计数器本章大纲9.1 异步计数器运算9.2 同步计数器运算9.3 递增递减同步计数器9.4 同步计数器的设计9.5 级联计数器9.6 计数器译码9.7 计数器应用9.8 故障检测9.9 关联标注的逻辑符号9.10可编程逻辑9.11数字系统应用本章学习目标n 描述异步和同步计数器之间的区别n 分析计数器时序图n 分析计数器电路n 解释传播延迟怎样影响计数器的运算n 确定计数器的模n 修改计数器的模n 识别4位二进制计数器和十进制计数器之间的区别n 使用递增,递减计数器来生成正向和反向二进制序列n 确定计数器的序列n 在不同的应用中使用IC计数器n 设计一个计数器,使其可以具有任意指定的状态

2、序列n 使用串连计数器来实现更高的模n 使用逻辑门来译码任何给定的计数器状态n 消除计数器译码中的误操作n 解释数字时钟怎样运行n 对不同类型的计数器错误进行故障检测n 解释使用关联表示法的计数器逻辑符号n 讨论SPLD中的模式选择n 在系统应用中应用计数器重要术语n 异步n 二进制序列n 再循环n 模n 十进制n 同步n 终端计数n 状态机n 状态图n 串连简介 正如你在第8章中所学到的那样,触发器可以连接在一起,而执行计数运算。这样的一组触发器就是计数器。所使用的触发器个数以及它们连接的方式确定了状态的个数(称为模),同时确定了计数器在每个完整的循环中所要经过的状态序列。 根据计数器时钟脉

3、冲的方式不同,计数器可以分为两个大类别:异步和同步计数器。在异步计数器(通常称为脉动计数器)中,第一个触发器由外部时钟脉冲来触发,然后后面的触发器就会由前一个触发器的输出来触发。在同步计数器中,时钟输入连接到所有的触发器上,从而使得它们同时被触发。在这两个类别内部,计数器主要按照计数器中的序列类型、状态个数或者触发器个数来分类。固定功能器件74LS93A 74LS160 74HC16174HC163 74HC190 74LS47数字系统应用概述 数字系统应用阐释了本章中的概念。它将继续介绍前三章中的交通灯控制系统。本章的重点是系统中产生交通灯序列(基于来自计时电路和车辆传感器)的序列逻辑部分。

4、 9.1 异步计数器运算 异步是指事件相互之间没有固定的时间关系,并且一般来说,并不同时发生。异步计数器是这样一种计数器:计数器内部的触发器(FF)并不同时改变状态,因为它们不具有共同的时钟脉冲。 学完本节之后,你应当能够n 描述2位异步二进制计数器的运算n 描述3位异步二进制计数器的运算n 定义相关于计数器的脉动n 描述异步串连计数器的运算n 开发计数器时序图n 讨论74LS93A 4位异步二进制计数器2位异步二进制计数器 图9.1展示了一个连接为异步(asynchronous)运算的2位计数器。注意时钟(CLK)只应用于第一个触发器FFO的时钟输入(C)上,FFO总是最低有效位(LSB)。

5、第二个触发器FF1由FF0的输出来触发。FFO在每个时钟脉冲的正向边沿改变状态,但是FF1只有被FFO的输出的正向转换触发时才能改变状态。由于经过触发器的传播延迟,输入时钟脉冲(CLK)的转换和FF0的输出的转换绝对不可能发生在同一时间。所以,这两个触发器绝对不会同时被触发,因而该计数器的运算是异步的。 异步计数器的时钟输入总是只连接到LSB触发器上。 图9.1 一个2位异步=进制计数器 时序图 让我们来检查一下图9.1中异步计数器的基本运算,应用4个时钟脉冲到FF0,并观察每个触发器的输出。图9.2阐释了对应于时钟脉冲的触发器输出状态的改变。这两个触发器连接为反转运J=1而K=1)并且假设它

6、们初始为复位(Q为低电压)。图9.2 图9.1中计数器的时序图 异步计数器也称为串行计数器。 CLK1(时钟脉冲1)的正向边沿使得FF0的输出变为高电压,如图9.2所示。与此同时输出变为低电压,但是它对FF1没有影响,因为必须正向转换触发该触发器。在CLK1的前沿之后,=1而=0。CLK2的正向边沿使得变为低电压。输出变为高电压而触发器FF1使得变为高电压。在CLK2的前沿之后,=O而=1。CLK3的正向边沿再次使得变为高电压。输出变为低电压并且对FF1没有影响。因此,在CLK3的前沿之后,=1而=1。CLK4的正向边沿使得变为低电压,同时变为高电压而触发器FF1使得变为低电压。在CLK4的前

7、沿之后,=O而=0。现在计数器已经再循环到了它的原始状态(两个触发器都是复位状态)。 在时序图中,和输出的波形如图9.2所示,它们相关于时钟脉冲。出于简化的目的,、和时钟脉冲的转换以同步形式展示出来,尽管这是个异步计数器。当然,在CLK和转换之间以及在转换和转换之间,有一定的延迟。 注意在图9.2中,该2位计数器呈现了4种不同的状态,正如对于两个触发器(22=4)所期望的那样。当然,注意如果表示最低有效位(LSB)而表示最高有效位(MSB),计数器状态的序列表示如表9.1所列出的一系列二进制数。在数字逻辑中,总是LSB除非另有指定。 表9.1 图9.1中计数器的二进制状态序列 时钟脉冲 初始

8、0 0 1 0 1 2 1 0 3 1 1 4(再循环) 0 0由于该计数器经过一个二进制序列(binary sequence),所以图9.1中的计数器是一个二进制计数器。它实际上计数了3个时钟脉冲,而在第4个脉冲上其再循环到它的原始状态(=O,=0)。再循环(recycle)一般用在计数器运算上;它是指计数器从它的最终状态返回到原始状态的转换。3位异步二进制计数器 3位异步二进制计数器如图9.3(a)所示。该基本运算和刚刚讨论的2位计数器的运算是一样的,只不过它有三个触发器,因而3位计数器具有八个状态。8个时钟脉冲的时序图如图9.3(b)所示。注意图9.3中的计数器经过一个从0到7的序列,而

9、后又再循环到O状态。这个计数器序列如表9.2所示。通过连接附加的反转触发器,可以很容易地将这个计数器扩展到更高的计数。表9.2 3位二进制计数器的二进制状态序列 时钟脉冲 初始 0 O O 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 8(再循环) 0 0 O 图9.3 3位异步二进制计数器和它的一次循环时序图传播延迟 由于下述原因,异步计数器常常称为脉动计数器(ripple counter):输入时钟脉冲的效应首先被FF0“感觉”到。由于经过FF0的传播延迟,该效应不能立即到达FF1。并且在FF2被触发之前,还有一个经过FF1

10、的传播延迟。因此,输入时钟脉冲的效应在计数器中“脉动”,由于传播延迟而占用一些时间,才能到达最后的触发器。 为了阐释这一点,注意图9.3中计数器的所有三个触发器都在CLK4的前沿改变状态。这种脉动时钟效应如图9.4所示,展示了前4个时钟脉冲,同时指示了传播延迟。从高电压到低电压的转换在时钟脉冲的正向转换之后一个延迟时间()内发生。从高电压到低电压的转换在正向转换之后一个延迟时间()发生。从高电压到低电压的转换在正向转换之后一个延迟时间()内发生。正如你所看到的那样,FF2直到时钟脉冲CLK4正向边沿之后的两个延迟才被触发。因此,时钟脉冲CLK4的效应要占用三个传播延迟时间在计数器中脉动,并且将

11、从低电压变为高电压。 图9.4 3位异步(脉动触发)二进制计数器的传播延迟 异步计数器的这种累积延迟在许多应用中都是主要的障碍,因为其限制了计数器触发的速度,并且产生了译码问题。计数器中的最大累积延迟必须小于时钟波形的周期。示例9.1 一个4位异步二进制计数器如图9.5(a)所示。每个触发器都是负边沿触发的,并且所具有的传播延迟为10纳秒(ns)曲。开发一个时序图,展示每个触发器的Q输出,并且确定从时钟脉冲的触发边沿到Q3状态的相应改变之间的总传播延迟时间。同时确定该计数器可以运行的最大时钟频率。 解: 省略延迟的时序图如图9.5(b)所示。对于总延迟时间,CLK8或者CLK16的效应必须在改

12、变之前穿过4个触发器,所以 tp(tot)=4×lOns=40ns 最大时钟频率为 Fmax= =25MHz 相关问题:如果图9.5(a)中的所有触发器都是正边沿触发的话,展示时序图。 答案在本章最后。异步十进制计数器 计数器的模(module),是计数器顺序经过的特定状态的个数。计数器的最大可能状态个数(最大模)是2n,其中n是该计数器内部的触发器个数。 当然,可以设计计数器,使得其序列中的状态个数小于最大值2n。这个结果序列称为截尾序列(truncated sequence)。 计数器可以具有的最大状态个数为2n,其中n是触发器的个数。 具有截尾序列的计数器所具有的常见模是10(

13、称为MOD1O)。序列中具有10个状态的计数器称为十进制计数器(decade counter)。具有从0(0000)到9(1001)计数序列的十进制计数器是BCD十进制计数器,因为它的10状态序列产生该BCD代码。这种类型的计数器在一些显示应用中是很有用的,这些显示器需要BCD来变换为十进制读数。 为了得到截尾序列,需要迫使计数器在经过所有可能的状态之前再循环。例如,BCD十进制计数器必须在1001状态后再循环到0000状态。一个十进制计数器需要4个触发器(三个触发器是不够用的,因为23=8)。让我们使用一个诸如图9.5(a)中那样的4位异步计数器,并修改它的序列以阐释截尾计数器的原理。一种使

14、得计数器在计数完9(1001)之后再循环的方法是,用一个与非门对计数10(1010)进行译码,并连接该与非门的输出到触发器的清除输入()上,如图9.6(a)所示。 部分译码注意在图9.6(a)中,只有Q1和Q3连接到了与非门的输入上。这种排列是部分译码的一个示例,其中两个特定的状态(Q1=1和Q3=1)就足以译码计数10,因为其他的所有状态都不会同时具有高电压Q1和Q3。当该计数器进入计数10(1010)时,译码门输出就会变为低电压并且异步复位所有的触发器。 结果时序图如图9.6(b)所示。注意在Q1波形上有一个假信号。该假信号的原因是Q1必须在计数10被译码之前首先变为高电压。直到该计数器进

15、入计数10之后的几纳秒,译码门的输出才会变为低电压(两个输入都是高电压)。因此,该计数器在复位到0000之前会在1010状态上保持较短的时间,因而产生了Q1上的假信号和线(用以复位计数器)上的结果假信号。 其他的截尾序列可以相似的方式实现,如示例9.2所示。示例9.2 展示一下怎样实现一个异步计数器,使其模为12,具有从0000到1011的直线二进制序列。 解: 由于三个触发器可以产生最多8个状态,所以就需要四个触发器来产生任何大于8而小于或者等于16个模。 当该计数器进入它的最后一个状态1011后,它就必须再循环到0000而不是进入其正常的下一个状态1100,如下面的序列图所示:观察和都进入

16、O,但是和都必须在第12个时钟脉冲被迫进入0。图9.7(a)展示了该模12计数器。与非门部分译码计数12(1100)并且使触发器2和触发器3复位。因此,在第12个时钟脉冲上,计数器被迫从计数11再循环到计数0,如图9.7(b)中的时序图所示。(在被上的假信号复位之前,它只在计数12上停留几纳秒的时间。)相关问题:怎样修改图9.7(a)中的计数器使其变为模13计数器?4位异步二进制计数器 74LS93A是特定集成电路异步计数器的一个示例。正如图9.8中逻辑图所展示的那样,这种设备实际上由一个单触发器和一个3位异步计数器组成的。这种排列是出于简单的目的。如果只使用单触发器的话,它可以用作除以2的设

17、备,如果只使用3位计数器的话,它可以用作模8计数器。这个设备同时提供了门控复位输入RO(1)和RO(2)。当两个输入都是高电压时,计数器就复位到0000状态。 此外,74LS93A可以用作4位模16计数器(从O计数到15),将Qo输出连接到CLK B输入上即可,如图9.9(a)所示。它也可以配置为具有异步再循环的十进制计数器(从O计数到9),为计数10的部分译码使用门控复位输入即可,如图9.9(b)所示。示例9.3 展示74LS93A怎样用作模12计数器。 解: 使用门控复位输入RO(1)和RO(2)来部分译码计数12(记住,有一个内部与非门关联于这两个输入)。计数12译码由连接Q3到RO(1

18、)并连接Q2到RO(2)来实现,如图9.10所示。输出Q0连接到CLK B上以创建一个4位计数器。 在计数器进入计数12(1100)之后的瞬间,它就会复位到0000。但是,这个再循环会在上产生个假信号,因为该计数器在再循环之前,必须进入1100状态几纳秒的时间。 相关问题:展示74LS93A怎样连接为模13计数器。9.1节复习答案在本章最后。1对于计数器来说,异步是什么意思?2一个模14计数器具有几个状态?它所需要的最小触发器数目是多少?9.2 同步计数器运算 同步是指事件相互之间具有固定的时间关系。对于计数器运算来说,同步意味着计数器中的所有触发器同时由一个共同的时钟脉冲触发。 学完本节之后

19、,你应当能够 - 描述2位同步二进制计数器的运算 - 描述3位同步二进制计数器的运算 - 描述4位同步二进制计数器的运算 _ 描述同步十进制计数器的运算 - 开发计数器时序图 _ 讨论74HC163 4位二进制计数器和74LS169 BCD十进制计数器 2位同步二进制计数器 图9.11展示了一个2位同步(synchronous)二进制计数器。注意必须为FF1的J1和K1输入使用不同于异步计数器的排列,以实现二进制序列。 同步计数器的运算如下所示:首先,假设该计数器初始时位于二进制0状态:也就是说,两个触发器都是复位的。当第一个时钟脉冲的正边沿被应用时,FFO将翻转而Q0因而变为高电压。那么FF

20、1在CLK1的正向边沿上会发生什么情况呢?为了找出答案,让我们看看FF1的输入条件。输入J1和K1都是低电压,因为它们所连接到的Q0还没有变为高电压。记住,时钟脉冲的触发边沿会存在传播延迟,直到Q输出实际进行了转换。所以,当第一个时钟脉冲的前沿被应用时,J=0而K=0。这是个无变化条件,所以FF1并没有改变状态。该计数器运算部分的时序细节如图9.12(a)所示。 在同步计数器中,时钟脉冲进入每一个触发器中。 在CLK1之后,Q0=1而Q1=0(这是二进制1状态)。当CLK2的前沿发生时,FF0将翻转并且Q0将会进入低电压。由于FF1在这个时钟脉冲的触发边沿上,输入J1和K1都是高电压(Q0=1

21、),所以该触发器翻转并且Q1变为高电压。因此,在CLK2之后,Q0=O而Q1=1(这是二进制2状态)。这个条件的时序细节如图9.12(b)所示。 当CLK3的前沿发生时,FF0再次翻转到置位状态(Q0=1),而FF1保持置位(Q1=1),因为它的J1和K1输入都是低电压(Q0=0)。在这个触发边沿之后,Q0=1而Q1=1(这是二进制3的状态)。时序细节如图9.12(c)所示。 最后,在CLK4的前沿,Q0和Q1变为低电压,因为它们在它们的J和K输入上都具有翻转条件。时序细节如图9.12(d)所示。该计数器现在再循环到了它的原始状态二进制O。 图9.11中计数器的完整时序图如图9.13所示。注意

22、所有的波形转换看起来都是同时发生的;也就是说,传播延迟没有指示出来。虽然延迟在同步计数器运算中是一个重要的因素,但是在整体时序图中出于简化的目的将它们省略了。主要的波形关系产生于电路的正常运算,即使不展示小的延迟和时序区别也可以完全表达出来。但是,在高速数字系统中,这些小的延迟在设计和故障检测中是一个重要的考虑因素。3位同步二进制计数器 一个3位同步二进制计数器如图9.14所示,而它的时序图如图9.15所示。通过检查如表9.3所示的状态序列,你就可以理解这个计数器的运算。 奔腾中的TSC(时间印章计数器)用以性能监测,它可以使得一些对于奔腾系统的整体性能很重要的参数能够正确地确定。通过阅读某个

23、过程执行前后的TSC,基于处理器循环时间就可以确定该过程所需要的精确时间。在这种方式中,TSC构成了所有时间计算的基础,这些时间计算关联于系统运算的优化。例如,它可以准确确定两个或者多个程序序列中,哪一个更加有效。这对于编译程序开发人员和系统程序员为奔腾开发最有效的代码过程非常有用。 首先,让我们看看Q0。注意Q0在每个时钟上改变状态,与此同时计数器从它的原始状态进入到最终状态,然后再返回它的原始状态。为了产生这个运算,FF0必须由其J0和K0输入上的常高电压保持在翻转模式。注意Q1在每次Q0为1之后,都进入相反的状态。这种改变发生在CLK2、CLK4、CLK6和CLK8上。CLK8脉冲使得该

24、触发器再循环。为了产生这个运算,Q0连接到了FF1的J1和K1输入上。当Q0为1而时钟脉冲发生时,FF1就处于翻转模式,因而改变状态。其他时候,当Q0为O时,FF1就处于无变化模式,并且保持它当前的状态。 接下来,让我们看看FF2怎样依据二进制序列而在合适的时间改变状态。注意Q2每次改变状态时,之前都会有一个特定的条件:Q0和Q1都是高电压。这个条件由与门来检测,并且应用于FF2的J2和K2输入上。只要Q0和Q1为高电压,与门的输出就会使得FF2的J2和K2输入为高电压,并且FF2在下一个时钟脉冲上翻转。在所有的其他时间,FF2的J2和K2输入都被与门输出保持为低电压,而FF2并不改变状态。4

25、位同步二进制计数器 图9.16(a)展示了一个4位同步二进制计数器,而图9.16(b)展示了它的时序图。这个特殊的计数器由负边沿触发的触发器来实现。对于前三个触发器,J和K输入控制的内在原因和前面所讨论的3位计数器是一样的。第四个阶段FF3,在该序列中只改变两次。注意这两个转换的发生都在Q0、Q1和Q2全部为高电压之后。这个条件由与门G2来译码,使得当时钟脉冲发生时,FF3就会改变状态。对于所有其他时间,FF3的J3和K3输入为低电压,并且它处于无变化条件。 4位同步十进制计数器 正如你所知道的那样,BCD十进制计数器呈现出一个截尾二进制序列并且从0000到1001状态。它从1001状态再循环

26、到0000状态,而不是到1010状态。同步BCD十进制计数器如图9.17所示。十进制计数器的时序图如图9.18所示。 译码计数器具有10个状态。 通过检查表9.4中的状态序列并且遵循图9.17中的实现方法,你就可以理解该计数器运算。首先,注意FFO(Q0)在每一个时钟脉冲上翻转,所以Jo和Ko输入的逻辑等式为 Jo=Ko=1这个等式通过将Jo和Ko连接到常高电压电位上来实现。 接下来,注意在表9.4中,FF1(Q1)每次在Q0=1和Q3=0的下一个时钟脉冲上改变状态,所以J1和K1输入的逻辑等式为 J1= K1=Q0 这个等式由Q0和Q3执行与运算并且将门输出连接到FF1的J1和K1输入上来实

27、现。 触发器2(Q2)每次在Q0=1和Q1=1的下一个时钟脉冲改变状态。这就需要如下所示的输入逻辑等式: J2= K2 =QoQ1 这个等式由Q0和Q1执行与运算并且将门输出连接到FF2的J2和K2输入上来实现。 最后,FF3(Q3)每次在Q0=1、Q1=1而Q2=1(状态7)的下一个时钟脉冲变为相反的状态,或者在Q0=1而Q3=1(状态9)时改变。所对应的等式如下所示: J3= K3= Q0Q1Q2+ Q0Q3 这个函数由连接到FF3的J3和K3输入上的与或逻辑来实现,如图9.17中的逻辑图所示。注意这个十进制计数器和图9.16中的模16二进制计数器的区别是,Q0与门、Q0Q3与门和或门;这

28、个排列检测了1OO1状态的发生,并且使得该计数器正确地再循环到下一个时钟脉冲。 同步计数器 4位同步二进制计数器 74HC163是集成电路4位同步二进制计数器的一个示例。逻辑符号如图9.19所示,引脚个数在圆括号内。除了前面所讨论的一般性同步二进制计数器具有的基本功能之外,这种计数器还具有几个特征。 首先,该计数器可以被同步预置到任意的4位二进制数,只要对并行数据输入应用合适的电位即可。当低电压应用于输入时,该计数器将会取得下一个时钟脉冲上数据输入的状态。因此,该计数器序列可以开始于任何4位二进制数。同样地,存在一个有效低电压清除输入(),其同步复位计数器中所有的四个触发器。有两个启动输入EN

29、P和ENT。这两个输入对于该计数器必须都为高电压,才能顺序经过它的二进制状态。当至少有一个输入为低电压时,计数器就失效了。当计数器最终计数为15时(TC= 15),脉冲时钟输出(RCO)就变为高电压。这个连接于启动输入上的输出,就会允许相邻的计数器串连起来,以实现更大的计数序列,随后将会讨论这一点。 图9.20展示了该计数器预置为12(1100)然后计数到末端计数15(1111)的时序图。输入Do是最低有效输入位,而Q0是最低有效输出位。 让我们详细检查一下这个时序图。这将帮助你解释本章后面的时序图或者生产商数据表上的时序图。作为开始,输入上的低电压电位脉冲使得所有的输出(Q0、Q1、Q2和Q

30、3)变为低电压。 接下来,输入上的低电压电位脉冲同步将数据输入(D0、D1、D2和D3)上的数据输入到计数器中。这些数据在变为低电压之后的第一个时钟边沿时,出现在Q输出上。这就是预置运算。在这个特殊的示例中,Q0为低电压、Q1为低电压、Q2为高电压而Q3为高电压。当然,这是二进制数12(Q0是LSB)。 现在计数器在下三个正向时钟边沿依次经过状态13、14和15。然后在接下来的时钟脉冲上再循环到O、1、2。注意ENP和ENT输入在状态序列期间都是高电压。当ENP为低电压时,计数器就会被禁止并且保持在二进制数2的状态。同步BCD十进制计数器 74LS160是十进制计数器的一个示例,它的输入和输出

31、和前面所讨论的74HC163二进制计数器的一样。它可以被预置到任意的BCD计数,只要使用数据输入以及输入上的低电压即可。异步上的低电压将会复位这个计数器。启动输入ENP和ENT对于计数器来说,必须同时为高电压,以对应于CLK输入上的正边沿触发而依次经过它的状态序列。和74HC163一样,启动输入连接于脉动时钟输出RCO上(最终计数1001),用以串连几个十进制计数器。图9.21展示了72LS160计数器的逻辑符号,而图9.22是一个时序图,展示了该计数器被预置到计数7(0111)。级联计数器将会在9.5节讨论。9.2节复习1同步计数器怎样区别于异步计数器?2解释诸如74LS160以及74HC1

32、63之类计数器的预置特征。3描述对于本节所介绍的两个特殊计数器ENP和ENT输入的目的,以及RCO输出 的目的。9.3递增递减同步计数器 递增递减计数器可以正向或者逆向经过一定的序列。递增递减计数器有时候称为双向计数器,可以具有任意指定的状态序列。我们可以用一个3位二进制计数器来阐释递增递减顺序运算,计数器向前经过它的序列(0、1、2、3、4、5、6、7)然后再反过来,使得其可以从相反的方向经过该序列。 学完本节之后,你应当能够n 解释递增递减计数器的基本运算n 讨论74HC190递增,递减十进制计数器 一般来说,大多数递增递减计数器都可以在序列中的任何位点翻转。例如,3位计数器可以经过如下所

33、示的序列: 表9.5展示了一个3位二进制计数器的完整递增递减序列。箭头表示计数器对于它的递增和递减运算模式所进行的状态到状态的运动。同时检查递增和递减序列的Q0,展示了FF0在每个时钟脉冲上翻转。因此,FF0的J0和K0输入为Jo= Ko=1 对于递增序列,Q1在Q0=1的下一个时钟脉冲上改变状态。对于递减序列来说,Q1在Q0=O的下一个时钟脉冲上改变状态。因此,FF1的J1和K1输入在下面的等式所表达的条件下,必须等于1:J1 =K1=(Q0·uP)+(·DOWN) 对于递增序列来说,Q2在Q0=Q1=1的下一个时钟脉冲上改变状态。对于递减序列来说,Q2在Q0=Q1=O的

34、下一个时钟脉冲上改变状态。因此,FF2的J2和K2输入在下面的等式所表达的条件下,必须等于1:J2=K2=(Q0·Q1·UP)+( ··DOWN) 每个触发器的J和K输入所对应的每一个条件,都会在计数器序列中的合适位点上产生一个翻转。 图9.23展示了3位递增递减二进制计数器的基本实现方法,对每个触发器的J和K输入上述逻辑等式。注意UP/控制输入对于递增来说是高电压,而对于递减来说是低电压。示例9.4 如果时钟和UP/控制输入具有如图9.24(a)所示的波形,展示时序图并确定4位同步二进制递增递减计数器的序列。该计数器开始于全0状态并且是正边沿触发的。

35、解:展示Q输出的时序图如图9.24(b)所示。从这些波形中,计数器序列如表9.6所示。相关问题:如果图9.24(a)中的UP/控制波形反相的话,展示时序图。递增递减十进制计数器 图9.25展示了74HC190的逻辑图,它是集成电路递增递减同步计数器的一个示例。计数的方向由递增递减输入(D/)的电位来确定。当这个输入为高电压时,计数器递减计数;当它是低电压时,计数器递增计数。同样地,这个设备可以被预置到任意所需的BCD数字,当输入为低电压时,BCD数字由数据输入的状态来确定。当在递增模式中的最终计数9(1001)或者当在递减模式中的最终计数0(0000)时,MAX/MIN输出就会产生一个高电压脉

36、冲。这个MAX/MIN输出和脉动时钟输出()以及计数启动输入()一起,会用于串连计数器。(级联计数器将在9.5节中讨论。) 图9.26是一个示例时序图,展示了74HC190计数器预置为7(0111)然后经过一个递增计数的序列并跟随着一个递增计数的序列。当计数器位于全0状态(MIN或者1001状态(MAX)时,该MAX/MIN输出就会是高电压。9.3节复习1一个4位递增递减二进制计数器位于DOWN模式并且处于1010状态。在下一个 时钟脉冲上,计数器将会进入哪一个状态?2处于UP模式的4位二进制计数器的末端计数是多少?在DOWN模式中是多少? 在DOWN模式中,最终计数的下一个状态是多少?9.4

37、同步计数器的设计 我们向那些需要计数器入门或者一般性状态机器设计的人推荐这一节。对于其他的任何资料,这并不是前提条件。 学完本节之后,你应当能够n 以基本部件和输入输出描述一般性的序列电路n 为给定的序列开发状态图n 为指定的计数器序列开发次状态表n 创建触发器转换表n 使用卡诺图方法来推导出同步计数器的逻辑需求n 实现一个计数器,用以产生指定的状态序列序列电路的一般模式 在开始特定计数器设计技术之前,让我们开始于序列电路或者状态机器的一般性定义:一般的序列电路由组合逻辑部分和存储器部分(触发器)组成,如图9.27所示。在时钟触发的序列电路中,存储器部分有一个时钟输入,如图所示。 电路的正常运

38、算需要存储在存储器部分的信息和组合逻辑(I0,I1,IM)的输入。在任何给定的时间,存储器所在的状态称为当前状态,并且将进入下一个状态,这由激励线(Y0,Yl,Yp)上的条件来确定。存储器的当前状态由状态变量(Q0,Ql,Qx)来表示。这些状态变量和输入(I0,I1,Im)确定了系统输出(O0,O1,On)。 并不是所有的序列电路都具有刚刚讨论的一般模式中所拥有的输入和输出。但是,所有的电路都具有激励变量和状态变量。计数器是时钟序列电路的一个特例。在本节中,序列电路的一般设计过程将会在一系列步骤中应用于同步计数器。步骤1:状态图 计数器首先由状态图来描述,其展示了计数器被时钟触发之后依次经过的

39、状态。作为一个示例,图9.28展示了基本3位格雷码计数器的状态图。这个特殊电路没有输入而有时钟,没有输出而是计数器中每个触发器所取得的输出。这个时候,你可以复习一下第2章中有关格雷码的内容。 步骤2:次状态表 一旦序列电路由状态图定义下来,第二步就是导出次状态表,其列出了计数器的每一个状态(当前状态)和相应的下一个状态。次状态就是计数器对应于时钟脉冲的应用,从当前状态要进入的状态。次状态表由状态图中导出,如表9.7所示的3位格雷码计数器。Q0是最低有效位。 步骤3:触发器转换表 表9.8是J-K触发器的状态转换表。通过展示触发器从当前状态到次状态的Q输出,列出了所有可能的输出转换。QN是触发器

40、的当前状态(在时钟脉冲之前),而QN+1是次状态(在时钟脉冲之后)。对于每个输出转换来说,列出了使得转换得以发生的J和K输入。X表示“无关紧要”(输入可以为1或者O)。 为了设计该计数器,转换表应用于计数器中的每一个触发器,基于次状态表(表9.7)。例如,对于当前状态0000,Q0从当前状态O到次状态1。为了使这种情况得以发生,J0必须为1,你不要考虑K0是什么(J0=1,K0=X),正如你可以在转换表(表9.8)中看到的那样。接下来,Q1的当前状态为0并且在下一个状态保持为O。对于这个转换来说,J1=0而K1=X。最后,Q2的当前状态为O而在下一个状态保持为O。所以,J2=0而K2=X。为表

41、9.7中的每一个当前状态重复这个分析。 步骤4:卡诺图 卡诺图可以用来确定计数器中每个触发器的J和K输入所需要的逻辑。对于每个触发器的J输入都有一个卡诺图,对于每一个K输入也都有一个卡诺图。在这个设计过程中,卡诺图中的每个单元,都表示列在表9.7中计数器序列中的一个当前状态。 由转换表(表9.8)中的J和K状态,1、O或者X,置于图上每一个当前状态单元中,这取决于特定触发器Q输出的转换。为了阐释这个过程,两个示例如图9.29所示,J0和K0输入进入最低有效触发器(Q0)。 计数器中所有三个触发器的完整卡诺图如图9.30所示。单元的分组如图所示,并且每个小组的相应布尔表达式也推导了出来。 步骤5

42、:触发器输入的逻辑表达式 从图9.30中的卡诺图中,我们可以得到如下所示的每个触发器的J和K输入的表达式: J0=Q2Q1+ = K0=Q2+Q1 =Q2Q1 J1=Q0 K1=Q2Q0 J2=Q1 K2=步骤6:计数器的实现 最后一步是从J和K输入的表达式中实现组合逻辑,并连接触发器来构成完整的3位格雷码计数器,如图9.31所示。设计计数器所需步骤的总结如下所示。一般来说,这些步骤可以应用于任何序列电路。1确定计数器序列并绘制状态图。2从状态图中推导出次状态表。3开发转换表,展示每个转换所需要的触发器输入。转换表对于给定类型的触发器 总是相同的。4将J和K状态从转换表中转移到卡诺图上。每个触

43、发器的每个输入都有一个卡诺图。5将卡诺图单元分组,以产生并导出每个触发器输入的逻辑表达式。6利用组合逻辑实现表达式,并且连接触发器以创建计数器。这个过程现在被应用于设计其他的同步计数器,如示例9.5和9.6所示。示例9.5为图9.32中状态图所示的非规则二进制计数序列设计一个计数器。使用J-K触发器。 解: 步骤1:状态图如图所示。虽然只有四个状态,但是需要一个3位计数器来实现这个序列,因为最大的二进制计数为7。由于所需要的序列并不包括所有可能的二进制状态,在该设计中,无效状态(0、3、4和6)可以作为“无关紧要”。但是,如果计数器错误地进入某个无效状态,你必须确保其返回有效状态。 步骤2:从

44、状态图中开发出来的次状态表如表9.9所示。步骤3:J-K触发器的转换表重复于表9.10中。 步骤4:J和K输入绘制在图9.33中的当前状态卡诺图上。同样地,“无关紧要”也可以根据无效状态000、011、100和110也绘制在相应的单元中,由X表示。 步骤5:将1分组,尽可能利用较多的“无关紧要”状态来实现最大的简化,如图9.33所示。注意当图中所有的单元都被分组时,表达式就简单地等于l。图中每个J和K输入的表达式如下所示: Jo=1、Ko= J1=K1=1 J2=K2=Q1步骤6:该计数器的实现方法如图9.34所示。 分析显示,如果该计数器偶尔进入无效状态(0、3、4、6)中的某一个状态,它总

45、是能够返回一个有效状态,根据下面的序列:0347,和61。 相关问题:对这个证明计数器总是能够从无效状态返回(最终)有效状态的分析,进入验证。示例9.6 开发一个具有格雷码序列的3位递增递减计数器。当UP/控制输入为1时,该计数器应当递增计数,而当控制输入为0时,应当递减计数。解:步骤1:状态图如图9.35所示。每个箭头旁边的1和0表示UP/控制输入Y的状态。 步骤2:从状态图中所导出的次状态表如表9.11所示。注意对于每一个当前状态都有两个可能的次状态,这取决于UP/控制输入的变量Y。步骤3:J-K触发器的转换表重复于表9.12中。步骤4:触发器J和K输入的卡诺图如图9.36所示。UP/控制

46、输入Y和Q0、Q1、Q2都被视为状态变量。使用次状态表,将表9.12中“触发器输入”一列中的信息转移到卡诺图上,表示计数器的每一个当前状态。 步骤5:将1分在尽可能大的组中,如果可能的话就使用“无关紧要”(X)。将小组分解,并且J和K输入的表达式如下所示: 步骤6:使用组合逻辑实现J和K等式,完整的计数器如图9.37所示。这对PLD的实现是一个很好的候选方案。相关问题:验证图9.37中的逻辑与步骤5中的表达式相符。 在这一节中,你已经看到了序列电路技术怎样应用于设计特定的计数器。一般来说,序列电路可以分为两类:(1)输出或者输入仅仅取决于当前内部状态(称为莫尔电路)和(2)输出或者输入取决于当

47、前状态和输入(称为米利电路)。9.4节复习1某一触发器当前位于复位状态,而在下一个时钟脉冲上必须进入置位状态。那么J 和K必须为多少?2某一触发器当前位于置位状态,而在下一个时钟脉冲上必须进入复位状态。那么J 和K必须为多少?3某一二进制计数器处于Q3Q1=1010状态。 (a)次状态是什么? (b)每个触发器输入必须处于什么状态才能确保其在时钟脉冲上进入正确的次状态?9.5级联计数器 计数器可以串连的方式连接以实现更高模的运算。实际上,级联的意思就是某一计数器最后阶段的输出驱动下一个计数器的输入。 学完本节之后,你应当能够n 确定级联计数器的整体模n 分析级联计数器配置的时序图n 使用级联计

48、数器作为分频器n 使用级联计数器来实现特定的截尾序列 两个计数器连接为级联计数器的一个示例如图9.38所示,该图展示了一个2位和一个3位脉动计数器。时序图如图9.39所示。 注意图9.39中的时序图中,模8计数器的最终输出Q4,每32个输入时钟脉冲发生一次。该级联计数器的整体模是32;也就是说,它们执行为除以32的计数器。一般来说,级联计数器的整体模等于单个模的乘积。例如,对于图9.38中的计数器,整体模是4×8=32。 当在级联配置中运行同步计数器时,需要使用计数启动和末端计数功能来实现更高的模运算。在一些设备上,计数启动被简单地标记为CTEN(或者一些诸如G之类的其他名称),末端

49、计数(TC)和一些IC计数器上的脉动时钟输出(RCO)比较相似。 图9.40展示了两个十进制计数器相串连。计数器1的末端计数(TC)输出连接到计数器2的计数启动(CTEN)输入上。计数器2被它的CTEN输入上的低电压所禁止,直至计数器l到达它的最后或者末端状态,并且其末端计数输出变为高电压。这个HIGH现在启动了计数器2,使得当计数器l到达它的末端计数(CLKI0)之后的第一个时钟脉冲时,计数器2从它的初始状态变到第二个状态。在计数器l完成整个第二次循环之后(当计数器l第二次到达末端计数时),计数器2被再次启动并前进到下一个状态。这个序列继续进行。由于它们是十进制计数器,所以计数器1在计数器2

50、完成它的第一个循环之前,必须经过10个完整的循环。换句话说,对应于计数器l的每10个循环,计数器2经过一个循环。因此,计数器2将在100个时钟脉冲之后完成一个循环。这两个级联计数器的整体模是10X 10= 100。 当视为分频器时,图9.40中的电路就会将输入时钟频率分为100份。级联计数器常常用来对高频率时钟信号进行分频,从而得到高精确的脉冲频率。用于该目的的级联计数器配置有时候称为递减计数链。例如,假设你具有一个IMHz的基本时钟频率,想要得到100kHz、10kHz、lkHz的频率,可以使用一系列级联的十进制计数器。如果1MHz信号被一分为10的话,输出就是100kHz。如果100kHz

51、信号再被一分为10的话,输出就是10kHz。再次除以10将会到达lkHz的频率。这个递减计数链的一般实现方法如图9.41所示。示例9.7确定如图9.42所示的两个级联计数器配置的整体模。解:在图9.42(a)中,3计数器配置的整体模是 8×12×16=1536如图9.42(b)中,4计数器配置的整体模是 lO×4×7×5=1400相关问题:将一个时钟频率除以100000,需要多少个级联十进制计数器?示例9.8 使用74LS160来从一个1MHz时钟中得到10kHz的波形。展示逻辑图。 解: 为了从1MHz时钟中得到10kHz,需要分解因子为10

52、0。两个74LS 160计数器必须依照图9.43所示的那样进行串连。左边的计数器每10个时钟脉冲产生一个RCO脉冲。右边的计数器每100个时钟脉冲产生一个RCO脉冲。相关问题:确定图9.43中第二个计数器(右边的计数器)的Qo输出上波形的频率。 应用截尾序列的级联计数器 前面的讨论已经展示了怎样实现一个整体模(除以一个分解因子),该整体模是所有串连计数器独立模的乘积。这可以被考虑为全模级联。 某些应用所需要的模常常小于由全模级联所实现的整体模。也就是说,必须用级联计数器来实现截尾序列。为了阐释这个方法,我们将使用图9.44中的级联计数器配置。这个特殊的电路使用了四个74HC161 4位同步二进

53、制计数器。如果这四个计数器(总共16位)以全模排列串连的话,模应当是216=65 536 让我们假设某个特定的应用需要一个除以40000的计数器(模40000)。65536和40000的差值为25536,也就是必须从全模序列中删除的状态个数。图9.44中电路所使用的技术是,每循环一次都将级联计数器预置到25536(十六进制为63 CO),所以在每个完整的循环中它将从25536计数到65535。所以计数器的每个完整的循环都由40000个状态组成。 注意在图9.44中,最右边计数器的RCO输出是反相的,并应用于每个4位计数器的输入上。计数器每次到达它的末端计数65535,也就是11111111111111112时,RCO就会变为高电压,并使得并行数据输入(63C016)上的数字和时钟脉冲同步带入计数器中。因此,每40000个时钟脉冲,最右边的4位计数器只有一个RCO脉冲。 利用这种技术,通过将计数器在每次循环中都同步载入合适的初始状态,就可以实现任何的模。9.5节复习1实现一个除以1000(模l000)的计数器需要多少个十进制计数器?除以10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论