
所有的逻辑门都会对逻辑信号附加一些延迟,其延迟的时间量是由这些逻辑门结构以及输出负载所决定的。如右图所示,非门(由时间T1确定)比其它逻辑门(T2)有更长的延迟。该例特别使用了过长的非门延迟来更清楚的表明其在造成输出毛刺中所扮演的角色,不管延迟时间多长,毛刺都会出现。仔细分析该时序图,可以很清楚的发现,非门延迟与输出毛刺有直接关系。
当两个乘积项使用一个输入(或是POS等式中的两个和项)且其中一项有非门而另一项没有,毛刺就会发生。这一点在图中可以清楚的表示,有逻辑等式,如右边的K图。在K图中,两个环型圈确定了最简逻辑等式。BC项与A项相互独立;这就是说,如果B和C都是‘1’,那么输出就是‘1’,与A的变化无关。同样的,AB’项与C项相互独立,那么如果A和B是‘1’和‘0’的话,输出为1,与C无关。现在注意到如果A是‘1’且C是‘1’,那么输出总是‘1’,而与B无关,但是这里没有单项能够各自同时的驱动B。这就可能发生这样的情况:当A和B都是1的时候,两个不同的乘积项保持输出为‘1’-而其中一项B是‘1’,另一项B是‘0’。因此,当乘积项必须要在输出端重组并保持为高电平时,出现毛刺。

一个电路是否会产生毛刺可以用原理图,K图或是逻辑等式来确定。在原理图中,一个输入经过多个路径到达一个输出,且其中有一条路径有非门,而另外的没有,就可以造成毛刺,在K图中,如果环型圈是邻接的但没有交叠,且该邻接处没有其它环型圈覆盖,那么就有可能造成毛刺。在下面的K图中,只有K图#1可能会导致电路毛刺。

在逻辑等式中,如果有两个或多个项包含有相同的逻辑信号,且该信号在其中一项被翻转了,而在其它项中没有翻转,那么也能确定有毛刺产生。对于这样的讨论,有一对项包含有同一个逻辑信号,如果其中一项中该信号被翻转了,而另一项中没有,那么这对项就称为“偶合项”。翻转/非翻转信号变量就是“偶合变量”,而两项中的其它变量就称为“残余变量”。如下例所示:

在某些应用中,可能要求去除毛刺使得当一对偶合变量改变状态时,输出能够保持稳定。注意到在问题1的方案中,Y上毛刺只有在B和C保持高电平才可能发生。这一观察现象可以概括为:对于毛刺的发生,逻辑电路必须将所有的输入驱动到一个合适的电平,并只使偶合变量处于激活状态,从而只有偶合变量可以影响输出。在SOP电路中,除了偶合输入的所有的输入都必须驱动到‘1’,这样这些输入在第一级的与门中对输出没有影响。
这一观察结论也能引导出将逻辑电路中毛刺去除的方法:在第一级的逻辑门(比如SOP中的与门)中将所有的残余输入信号组合起来,并给电路增加新的逻辑门。比如,在等式X=A’B+AC中,偶合变量是A,残余变量可以组合起来组成BC项,并将该项加到电路中组成:X = A’B + AC + BC。在K图中,原始等式是最简化的,而无毛刺等式增加了冗余项(红色环型圈)。

这种方法通常会出现这样的情况:去除毛刺需要更大的电路与冗余逻辑。在实际应用中,通常更好的方法还是使用最简化电路并用其它的方法来去除毛刺(将在后面的章节介绍)。也许课程最好就是让你们意识到,在组合电路中只要有输入信号改变,那么就可能发生毛刺(至少有,除非证明了其它情况发生)。
在问题1中原始SOP等式的环型圈没有交叠,这是可能存在毛刺的一个特征。当加上了冗余项的环型圈,每一个环型圈都至少与另外一个交叠,那么就不可能发生毛刺了。
如果无交叠的环型圈(或是分开的)分布在无邻接的K图单元中(见上面的K图#3),那么就没有偶合项,没有偶合变量,那么也没必要增加环型圈来使所有的环型圈都至少与另一个交叠。在这样的情况下,不可能有单纯的输入改变来导致毛刺。在这种电路中,两个或更多的输入可能是“同一时间”该变状态,得到预期的结果并使输出保持在一个稳定的状态。比如,在K图#3的电路Y=A’C’D’+BCD,就能使所有输入从0到同时变化,相应的,输出保持在1。实际应用中,是不可能同时改变输入的(至少是在皮秒范围内),那么,输出就会产生类似毛刺的脉冲,其持续时间就是输入信号改变时间的时间差。像这样的意外变化是不可能通过增加冗余逻辑门来消除的;要想消除这样的毛刺,就必须通过重新定义电路或是采用采样和流水线操作来处理(这将在后面的章节里讨论)。我们这里就不再讨论由于多输入信号改变产生的意外输出翻转。
目前我们讨论的绝大多数毛刺都是基于SOP电路的,但是相同的现象也会出现在POS电路中。POS电路产生毛刺的原因和SOP电路是一样的(即一个输入通过多路径到达输入逻辑门引起的不平衡路径延迟)。和你预想的一样,POS电路产生毛刺的条件和SOP电路类似,但不完全一样。
这些简单的实验表明了数字电路中门延迟的基本作用-也就是,输出毛刺是输入变化的响应结果,输入路径上的不平衡延迟在输出端造成了毛刺。在更普遍的情况下,只要有一个输入通过了两条不同的电路分支,而该两条分支在电路下一级门上重新组合,那么类似于毛刺的时序问题就可能出现。再次强调,本课程的目的就是让你们意识到通过逻辑电路是需要传输延迟的,不同的路径有不同的延迟。在某些特定情况下,这些不同的延迟就可能产生一些问题。


