跳转至

Sequential Circuits

约 3867 个字 预计阅读时间 13 分钟

Storage Elements and Sequential Circuit Analysis

Introduction

  • 一个时序电路包含存储元件和组合逻辑电路。

  • 存储元件的状态由次态方程决定: \(Next\,State=f(Inputs,State)\)

  • Output function(Mealy): Outputs=g(Inputs,State)(由输入和当前状态共同决定)
  • Output function(Moore): Outputs=h(State)(仅由当前状态决定)

Types of sequential circuits

Depends on the times at which:

  • storage elements observe their inputs,and
  • storage elements change their state

Synchronous: 要求比较严格:电路中所有元件必须同时更新,且更新的时间周期一致。

Asynchronous: 状态的更新任意时刻都可发生。如果时钟被看作一个输入,那么所有电路都是异步的。但是异步的时序电路使设计变得复杂。

Storage elements

Storing State

回顾我们之前学的门传输延迟电路,现在我们把输出端Y与A连接,就将组合逻辑电路变成了时序电路。

Latches(锁存器)

\(\overline{S}-\overline{R}\) Latch

可得到如下的时序状态:

注意当\(R=0,S=0\)时,\(Q,\overline{Q}\)都为1,如果我们将\(R,S\)改为1,\(Q\)\(overline{Q}\)谁为1取决于门的传输延迟。因此\(R=0,S=0\) is forbidden as input pattern.

S-R Latch

Clocked S-R Latch

在之前的基础上我们增加一个时钟信号(clock or control)

  • Has a time sequence behavior similar to the basic S-R latch except that the S and R inputs are only observed when the line C is high.

与之前SR锁存器相同,C=1,S=1,R=1是非法的。

D-Latch

我们想避免非法输入,避免未定义情况,因此引入D锁存器。

Note

在chapter3计算门输入成本时,我们一般计算G而不计算GN,是因为电路中的锁存器同时提供了\(Q\)\(\overline{Q}\)

Flip-flops

Example

在锁存器中,有可能出现空翻现象,即不能做到在时钟信号一个周期内,状态只更新一次。

A solution to the latch timing problem is to break the closed path from Y to Y within the storage element. 即切断锁存器输入和输出的直接联系,采用触发器的设计。

主要有两种触发器:

  • 在时钟信号高电平时修改第一个锁存器的值,保存第二个锁存器的值;在低电平时保存第一个,修改第二个,此时更新触发器的状态,称为主从触发器。
  • 仅在时钟电平变换的边沿触发,即在特定时刻仅接受一个输入,分为上升沿触发和下降沿触发,统称为边沿触发器。

S-R Master-Slave Flip-Flop

一次性采样问题

假如在\(C=1,S=0,R=0\)时,S或者R发生微小的扰动(突然变成1后又回到0),主锁存器由原先的保持状态变为修改状态,但是当S变回0时,主锁存器又回到保持状态,保持的值仍然为S=1而不会变回原来的0,该值就会被传到从锁存器中。

为解决一次性采样问题,我们采用边沿触发器。

Edge-Triggered D Flip-Flop

我们用上图来理解边沿触发器的行为。在上升沿前一刻,主锁存器可写,从锁存器只读;而在上升沿后一刻,主锁存器只读,从锁存器写入主锁存器存储的值,即上升沿前一刻写入主锁存器的内容。

在实际电路中,我们通常采用如下的电路图,它减少了门输入成本。

Standard Symbols for Storage Elements

注意符号图上的小圆圈,代表非。用来判断是何种锁存器/触发器

Direct Input

我们通常会对时序电路进行初始化,即在它开始运行之前赋予电路一个确定的状态,称为直接输入。这些输入通常是异步的。

以上图为例,S和R就作为直接输入,当\(\overline{S}\)端为0时我们将锁存器置为1,当\(\overline{R}\)端为0时我们复位为0

Sequential Circuit Analysis

相比组合电路,时序电路具有状态,因此除了输出与输入的关系之外,我们还要关注次态方程,即当前的状态和输入如何影响下一个状态。

Example

对于如上的电路,输入是\(x(t)\),输出是\(y(t)\),状态是\((A(t),B(t))\),我们需要关注的是输出方程与次态方程。

由于我们采用D锁存器,因此状态就是锁存器D的输入。可以得到如下布尔方程:

State Table

我们可以使用状态表来描述时序电路的逻辑。分为四列:当前状态,输入,次态,输出。为了得到状态表,需要先写出输出方程和次态方程。

