摘要:本节将系统介绍时序逻辑电路的工作方法和分析方法、设计方法。首先,概要地讲述了时序逻辑电路在逻辑功能和电路结构上的特点,并详细介绍了分析时序逻辑电路的具体方法和步骤。然后分别介绍了移位寄存器、计数器、顺序脉冲发生器等各类常用时序逻辑电路的工作原理和使用方法。在讲述了时序逻辑电路的设计方法后,初步介绍如何用硬件描述语言描述时序逻辑电路。最后从物理概念上讨论了时序逻辑电路的动态特性和竞争-冒险现象。
基本概念
组合逻辑电路:t 时刻输出仅与t时刻输入有关,与 t 以前的状态无关。
时序逻辑电路:t 时刻输出不仅与 t 时刻输入有关,还与电路过去的状态有关。
时序逻辑电路的构成及结构特点:
- 由组合电路和存储电路(触发器)构成,而存储电路是必不可少的。
- 存储电路的的输出状态必须反馈到组合电路的输入端、与输入信号一起,共同决定组合逻辑电路的输出,可用三组方程来描述。
![](https://i-blog.csdnimg.cn/blog_migrate/42b27b7eb9c3890195d087c18fde14cf.png)
时序逻辑电路的框图可以画成图1右图所示的普遍形式。图中的代表输入信号,
代表输出,
代表存储电路的输入信号,
代表存储电路的输出,这些信号可以用三个方程组来描述
输出方程 | ![]() |
驱动方程/ (激励方程) | ![]() |
状态方程 | ![]() |
时序电路分类:同步时序电路、异步时序电路;Moore型、Mealy型。
时序逻辑电路的分析方法
同步时序电路分析方法
分析同步时序电路时一般按如下步骤进行:
- 从给定的逻辑图中写出每个触发器的驱动方程。
- 将得到的这些驱动方程代入相应触发器的特征方程,得出每个触发器的状态方程,从而得到由这些状态方程组成的整个时序电路的状态方程组。
- 根据逻辑图写出电路的输出方程。
- 写出整个电路的状态转换表、状态转换图和时序图;
- 由状态转换表或状态转换图得出电路的逻辑功能。
异步时序电路分析方法
- 异步时序电路的分析方法和同步时序电路的分析方法有所不同。在异步时序电路中,每次电路状态发生转换时并不是所有触发器都有时钟信号。只有那些有时钟信号的触发器才需要用特征方程去计算次态,而没有时钟信号的触发器将保持原来的状态不变。
若干常用的时序逻辑电路
移位寄存器
可寄存一组二进制数码的逻辑部件,叫寄存器,是由触发器构成的,只要有置位和复位功能,就可以做寄存器,如基本SR锁存器、D触发器、JK触发器等等。一个触发器可以存1位二进制代码,故N位二进制代码需要N个触发器。
根据存放数码的方式不同分为并行和串行两种:并行方式就是将寄存的数码从各对应的输入端同时输入到寄存器中;串行方式是将数码从一个输入端逐位输入到寄存器中。根据取出数码的方式不同也可分为并行和串行两种:并行方式就是要取出的数码从对应的各个输出端上同时出现;串行方式是被取出的数码在一个输出端逐位输出;根据有无移位功能寄存器也常分为数码寄存器和移位寄存器。
由D触发器构成的4位移位寄存器
![](https://i-blog.csdnimg.cn/blog_migrate/f8225cb4249986ba524e1288c8c17738.png)
其中D1为串行输入端, D0为串行输出端,Q3~ Q0为并行输出端,CLK为移位脉冲输入端。因为触发器由传输延迟时间tpd,所以在CLK↑到达时,各触发器按前一级触发器原来的状态翻转。
![](https://i-blog.csdnimg.cn/blog_migrate/7ba6498df2a8c1ba4b3d69714157b663.png)
由JK触发器构成的移位寄存器
电路如图4所示,其分析原理同上,不同的是JK触发器的寄存是在移位脉冲的下降沿发生的。
![](https://i-blog.csdnimg.cn/blog_migrate/fdba3ccb10d750aed44068b7aa3c5648.png)
双向移位寄存器74LS194A
![](https://i-blog.csdnimg.cn/blog_migrate/9bc7405d4163a8e3594bdf0af75186a1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b0776f93cd0411c18aa02520f1cfe4fc.png)
计数器
在计算机和数字逻辑系统中,计数器是最基本、最常用的部件之一。它不仅可以记录输入的脉冲个数,还可以实现分频、定时、产生节拍脉冲和脉冲序列等。
加法计数器
![](https://i-blog.csdnimg.cn/blog_migrate/e11ae71b5953bc5fbe5e9bc93fb0c553.png)
减法计数器:略
可逆计数器:略
环形计数器:略
扭环形计数器:略
顺序脉冲发生器
在一些数字系统中,有时需要系统按照事先规定的顺序进行一系列的操作,这就要求系统的控制部分能给出一组在时间上有一定先后顺序的脉冲信号,能产生这种信号的电路就是顺序脉冲发生器。
由移位寄存器构成
![](https://i-blog.csdnimg.cn/blog_migrate/bc922205dafc8982be788f5c4dfa3aef.png)
由计数器和译码器构成的
图9为由74LS161构成的8进制计数器和3-8译码器构成的顺序节拍脉冲发生器
![](https://i-blog.csdnimg.cn/blog_migrate/8463b597520dcfa96e8258ad6f992f6c.png)
序列信号发生器
在数字信号的传输和数字系统的测试中,有时需要用到一组特定的串行数字信号,这样的信号称为序列信号,产生序列信号的电路称为序列信号发生器。
由计数器和数据选择器构成
![](https://i-blog.csdnimg.cn/blog_migrate/8a0a013f9723b8ac962f73a4ae5a60ef.png)
由移位寄存器构成:略
时序逻辑电路的设计方法
同步时序逻辑电路的设计方法
一 、逻辑抽象,得出电路的状态转换图或状态转换表
- 分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数。通常取原因(或条件)作为输入逻辑变量,取结果作输出逻辑变量;
- 定义输入、输出逻辑状态和每个电路状态的含义,并将电路状态顺序编号;
- 按照题意列出电路的状态转换表或画出电路的状态转换图。
二、 状态化简
- 若两个电路状态在相同的输入下有相同的输出,并且转换到同样的一个状态去,则称这两个状态为等价状态。等价状态可以合并,这样设计的电路状态数少,电路越简。
三、 状态分配
状态分配也叫状态编码
- 确定触发器的数目n ;
- 确定电路的状态数M ,应满足2n-1<M≤2n;
- 进行状态编码,即将电路的状态和触发器状态组合对应起来。
四 、选定触发器的类型,求出电路的状态方程、驱动方程和输出方程
- 选定触发器的类型;
- 由状态转换图(或状态转换表)和选定的状态编码、触发器的类型,写出电路的状态方程、驱动方程和输出方程。
五 、根据得到的方程式画出逻辑图
六、 检查设计的电路能否自启动
若电路不能自启动,则应采取下面措施:
- 通过预置数将电路状态置成有效循环状态中;
- 通过修改逻辑设计加以解决。
![](https://i-blog.csdnimg.cn/blog_migrate/1239f5339a3aa5bc322bf971e95ac05c.png)
时序逻辑电路的自启动设计
在前面的同步时序电路设计中,电路的自启动检查是在最后一步进行的,如果不能自启动,还要返回来从新修改设计。如果在设计过程中能够考虑自启动的问题,就可以省略检查自启动这一步骤了。
异步时序逻辑电路的设计方法
由于异步时序电路中的触发器不是同时动作的,因而在设计异步时序电路时除了需要完成设计同步时序电路所应做的各项工作外,还要为每个触发器选定合适的时钟信号。这就是设计异步时序电路所遇到的特殊问题。
设计步骤大体上任可按照同步时序电路的设计步骤进行。
复杂时序逻辑电路的设计
在一些复杂的时序电路中,往往会包含为数众多的输入变量、输出变量、电路状态,而且存在多种状态循环和需要完成各种逻辑运算。这时已难以用一组状态方程、驱动方程和输出方程描述整个电路的逻辑功能了,因此简单地套用前面讲过的设计方法显然已经行不通了。
在这种情况下,通常采用层次化结构设计方法,或者称为模块化设计方法。层次化结构设计方法有“自顶向下”和“自底向上”两种做法。采用自顶向下的做法时,首先需要将所设计电路的功能逐级划分为更简单的功能模块,直到这些模块都能用简单的逻辑电路实现为止。这些简单的逻辑电路都可以用我们前面讲过的设计方法来设计。由于电路规模较大、功能复杂,所以经常需要有一个控制模块去协调各模块之间的操作。有人又将这类能明显地划分出控制模块的数字电路称为数字系统。
由于自顶向下划分模块的过程中完全是从获得最佳电路性能出发的,并未考虑这些模块电路是否有成熟的设计存在了,所以必须从头设计每个模块电路,然后进行仿真和测试。在发现问题时,还需反复修改。即便如此,在做成硬件电路后,也不能保证绝对不出现问题。
在采用自底向上的做法时,首先要考虑有哪些已知的、成熟的模块电路可以利用。这些模块电路可能是标准化的集成电路器件,也可能是经过验证的计算机软件。将电路划分为功能模块时,最后要划分到能利用这些已有的模块电路来实现为止。直接采用这些模块电路能大大减少设计的工作量。然而有时由于需要迁就已有的模块电路,这就会使电路的某些性能受到一些影响。另外,也不可能任何一种功能模块都有现成的成熟设计,因此多数情况下都采用自顶向下和自底向上相结合的方法,以求达到既能满足设计要求,又能提高设计速度、降低设计成本的目标。
时序逻辑电路中的竞争-冒险现象
因为时序逻辑电路通常都包含组合逻辑电路和存储电路两个部分,所以它的竞争-冒险现象也包含两个方面。一方面是其中的组合逻辑电路部分可能发生的竞争-冒险现象。另一方面是存储电路(或者说是触发器)工作过程中发生的竞争-冒险现象。
为了保证触发器可靠地翻转,输入信号和时钟信号在时间配合上应满足一定的要求。然而当输入信号和时钟信号同时改变,而且途径不同路径到达同一触发器时,便产生了竞争。
![](https://i-blog.csdnimg.cn/blog_migrate/e2bbfc0028382cc92dd2ba9d27a84b24.png)
图12 八进制异步计数器电路中,就存在着这种存储电路的竞争-冒险现象。由于CLK3取自Q1,而J3=K3=Q2,FF2的时钟信号又取自Q'1,因而当FF1由0变成1时FF3的输入信号和时钟电平同时改变,导致了竞争-冒险现象的发生。
如果Q1从0变成1时Q2的变化首先完成, CLK3的上升沿随后才到,那么在CLK3 =1的全部时间里J3和K3的状态将始终不变,可以根据CLK3下降沿到达时Q2的状态决定FF3是否该翻转。此时电路是一个八进制计数器。
反之,如果Q1从0变成1时CLK3的上升沿首先到达,而Q2的变化在后,则CLK3 =1的全部时间里J3和K3的状态可能发生变化,这就不能简单地凭CLK3下降沿到达时Q2的状态来决定Q3的次态了。电路就不按八进制计数循环工作了。倘若在设计时无法确切知道CLK3和Q2哪一个先改变状态,那么也就不能确定电路状态转换的规律。
为了确保CLK3的上升沿在Q2的新状态稳定建立之后才到达FF3 ,可以在Q1到CLK3 的传输通道上增加延迟环节,G1和G2就是作延迟环节用的。只要G1和G2的传输延迟时间足够长,一定能使Q2的变化先于CLK3的变化,保证电路按八进制计数循环正常工作。
一般认为存储电路的竞争-冒险现象仅发生在异步时序电路中。在有些规模较大的同步时序电路中,由于每个门的带负载能力有限,所以经常是先用一个时钟信号同时驱动几个门电路,然后再由这几个门电路分别去驱动若干个触发器。由于每个门的传输时间不同,严格地讲系统已不是真正的同步时序电路了,故仍有可能发生存储器电路的竞争-冒险现象。
参考链接
《数字电子技术基础》(第六版)高等教育出版社