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