关于亚稳态的避免
如果前端是高速打入的一次有效的数据,那么亚稳态出现的几率要小的多(只有当后级的时钟沿跟前级的时钟沿几乎对其的时候才会发生)。如果前级是慢速时钟,后级是高速时钟,这种几率就高很多了。不管怎么样,这两种情况产生的亚稳态都会对我们的设计带来很大的损害,造成系统的可靠性降低,怎么来避免呢?
握手协议+2级寄存器
我还不知道更好的办法
共同进步!
如果不能同步的话建议使用外挂缓存!
怎么外挂缓存,用FIFO吗
能详细点吗?
我自己也不是蛮清楚。正在学习当中。
这分两种情况:
1。一位脉冲信号时,一般的情况下是使用两级触发器同步,用这种方法来处理脉冲宽度大于时钟宽度的情况一般可行。对于脉冲信号宽度小于时钟宽度时,使用上述方法则会很有可能产生亚稳态,我认为可以将脉冲信号展宽之后再处理;
2。多位数据流信号时,可以使用异步fifo或是使用握手信号同步;
这些处理方式虽说不能完全避免亚稳态,但在实际操作中应该可以应付,如果说是完全避免的话,还要针对具体情况再做分析。
个人的一点看法,还请各位大牛们指正!
信号同步的目的是防止新时钟域中第一级触发器的亚稳态信号对下级逻辑造成影响。简单的同步器由两个触发器串联而成,中间没有其它组合电路。这种设计可以保证后面的触发器获得前一个触发器输出时,前一个触发器已退出了亚稳态,并且输出已稳定。设计中要注意将两个触发器放得尽可能近,以确保两者间有最小的时滞(clock skew)。
一般情况下,FIFO最有效
如果串两个触发器在一起,两触发器用不同的时钟,还是不能保证不出问题
一般来说,对于单bit信号 加两极DFF就行了 虽然不能完全消除亚稳态 但是这是通用的办法 对于多位信号 比如快时钟到慢时钟 用握手信号可以解决 用异步FIFO也可以 但决不能采用对每一位信号都加两级DFF来处理
回复chercules
fifo用于多位数据流,单bit信号使用fifo显然是不实际的。
两极缓冲必然要使用统一时钟。
fjskjdfsdf
共同进步!
打两拍或fifo,dpram
个人认为,亚稳态不能叫消除,只能说减低发生概率,减低到工程可接受范围!
措施无非就是:
1、2级缓冲
2、握手信号(总线或者从高频时钟域进入低频时钟域)
3、异步FIFO(利用Gray Code传输地址信号)
学习学习
谢谢楼上的兄弟!
异步信号的时钟域穿越,可区分为单比特和多比特以及frequently change和infrequently change的情形,分别处理之
说反了吧?
use flip-flop or synchronizer to make sure there is no input hold time violation...
学习中 学习中
