时序电路
基本概念
基本结构与分类
基本结构
时序电路基本结构如图所示:
I为输入信号,O为输出信号,E为驱动存储电路转换为下一状态的激励信号,S为存储电路状态,称为状态信号,亦称状态变量,它表示时序电路当前的状态,简称现态。状态变量S被反馈到组合电路的输人端,与输人信号1一起决定时序电路的输出信号O,并产生对存储电路的激励信号区,从而确定电路的下一状态,即次态。于是,上述4组变量间的逻辑关系可用下列三个向量两数形式的方程来表达:
第一个式子表达了激励信号与输人信号、状态变量的关系,称为时序电路的激励方程。第二个式子表达了存储电路从现态到次态的转换,故称为状态转换方程,简称转换方程。而第三个式子表达了时序电路的输出信号与输入信
号、状态变量的关系,称为输出方程。上述三个向量两数形式的方程分别对应于表达时序电路的三个基本方程组:激励方程组、转换方程组和输出方程组。
如上所述,时序电路是状态依赖的,故又称为状态机(State Machine, SM)。本章将只限于讨论有限数量的存储单元构成的状态机,因面其状态数也是有限的,称为有限状态机 (Finite State Machine .FSM)。
分类
时序电路可分为异步时序电路和同步时序电路两大类。根据电路是对脉冲边沿敏感还是对电平敏感,异步时序电路叉分为脉冲异步时序电路(由触发器构成)和电平异步时序电路(由锁存器构成)两种。
与异步时序电路不同,同步时序电路中存储电路状态的转换是在同一时钟脉冲源的同一沿作用下同步动作的,它也称作时钟同步状态机(Clocked Synchronous sM),图如下:
米利型和穆尔型时序电路
米利型时序电路结构如图:
米利型时序电路的输出信号是状态变量S和输人信号I二者的函数,即O=h(I,S)。
穆尔(Moor)型时序电路是水利型时序电路的一种特例,它的输出信号0仅是状态变量S的函数,即O=h(S)。其结构如下图所示:
在现代高速时序电路设计中,一般尽量采用穆尔型时序电路结构,以利于后续高速电路的同步。在水利型时序电路的输出端增加一级存储电路,构成“流水线输出”形式,是将其转化为穆尔型电路的最简单的方法。
时序逻辑电路功能表达
时序电路的功能可用逻辑方程组、转换表、状态表、状态图和时序图等形式来表达。从理论上讲,有了激劢方程组、转换方程组和输出方程组,时序电路的功能就被唯一地确定了。但是,对于许多时序电路而言,仅从这三组方程还不易判断其逻辑功能,在设计时序电路时,也往往很难根据给出的逻辑需求直接写出这三组方程。因此,还需要用能够直观反映电路状态变化序列全过程的转换表、状态表和状态图来帮助。三组方程、转换表、状态表和状态图之间可以实现相互转换,根据其中任意一种表达方式,都可以画出时序图。
给出时序电路图一例:
它由组合电路与存储电路两大部分组成。其中,存储电路由两个D触发器\(FF_0\)、\(FF_1\)。构成,二者共用一个时钟信号 CP,从而构成一个同步时序电路。组合电路又分为激励电路和输出电路两部分。电路的输人信号为A,输出信号为X、Y。对触发器的激励信号分别为\(D_1\)和\(D_0\),\(Q_1\)、\(Q_0\)为电路的状态变量。从图中可以看出,输出信号 丫是状态变量\(Q_1\)、\(Q_0\)和输人信号A 的函数。所以从总体上看,这是一个米利型时序电路。但是,输出信号X纯粹由状态变量\(Q_1\)、\(Q_0\)决定,电路中又存在一个穆尔型输出型。
按照上面给出的表达方式,我们依次给出:
-
逻辑方程组
(1)激励方程组
(2)转换方程组
(3)输出方程组
从D Q O的实际用途来看,很容易理解为什么将这些部分称之为激励/转换/输出方程。 -
转换表
跟之前一样的分析方法,考虑所有可能的现态与A,分析对应的次态与输出。下面给出的是状态转换真值表。
可以简单点写,得到的是转换表:
-
状态表
与上图相比,只是简单地给4种Q状态命名了。虽然几乎是一样的,但是应用却不同。 -
状态图
与状态表对应的状态图如下:
与转换表对应的则如图(其实没区别):
-
时序图
与组合电路一样,给一个例子如下:
建议结合时序图之类的会方便很多。
总结
总的来说,结合实际电路来看,三个方程组意义很明显。时序电路基本逻辑是:有时间钟有输入有状态E才能得到信号,状态E不断变化只与前一时刻有关,再用该信号进一步分析得到输出。如果是按状态给出输出(比如D触发器),就是穆尔型;否之,是米利型。
同步时序逻辑电路分析
一般分析步骤
- 根据给定的同步时序电路导出逻辑方程组;
- 根据转换方程组和输出方程组,列出电路的转换表或状态表,画出状态图和时序图;
- 确定电路的逻辑功能,必要的话,可用文字详细描述。(典型用处:二进制进位、同或检测什么的。比较少见的还有脉冲分配器/节拍脉冲产生器)
普通情况的不细说了。稍微有点特殊的如下图所示:
状态图做出来如图(略有不同):
同步时序电路设计
过程如图所示:
下面细说第一步:
通常,所要设计的时序电路的逻辑功能是通过文字、图形或波形图来描述的,首先必须把它们变换成规范的状态图和状态表;
- 明确电路的输人条件和相应的输出要求,分别确定输人变量和输出变量的数目和名称同步时序电路的时钟脉冲 CP(或CP)一般不作为输人变量考虑。
- 找出所有可能的状态以及状态转换之间的关系和输人条件;
- 根据原始状态图建立原始状态表。
第二步状态化简:
可能有些状态情况不能发生,电路本身有限制,需要化简。
第三步状态分布:
每个触发器能够提供2倍的状态数
第四步触发器类型选择:
大多时候用的是D触发器,然后就是JK触发器。D最简单,有时JK可以简化电路。
设计举例
用D触发器设计一个同步递增8421BCD计数器。
- 首先,8421BCD计数器每经过10个脉冲计数器完成一个周期,故有10个状态,因此需要4个D触发器。
- 第二步,画出转换表。
这里括号D的用意在于,状态方程组与激励方程组是一样的。 - 第三步,确定激励方程组。
作出卡诺图如下:
进而得到:
不过其实这也可以依照最原始的进制逻辑从\(Q_0^{n+1}\)开始写写到\(Q_3^{n+1}\) - 第四步,画出逻辑图
- 检验自校正能力
该电路有6个无效状态:1010、1011、1100、1101、1110 和1111,分别以它们作为现态,代人电路的转换方程组而求其次态。如果还没有进人有效状态,再以新的状态作为现态求下一个次态。以此类推,看最终能否进人有效状态。结果证明,这6个状态在一或两个时钟周期后全部都能进入有效循环状态。 - 画状态图
注意多出来的自校正部分。
待补充
同步时序电路中的时钟偏移
从同一时钟源出发的时钟脉冲,由于到达输出的电路物理长度不同,可能造成到达时间不同,从而造成时钟偏移。
解决方法有:处理电路,缩短长电路;增加缓冲装置,从而增加延迟。
异步时序电路分析
异步时序电路分析要注意以下几点:
- 分析状态转换时必须考虑各触发器的时钟信号作用情况;
- 每一次状态转换必须从输人信号所能触发的第一个触发器开始逐级确定;
- 每一次状态转换都有一定的时间延迟(不稳定时期)。
异步时序电路分析例子
首先是电路图如下:
与之前一样,先列出转换表/逻辑方程组一类比较重要而直观的东西。
时钟方程组如下:
激励方程组如下:
转换方程组如下:
输出方程组如下:
从而转换表如下:
最后状态图时序图如下:
由状态图和时序图可知,该电路是一个异步二进制递减计数器,Z信号的上升沿可触发借位操作。
若干典型时序电路
寄存器和移位寄存器
寄存器是数字系统中用来存储二进制数据的逻辑部件。1个触发器可存储1位二进制数据,存储N位二进制数据的寄存器需要用N个触发器组成。由8个触发器构成的8位奇存器的逻辑图如下图所示。
功能表如下:
移位寄存器:
之所以叫移位,是因为各个输出的相同波形出现时间逐渐往后移了。
多功能双向移位寄存器
有时需要对移位奇存器的数据流向加以控制,实现数据的双向移动,其中一个方向称为右移,另一个方向则为左移,这种移位奇存器称为双向移位寄存器。由于国家标准规定,逻辑图中最低有效位(ISB)到最高有效位(MSB)的电路排列顺序应从上到下,从左到右。因此,定义移位寄存器中的数据从低位触发器移向高位为右移,反之则为左移。这一点与通常计算机程序中的规定相反,后者从自然二进制数的排列考虑,将数据移向高位定义为左移,反之为右移。
下面是一种实现方案:
功能表如下:
计数器
N位二进制计数器
4位异步二进制计数器
时序图:
之所以周期不断放大,是源自于CP输出为0部分。
但是异步缺陷在于,速度慢,进位时有混乱(可以看到那个\(t_{pd}\)不断加大造成进位不同步)。
下面说同步的。
观察转换表的递增计数可以看出,\(Q_0\)在每个计数脉冲作用后都要翻转一次;\(Q_1\)只在\(Q_0=1\)的条件下接受计数脉冲作用而翻转;\(Q_2\)则在\(Q_1=Q_0=1\)的次态翻转;\(Q_3\)在\(Q_2=Q_1=Q_0=1\)的次态翻转。
故激励方程:
从而电路如下即可:
前面图中,进位信号是通过一系列串行的逻辑门逐位向高位传递的,这种计数器称为同步串行计数器。
另一种计数器是同步并行计数器,进位不是逐位传递而是只需等待相同时间即可的那种。位数越高优势越大。
当计数器规模达到4位以上时,工程上常常采用折中处理的方案,将并行进位和串行进位相结合。方法是将多位计数器分为若干组,组内的触发器采用并行进位,而组与组之间的进位则以串行实现。这种并、串行结合的进位方法既具有较短的进位延迟,又同时兼顾了电路的复杂程度。
进一步,我们可给出具有清零和并行置数的4位同步二进制递增计数器。
典型集成同步二进制计数器如下:
74LVC161是一种典型高性能低功耗CMOS4位同步二进制递增计数器。
功能表如下:
异步BCD计数器:
下面是转换表,上图若\(\overline {CP_1}\)接脉冲信号,\(Q_3\)与\(\overline {CP_10\)相连,实现的是5421码(先实现421码后再加个触发器):
进一步的,可以用集成计数器构成任意模数计数器。
比如,用74LVC161构成模9递增计数器。模9计数器有9个状态,而74 LvG161 在计数过程中有16个状态。如果设法跳过多余的7个状态,则可实现模9计数器。通常用两种法实现.即反馈清零法和反馈置数法。
-
首先是反馈清零法。
反馈清零法适用于有清零输人端的集成计数器。74LVC161 具有异步清功能,在其计数过程中,不管它的输出处于哪一状态,只要在异步清零输人端加一低电平,74LVC161的输出会立即从那个状态回到 0000 状态。清零信号消失后(CR=1),74LVC161 又从 0000 状态开始重新计数。电路图、状态循环图如下:
注意要考虑1001是否会造成逻辑错误。 -
接下来说反馈置数法
反馈置数法适用于具有预置数功能的集成计数器。对于具有同步预置功能的计数器而言,在其计数过程中,可以将它输出的任何一个状态通过译码,产生一个预置控制信号反馈至预置控制端,在下一个CP 脉冲作用后,就会把数据输人端D、D,、D,、D。的状态置人计数器。预置控制信号消失后,计数器就从被置人的状态开始重新计数。如下图所示:
这个电路结构置数为0000(因为模9),也可以置成其他数。
如果模更多,超过了74LVC161所能提供的状态数,就得需要多个74LVC161进行连接。下面给出一个模24的例子。
环形计数器
电路图如下:
状态图波形图如下:
注意其输出Q的变换,这也是为什么其被称之为环形计数器。
下面再介绍下扭环型计数器。