我们都知道有一些计数器以预先确定的顺序通过一定数量的状态。例如,3位向上计数器从0计数到7,而3位向下计数器的顺序相反。经过适当的操作,这些电路也可以计数到中间电平。这意味着,我们可以通过将计数器重置到(比如)5来终止进程,而不是一直计算到7。这样的计数器称为mod-N计数器。然而,即使在这种情况下,它们计数的顺序也不会改变。但是,如果我们需要通过一个不符合这种标准计数方式的特定模式呢?解决方案是设计一个序列发生器。
这是因为,序列发生器只不过是一组数字电路,它们的输出被设计成特定的位序列。有几种方法可以设计这些电路,包括那些基于多路复用器和人字拖。在本文中,我们将讨论使用序列生成器的设计D人字拖(请注意,即使JK拖鞋可以利用)。
举个例子,让我们考虑一下,我们打算设计一个电路,它在重复相同的模式之前通过0-1-3-2的状态。在这个过程中涉及的步骤如下。
步骤1
首先,我们需要确定实现目标所需的触发器数量。在我们的例子中,有4种状态,除了它们传输的顺序之外,它们与2位计数器的状态是相同的。由此,我们可以猜测,为了达到我们的目标,flip的需求为2。
步骤2
记住这一点,现在让我们为我们的序列发生器。表I的前四列显示了这一点,其中前两列表示当前状态,而后两列表示相应的下一状态。例如,在我们的例子中,第一个状态是0 = " 00 ",这将导致下一个状态1 = " 01 "(如表I中的灰色阴影行所示)。
步骤3
现在将这个状态转换表加以扩展,使之包括触发器我们想用它来设计电路。在我们的情况下,它只不过是D触发器因此,我们有表的第五和第六列表示D触发器的激励表。
例如,在表I的橙色阴影行中,当前状态和下一个状态分别为1和0,结果是D1是0。同一行还显示了其中的情况
表我
现在的状态 | 下一个状态 | D触发器的输入 | |||
问1 | 问0 | 问1+ | 问0+ | D1 | D0 |
0 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 |
步骤4
现在是推导D的布尔表达式的时候了1和D0。这可以使用任何形式的简化技术,包括K-map。然而,由于我们的例子非常简单,我们可以使用布尔法求出D1和D0。因此
步骤5
已知任意一个的输入D人字拖,现在我们可以设计我们的序列发生器如图所示。
在所示的电路中,所需的序列是根据所提供的时钟脉冲产生的。在这一点上,应该注意的是,这里提出的用于简单设计的类比可以有效地扩展为产生更长的比特序列。