MOD计数器


MOD 计数器是级联计数器电路,在复位之前计数到设定的模数值。

1、概述

计数器的工作是通过每个时钟脉冲将计数器的内容前进一个计数来进行计数。 当由时钟输入激活时推进其数字或状态序列的计数器被称为以“向上计数”模式运行。 同样,当由时钟输入激活时减少其数字或状态序列的计数器被称为以“递减”模式运行。 在 UP 和 DOWN 模式下运行的计数器称为双向计数器。

计数器是由外部定时脉冲或时钟信号激活或触发的时序逻辑器件。 计数器可以被构造为作为同步电路或异步电路操作。 对于同步计数器,所有数据位都随着时钟信号的应用而同步变化。 而异步计数器电路独立于输入时钟,因此数据位在不同时间相继改变状态。

计数器是顺序逻辑器件,遵循由外部时钟 (CLK) 信号触发的预定计数状态序列。 特定计数器在再次返回到其原始第一状态之前前进的状态数或计数序列称为模数 (MOD)。 换句话说,模数(或只是模数)是计数器计数的状态数,并且是计数器的分频数。

模数计数器(或简称 MOD 计数器)是根据计数器在返回其原始值之前排序的状态数来定义的。 例如,一个 2 位计数器从二进制 0 0 2 00_2 002 计数到 1 1 2 11_2 112,即十进制 0 到 3,其模值为 4( 00 → 01 → 10 → 11,并返回到 00 ),因此将是 称为模 4 或 mod-4 计数器。 另请注意,从 00 到 11 需要四个时钟脉冲。

在这个简单的示例中,只有两位 ( n = 2 ),则计数器可能的输出状态的最大数量(最大模数)为: 2 n = 2 2 2^n = 2^2 2n=22 或 4。但是,计数器可以设计为计数到任何数字 通过将多个计数级级联在一起以产生单个模数或 MOD-N 计数器,按其序列排列 2 n 2^n 2n 个状态。

因此,“Mod-N”计数器将需要“N”个连接在一起的触发器来对单个数据位进行计数,同时提供 2n 个不同的输出状态(n 是位数)。 请注意,N 始终是整数值。

我们可以看到,MOD计数器的模值是2的整数次方,即2、4、8、16等,根据所使用的触发器的数量产生n位计数器,并且 它们如何连接,决定了计数器的类型和模数。

2、D型触发器

MOD 计数器是使用“触发器”制成的,单个触发器可以产生 0 或 1 的计数,最大计数为 2。我们可以使用不同类型的触发器设计,S-R、J-K 、J-K主从、D型甚至T型触发器来构造计数器。 但为了简单起见,我们将使用 D 型触发器(DFF),也称为数据锁存器,因为使用单个数据输入和外部时钟信号,并且也是上升沿触发。

D 型触发器(例如 TTL 74LS74)可以由基于 S-R 或 J-K 的边沿触发触发器制成,具体取决于您是否希望它在正沿或前沿(0 到 1 转换)上改变状态。 )或时钟脉冲的负沿或后沿(1 到 0 转换)。 这里我们假设一个正的、前沿触发的触发器。 您可以在以下链接中找到有关 D 型触发器的更多信息。

在这里插入图片描述

D型触发器和真值表

D 型触发器 (DFF) 的操作非常简单,因为它只有一个数据输入(称为“D”)和一个附加时钟“CLK”输入。 这允许在时钟信号的控制下存储单个数据位(0或1),从而使D型触发器成为同步器件,因为输入上的数据仅传输到触发器输出上 时钟脉冲的触发沿。

因此,根据真值表,如果在施加正时钟脉冲时数据输入上存在逻辑“1”(高电平),则触发器将在“Q”处设置并存储逻辑“1”,并在“Q”处存储一个互补的“ 同样,如果在应用另一个正时钟脉冲时数据输入为低电平,则触发器复位并在“Q”处存储“0”,并在 Q 处存储结果“1”。

