传播延迟不仅限制电路工作的速度,而且它们也会在输出端引起不期望的跳变,这些不期望的跳变称为“毛刺”。当其中一个信号发生改变时,这将给信号提供两条或更多的电流路径,并且其中一条路径的延迟时间比其他路径长。当信号路径在输出门重组时,这个在一条路径上增加的时间延迟会产生毛刺。如图1.109所示,当一个输入信号通过两条路径或多条路径驱动一个输出,其中一条路径有反相器而另外一条没有时,通常会出现非对称的延迟。对该电路执行SPICE瞬态分析,其结果如图1.110所示。从图中可知,所有的逻辑门都会对输入的逻辑信号添加一些延迟,延迟量由它们的结构和输出决定,这个例子使用了一个反相器来清楚地说明反相器在产生输出毛刺时的作用。
图1.109 包含反相器会产生毛刺的组合逻辑电路
读者需要注意,不管延迟时间多长,都会产生毛刺。仔细观察图1.110,可以清楚地知道反相器的时延与输出毛刺之间的关系。
图1.110 对图1.109所示的电路执行SPICE瞬态时序的结果
注
(1)对图1.110进行局部放大,进一步观察信号的延迟与毛刺之间的关系。
如图1.111所示,当一个逻辑输入变量用于两个乘积项(或者POS表达式的两个和项),以及其中一项有反相器而另一项没有时,将会产生毛刺。在该卡诺图中,两个圆圈确定了最简的逻辑表达式。 B · C 独立于 A ,即如果变量 B 和 C 都为逻辑“1”时,那么不管 A 如何变化,输出都为逻辑“1”。同样, 也独立于 C ,即如果变量 A 为逻辑“1”且变量 B 为逻辑“0”时,不管 C 如何变化,输出都是逻辑“1”。但是,如果变量 A 为逻辑“1”、变量 C 为逻辑“1”时,输出总是逻辑“1”,并且与 B 没关系。但是,没有任何一个驱动输出的信号项独立于 B 。这是问题所在之处,当变量 A 和变量 C 都为逻辑“1”时,两种不同的积项使输出保持为逻辑“1”,即一种是当变量 B 为逻辑“1”( B · C );另一种是当变量 B 为逻辑“0” 。所以,当变量 B 变化时,两种不同的积项必须在输出时重组,以保持输出为高,这就是引起毛刺的原因。
图1.111 毛刺的卡诺图表示
可以通过原理图、卡诺图或者逻辑等式验证电路产生毛刺。在原理图中,输入后面有多条到达输出的路径,并且其中一条路径包含反相器而其他路径没有,这样就会产生毛刺。在卡诺图中,假如画的圈是相邻的但不重叠,那么那些没有被圈圈住的相邻项将有可能产生短时脉冲干扰。如图1.112所示,图1.112(a)表示的逻辑电路会产生毛刺,而图1.112(b)和图1.112(c)表示的逻辑电路不会产生毛刺。
图1.112 毛刺的卡诺图分析
如果两项或更多的项包含了同一个逻辑信号,并且这个信号在一项中取反,但在其他项不取反,那么就可以在逻辑等式中识别毛刺。为讨论这个问题,每一对包含一个信号变量的项称为“耦合项”,其中这个信号变量在其中一项里取反,在另一项里不取反,这个取反/不取反的变量是“耦合变量”,其他的变量称为“残留项”。下面给出例子:
(1) ,该逻辑表达式没有耦合项,不会产生毛刺。
(2) ,该逻辑表达式有耦合项,会产生毛刺。
(3) ,该逻辑表达式有耦合项,会产生毛刺。
在某些应用中,当耦合变量改变状态时,期望移除毛刺来保持输出稳定。如图1.111所示,只有当变量 B 和 C 同时为逻辑“1”时才会使 Y 产生毛刺。这种情况可以推广,对于毛刺的产生,一个逻辑电路必须对驱动所有输入到适当电平的耦合变量“很敏感”,这样就只有耦合变量可以影响输出。在一个SOP电路中,这意味着除耦合输入外的所有输入必须被驱动到“1”,这样它们对第一级与门的输出就不会产生影响。
这种情况为逻辑电路消除毛刺提供了一个直观的方法,即将所有多余的输入信号组合到一个新的第一级的逻辑输入(如SOP电路的与门),并将这个新增加的门添加到电路中。例如,逻辑表达式:
耦合项是 A ,多余项可以组合成 B · C 项的形式,将这项添加到电路中,构成下面的等式:
如图1.113所示为该逻辑表达式的卡诺图。注意,原表达式是最小的逻辑表达式,为了不产生毛刺,在最小的逻辑表达式中添加了一个冗余项。
图1.113 添加冗余项消除毛刺
这样,即消除毛刺需要一个更大的具有冗余逻辑项的电路。实际中,大多数设计都偏向于设计一个最小电路,并用其他方法(后面的模型中会有讨论)处理毛刺。也许最好的教学方法是意识到在一般情况下,组合电路的输入无论何时变化,都可能产生毛刺(至少,在未证明之前)。
在如图1.113(a)所示的问题中,原始SOP表达式的画圈并没有重叠,这就是毛刺潜在的特点。当增加了冗余项的圈时,每个圈至少重叠其他一项,这样就不会产生毛刺了。
如图1.113(c)所示,如果在不相邻的卡诺图单元中存在不重叠的圈,即没有耦合项、没有耦合变量,那就不可能增加一个或多个圈使所有的圈至少有一个和其他的圈重叠。在这种情况下,信号输入的改变不会引起毛刺。在这种类型的电路中,两个或更多的输入可能“在同一时刻”直接改变状态,该图所_表示的逻辑表达式为
在电路中,可能希望所有的输入变量同时从逻辑“0”变化到逻辑“1”。作为响应,输出持续保持为逻辑“1”。实际中,不可能同时改变所有的输入(至少在一个皮秒内)。因此,输出变量会在输入变量不同时变化的时间段内出现毛刺跳变。像这样的不期望的跳变不能通过增加冗余项消除。当然,必须通过重定义电路或采样进行处理。此处,这里将进一步处理由于多输入变化引起的不期望的输出跳变。
到目前为止,大部分讨论的毛刺都是关于SOP的电路。但是,POS的电路现象也是一样的。POS电路出现毛刺的原因与SOP电路的(到达多输入门的一个输入的不对称的路径延迟)一样。正如所期望的,需要的条件相似,但是和SOP情况也不完全相同。
一些简单的实验证明了门延迟对数字电路的基本影响,即输入变量的跳变可能使输出变量产生毛刺,通过不对称的电路路径延迟提供输入形成输出。在更一般的情况下,任何时候,一个输入变量通过两条不同的电路路径,并且这两条路径在电路的“下游”节点重组,这样就可能产生像毛刺一样的时间问题。再者,这里可以看到信号在逻辑电路中传输会消耗时间,不同的电路路径具有不同的延迟。在某些特定的情况下,这些不同的延迟可能出现问题。
思考与练习1-41: 请分析下面的逻辑_表达式是否会产生毛刺,以及能否消除毛刺。
思考与练习1-42: 图1.114给出的电路是在图1.109的基础上添加了额外的逻辑门,用于消除潜在的毛刺,请读者说明该电路的原理,并对该电路执行SPICE瞬态分析,观察分析结果,看看是否去除“毛刺”。
图1.114 可以消除毛刺的组合逻辑电路