Answers:
这很简单地意味着两件事同时“争夺”结果。
例如,具有复位和设置引脚的电路,如果触发复位,则输出变为0。如果触发设置,则输出变为1。如果首先触发设置,然后在复位后非常非常快地复位,则复位。将会看到,因此输出为0。
但是,如果它们都在同一时间触发,会发生什么?
如果电路设计者注意了,那对于功能很重要,应该有一个答案。如果对该问题没有确定的答案,则电路处于竞争状态,来自置位信号和复位信号相互“竞争”,看哪个胜出以确定输出。
延迟最小的路径通常会获胜,但是随后您可以将竞赛条件视为确切的触发器,其中延迟最大的路径恰好在更快的路径之前被触发了。
许多电路,包括IC内部的逻辑构建块,都有一定的竞争条件,但通常情况如此,以至于您按预期使用电路时,不会注意到。因此,当工程师多次大声说出“比赛条件”时,他们实际上是在正常使用中也可能发生这种情况,这是一个问题,因为在比赛条件下无法预测正常的操作。
在软件中也使用该术语,但通常表示时序问题或锁定。但是,这是一个相似的原理。通常,当计算机中有两个进程独立运行时,但是使用相同的内存时,可以防止该内存被一个进程写入,而另一个进程正在使用它。如果您不这样做,他们会说这是一种可能的竞争条件:一个进程可能正在读取一个正处于更新过程中的值,或者两者都可能同时写入该值,然后您不知道会发生什么情况。发生。
术语“竞赛条件”意味着(1)两个或更多信号可以以任意顺序到达彼此任意靠近,并且(2)不可能分析性地表明到达的任何可能组合的概率基本上为零次构成问题。
从单个触发器的角度来看,其数据输入可能会随时随时钟变化,时钟和数据输入上几乎同时的跃迁可能会导致竞争。但是,从总体电路行为的角度来看,如果它们仅在以下情况发生时不会出现竞争状态:下游电路不会在乎锁存器保持什么,而下游电路也不会开始在意锁存器保持在什么时候直到时钟脉冲到达之后,该时钟脉冲不可能在数据输入的任何跃迁附近发生。
此外,由于通常不可能完全完全消除有问题的输入时序的所有可能性,因此许多竞争情况分析都会说,如果将一个寄存器的输出馈入由同一时钟控制的另一个寄存器,则第二个寄存器将始终锁存即使第一个寄存器的输入导致它捕获了恰好在开关阈值上的输入电平,“干净”高电平还是“干净”低电平。从理论上讲,第一个锁存器有可能捕获一个刚好高于或低于其确切开关阈值的电平,以使输出电平将在下一个时钟脉冲到达时精确地转换。
结果,例如,如果要输入一个输入并将其传递给三个触发器序列,并有一个电路,只要第二个触发器为高电平而第三个触发器为低电平,则输出高电平,则出现在第二个触发器上的任何上升沿数据输入之前一定是低电平时间的完整时钟周期,然后是高电平时间的完整时钟周期,从本质上可以保证在一个时钟周期内使电路的输出为高电平。
模拟该电路 –使用CircuitLab创建的原理图
在此示意图中,具有某种不规则时序的信号以三种方式归一化为时钟,以便在每个上升沿之后的一个时钟周期内产生高输出。第一次尝试将信号标准化会产生令人讨厌的输出,并且如果输入和时钟同时变化,则具有明显的竞争状态。第二种方法要好得多,但是如果时钟和数据的时序导致第一个寄存器捕获中间值,则竞争条件仍然存在(模拟器无法触发)。第三种方法代表了通常的做法,通常被认为是安全的,因为即使第一个寄存器未能捕获干净高点或干净低点,第一个寄存器的输出不太可能具有完全正确的行为,而导致第二个寄存器不能干净地抓取。如果数据非常接近时钟变化,则可以在当前周期获取数据,或者直到下一个周期才获取数据,但是如果任何一种情况都可以接受,则不存在竞争条件。