为什么边缘触发优先于电平触发?


18

我试图理解为什么边缘触发优先于电平触发。在我的书中并没有明确解释。在网上搜索之后,我发现边缘触发对毛刺不敏感,而电平触发则很敏感。这是什么意思?

我也无法理解以下内容:“如果时钟对电平敏感,则新的会冲过逻辑网络并更改输出。为避免这种情况,我们需要一个短脉冲来捕获输出并将其保持恒定。但是这种短脉冲不容易产生,因此我们需要进行边沿触发。解决了反馈问题,因为没有足够的时间让新的输出在单个上升沿的持续时间内返回到输入。ñ

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

其次,由于水平触发的持续时间比边沿触发的时间长,因此存在反馈问题,在前者的情况下,输出将再次反馈到输入,并且只要时钟有效,它就会继续这样做。 。反馈问题是什么?

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


1
“一旦应用了边沿触发,输出将通过所有门传播,而下一个输入将仅在下一个时钟沿被考虑”-靶心!
Wouter van Ooijen

Answers:


12

尽管边沿是时间上明确定义的时刻,但并不是说电平触发也没有时间上明确定义的时刻是不正确的。是的 当时钟电平下降,对时钟电路的输入进行采样并且不再接受输入的进一步变化时,会有一个明确定义的时刻。

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

ŤŤ+1个

第一个明显的解决方案是将自身缩短到不可能发生不想要的反馈的程度(并且即使我们任意减慢时钟周期,也要保持“ on”电平很短)。假设我们将时钟从0脉冲快速转换为1,然后非常快地回到0,以便被时钟控制的设备接受其输入,但是输出没有足够的时间来竞争通过反馈环路来更改这些输入。这样做的问题是窄脉冲不可靠,并且基本上需要比时钟频率快几个数量级的响应。我们可能会发现,即使系统仅以1 Mhz运行,我们也需要一个纳秒级的脉冲。因此,我们面临的问题是,在设计用于1 Mhz的总线上分配干净,尖锐,足够高的纳秒级脉冲。

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

因此,您基本上可以认为所有这些最终都将被级别触发。边沿触发是一种技巧,它允许设备创建一个非常精细的电平触发器,该触发器比所有外部反馈环路都要快,从而允许设备快速接受输入,然后在其变化的输出改变输入值之前及时关闭入口。 。


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

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


1
如果没有锁存器的输出不经过一个在不同时钟相位上采样的锁存器而反馈到其输入,则电平敏感的多相时钟避免了“混乱”问题。当处理器与异步存储器之类的接口连接时,此类设计可能具有一些优势,因为一个时钟相位的前沿与下一时钟相位的后沿之间的时间可以任意分配给路由和输出地址,访问所需的时间。 RAM的时间,以及处理器数据输入的建立时间。
2013年

2
@supercat作为一个熟悉的示例,可以将主从触发器视为多相时钟的示例。主设备和从设备处于相反的相位,因此如果有反馈,则保持相同的条件:它进入不同的相位。我应该将此添加到答案中以解决问题。
卡兹(Kaz)

2
+1气锁类比。我从未听说过有人用这种方式进行解释,但这是完全合理的。
ajs410

@ ajs410:我喜欢的另一个比喻是发条擒纵机构。摆锤连接到两个臂,每个臂可以允许擒纵装置自由移动,或者在下次到达某个“相位”时将其锁定。为了正确操作,必须调整机械臂,以确保没有时间使机械臂旋转。没有这种约束,该机制将彻底失控。
supercat

2

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

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

在内部,许多沿触发的锁存器可以看作是一对主/从锁存器,它们相互连接,因此只要时钟处于边沿之前的状态,主机就锁存输入,而从时钟触发时从机就锁存主机。在状态之后。馈入两个锁存器的信号必须具有合适的关系,但是如果它们在与锁存器相同的附近产生,则无需过度设计分离量,几乎不超过两个时钟相位相同时所需的分离量。发送到更大的区域。

请注意,尽管边沿触发对时钟很有用,但在其他用途​​上,时钟触发则不太理想。如果没有两个事件共享相同的边沿触发信号,则对于将周期性事件转换为中断有时是有利的。对于共享中断,边沿触发很糟糕,并且在某些情况下,即使没有共享中断,也可能会出现问题,除非有一种方法可以查询中断连线的状态。在选通信号将在与应该锁存的某些信息相同的周期上处于活动状态但该信息具有比选通更长的计算路径的情况下,电平触发也可能是有利的。如果该信息类似于异步存储芯片的地址,则使其在一个时钟周期内的某个时间变得可用可能比让其等到下一个时钟周期开始时更好。


2

要理解为什么首选边沿触发,请想象一个连接到寄存器的8位加法器,不断将1加到寄存器的值上,并通过一个按钮将其连接到寄存器的使能引脚。

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

如果使能引脚对边沿敏感,则每次按下按钮时,寄存器的内容就会精确地增加一次,而不管按下按钮的时间有多长(假设输入已正确地反跳)。对于任何不确定的行为,寄存器的输出将无法及时返回到加法器。


1

就像其他人所说的那样,优势是一个非常具体的时刻。我们都知道,数字电路会遇到毛刺,这是因为门的输出只有少数几个输入达到错误,门的输出是错误的,其他信号也在路上,并且由于路径更长而花费的时间更长(电的传输速度非常快)但3x10 ^ 8 m / s仍然需要一些时间才能绕线。如果我们有一个电平触发单元,它的输出将受到故障的影响。在触发事物边缘时,我们会在很短的时间范围内发生“可能发生的事情”,换句话说,电路只会在特定的明确定义的瞬间改变其状态(电路内部不同导线上的值,包括输出)。时间。请注意短语“即时”

在这一点上,您将不知道称为“时序分析”的内容,但我会作一些解释。制作数字电路时,我们想对其进行仿真,以查看它们的行为以及这种行为是否符合我们的期望。在时序分析中,我们检查信号是否能够在所需时间内到达电路中的特定点。如果延迟时间过长,电路将无法正常工作。通过使用边缘触发电路块而不是电平触发,时序分析变得非常容易,因为我们确切知道电路中什么时候可以发生。这意味着电路的设计也变得更加容易。请记住,在现实世界中,您很少会遇到电平触发的闩锁。


1

尽管其他答案几乎涵盖了您所提问题的所有内容,但为了使事情更清楚,我添加了一些图表和简短说明。

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

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

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

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

在此处输入图片说明

基本上,当CLK信号为高电平时,锁存器U1是透明的,这会将A输入处的逻辑值带到锁存器U1的输出,当CLK信号为低电平时,锁存器U2变为透明,并且新的值为A AND B计算。但是,仅当锁存器U1变为透明(CLK为高)时,此值才会传播到AND门的输入,因此锁存器U1变为透明(CLK为LOW)。这基本上等于说电路现在对边沿敏感(输出值仅在时钟的负边沿改变)。

这避免了前面解释的“ 竞态条件”的问题,这就是为什么级别触发优先于边缘触发的原因。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.