概述
前面的课程中,介绍了基本触发器的功能特性,对触发器的内部电路进行了分析;然后还对时序电路分析给出了基本思路,即抓住三个核心方程:输出方程、激励方程、次态方程。
学习组合电路和基本触发器的目的是为了设计电路,数字逻辑这门课程的目的是能够设计简单的同步时序电路,并对其简单分析,下文通过一个模16的减1计数器进行说明。
基本流程
要设计时序电路,首先必须要对功能需求进行分析,模16减1计数器的功能需求很显然应该是: 15 --> 14 --> 13 --> 12 --> ... --> 1 --> 0 --> 15 --> 14 --> ...。
有了上面的迁移关系,接下来应该做的是如何实现这种转换。显然,上面的这种转换关系是我们人类的头脑意识,电路并不知情,因此,我们需要给上面的这种关系进行形式化描述,即对15,14等数字(这个例子里直接认为是状态)进行编码(这个编码是任意的,可以自由发挥,但是一般我们采用大家都认可的规范,这个例子中用二进制数进行编码),编码规则为:
- 15: 1111
- 14: 1110
- 13: 1101
- ...
- 0:0000
显然,这里需要4个触发器来存储需要表达的状态。
然后,如何表述状态之间的转换关系呢?前面学习的状态转移表刚好可以表述现态和次态之间的关系,如下表所示:
Q3Q2Q1Q0 | Q3(t+1)Q2(t+1)Q1(t+1)Q0(t+1) |
---|---|
1111 | 1110 |
1110 | 1101 |
1101 | 1100 |
1100 | 1011 |
1011 | 1010 |
1010 | 1001 |
1001 | 1000 |
1000 | 0111 |
0111 | 0110 |
0110 | 0101 |
0101 | 0100 |
0100 | 0011 |
0011 | 0010 |
0010 | 0001 |
0001 | 0000 |
0000 | 1111 |
在得到了编号后状态的基本迁移关系的基础上,需要进一步获取次态和现态之间的关系。上表是一个状态转移真值表,需要得到准确的次态与现态之间的关系。处理方式有两种,一种是直接利用最小项之和,另一种是卡诺图,通常情况下,对于6变量以下,一般采用卡诺图。
首先寻求Q3(t+1)与Q3Q2Q1Q0的关系,其对应的卡诺图为:
Q3Q2\Q1Q0 | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 1 | 0 | 0 | 0 |
01 | 0 | 0 | 0 | 0 |
11 | 1 | 1 | 1 | 1 |
10 | 0 | 1 | 1 | 1 |
注:卡诺图中的编号即表示了现态
利用卡诺图化简规则,得到:
Q3(t+1) = Q3 !(!Q2!Q1!Q0) + !Q3 (!Q2!Q1!Q0) // 由于markdown中没有异或符号,直接展开
同理,可以获取Q2(t+1)、Q1(t+1)、Q0(t+1)与Q3Q2Q1Q0之间的关系,得到:
Q2(t+1) = Q2 !(!Q1!Q0) + !Q2 (!Q1!Q0)
Q1(t+1) = Q1 Q0 + !Q1 (!Q0)
Q0(t+1) = !Q0
此时,已经得到了次态与现态的准确关系,剩下的工作就是根据所提供的触发器来设计。假设,给定的是4个上升沿J-K触发器,则需要根据J-K触发器的次态方程,对上述方程进行匹配赋值。由此得到:
J3 = K3 = (!Q2!Q1!Q0)
J2 = K2 = (!Q1!Q0)
J1 = K1 = (!Q0)
J0 = K0 = 1
因此,最终的电路图为:
分析
至此,模16减1计数器已经实现了。分析上面得到的次态与现态的表达式,其实可以直接写出模32减1的计数器;另外,也可以看出:Q0的状态每个脉冲都会跳变一次,Q1的状态每两个脉冲跳变一次,Q2的状态每四个脉冲跳变一次,Q3的状态每8个脉冲跳变一次,这种跳变对应着脉冲的2分频、4分频、8分频、16分频。
小结
不管是分析时序电路,还是设计时序电路,切忌简单背诵分析和设计步骤,抓住分析和设计的关键点(分析电路时的三个方程、设计电路时的状态迁移)即可。
简单意味着复杂,计数器可以说是最基本的时序逻辑电路,利用计数器可以做出十分复杂且有用的电路。然而,本文讲解的计数器除了时钟脉冲,没有其它输入,即其不可控,无法灵活使用,下一节将详细讲解163计数器及其应用。
如有错,请大家批评指正!谢谢!