为什么边沿触发优于电平触发?

电器工程 等级 扳机
2022-01-23 09:19:01

我试图理解为什么边缘触发优于电平触发。在我的书中没有解释清楚。网上搜索后才知道,边沿触发对毛刺不敏感,而电平触发对毛刺敏感。这是什么意思?

我也无法理解以下内容:“如果时钟对电平敏感,则新的 \$Q_n\$ 可以冲过逻辑网络并改变输出。为避免这种情况,我们需要一个短脉冲来捕获输出并保持“

我不明白为什么输出不会急于电平触发,为什么我们需要一个短脉冲来保持输出。

其次,反馈问题,由于电平触发的持续时间比边沿触发要长,在前者的情况下,输出会再次反馈到输入,只要时钟处于活动状态,它就会一直这样做. 什么是反馈问题?

但是边沿触发如何解决呢?如果下降或上升的时间很短,输出将如何通过所有门传播?是不是这样,一旦应用边缘触发,输出将通过所有门传播,并且仅在下一个时钟边缘考虑下一个输入?

4个回答

虽然边是一个明确定义的时刻,但不能说电平触发也没有明确定义的时刻。确实如此。当时钟电平下降时,有一个明确定义的时刻,时钟电路的输入被采样,并且不再允许输入的进一步变化。

电平触发的问题在于,当时钟电平很高时,输入会改变输出。在具有反馈(输出连接回输入)的电路中,电平触发会导致混乱,因为电平足够宽(半个时钟周期),输出可以在同一周期内反馈回输入。

因此,当时钟下降并且每个设备都应该快照并保持其状态直到下一个级别时出现明确定义的时刻时,已经发生了混乱并且电路处于不可预测的状态。这是无法接受的。在时序电路中,我们希望时钟周期 \$t\$ 中产生的输出仅用于计算时钟周期 \$t + 1\$ 的状态。我们还想要一个很好的特性,即我们可以减慢时钟速度,并且没有顺序电路中断。在电平触发中,放慢时钟对我们不利。我们越是放慢时钟,就越有更多时间允许不受限制的反馈。

第一个明显的解决方案建议将电平缩短到不可能发生不需要的反馈的程度(并保持“开启”电平短,即使我们任意减慢时钟周期)。假设我们非常快速地将时钟从 0 脉冲到 1 并返回到 0,以便时钟设备接受它们的输入,但输出没有足够的时间通过反馈回路来改变这些输入。这样做的问题是窄脉冲不可靠,并且基本上需要比时钟频率快几个数量级的响应。我们可能会发现我们需要一个纳秒宽的脉冲,即使系统仅以 1 Mhz 运行。因此,我们遇到了在为 1 Mhz 设计的总线上分配干净、尖锐、足够高的纳秒宽脉冲的问题。

那么,下一个合乎逻辑的步骤是让设备为自己生成窄脉冲,作为时钟沿的时间导数。当时钟从一个电平转换到另一个电平时,设备本身可以在内部产生一个短脉冲,从而对输入进行采样。我们不必通过时钟总线分配该脉冲本身。

所以你基本上可以认为这一切最终都是水平触发的。边沿触发是一种技巧,它允许设备创建比所有外部反馈回路都快的非常精细的电平触发,允许设备快速接受输入,然后在其变化的输出改变输入值之前及时关闭入口.


我们还可以在“启用”信号(电平触发时钟)和保持气压的飞行器上的门之间进行类比。水平触发就像打开一扇门,让空气逸出。但是,我们可以建造一个由两扇(或多扇)门组成的气闸,这些门不会同时打开。如果我们将电平时钟分成多个阶段,就会发生这种情况。

最简单的例子是主从触发器这由两个级联在一起的电平触发 D 触发器组成。但是时钟信号是反相的,所以一个输入被启用而另一个被禁用,反之亦然。这就像一个气闸门。整体而言,触发器永远不会打开,因此信号可以自由通过。如果我们将触发器的输出反馈回输入,则没有问题,因为它跨越了不同的时钟相位。最终结果是主从触发器表现出边沿触发行为!研究主从触发器是很有用的,因为它对电平和边沿触发之间的关系有话要说。

要了解为什么首选边沿触发,请想象一个连接到寄存器的 8 位加法器,不断将寄存器的值加 1,并将按钮连接到寄存器的启用引脚。

如果寄存器的使能引脚是电平敏感的,那么寄存器的内容将在按钮按下期间不断增加。对于给定的按钮按下,寄存器的下一个状态将不是确定性的。这是因为加法器可以在您移开手指之前多次递增寄存器 - 换句话说,反馈离开寄存器并使其返回加法器太快。

