2.2 时序逻辑电路

在数字电路中,时序逻辑电路是指电路当前时刻的稳态输出不仅取决于当前的输入,还与前一时刻输出的状态有关。这跟组合逻辑电路不同,组合逻辑电路当前的输出只与当前输入所构成的逻辑函数关系有关。换句话说,时序逻辑电路包含用于存储信息的存储元件,而组合逻辑电路没有,这就是两者本质的区别。但是,需要注意的是,构成时序逻辑电路的基本存储元件也都是由组合逻辑电路实现的,只不过是由于这些组合逻辑电路存在“反馈”,所以就成为具有存储信息的特殊功能部件。

2.2.1 时序逻辑电路的类型

时序逻辑电路中存在两种重要的电路类型,即同步时序逻辑电路和异步时序逻辑电路。

1.同步时序逻辑电路

在同步时序逻辑电路中,由一个时钟统一控制所有的存储元件,存储元件由触发器构成。绝大多数的时序逻辑电路都是同步逻辑电路。由于系统内只有一个时钟信号,因此所有的内部状态只会在时钟的边沿发生变化。在时序逻辑电路中,最基本的存储元件是触发器。

同步时序逻辑电路最主要的优点是控制机制简单。每一个电路里的运算必须在时钟的两个脉冲之间的固定间隔内完成,这个间隔称为一个时钟周期。只有在满足这个条件时,才能保证电路是可靠的。

同步时序逻辑电路也有两个主要的缺点:

(1)时钟信号必须要分配到电路中的每一个触发器,而时钟通常频率较高,因此会产生功耗,也就是产生热量。即使每个触发器没有做任何事情,也会有功耗存在。

(2)最大可能的时钟频率由电路中最慢的逻辑路径(关键路径)决定。也就是说,从最简单到最复杂的逻辑运算,都必须在一个时钟周期内完成。一种用来消除这种限制的方法是将复杂的运算分成若干简单的运算,该方法称为流水线。在微处理器中使用这种方法,可以显著提高处理器的时钟频率。

2.异步时序逻辑电路

异步时序逻辑电路循序逻辑的普遍本质。由于它的不同步关系,所以它也是设计上困难度最高的。异步时序逻辑电路中最基本的存储元件是锁存器,它可以在任何时间改变它的状态。根据其他锁存器信号的变化,产生新的状态。随着逻辑门的增加,异步时序逻辑电路的复杂性也迅速增加。因此,大部分异步时序逻辑电路仅用于小规模电路中。然而,电子设计自动化工具可以简化这些工作,从而允许更复杂的设计。

在实际中,可以构建包含同步触发器和异步锁存器(它们都是双稳态元件)的混合电路。

对于构成时序逻辑电路的那些基本存储元件来说,至少需要两个输入信号,一个是需要保存的数据信号;另一个是时序控制信号,该信号用于准确指示将要保存数据的时间。在操作过程中,当控制信号有效时,数据输入信号驱动存储电路保存节点为逻辑“1”或者逻辑“0”。一旦存储电路翻转到新的状态,就重新保存这个状态。

2.2.2 时序逻辑电路的特点

由于时序逻辑电路有“记忆”信息的能力,因此它可以用来保存数字系统的工作状态。大多数电子设备包含数字系统,数字系统使用存储电路来定义它们的工作状态。事实上,任何能够创建或者响应事件序列的电子设备必须包含存储电路。例如,这样的设备有手表和定时器、家电控制器、游戏设备和计算设备。如果一个数字系统包含N个存储器件,并且每个存储器件存储一个逻辑“1”或者逻辑“0”,则可以使用N位的二进制数来定义系统的工作状态。包含N个存储器件的数字系统最多有2N个状态,每个状态由系统中所有存储器件所创建的二进制数定义。

在任何一个时刻,保存在内部存储器件的二进制数定义了一个数字系统的当前状态。输入到数字系统的逻辑信号可能引起一个或者多个存储器件的状态发生改变(从逻辑“1”变化到逻辑“0”,或者从逻辑“0”变化到逻辑“1”),从而改变数字系统的状态。这样,当保存在内部存储器的二进制数发生变化时,就会改变数字系统的状态。通过状态的变化,数字系统就能创建或者响应事件序列。

