本文将讲解一个数字电子技术的经典题目:设计一个111序列检查电路。在这个电路当中有一个串行输入口X和一个输出口Z。要求电路在连续三个时钟周期上升边沿检测到输入信号X都为1的时候,输出Z就是1,只要不满足这种情况,输出Z均为0。
画出状态转换图
解决这种问题,首先要画出状态转换图。
画出原始状态转换图
先要确定电路应该包含的状态个数。根据题目要求写出输入的序列,然后依据输入和输出之间的关系,就可以写出输出序列。即:
CP时钟 | 0 | 1 | 2 | 3 | 4 |
X输入序列 | 0 | 1 | 1 | 1 | 0 |
Z输出序列 | 0 | 0 | 0 | 1 | 0 |
可以确定出电路共计有4个状态。就是电路的初始状态,
说明电路在上一个时钟检测到的是0,而这个时钟检测到了一个1,
说明电路已经连续检测到两个1,
说明电路已经连续检测到三个1。可以看出这4种状态,包括了所有需要记忆的信息,可以完整描述这个电路的逻辑过程。
然后需要确定状态之间的转换以及输出。
- 当电路处于初始状态
时,如果输入
为0,那么电路应该仍然保持在初始状态
。如果输入
为1,那么就会进入下一个状态
,这有可能是要检测到的序列。
- 当电路处于状态
时,如果输入
为0,那么返回初始状态
,这不是要检测到的序列。如果输入
为1,那么就会进入下一个状态
,这有可能是要检测到的序列。
- 当电路处于状态
时,如果输入
为0,那么返回初始状态
,这不是要检测到的序列,并且输出Z为0。如果输入
为1,这就是要检测到的序列,此时检测已经结束,返回到初始状态
,并且输出Z为1。
整个电路的逻辑过程就是如上所示。那么就可以画出原始状态转换图了。
利用原始状态转换图就可以得到状态转换表。
输入X→ 状态S↓ | 0 | 1 | Z |
0 | |||
0 | |||
0 | |||
1 |
需要注意到的是当处于状态二时,如果输入为1,则此时的输出仍保持为0,而不是1,只有当下一个时钟周期CP上升沿到来时,会进入下一个状态三
,输出才为1。另外,当处于状态三
时,如果输入为0,此时的输出仍保持为1,而不是0。只有当下一个时钟周期CP上升沿到来时,会进入初始状态
,输出才为0。
状态化简
在标准的步骤中,还需要进行状态的化简。刚开始得到的状态转换表中,可能会包含了多余的状态,所以就需要进行化简。在上面状态转换表的基础上将等价的状态进行合并,这样就可以得到简化的状态转换表或者转换图。
所谓等价状态,就是说明这两个状态,如果有相同的输入,那么就会有相同的输出,并且会转换到相同的状态。所以他们就是重复的两个状态,是可以进行合并的。
可以通过观察法来找到关系。可见上图和上表中不存在等价的状态,所以没有办法进行状态化简。
触发器的选用
在本例中我们选用沿上升沿触发的JK触发器。因为状态一共有4个,所以至少需要使用2个触发器。
要为状态分配编码,即,把第1个触发器的输出
当做低位,把第2个触发器的输出
当做高位。这里选取
,
,
,
。然后根据分配的结果就可以重新写出状态转换表。
输入X→ 状态S↓ | 0 | 1 | Z |
00 | 00 | 01 | 0 |
01 | 00 | 02 | 0 |
02 | 00 | 03 | 0 |
03 | 00 | 03 | 1 |
写出三个向量方程
写出状态方程和输出方程
根据状态转换表,就可以画出次态卡诺图。
需要注意到的是在进行化简次态卡诺图的时候,不需要做出覆盖面最大的圈,而是要做出能够满足的圈,也就是说保留
这一项,不要化简为
。这是因为,根据JK触发器的输入输出特性方程:
,其中含有项
和
,所以这样保留,可以方便比较。然后根据卡诺图就可以列出状态方程和输出方程:
写出驱动方程
给每一个触发器分配输入。将每个状态方程分别与JK触发器特性方程进行比较,就可以得到两个触发方程:
画出逻辑电路图
可以根据驱动方程和输出方程画出逻辑电路图如下:
检查电路的自启动能力
根据标准的步骤,最后一步还需要检查电路的自启动能力,由于电路并没有多余的状态,所以肯定是能自动启动的。