然后,当时钟(CLK)输入为高电平时,D型触发器的输出“Q”响应输入“D”的值。 当时钟输入为低电平时,“Q”处的条件(“1”或“0”)将保持,直到下一次时钟信号变为高电平至逻辑电平“1”为止。 因此,只有当时钟输入从“0”(低)值变为“1”(高)时,“Q”处的输出才会改变状态,使其成为上升沿触发的 D 型触发器。 请注意,负边沿触发触发器的工作方式完全相同,只是时钟脉冲的下降沿是触发边沿。

现在我们知道边沿触发的 D 型触发器是如何工作的,让我们看看将一些触发器连接在一起形成一个 MOD 计数器。

3、二分频计数器

边沿触发的 D 型触发器是构建 MOD 计数器或任何其他类型的时序逻辑电路的有用且通用的构建块。 如图所示,通过将 Q 输出连接回“D”输入,并创建反馈环路,我们可以仅使用时钟输入将其转换为二进制二分频计数器,因为 Q 输出信号始终是 Q输出信号。

在这里插入图片描述

二分频计数器和时序图

时序图显示“Q”输出波形的频率恰好是时钟输入频率的一半,因此触发器充当分频器。 如果我们添加另一个 D 型触发器,使“Q”处的输出成为第二个 DFF 的输入,则第二个 DFF 的输出信号将是时钟输入频率的四分之一,依此类推。 因此,对于“n”个触发器,输出频率除以 2n,步长为 2。

请注意,这种分频方法非常适合用于顺序计数电路。 例如,通过使用 60 分频计数器,可以将 60Hz 电源频率信号降低为 1Hz 定时信号。 6 分频计数器会将 60Hz 分频为 10Hz,然后将其馈送到 10 分频计数器,将 10Hz 分频为 1Hz 定时信号或脉冲等。

4、MOD-4 计数器

从技术上讲,除了作为 1 位存储设备之外,单个触发器本身也可以被视为 MOD-2 计数器,因为它具有单个输出,导致计数为 2(0 或 1), 关于时钟信号的应用。 但单个触发器本身产生的计数序列是有限的,因此通过将更多触发器连接在一起形成链,我们可以增加计数容量并构造任意值的MOD计数器。

如果单个触发器可以被视为模 2 或 MOD-2 计数器,那么添加第二个触发器将为我们提供一个 MOD-4 计数器,允许它以四个离散步骤进行计数。 总体效果是将原始时钟输入信号除以四。 那么这个 2 位 MOD-4 计数器的二进制序列将为:00、01、10 和 11,如图所示。

在这里插入图片描述

MOD-4 计数器和时序图

请注意,为简单起见,上述时序图中 QA、QB 和 CLK 的开关转换显示为同时进行,即使此连接代表异步计数器。 实际上,在正向时钟 (CLK) 信号的应用与 QA 和 QB 的输出之间会有非常小的切换延迟。

我们可以使用真值表和状态图直观地展示这个 2 位异步计数器的操作。

在这里插入图片描述

MOD-4 计数器状态图

从计数器的真值表中可以看出,通过读取QA和QB的值,当QA = 0且QB = 0时,计数为00。施加时钟脉冲后,值变为QA = 1, QB = 0,计数为 01。下一个时钟脉冲到达后,值发生变化并变为 QA = 0,QB = 1,计数为 10。最后,值变为 QA = 1,QB = 1, 计数为 11。施加下一个时钟脉冲会使计数返回到 00,然后以二进制序列连续向上计数:00, 01, 10, 11, 00, 01 …等。

然后我们看到 MOD-2 计数器由一个触发器组成,而 MOD-4 计数器需要两个触发器,使其能够以四个离散步骤进行计数。 我们可以轻松地在 MOD-4 计数器的末尾添加另一个触发器,以生成 MOD-8 计数器,在重置回 000 之前,为我们提供从 000 到 111 计数的 23 个二进制序列。第四个触发器将 制作一个 MOD-16 计数器等等,事实上,我们可以根据需要继续添加额外的触发器。