在数字系统中,主要关心两状态或者双稳态电路。双稳态电路有两个稳定的工作状态,一个状态是输出逻辑“1”(VDD),另一个是输出逻辑“0”(GND)。当双稳态电路处于其中一个状态时,需要外界施加能量,使其从一种状态变化到另一种状态。在两个状态的跳变期间,输出信号必须跨越不稳定状态区域。因此,在设计存储电路时不允许无限地停留在不稳定区域内。一旦它们进入不稳定状态,则立即尝试重新进入两个稳定状态中的一个。

如图2.37所示,给出了状态变迁的过程,图中,小球表示保存在存储电路中的值;山表示不稳定区域,即存储电路从保存的一个值跳变到另一个值所穿越的区域。在这个图中,有第三个潜在的稳定状态,有可能在山顶上球处于平衡状态。同样地,存储电路也有第三个潜在的稳定状态。当存储电路在两个稳定状态之间进行跳变时,确保为电路施加足够的能量,使其可以穿越不稳定区域。

img

图2.37 状态变迁的过程

在双稳态电路中,一旦处于逻辑“0”或者逻辑“1”的状态,则很容易维持这个状态。用于改变电路状态的控制信号必须满足最小的能量,用于穿越不稳定区域。如果所提供的能量大于所需的最小能量,则跳变过程很快;如果所提供的能量小于所需的最小能量,则重新返回到初始状态。如果输入信号提供了错误的能量,即足以引起跳变,但不足以使它快速通过不稳定区域,则电路将处于不稳定区域。所以,存储电路的设计要尽量避免这种情况的发生。如果存储器件长时间处于不稳定区域,则输出可能产生振荡,或者处于逻辑“0”和逻辑“1”的中间,将使得数字系统产生不期望的行为。当存储器件处于不稳定区域时,称为亚稳定状态。一旦进入亚稳定状态,存储器件将出现时序问题。

一个静态存储电路要求反馈,任何包含反馈的电路都是存储器。如果输出信号简单地反馈到输入,则称为包含反馈的逻辑电路。大多数的反馈电路,其输出不是逻辑“1”或者逻辑“0”,就是永无休止地振荡。一些反馈电路是双稳态的和可控的,这些电路可作为存储电路的备选方案。图2.38给出了简单的反馈电路,它们标记为可控的/不可控的和双稳态的/非双稳态的。

img

图2.38 不同的反馈电路

2.2.3 基本SR锁存器

图2.39给出了基本SR锁存器的结构,其中imgQ呈现互补的逻辑关系。表2.20给出了基本SR锁存器的逻辑关系。

img

图2.39 基本SR锁存器的结构

表2.20 基本SR锁存器的逻辑关系

img

表2.20中的Q0表示前一个时刻Q的输出,img表示前一个时刻img的输出。

仔细观察图2.39,虽然基本SR锁存器还是由基本逻辑门组成,但是和前面组合逻辑电路最大的不同点是,锁存器增加了输出到基本逻辑门的“反馈”路径,而前面的组合逻辑电路并不存在输出到输入的“反馈”路径。这个反馈路径的重要作用表明在有反馈路径的逻辑电路中,当前时刻逻辑电路的状态由当前时刻逻辑电路的输入和前一时刻逻辑电路的输出状态共同确定。

74LS279是一个专用的SR锁存器芯片,内部集成了4个SR锁存器。图2.40给出了使用该芯片构建的一个SR锁存器电路。图2.41给出了对该电路执行SPICE瞬态分析的结果。

img

图2.40 由74LS279构成的SR锁存器电路 

img

图2.41 对SR锁存器电路执行SPICE瞬态分析的结果

读者可进入本书配套提供例子的\eda_example\RS_latch.ms14路径下,用Multisim 14工具打开该设计,并执行SPICE瞬态分析,观察分析结果。

下面对SPICE瞬态分析的结果进行说明,帮助读者理解基本SR锁存器的工作原理。

R=0并且S=0时,很明显Q输出均为1。注意,这是不期望的状态。

