使用异步复位(reset)时如何避免毛刺(glitch)
1.毛刺(glitch)
对于一个简单的与门、或门电路,当输入信号同时向相反的逻辑电平跳变时,可能会产生毛刺。譬如,assign rst = rst_a & rst_b;当rst_a 从1-->0(或从0-->1),同时rst_b从0-->1(或从1-->0)时,就可能产生一个向上的尖峰脉冲(也就是我们所说的毛刺)。同样,对于一个或门来说,若输入信号同时向相反的逻辑电平跳变,也可能会产生毛刺,不过这里产生的是向下的尖峰脉冲而不是向上的。
是否产生毛刺取决于输入信号之间跳变的相对速度,但这一般是不可预知的。所以,我们应该尽量避免使用可能产生毛刺的逻辑,或者虽然会产生毛刺,但对负载电路没有影响的逻辑。
2.异步复位(reset)
在数字电路设计中,我们经常会使用异步reset将电路复位到初始状态。异步reset信号可能是由一些相关信号经过组合逻辑而生成的,譬如与门、或门等。我们知道,或门会产生向下跳变的glitch(而不会产生向上跳变的glitch),与门会产生向上跳变的glitch(而不会产生向下跳变的glitch)。所以,若异步reset信号是高电平有效的,使用或门将相关的信号连接起来可以避免glitch;同样,若异步reset信号是低电平有效的,则使用与门,也可避免glitch。当然,其前提是生成这个异步reset的所有相关信号本身都是没有glitch的。
3.结论:若异步reset是高电平有效,则使用或门;若是低电平有效,则使用与门。