在这里插入图片描述

MOD-8 计数器和状态图

因此,我们可以构造 mod 计数器,使其具有 2n 个状态的自然计数,从而在重复之前给出 mod 计数为 2、4、8、16 等的计数器。 但有时需要有一个模数计数器,在正常计数过程中将其计数重置为零,并且不具有2的幂的模数。例如,模数为3、5、6的计数器, 或 10。

5、模“m”计数器

计数器,无论是同步还是异步进程,在一组二进制进程中一次计数一次,因此“n”位计数器自然地充当模 2 n 2^n 2n 计数器。 但是我们可以构造 mod 计数器,通过使用一个或多个外部逻辑门来计数到我们想要的任何值,使其跳过一些输出状态并在任何计数时终止,将计数器重置回零,即所有触发器都具有 Q = 0。

对于模“m”计数器,它们不会计数所有可能的状态,而是计数“m”值,然后返回零。 显然,“m”是小于 2 n 2^n 2n的数,( m < 2 n m < 2^n m<2n)。 那么我们如何让二进制计数器在计数过程中返回零呢?

幸运的是,除了向上或向下计数之外,计数器还可以具有称为 CLEAR 和 PRESET 的附加输入,这使得可以将计数清零(所有 Q = 0)或将计数器预设为某个初始值。 TTL 74LS74 具有低电平有效预设和清除输入。

为了简单起见,我们假设 CLEAR 输入全部连接在一起,并且是高电平有效输入,允许触发器在 Clear 输入等于 0(低电平)时正常工作。 但如果清除输入处于逻辑电平“1”(高电平),则无论下一个时钟信号的值如何,时钟信号的下一个正沿都会将所有触发器重置为状态 Q = 0。

另请注意,由于所有清除输入都连接在一起,因此在计数开始之前还可以使用单个脉冲将所有触发器的输出 (Q) 清零,以确保计数实际上从零开始。 此外,一些较大的位计数器具有附加的启用或禁止输入引脚,允许计数器在计数周期中的任何点停止计数并保持其当前状态,然后再允许再次继续计数。 这意味着计数器可以随意停止和启动,而无需将输出重置为零。

5.1 模5计数器

假设我们想设计一个 MOD-5 计数器,我们该怎么做呢? 首先我们知道“m = 5”,所以 2 n 2^n 2n必须大于5。由于 2 1 = 2 、 2 2 = 4 、 2 3 = 8 2^1 = 2、2^2 = 4、2^3 = 8 21=222=423=8,而8大于5,那么我们需要一个至少有三个触发器的计数器 (N = 3) 为我们提供 000 到 111(十进制 0 到 7)的自然二进制计数。

使用上面的 MOD-8 计数器示例。 其自然计数的真值表如下:

在这里插入图片描述

MOD-8 计数器和真值表

由于我们要构造一个MOD-5计数器,我们需要修改上面的3位计数器电路,使其在计数到5后将自身重置回零。即计数顺序为:1→2→3→ 4→5→复位,依此类推。

MOD-5 计数器会产生从 0 到 4 的 3 位二进制计数序列,因为 000 是有效计数状态,给我们的二进制计数序列为:000、001、010、011、100。因此我们需要计数器 当计数到 6(下一次计数)时,电路在下一个计数状态下重置自身将产生以下输出条件:QA = 1、QB = 0 和 QC = 1(二进制),如下面的状态图所示。

在这里插入图片描述

MOD-5 计数序列

我们可以解码 101 (5) 的输出状态,以提供一个信号,借助 3 输入与门 (TTL 74LS11) 和反相器或非门 (TTL 74LS04) 将计数器清零 (Clr) )。 由反相器和数字逻辑与门组成的组合逻辑电路的输入分别连接至3位计数器输出:QA、QB和QC。

因此,对于任何输入组合(除了我们想要的输入序列),3 输入与门的输出都将处于逻辑电平“0”(低)。

