在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5303|回复: 6

[求助] 异步FIFO指针同步的疑问

[复制链接]
发表于 2011-10-10 17:10:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在判断空满标志位时,会先把写指针同步到读时钟域,同时把读指针同步到写时钟域,这样做的原因是什么?
为什么不能直接先将读指针和写指针比较,得出空满标志位之后,再将这空满标志位分别同步?
发表于 2011-10-10 19:42:09 | 显示全部楼层
同样是同步,都是用两级flip flop,先做指针同步再得出空满标志的好处在于,跨时钟域的风险仅仅存在于指针上,异步fifo的指针均采用格雷编码,因此最坏的情况是指针错误(应该变的那一位没有变)而导致fifo的深度动态缩小了。但是若先判断空满标志再做同步,跨时钟域的风险则在空满标志上,最坏的情况是空满标志被同步后错误,有可能导致数据写飞了,即满了但仍然认为没满继续写,或者读出无效数据,即空了仍然认为不空继续读。
发表于 2011-10-10 20:12:31 | 显示全部楼层
不是一个时钟域的信号不能直接比,会出亚稳态。
一定要过度到同一个时钟后才能比。
发表于 2013-1-27 21:21:10 | 显示全部楼层
读指针是在读时钟域产生,写指针是在写时钟域产生,两者受到不同时钟控制,怎么可能拿来比较。
发表于 2013-1-27 22:36:42 | 显示全部楼层
楼主想问题能够多问个为什么是很好的。而不是简单照做前人的设计。
楼上几位说的都没错,异步fifo用来做挎时钟域变换,一般还可以具体情况具体分析,例如一次缓冲多少帧数据后读出,这样控制出错的概率。
发表于 2017-7-9 16:31:02 | 显示全部楼层
回复 2# rrrrrsheed
假如异步比较得到的空满标志是稳定不变的,那么两级DFF同步时不会出现亚稳态。假如某时刻空满标志发生变化,两级DFF同步有两种情况。一种是没有发生亚稳态或者发生了亚稳态但是稳定时的值是正确的值(变化之后的空满标志)。另外一种是亚稳态稳定之后是变化之前的空满标志,这样就会导致标志位的错误。但是,空满标志的产生是通过象限法确定的,实际上离真正的空满还有一定距离,在下一个周期,再次两级DFF同步,就可以得到正确的空满标志,不会过读或者过写。
发表于 2017-7-9 16:32:36 | 显示全部楼层

假如空满标志是稳定不变的,那么两级DFF同步时不会出现亚稳态。假如某时刻空满标志发生变化,两级DFF同步有两种情况。一种是没有发生亚稳态或者发生了亚稳态但是稳定时的值是正确的值(变化之后的空满标志)。另外一种是亚稳态稳定之后是变化之前的空满标志,这样就会导致标志位的错误,但是,空满标志的产生是通过象限法确定的,实际上离真正的空满还有一定距离,在下一个周期,再次两级DFF同步,就可以得到正确的空满标志,不会过读或者过写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 01:37 , Processed in 0.019340 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表