Example

如上图所示的状态表的行数由状态数+输入个数决定,我们可以进行降维,将输入和次态写在一起。

State Diagrams

时序逻辑电路也可以用状态图表示,它比状态表更好地描述了状态之间的转移关系。

Mealy type circuit and Moore type circuit

Mealy型电路输出既依赖于当前状态,也依赖于输入。Moore型只取决于当前状态。

对于状态图中标识输出的位置,由于Moore型电路只取决于当前状态,因此我们习惯标在状态的圆圈里,而Mealy型电路标在状态转移的弧上。

Example

由于输出标在弧上,因此该电路是Mealy型电路。

Moore型电路

在实际电路设计中,可能会存在一些输出是Moore型,一些输出是Mealy型的情况。

Equivalent State Definitions

当两个状态的输入相同时,如果它们的输出和次态都相同,则称这两个状态为等价状态。如果电路中有等价状态,那么我们可以将它们合并,以减少触发器的个数。

Example

可以发现S2和S3是等价状态,将它们合并。

咦合并之后又发现等价状态S2和S1。通过两次等价状态的合并,我们在输入成本上减少了两个触发器。

Example

其中Clock连的是系统时钟,Reset是作为直接输入,将电路赋初值。但是不用将Clock和Reset在方程中描述。

对于如上的时序电路,我们可以通过一系列操作得到如下的状态图。

可以发现在有效的循环中,该电路的功能是一个模五计数器,而对于无效的状态111,101,110,可以发现它们的次态都回到了有效循环中。这可以有效防止微小扰动对电路的影响,处理无效状态。

Flip-Flop Timing Parameters

我们想要计算时序电路的最大工作频率,也就是要计算两个上升沿之间的最小间隔。为此需要考虑时序电路的传输延迟。

触发器延时

触发器的延时不仅仅是传输延迟,还有为了保证产生稳定输出信号所必要的时间。

  • Setup Time: 采样边缘前输入信号需要保持稳定的时间,即输入信号需要在setup time之前改变好,否则这次改变不会被接收。
  • Hold Time: 采样边缘后输入信号需要保持稳定的时间。
  • \(t_{pd,ff}\):触发器采样边缘到产生稳定输出的时间。

组合电路延时 即为传输延迟。

观察上图可发现S-R主从触发器的setup time占据一半的时钟周期,原因就是之前介绍的一次性采样,输入信号在C=1时不允许发生改变。

电路松弛时间 extra time in the clock period in addition to the sum of the delays and setup time on a path. 松弛时间必定非负。

因此我们可以得到两个上升沿的最小时间:

可以看到,由于主从触发器的\(t_s\)占了半个时钟信号,大约50%占空比,因此留给触发器和组合电路的传输时间就很少,在触发器和组合电路相同的情况下具有更长的周期,工作频率更小。这也是我们更常用边沿触发器的原因。

Sequential Circuit Design

现在我们需要知道怎么样来设计时序的电路。

在分析时序电路的行为时,我们依次得到状态方程,状态表,状态图。而设计时我们则反过来,先用状态图表达应用需求,再得到状态表等。大致遵循如下流程:

Specification

说明电路要做什么。包括文字描述,数学公式,硬件描述等

Formulation

状态的抽象

把电路的行为抽象为几个状态,以及状态之间的转移。

Sequence Recognizer Procedure

序列识别器:识别出给定的二进制序列。

初态:什么都没识别到。每识别到一个位更新一个状态,全部识别完毕后得到最终状态。

假设我们现在的电路需要识别1101二进制序列。如果识别到1101,则电路输出1。特别的,对于1101101,头和尾都是有效序列(1101101,1101101),两种情况都要考虑到。

对于Mealy型电路,我们得到的状态图和状态表如下:

  • A表明没有任何有效序列
  • B表示收到1
  • C:两个1
  • D:110,当D再收到一个1时,输出1,同时由于最后一位1可以当作下一个1101序列的第一个1,因此回到B状态。

对于Moore型电路,我们需要再增加一个状态E代表成功识别,即输出1.

状态表的简化

一般情况下,原始状态图和原始状态表中存在着多余的状态,状态个数越多,电路中所需的触发器数目越多,成本也越高。因此我们需要除去多余状态,这就涉及到状态表的简化:不仅能正确反映设计的全部要求,而且状态的数目最少。

状态等效:上文已涉及。