在这里插入图片描述

在二进制代码中,输出序列计数将如下所示:000, 001, 010, 011, 100。

虽然看起来计数器计数到了 101 状态,但当异步计数序列到达下一个二进制状态 101 (5) 时,组合逻辑解码电路将检测到此 101 条件,因此与门将产生逻辑电平“ 1”(高)输出将计数器重置回其初始零状态。 因此,计数器在重置回 000 之前仅保持在 101 临时状态几纳秒。

因此,我们可以使用 AND 门的输入解码在输出 5(十进制)计数后将计数器重置为零,从而提供所需的 MOD-5 计数器。 当译码电路的输出为低电平时,对计数序列没有影响。

在这里插入图片描述

模 5 模计数器和真值表

然后,我们可以在基本计数器周围使用组合逻辑解码电路(同步或异步)来生成我们需要的任何类型的 MOD 计数器,因为可以对每个计数器的独特输出状态进行解码,以将计数器重置为所需的计数。

在上面的简单 MOD-5 示例中,我们使用 3 输入与门来解码 101 二进制输出状态,但任何逻辑电路都可用于按所需计数重置触发器。

然而,使用异步计数器产生所需计数的任意大小的 MOD 计数器的缺点之一是,当计数器达到其复位条件时,可能会出现称为“毛刺”的不良影响。

在这段短暂的时间内,计数器的输出可能会出现错误的值,因此有时最好使用同步计数器作为模数计数器,因为所有触发器都由相同的时钟信号提供时钟,因此同时改变状态 。

5.2 模 10 计数器

模数计数器电路的一个很好的例子是十进制计数器,它使用外部组合电路来产生模数为 10 的计数器。 十进制(除以 10)计数器,例如 TTL 74LS90,其计数序列有 10 个状态,使其适合需要数字显示的人机交互。

十进制计数器有四个输出,产生 4 位二进制数,通过使用外部 AND 和 OR 门,我们可以检测第 9 个计数状态的发生,将计数器重置为零。 与其他 mod 计数器一样,它接收一个输入时钟脉冲,一个接一个,并从 0 重复计数到 9。

一旦达到计数 9(二进制为 1001),计数器就会返回到 0000,而不是继续到 1010。十进制计数器的基本电路可以由 JK 触发器(TTL 74LS73)组成,该触发器在负值上切换状态 时钟信号的后沿如图所示。

在这里插入图片描述

MOD-10 十进制计数器

6、总结

我们在关于 MOD 计数器的文章中看到,二进制计数器是时序电路,它根据时钟信号生成二进制位序列,并且二进制计数器的状态由所有计数器输出共同形成的特定组合确定。

计数器可以产生的不同输出状态的数量称为计数器的模数或模数。 计数器的模数(或 MOD 数)是它在一个完整计数周期中经过的唯一状态的总数,mod-n 计数器也被描述为除 n 计数器。

计数器的模数为: 2 n 2^n 2n,其中 n = 触发器的数量。 因此,3 触发器计数器的最大计数为 2 3 = 8 2^3 = 8 23=8 个计数状态,称为 MOD-8 计数器。 计数器可以计数的最大二进制数为 2 n – 1 2^n–1 2n–1,最大计数为$ (111)2 = 2^3–1 = 7{10}$。然后计数器从 0 计数到 7。

常见的 MOD 计数器包括 MOD 数为 2、4、8 和 16 的计数器,并且使用外部组合电路可以配置为计数到除最大 2 n 2^n 2n 模数之外的任何预定值。 一般来说,“m”个触发器的任何排列都可以用来构造任何MOD计数器。

具有截断序列的计数器的常见模数是十 (1010),称为 MOD-10。 按顺序具有十个状态的计数器称为十进制计数器。 十进制计数器对于连接数字显示器非常有用。 其他 MOD 计数器包括 MOD-6 或 MOD-12 计数器,它们在数字时钟中应用以显示一天中的时间。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