R=0并且S=1时,很明显Q=0,称为基本SR锁存器的复位状态。

③ 和①的条件相同。

R=1并且S=0时,很明显Q=1,称为基本SR锁存器的置位状态。

⑤ 和②的条件相同。

⑥ 和④的条件相同。

⑦ 和②的条件相同。

⑧ 和④的条件相同。

⑨ 由于⑧的Q输出为高,对应于当前输入R=1和S=1,当前Q=1。这个和⑧的输出相同,称为基本SR锁存器的保持状态,即当前的输出状态和前一个输出状态保持一致。

2.2.4 同步SR锁存器

图2.42给出了同步SR锁存器的内部结构,这个锁存器增加了两个与非门。表2.21给出了同步SR锁存器的逻辑关系。同步SR锁存器在基本SR锁存器的前面增加了CLK控制的与非门电路。

img

图2.42 同步SR锁存器的内部结构

表2.21 同步SR锁存器的逻辑关系

img

从图2.42中可以得到下面的分析结果:

(1)当CLK为逻辑低时,RS连接到前端与非门的输入不会送到基本SR锁存器中,此时后面的基本SR锁存器的输入为高,所以同步SR锁存器处于保持状态。

(2)当CLK为逻辑高时,RS的输入端通过前面的与非门逻辑送到后面的基本SR锁存器中,其分析方法与前面基本SR锁存器的分析方法相同。

(3)根据前面的分析,CLK控制逻辑拥有最高优先级,即当CLK为逻辑低的时候,不管RS的输入逻辑处于何种状态,同步SR锁存器都将处于保持状态。

2.2.5 D锁存器

为了避免在SR锁存器中出现不允许的状态,应确保SR总是处于相反的逻辑状态。如图2.43所示,在同步SR锁存器的前面添加反相器,这样的结构叫作D锁存器。表2.22给出了D锁存器的逻辑关系。

img

图2.43 D锁存器的内部结构

图2.44为使用图2.43给出的D锁存器的内部结构所构建的电路,图2.45给出了对该电路执行SPICE瞬态分析的结果。下面通过该结果的分析,帮助读者理解D锁存器的工作原理。

表2.22 D锁存器的逻辑关系

img
img

图2.44 使用图2.43给出的D锁存器的内部结构所构建的电路

img

图2.45 对图2.44所示的电路执行SPICE瞬态分析的结果

读者可进入本书配套提供例子的\eda_example\D_latch.ms14路径下,用Multisim 14工具打开该设计,并执行SPICE瞬态分析,观察分析结果。

① 当CLK=0且D=0时,D锁存器前端的两个与非门的输出均为1。这样,D锁存器后端的基本SR锁存器保持前面的状态不变。

② 和①的结果相同,由于②前面的Q输出为低,所以在②时,Q的输出仍然保持为低。

③ 当CLK=1且D=1时,D锁存器前端的与非门的输出分别为0和1,参考基本SR锁存器的结构,Q输出为1,img输出为0。此时,D锁存器工作在置位状态,Q的输出为1。

④ 当CLK=0时,D锁存器处于保持第③输出的状态。

⑤ 当CLK=0时,D锁存器处于保持第④输出的状态。

⑥ 当CLK=1且D=0时,D锁存器前端的与非门的输出分别为1和0,参考基本SR锁存器的结构,Q输出为0,img输出为1。此时,D锁存器工作在复位状态,Q的输出为0。

⑦ 和③的条件相同。此时,D锁存器工作在置位状态,Q输出为1。

如图2.46所示,SN74LS373是包含8个D锁存器的专用芯片,表2.23给出了该芯片的逻辑关系。

img

图2.46 SN74LS373的引脚图

表2.23 SN74LS373的逻辑关系

img

2.2.6 D触发器

本小节将介绍基本D触发器和带置位/复位D触发器。

1.基本D触发器

图2.47给出了基本D触发器的内部结构,该触发器在时钟CLK的上升沿将D的值保存到Q

img

图2.47 基本D触发器的内部结构

① 触发器和锁存器不同,锁存器靠控制信号“电平”的高低实现数据的保存,而触发器靠控制信号“边沿”的变化实现数据的保存。触发器只对“边沿”敏感,而锁存器只对“电平”敏感。

