FPGA 亚稳态 双锁存器法

当今的数字电路都是围绕FPGA/CPLD来设计的,首选的方案时采用同步时序电路,也称作单时钟系统设计,电路中所有触发器的时钟输入共享同一个时钟,每个触发器的状态变化都是时钟的上升沿(下降沿)完成的,与时钟脉冲信号同步。

但在实际电路中,纯粹单时钟系统信号设计不能完成信号在不同时钟域的传递,跨时钟域的异步时钟设计是不可避免的,异步时序设计中有多个独立的时钟源,不同时钟源存在信号频率和香味的差异,当数据信号通过两个时钟域的交界处时,将分别由两个时钟来控制信号的值。如果两个时钟信号的敏感沿非常接近并超过了允许的额度,则将出现数据信号的不稳定,即电路陷入亚稳态态,也称为同步失败。

1.亚稳态的产生

触发器是数字电路中最常用的基本器件,内部包含两个双稳态元件,除了两个稳态状态“0”和“1”之外,还有一个状态,满足双稳态元件的方程,即当两个反相器处于中间值的第三个半稳态——亚稳态,反相器在非逻辑范围的反馈系数是非常大的。一旦离开这个点,就会很快进入逻辑值范围(稳态)。

因为触发器内部的数据形成需要一定的时间,如果不满足建立和保持时间,触发器将进入亚稳态,其输出在经过一段时间的状态后才能随机地到达稳定到0或1。在稳定期间,触发器输出一些中间级电平,或者处于振荡状态,并且这种无用的输出电平可以沿各个信道上的触发器级联传播下去,导致其他信号逻辑混乱。

信号在跨时域时应特别注意亚稳态问题。一个信号在过渡到另外一个时钟域时,如果仅仅用一个触发器将其锁存,那么采样的结果可能是亚稳态。

2.降低亚稳态的方法(两级锁存器)

两级锁存就是信号从一个时钟进入到另外一个时钟之前,将该信号用两个触发器连续锁存两次,也称为双锁存器法, 这样作可以防止由于异步信号输入对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面的逻辑中。理论研究表明这种设计可能将亚稳态出现的几率降低到一个很小的程度,但这种方法同时对输入信号带来了一级延时。

两级触发器在两个异步时钟周期相差不大的情况下比较合适。在信号从快时钟域向慢时钟域过渡的时候,如果信号变化太快,慢时钟可能无法对该信号进行正确的采样,导致采样失败。使用两级触发器时,应使原始信号保持足够长的时间,以便另外一个触发器的时钟对其进行采样。

你可能感兴趣的:(FPGA)