微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 亚稳态可以消除吗?

亚稳态可以消除吗?

时间:10-02 整理:3721RD 点击:
亚稳态可以消除吗?

只能尽量降低吧,不然也不会有MTBF这个指标了。

不能消除,只能减少它发生的概率

可以消除,用fifo

异步FIFO的读指针跨时钟传到写时钟域也是需要两级同步的,存在亚稳态的风险。

那是个自然现象,没法消除,但是可以采取一些措施来避免带来的不利影响

不能消除。只能降低概率、消除它带来的影响。



   异步fifo跨域传输使用的是格雷码,只有1个bit发生变化,怎么会有亚稳态呢?



   GRAY码和亚稳态扯得上关系吗?用gray码就能消除亚稳态,你也真神了。
还FIFO,异步FIFO里用gray码当指针比较器的输入目的是为了消除亚稳态吗?那还要同步器干嘛?


GRAY码和亚稳态扯得上关系吗?用gray码就能消除亚稳态,你也真神了。
还FIFO,异步FIFO里用gray码当指针比较器的输入目的是为了消除亚稳态吗?那还要同步器干嘛?
我发现我们俩说的可能不是一回事。
如果lz是问已经发生了亚稳态,有没有办法把处于亚稳态的数据变成正确的值,那确实是没有;
如果lz是问设计一个从理论上就没有亚稳态发生的系统,我觉得可以啊,而且就是fifo,这里的指针比较可以这样设计:
实际中我们往往会知道读写时钟的大致关系,我们可以将当前读指针与延时后的写指针进行比较,将当前写指针与延时后的读指针比较,每个指针都持续若干拍,这样fifo中会同时存在好几个指针,读/写指针个数=快时钟/慢时钟的上边界。 fifo效率会降低,但我想可以实现没有亚稳态。
回答你的问题:
“GRAY码和亚稳态扯得上关系吗?”我觉得扯得上吧;
“用gray码就能消除亚稳态,你也真神了。”gray不能消除亚稳态啊(我又没说),我不神;
“还FIFO,异步FIFO里用gray码当指针比较器的输入目的是为了消除亚稳态吗?”gray是因为多bit跨时钟域同步而产生的,应该算是为了应对亚稳态吧;
“那还要同步器干嘛?”在我上面的设计里好像不用特意强调同步器的概念,但是确实需要加register



   FIFO怎么就能没有亚稳态发生?就算你把FIFO看成一个系统,系统里面也会有亚稳态发生的概率,FIFO要做的是把发生了亚稳态后造成的后果给消除掉。DFF的原理就决定了异步的情况,亚稳态无法消除,CK在0变1时,输出的D值,D变化的话,管子不能工作在截至区和饱和区。
   你说的读/写指针延时什么的,说清楚点,你用的读/写指针本身的时钟来做延时还是写/读指针的时钟做延时,如果是用写/读指针的时钟,那就是个同步器,FIFO里很基础的问题;如果你说的用读/写指针本身的时钟来延时,那别说FIFO,连什么是异步都没搞清楚。
  再来说GRAY码和亚稳态的关系,这个问题讨论得太多了,同一时刻gray码只一个位在跳变,在同步时,只可能一位出现亚稳态,比二进制码多位跳变出现亚稳态的概率低了。但这不是要使用gray码的原因,因为就算你一W个bit亚稳态了,同步器后照样基本消除。gray码的作用是采样出错后,指针只可能被误认为迟了一拍(因为指针式单向运动的),后果这是指针比较结果暂时悲观一点,二进制出错指针直接跳飞。
  所以:1.亚稳态无法消除,除非能做出NB的cell
        2.gray码跟亚稳态扯不上关系


啊,你写的好长,我都有点震惊了。其中不乏你恨铁不成钢的言辞啊,感谢你认真的态度和对fifo细致的讲解。但是,正如我上面所说的,是不是我们俩讨论的出发点不一样啊。先不说亚稳态能不能消除,请你先回答:
在一个异步系统里,能不能做一个cell,在理论上保证传输不出错?当然,我是特指跨时钟域的问题能不能得到解决。

这个问题好比是薛定谔的猫啊

http://bbs.ednchina.com/BLOG_ARTICLE_254494.HTM 可以参考下这篇文章,写的不错。

异步FIFO在信号同步时采用两个寄存器级连。这样第一个寄存器一定会发生亚稳态么。不满足保持时间吧。还有就是两级级连中间会丢很多数据啊。这些都不用考虑么。

除非完全同步并满足时序关系,不然亚稳态一定会存在,只是利用一些办法降低亚稳态带来的问题与风险

可以消除

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top