② 与非门1和与非门2构成基本SR触发器,

③ 当imgimg均为逻辑“1”时(反馈线F4F5连在这两个输入端),处于保存数据状态。

图2.48为使用图2.47所示的基本D触发器的内部结构所构建的电路,图2.49给出了对该电路执行SPICE瞬态分析的结果。下面通过该结果的分析,帮助读者理解D触发器的工作原理。

img

图2.48 使用图2.47所示的基本D触发器的内部结构所构建的电路

img

图2.49 对图2.48所示的电路执行SPICE瞬态分析的结果

读者可进入本书配套提供例子的\eda_example\D_FF.ms14路径下,用Multisim 14工具打开该设计,并执行SPICE瞬态分析,观察分析结果。

① CLK=0且D=0,则F4=1,F5=1,F6=1,F3=0。此时,D触发器处于保持状态。

② CLK变成1,F5变成0,F4保持不变,其仍然为1,复位SR触发器。此时,Q=0。

③ CLK=1且D=1,则F6=1,F5=0,F4保持不变,其仍然为1,复位SR触发器。此时,Q=0。

④ CLK=0且D=1,则F4=1,F5=1,F6=1,F3=0。此时,D触发器处于保持状态。

⑤ CLK变成1,F4变成0,F5=1,置位SR触发器。此时,Q=1。

综合上述分析,可以得出下面的重要结论:

对于该D触发器来说,总是在时钟的上升沿(有些设计可以是时钟的下降沿)保存当前D输入的状态,并且反映到输出端Q。如果不满足上升沿的条件,则输出端Q保持其原来的状态。

2.带置位/复位D触发器

图2.50给出了带置位(S)/复位(R)D触发器的结构。图中,在基本D触发器的结构中添加了异步置位/复位信号。表2.24给出了带置位/复位D触发器的逻辑关系。

(1)当S=1,R=0时,将输出Q立即置位为逻辑1,并不需要等待下一个时钟上升沿。

(2)当S=0,R=1时,将输出Q立即复位为逻辑0,并不需要等待下一个时钟上升沿。

img

图2.50 带置位/复位D触发器的结构

表2.24 带置位/复位D触发器的逻辑关系

img

图2.51给出了带置位/复位D触发器的符号。

3.专用D触发器芯片

表2.25给出74LS系列中用于D触发器的专用芯片。

img

图2.51 带置位/复位D触发器的符号描述

表2.25 74LS系列中用于D触发器的专用芯片

img

2.2.7 其他触发器

D触发器是最简单且最有用的边沿触发存储器件,它的输出取于输入数据和输入时钟。在时钟的边沿(上升沿/下降沿),将输入数据的当前逻辑状态保存到触发器的数据输出端。D触发器可以用于任何需要触发器的场合。在很多年前,出现了逻辑行为类似于D触发器的其他类型的触发器,本小节将主要介绍JK触发器和T触发器。

1.JK触发器

JK触发器使用两个输入控制状态的变化,即输入端J,用于置位输出;输入端K,用于复位输出。当JK处于有效输入时,输出将在逻辑“0”和逻辑“1”之间进行切换。图2.52给出了JK触发器的符号。表2.26给出了JK触发器的逻辑关系。

img

图2.52 JK触发器的符号

表2.26 JK触发器的逻辑关系

img

当输出端都为H时,表示不期望的状态。

图2.53给出了使用专用JK触发器芯片74LS112D构建的触发器电路,图2.54给出了对该电路执行SPICE瞬态分析的结果。下面通过对该结果的分析,帮助读者理解JK触发器的工作原理。

img

图2.53 使用专用JK触发器芯片74LS112D构建的触发器电路

img

图2.54 对图2.53所示的电路执行SPICE瞬态分析的结果

读者可进入本书配套提供例子的\eda_example\JK_FF.ms14路径下,用Multisim 14工具打开该设计,并执行SPICE瞬态分析,观察分析结果。

① PRE=1,CLR=0,JK触发器处于复位状态,Q=0。

