主要如下所示:
·亚稳态的产生与传输
·亚稳态的恢复时间与平均无故障时间
·减小亚稳态的建议
·多时钟切换电路
1、亚稳态的产生与传输
交叉耦合反相器、SR锁存器、D锁存器和D触发器等存储元件有两个稳定的状态,即0和1,也就是能存储0和1这两个状态。那么亚稳态是什么?既不是0又不是1的状态。在时钟有效沿到来的前后,触发器的数据端的数据不稳定导致违反触发器的建立时间或者保持时间,引起触发器输出处于未知状态,这种未知状态称为亚稳态。
亚稳态用一个经典的图表示如下所示:
山顶就是亚稳态,这是数字逻辑中存在的一种状态,在这个状态下,触发器/寄存器的输出可能为毛刺或者某一未定义的电压值(电压值在高低电平之间波动),反正基本不是正确的输入值。亚稳态是器件的固有属性,不能消除,只能从概率上减少这一状态的发生。
2、亚稳态的恢复时间与平均无故障时间
亚稳态除了可以用上面的那个图表示外,还可以用下面的时序图表示:
红色段就是处于亚稳态的输出段。我们再来看看这幅图,本来经过一定的延时值tco之后就会输出正确的稳定的电平值;由于产生了亚稳态,亚稳态持续了tMET时长后,恢复到稳定的电平状态(稳定,但不一定是正确的!),这段持续的时间叫做亚稳态的恢复时间,一般情况下这段时间不会超过一个或者两个时钟周期(取决于触发器的性能)。如果亚稳态持续时间过长(超过一个或者两个时钟周期),就有可能被下一级的触发器捕获,导致下一级触发器也处于亚稳态,这就是亚稳态的传播现象,这是很严重的。
触发器处于亚稳态可能会使系统产生故障,故障发生率的倒数叫做平均故障时间(MTBF,mean time before failure),平均故障时间越长,系统越稳定。在这里,我们不讨论平均故障时间怎么来的,我们了解平均故障时间的公式是什么,然后与哪些因素有关就OK了:
也就是说,故障发生的几率为:
其中:
·C2是一个与器件有关的常数,器件的建立时间和保持时间越小,C2越小。(--->使用更快的触发器)
·C1也是一个与器件相关的常数。
·fclk1是前级的时钟,fclk2是后一级电路的时钟(这里涉及到时钟域了),反正就知道与时钟有关就可以了。(--->降低系统的工作频率)
·tslack是时序裕量,可以理解为触发器喘息的时间。(--->使用同步器)
由此可见,时钟越快,越容易发送故障。
3、减小亚稳态的建议
亚稳态是不可避免的,但是我们可以减少亚稳态的发生和传播,从上面的内容中可以,我们有以下减少亚稳态的建议
·使用同步器;同步器在跨时钟域中会进行讲解,使用同步器可以减少采样异步信号导致的亚稳态。
·在满足要求的情况下,降低时钟频率。从上面的式子中可以知道,降低时钟频率,可以降低故障的发生率。
·采用反应更快的触发器。上面的式子中的常数跟触发器有关,如果有更快的触发器,同样可以减少亚稳态的产生。
·减少使用或者避免使用那种信号翻转时间很长的输入信号,如果翻转时间长,那么进入器件未定义的电平的时间也很长,容易导致亚稳态的产生。
4、多时钟切换电路
时钟在切换的时候难免会产生毛刺,这里就来聊聊如何把这个时钟切换产生的毛刺减少(甚至消灭)的典型电路,而不是要求时钟切换的时候寄存器要处于复位的情况(当然寄存器复位也是双重保险的措施)。
首先,我们来看看毛刺产生的根源:在clk1的高电平的时候进行切换,如果此时clk2正好为高电平,这时候clk2和clk1的高电平可能占空比变大也可能使占空比变小,总的来说有可能产生毛刺。在clk1的高电平的时候进行切换,如果此时clk2正好为低电平,那么肯定产生毛刺,因此这不能这样切换。从Clk2切向clk1也是这么一个原理。于是我们就有下面的结论:
电平相反的时候切换时钟,肯定有毛刺;电平相同的时候,有可能产生毛刺。这里我们关注低电平上产生的毛刺,同为高电平的时候切换,有可能产生毛刺,影响了上升沿,因此我们就选择在两者都是低电平的时候进行切换。根据这个选择方案,切换过程就是:A 先是选择信号改变(即进行时钟切换),B 然后clk1(或clk2)为低时停掉clk1(或clk2)的选择 ,C 接着在clk2(或clk1)为低时打开clk2((或clk21)的选择端,D 最后进行正常工作,完成切换。
至于这么设计这个电路呢?一个思路是使用状态机,但是这似乎不太现实,要是使用状态机,还得再要一个更高频率时钟最为状态寄存器的驱动时钟。除了状态机之外,前辈们给我们设计了这样的一个电路,使用负边沿触发的寄存器,设计的电路如下所示:
如何构思这个电路,下面这个链接的博客讲得挺好的了:
http://electron64.blog.163.com/blog/static/106033970201205103533471/
我就来分析这个电路是怎么工作的吧,反正我们大多数是用而已:
当然,这个是波形是没有输出延时和转换延时的。从波形图里面可以看出,这个时钟切换电路理论上是没有毛刺的。