如果组合电路的输入改变,则输出中可能出现不希望的切换变化。当从输入到输出的不同路径具有不同的延迟时,会发生这些变化。如果响应单个输入变化和传播延迟的某种组合,当输出保持恒定值1时,输出暂时变为0,则称该电路具有静态1危险。同样,如果输出在应保持恒定值0时暂时变为1,则称该电路具有0危险。
当输出应该从0更改为1或从1更改为0时,此输出可能会更改三次或更多次; 如果发生这种情况,该电路被认为具有动态危险。图1.1显示了具有危险的电路的不同输出。在这三种情况中的每一种情况下,电路的稳态输出是正确的,然而,当输入改变时,电路输出处出现开关变化。
图1.1
图1.2中的第一个危险,静态1危险描述如果A = C = 1,则F = B + B'= 1,因此当B从1变为0时,输出F应保持为常数1。在下图中,静态0危险,如果每个门的传播速度为10 ns,E将在D变为1之前变为0,导致在输出F处出现瞬间0。这也是一个小故障由1危害引起。需要注意的是,在B变为0之后,变频器输入(B)和输出(B')都为0,直到延迟结束。在该传播周期期间,F的等式中的这两个输入项都具有值0,因此F也暂时变为值0。
这些静态和动态危险完全独立于电路中存在的传播延迟。如果组合电路没有危险,则说对于传播延迟的任何组合和任何单独的输入变化,该输出将不具有I / O值的变化。相反,如果电路存在危险,则会出现一些延迟组合以及输入变化,电路中的输出包含瞬态。
产生毛刺的延迟的这种组合可能或可能不会在电路的实现中发生。在某些情况下,这种延迟不太可能发生。由静态和动态定时危险引起的瞬态(或毛刺)在完全同步电路中很少引起问题,但它们是异步电路中的主要问题(其中包括名义上的同步电路,涉及使用异步预置/复位输入使用门控时钟)。
输入和输出的变化还取决于每个门如何响应输入值的变化。在某些情况下,如果多于一个输入门在短时间内发生变化,则门可能会或可能不会响应各个输入变化。假设逆变器(B)的传播延迟为2ns而不是10ns,图1.2中的一个例子。然后输入D和E到达输出OR门的变化彼此相差2ns,因此OR门可能会或可能不会产生0毛刺。
图1.2
显示这种响应的门被称为具有所谓的惯性延迟。相反,惯性延迟值被假定为与门的传播延迟相同。发生这种情况时,上述电路仅对大于10ns的逆变器传播延迟响应0毛刺。然而,如果输入门总是响应具有传播延迟的输入变化,则称其具有理想或传输延迟。如果上面显示的OR门具有这种类型的延迟,则对于逆变器传播延迟的任何非零值都将产生0毛刺。
使用卡诺图可以始终发现危险。上图所示的地图如图1.2所示,其中没有一个循环覆盖了minterms ABC和AB'C。因此,如果A = C = 1且B的值发生变化,这两个项都可以暂时变为0; 从这一瞬间变化中,在F中发现0毛刺。为了检测两级AND-OR组合电路中的危险,完成以下程序:
需要写出电路的乘积和表达式。
如果可能,每个术语应在地图上绘制并循环。
如果相同的循环没有覆盖任何两个相邻的1,则在这两个1之间的过渡存在1危险。对于任何n变量映射,仅当一个变量更改值而其他n个变量保持不变时,才会发生此转换ICfans。
如果在图1.2(a)中的卡诺图中添加了另一个环路,然后将相应的门加到下面图1.3中的电路中,则可以消除危险。当B变化时,术语AC保持恒定值1,因此输出中不会出现毛刺。通过此更改,F不再是最小SOP。
图1.3
图1.4(a)是一个具有多种0危险的电路。表示电路输出的函数是:
F =(A + C)(A'+ D')(B'+ C'+ D)
图1.4(b)中的卡诺图有四对相邻的0,它们没有被一个共同的环覆盖。箭头表示每个0没有循环的位置,它们各自对应于0危险。如果A = 0,B = 1,D = 0,并且C从0变为1,则对于任何门延迟组合,输出端可能会出现尖峰。最后,图1.4(c)描绘了一个时序图,假设每个逆变器的延迟为3ns,每个AND门和每个OR门的延迟为5ns。
图1.4
只要它们尚未被公共环路覆盖,就可以通过循环覆盖彼此相邻的0的额外主要蕴涵来消除0危险。通过消除代数冗余项或一致性项,可以将电路简化为下面的等式。使用三个额外的循环将完全消除0危险,导致以下等式:
F =(A + C)(A'+ D')(B'+ C'+ D)(C + D')(A + B'+ D)(A'+ B'+ C')
下图显示了去除0危害后的卡诺图。
图1.5
逻辑电路测试
设计逻辑电路的一个重要组成部分是确保最终设计是正确的,并在必要时进行修正。要测试电路,可以构建它们或在数字计算机上模拟它们。计算机模拟通常更快,更经济,因为您不必在组件上浪费钱。随着电路复杂性的增加,在实际构建之前模拟设计变得非常重要。当设计以集成电路形式构建时,必须进行模拟,因为制造集成电路可能需要很长时间并且纠正错误可能是一个昂贵的修复。仿真在实际构建之前完成有很多原因:确认设计在逻辑上是正确的,确保所有逻辑信号的时序正确,
为了模拟逻辑电路设计,需要特定的程序来在计算机上构建设计。首先,需要指定任何组件并连接到逻辑输入和输出。之后,可以指定这些输入。最后,应检查电路输出以纠正任何错误。关于逻辑元件之间的任何连接的列表,可以将电路的具体描述输入到计算机模拟程序中,或者它可以是计算机屏幕上的绘制逻辑图的形式。
用于一组组合逻辑的简单计算机仿真程序可能如下所示:
电路的输入被实现到电路中的第一组门,然后计算那些门的输出值。
然后将在第一步中改变的这些输出馈送到下一级(或设置)的门输入。如果任何输入已更改,则计算相同输入的值。
重复上一步骤,直到门输入值没有单一变化。当满足该条件时,该电路被称为处于稳态条件,最后可以读取输出值。
每当输入发生变化时,重复步骤1-3。
最后
截至目前,您应该了解静态0和1危害以及动态危害。此外,如果给出组合电路,您应该能够找到危险(0-和1-)。应该了解集成逻辑电路的测试和仿真。