② PRE=0,CLR=1,JK触发器处于置位状态,Q=1。

J=0,K=0,在CLK下降沿处Q输出为保持状态,即Q的输出保持和下降沿前的输出状态一样,Q=1。

J=1,K=0,在CLK下降沿处Q输出为高,Q=1。

J=0,K=1,在CLK下降沿处Q输出为低,Q=0。

⑥ 和③的条件一样,Q=0。

J=1,K=1,在CLK下降沿处Q状态发生翻转,即Q的输出是对下降沿前的输出状态进行取反,Q=1。

2.T触发器

T输入有效时,在每个时钟沿到来时,输出将在逻辑“0”和逻辑“1”之间切换。图2.55给出了T触发器的符号。表2.27给出了T触发器的逻辑关系,其中Qp表示CLK上升沿到来之前Q的输出状态;QN表示CLK上升沿到来之后Q的输出状态。

img

图2.55 T触发器的符号

表2.27 T触发器的逻辑关系

img

图2.56给出了使用T触发器构建的触发器电路,图2.57给出了对该电路执行SPICE瞬态分析的结果。下面通过对该结果的分析,帮助读者理解T触发器的工作原理。

img

图2.56 使用T触发器构建的触发器电路

读者可进入本书配套提供例子的\eda_example\T_FF.ms14路径下,用Multisim 14工具打开该设计,并执行SPICE瞬态分析,观察分析结果。

img

图2.57 对图2.56所示的电路执行SPICE瞬态分析的结果

T=0,且QP=0,所以QN=0。

T=1,且QP=0,所以QN=1。

T=1,且QP=1,所以QN=0。

T=0,且QP=0,所以QN=0。

T=1,且QP=0,所以QN=1。

T=0,且QP=1,所以QN=1。

2.2.8 普通寄存器

前面介绍了D触发器的结构和工作原理,一个D触发器能够用来保存一个比特位。

(1)时钟上升沿到来的时候,D=1,则Q=1。

(2)时钟上升沿到来的时候,D=0,则Q=0。

在真正的数字系统中,输入到D触发器的时钟信号是连续的,这就是说,每当一个时钟上升沿到来的时候,D输入的值就被保存到Q输出。在前面D触发器的基础上,添加另一个称为load的输入线,如图2.58所示。当load信号线为高时,inp0的信号就在下一个时钟上升沿到来的时候保存到输出q0;当load信号为低时,接入反馈通道。

img

图2.58 一位寄存器的结构

假设时钟信号连续运行,为了保证在每个周期q的值不变,则q的值反馈到逻辑与门,通过img信号进行逻辑“与”运算和逻辑“或”运算后,送到D触发器的输入端。

当load信号为高时,inp0和load信号进行逻辑“与”运算后,经过逻辑“或”运算,送到D触发器的输入端,在下一个时钟上升沿到来的时候,保存到q0端。

2.2.9 移位寄存器

N个D触发器级联可以构成N位移位寄存器。图2.59给出了4位移位寄存器的结构。当每个时钟上升沿到来时,数据向右移动一位。在每个时钟上升沿到来时,当前data_in数据移动到q3,前一时刻q3的值移动到q2,前两个时刻q2的值移动到q1,前三个时刻的q1的值移动到q0

img

图2.59 4位移位寄存器的结构

图2.60给出了使用74LS273专用D触发器芯片所构建的4位移位寄存器电路,图2.61给出了对该电路执行SPICE瞬态分析的结果。

img

图2.60 由74LS273构成的4位移位寄存器电路

img

图2.61 对由74LS273构成的4位移位寄存器电路执行SPICE瞬态分析的结果

读者可进入本书配套提供例子的\eda_example\shifter.ms14路径下,用Multisim 14工具打开该设计,并执行SPICE瞬态分析,观察分析结果。

思考与练习2-7:请说明组合逻辑电路和时序逻辑电路的区别。

思考与练习2-8:请说明同步时序逻辑电路和异步时序逻辑电路的区别。

思考与练习2-9:使用D/JK触发器设计一个6分频的分频电路。

思考与练习2-10:使用D/JK触发器设计一个实现8位循环左移的移位寄存器电路。