状态等效的判别

  • 在所有输入情况下输出相同
  • 同时,要么次态相同,要么次态交错,要么次态循环

次态交错,次态循环的解释

对于上图的状态\(S_i,S_j\),当输入为0时,输出和次态相同;当输入为1时,输出相同,\(S_i,S_j\)互为对方的次态,这种情况称作次态交错,\(S_i,S_j\)为等效状态。

对于上图的状态\(S_i,S_j\),当输入为1时,次态交错,当输入为1时,次态分别为\(S_k,S_l\).假如\(S_k,S_l\)为等效状态,则\(S_i,S_j\)也等效。即\(S_i,S_j\)等效与否依赖于\(S_k,S_l\)是否等效。

对于上图的状态,\(S_i,S_j\)\(S_k,S_l\)相互依赖,则称为次态循环,这种情况我们认为这四个状态都等效。

化简状态表 现在我们知道了等效状态的定义,下一步就需要化简状态表。分为两种方法:观察法和隐含表法。观察法就是直接看状态表找等效状态,这里不展开。

隐含表法化简状态表

对于上面的状态图,具有较多状态,使用观察法不现实,我们可以通过隐含表法化简。隐含表就是个下三角阵,行数为状态数减一,列数为状态个数。行列交叉的格子里填的是两个状态等效与否,以及等效需要的条件。如下图所示:

如果状态对等效,则在格子里打勾,不等效则打叉(根据输出是否相同可以直接判断)。如果等效与否需要进一步检查,则标记次态对。对于标记的次态对,进行关联比较,确定最终等效状态对。

最后确定最大等效类,画出最小化状态表。

如上的状态表中有四个等效对AB,AE,BE,CF,因此最大等效类为ABE,总共电路中有四个状态ABE,CF,D,G,令上述四个状态为abcd,可得到最小化状态表:

State Assignment

在得到最小化状态表后,由于我们的目的是设计电路,而状态表中的状态只是抽象的字母,因此我们现在需要做的是为每个状态分配二进制位,以进行电路的设计。

但是\(n\)种状态,总共有\(n!\)种分配二进制位的方法,我们应该如何选择呢?对于不同的分配,设计出来的电路成本及复杂程度也会很不一样,如下是一个例子。

Example

对于上面的状态表,我们考虑两种分配方案:按计数顺序以及按格雷码,结果依次为如下两图:

相应的,我们可以画出卡诺图来得到次态方程,输出方程的逻辑表达式,并计算门输入成本。

可以看到,使用第二种方案的门输入成本显著小于第一种。

所以我们状态分配的任务不仅是决定编码的长度,还需要寻找一种最佳的或接近最佳的状态分配方案。

因此我们需要了解一些状态分配的技巧。

基本原则

  • 在相同输入条件下具有相同次态的现态,应尽可能分配相邻的二进制代码
  • 在相邻输入条件,同一现态的次态应尽可能分配相邻的二进制代码
  • 输出完全相同的现态应尽可能分配相邻的二进制代码
  • 最小化状态表中出现次数最多的状态或初始状态应分配逻辑0

一般情况下,我们优先考虑第一条原则。

Example

Map Technology

画出电路图,并采用与非门的方式实现,与组合逻辑电路设计的工艺映射相同。

A little Practice

到这里我们应该具备设计出时序电路的能力。

明白需求->画状态图->得到状态表->寻找等效状态,化简状态表->状态分配->工艺映射

Other Flip-Flop Types

J-K Flip-Flop

除了在\(J=1,K=1\)时次态取反,其它与SR主从触发器相同,也同样存在一次性采样问题。

可以使用D触发器来实现J-K触发器的功能。复习时手动模拟一下。

这里使用了边沿触发器,可以解决一次性采样问题。

逻辑符号图:

T Flip-Flop

T触发器只有一个输入T,当T为0时为保持状态,当T为1时求反。

Basic Flip-Flop Descriptors

对于触发器,我们有不同的描述方法。

在分析时序电路中,由于我们想知道电路的作用,因此我们使用特征表和特征方程来描述,即通过当前状态和输入得到次态。

在设计时序电路中,由于我们已知的是当前状态已经每个当前状态对应的次态,我们想通过他们来得到触发器的输入方程,因此使用激励表来描述。

Flip-Flop Descriptors

D触发器

SR触发器

T触发器

JK触发器


最后更新: 2024年2月6日 11:05:19
创建日期: 2023年11月26日 13:09:28