前面学习过在组合电路中的竞争与冒险,在异步时序电路中同样存在竞争与冒险。
在前面介绍异步时序电路的设计时,通常假定存储元件的反馈回路的延迟都是相等的,但在实际电路中,不同的反馈回路的延迟往往是不同的,于是会引起竞争现象。在异步时序电路中发生状态变化时,有两个或两个以上变量同时改变其值的现象,叫做异步时序电路中的竞争现象。
异步电路的竞争现象又分为临界竞争和非临界竞争两种。
· 若竞争的各种可能将使电路最终达到同一个稳定状态,则称为非临界竞争。
· 若竞争的各种可能将导致电路最终无法到达指定的稳态,则称为临界竞争。显然,临界竞争会导致电路出现错误输出,应当尽量避免。
下面给出电位异步电路出现临界竞争的必要条件。
· 输入变量的变化会引起两个或两个以上的状态变量的变化。
· 在流程表相对应的列中有两个或两个以上的稳定状态。
例如在图7-25(a)所示的流程表中,若用00、01、10、11分别表示状态 S0、S1、S2、S3,于是可以将图7-25(a)改画为图7-25(b)的形式。
(a)改画前的流程表 (b)改画后的流程表
图7-25 异步时序电路流程表
图7-26 异步时序电路状态分配表 |
可以采用如下方法来避免临界竞争。
· 在反馈回路中插入适当的延迟元件,使竞争向着期望的 方向发展。
· 改变状态分配,消除临界竞争。
例如,在图7-25(a)中,重新进行状态分配为:用00、11、10、01来表示S0、S1、S2、S3,如图7-26所示。
由图可知,该流程表所描述的电路不存在临界竞争。
时序电路冒险现象的本质是输入信号在时序电路内传播的延迟不同,造成到达触发器时间的先后之差,从而造成电路错误地工作。下面举例来说明异步时序电路的冒险现象。
图7-27是一个主从结构的T触发器,其状态表如图7-28所示。假设图7-27中的与非门5的延迟比较大,大于门1或门2及触发器2延迟的时间总和。若电路原来位于状态y1y2=00,当X由0变为1时,一方面使门1送出的0把触发器2置1,y2=1(此处表示为路径a),另一方面经门5送出X' 信号(此处表示为路径b)。如果a传播的信号比b要快得多,则触发器2的输出y2=1,但是门5的输出还没有变化(仍保持1),此时门3起作用,门3的输出0使触发器1置1,因此电路进入y1y2=11的状态。由于y1=1,而输入X=1,因此图7-27中的门2有0输出,而门1反而输出1。门2的0使触发器2再次置0,这样最终电路状态为y1y2=10。所以,如途径b的延迟大于途径a 的延迟,则X由0变为1时,电路并不像预想的那样进入y1y2=01,而是进入y1y2=10,这就是时序电路中的冒险现象。
可见在上例中,如果X能够通过门5先到达触发器的输入端,则电路能正常工作;反之,如变量y2的变化先到达触发器1的输入端,电路就要错误工作了。所以时序电路的冒险现象在状态表中就归结为先有输入X的变化,还是先有状态的变化。
如果记忆元件的延迟大,则状态表中就先有X的变化,电路正常工作;如X通过反相门的延迟大,则状态表中先有状态的变化,时序电路出错。因此,为了避免出现冒险现象,就必须做到信号通过记忆元件的延迟大于通过门电路的延迟。如做不到这点,就应该在记忆元件的输入或输出端接上延迟元件来增大记忆元件的延迟。
图7-27 主从结构的T触发器 图7-28 主从结构的T触发器状态表