如果启用引脚是边沿敏感的,则每次按下按钮时,寄存器的内容将精确增加一次,无论按下按钮多长时间(假设输入正确去抖动)。对于任何非确定性行为,寄存器的输出不可能及时返回到加法器。

边沿触发对时钟很有用,因为它允许锁存器响应一个(例如上升)时钟边沿输出的值用于计算它在下一个时钟上升沿应该做什么。如果一个人正在构建一个时序电路,例如使用多个边沿触发锁存器的计数器,则可以任意混合快速和慢速逻辑组件,前提是对于每条可能的路径,传播时间减去接收锁存器的时钟滞后量发送者的,保证大于接收者的保持时间,并且周期时间加上接收锁存器的时钟滞后发送者的量,减去传播时间,保证大于接收者的建立时间。

相比之下,在不使用边沿触发锁存器的情况下构建一个对单个输入上的脉冲进行计数的电路将需要对电路某些部分的相对速度做出某些保证。过去常用的方法是将输入时钟 (ClkIn) 信号转换为非重叠对时钟信号(Phi1 和 Phi2)。当 ClkIn 为高电平并且在某个保证最短时间为高电平时,Phi1 为真。当 ClkIn 为低时,Phi2 为高,并且在某个保证的最短时间内一直为低. 当 ClkIn 从低电平切换到高电平时,Phi2 在 Phi1 变高之前先变低;当它从高到低切换时也是如此。可以通过具有两组锁存器(我将其称为 Count1 和 Count2)来构造一个计数器。只要 Phi1 为高电平,Count1 就会锁存 Count2。只要 Phi2 为高电平,Count2 就会锁存 (Count1+1)。如果 Phi1 和 Phi2 都同时变高,或者它们之间的时间太短,则计数器值将变得不确定,但如果保持适当的分离,计数器将运行得非常好。两相时钟系统通常具有相当大的分离量;如果一切都足够快,这种分离可以避免时钟偏差的问题。

在内部,许多边沿触发的锁存器可以被认为是一对主/从锁存器,它们的连接方式是,只要时钟处于边沿之前的状态,主器件就会锁存输入,而当时钟处于边沿之前的状态时,从器件会锁存主器件。在之后的状态。为两个锁存器提供信号的信号需要具有适当的关系,但如果它们与锁存器在同一附近产生,则无需过度设计分离量,几乎与两个时钟相位相同时所需的量一样多。发送到更广泛的区域。

请注意,虽然边沿触发有利于时钟,但还有其他用途不太好。如果没有两个事件共享相同的边沿触发信号,则将周期性事件转换为中断有时是有利的。边缘触发对于共享中断来说很糟糕,在某些情况下,即使是非共享中断也可能会出现问题,除非有办法轮询中断线的状态。在选通信号将在与一些应该被锁存的信息相同的周期上激活但信息具有比选通信号更长的计算路径的情况下,电平触发也可能是有利的。如果该信息类似于异步存储器芯片的地址,那么让它在一个时钟周期内的某个时间可用可能比让它等到下一个时钟周期开始更好。

尽管其他答案几乎涵盖了有关您的问题的所有内容,但为了更清楚起见,我添加了一些图表和简短的解释。

想象一下,您想设计一个包含某种反馈的电路。A = A.B(基本上是一个带有反馈的与门)。如果您使用存储 A 值的简单电平敏感锁存器来实现它,您的电路将如下所示 在此处输入图像描述

这会产生问题。当时钟为高电平时,锁存器变为透明,与门计算 的新值A and B但是该值被反馈给锁存器,并且由于锁存器仍然是透明的(CLK 仍然是高电平),因此计算出新的值A AND B这就是通常所说的Race Condition,它会产生您提到的故障(输出中的意外高点和低点)。

这个问题的一个解决方案是保持 CLK 脉冲非常短,足够短,一旦生成 AND 门的输出,锁存器在值再次反向传播到输入之前被停用。应该直观地看出为什么这可能难以实现。这将取决于锁存器的开关速度(最后,锁存器也由组合门组成)、导线的长度以及数百个其他参数。

第二个更可行的选择是使用边缘敏感元件(在这种情况下是触发器),它基本上是一对以非常巧妙的方式连接的锁存器。

在此处输入图像描述

基本上,当CLK信号为高电平时,锁存器 U1 是透明的,这会将 A 输入的逻辑值带到锁存器 U1 的输出,当CLK信号为低电平时,锁存器 U2 变为透明,并A AND B计算出新的值。但是只有当锁存器 U1 变为透明(CLK 为高电平)时,该值才会传播到与门的输入,因此锁存器 U1 变为透明(CLK 为低电平)。这基本上相当于说电路现在是边沿敏感的(输出值仅在时钟的下降沿发生变化)。

这避免了前面解释的竞争条件问题,这就是为什么电平触发优于边沿触发的原因。