【数字电路】时序逻辑电路
在组合逻辑电路中任何时刻电路的输出只取决于当前的状态,而时序逻辑电路的输出不仅取决于当前的输出,还和电路过去的状态有关。
1 时序逻辑电路认识
1.1 时序逻辑电路概述
时序逻辑电路是由下图所示的组合逻辑电路和存储单元两部分构成。
其中,具有记忆功能的存储单元室时序逻辑电路的必要部分,是时序逻辑电路区分组合逻辑电路的关键所在。这些存储单元一般都由边沿触发器构成,以保证多个输入都到达并稳定后再产生位唯一的输出,防止竞争导致的功能紊乱。在通常的工作过程当中,各触发器的状态只在时钟信号的有效沿处才会发生改变。
为了不失一般性,我们用以下符号表示电路的相应特性:
Q
:电路的状态,状态方程:
Q
n
+
1
=
S
[
Z
,
Q
n
]
Q:电路的状态,状态方程:Q^{n+1}=S[Z,Q^n]
Q:电路的状态,状态方程:Qn+1=S[Z,Qn]
Z
:电路的驱动,驱动方程:
Z
=
F
[
X
,
Q
n
]
Z:电路的驱动,驱动方程:Z=F[X,Q^n]
Z:电路的驱动,驱动方程:Z=F[X,Qn]
Y
:电路的输出,输出方程:
Y
=
O
[
X
,
Q
]
Y:电路的输出,输出方程:Y=O[X,Q]
Y:电路的输出,输出方程:Y=O[X,Q]
(
Q
n
表示“初态”,
Q
n
+
1
表示“次态”)
(Q^n表示“初态”,Q^{n+1}表示“次态”)
(Qn表示“初态”,Qn+1表示“次态”)
1.2 同步和异步时序逻辑电路
按照各触发器状态发生改变的时间是否同步,时序逻辑电路可分为同步时序逻辑电路和异步时序逻辑电路两大类。
判别方法:看构成电路的各个触发器是否由同一个时钟信号触发。如果电路中所有触发器都由同一个时钟信号触发,电路属于同步时序逻辑,否则属于异步时序逻辑电路。
下面是同步异步时序逻辑电路的例子:
同步时序逻辑电路:
异步时序逻辑电路:
2 时序逻辑电路的分析
时序逻辑电路分析是指对给出的电路分析其状态转化规律,关键在于能够从当前状态得到电路的新状态。
2.1 同步时序逻辑电路分析方法
- 根据电路图,写出驱动方程
- 根据驱动方程,列出状态转换表
- 根据状态转换表(或触发器特性方程),得到状态转换方程
- 自启动校验
- 画出状态转换图,得出结论
下面我们给出一个例子,分析下图所示电路图
(1)写驱动方程
D
0
=
Q
1
Q
2
‾
D_0=\overline{Q_1Q_2}
D0=Q1Q2
D
1
=
Q
0
D_1=Q_0
D1=Q0
D
2
=
Q
1
D_2=Q_1
D2=Q1
(2)状态转换表
(3)状态转换方程
由于D触发器的特性方程Qn+1=D非常简单,所以可以不使用状态转换表
Q
0
n
+
1
=
Q
1
Q
2
‾
Q_0^{n+1}=\overline{Q_1Q_2}
Q0n+1=Q1Q2
Q
1
n
+
1
=
Q
0
Q_1^{n+1}=Q_0
Q1n+1=Q0
Q
2
n
+
1
=
Q
1
Q_2^{n+1}=Q_1
Q2n+1=Q1
(4)自启动校验
在上表中未分析到两个状态:010和101,因此进行自启动校验分析
010
——
101
——
011
——
111
——
110
——
100
——
001
(可以自启动)
010——101——011——111——110——100——\color{red}{001}(可以自启动)
010——101——011——111——110——100——001(可以自启动)
101
——
011
——
111
——
110
——
100
——
001
(可以自启动)
101——011——111——110——100——\color{red}{001}(可以自启动)
101——011——111——110——100——001(可以自启动)
(5)状态转换图
2.2 异步时序逻辑电路分析方法
- 写出各触发器的时钟脉冲信号
- 写出电路的驱动方程
- 将驱动方程带入各触发器的特性方程,得到状态方程
- 假定初态为000,依次推导次态
- 自启动校验
- 画出状态转换图,得出结论
同步异步基本方法及原理一致,所以异步就不举例子了
3 同步时序逻辑电路的设计方法
由于同步时序逻辑电路比异步时序逻辑电路有更简单和可靠的逻辑关系,时序电路设计一般都采用同步时序逻辑来实现。
时序逻辑电路设计的目标是实现特定状态转换要求的电路。为满足特定的状态转换关系,需确定各触发器的输入(驱动)。
触发器的状态转移表(Transition Table):
给出了触发器从一种状态转变成另一种状态时输入所应该满足的条件。
设计思路:
- 根据功能和要求,确定需要的触发器类型及数量
- 写出状态转换表
- 得到各触发器的各输入端在不同状态下应满足的逻辑关系的卡诺图
- 由卡诺图得到各触发器的驱动方程
- 电路实现
基本上就是把同步时序逻辑电路的分析,逆着走一遍
举个例子,设计满足下图序列的时序逻辑电路:
(1)根据功能和要求,确定需要的触发器类型及数量
因为没做要求,我随便选,用个复杂的JK触发器吧
(2)写出状态转换表
(3)得到卡诺图
(4)根据卡诺图,得到驱动方程
J
2
=
Q
1
,
K
2
=
Q
1
J_2=Q_1,K_2=Q_1
J2=Q1,K2=Q1
J
1
=
1
,
K
1
=
1
J_1=1,K_1=1
J1=1,K1=1
J
0
=
1
,
K
0
=
Q
2
‾
J_0=1,K_0=\overline{Q_2}
J0=1,K0=Q2
(5)实现电路