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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 24020|回复: 48

问一个异步fifo中读指针和写指针同步的问题

[复制链接]
发表于 2007-1-12 20:18:08 | 显示全部楼层 |阅读模式

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

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

x
读指针和写指针随着fifo的深度的不同而有所变化,那么两者是用格雷码也需要同步才能产生空满信号标志,那么两者是如何同步的呢?是不是每一位设计一个同步装置呢?谢谢!
发表于 2007-1-12 22:15:46 | 显示全部楼层


原帖由 windzjy 于 2007-1-12 20:18 发表
读指针和写指针随着fifo的深度的不同而有所变化,那么两者是用格雷码也需要同步才能产生空满信号标志,那么两者是如何同步的呢?是不是每一位设计一个同步装置呢?谢谢!




当然是指针的每一位都需要对应的同步电路,因为格雷码每次只有一位翻转,所以不会存在指针输出不一致的问题(多位的亚稳态退出时间可能不一样)。
发表于 2007-1-12 22:36:39 | 显示全部楼层


原帖由 windzjy 于 2007-1-12 20:18 发表
读指针和写指针随着fifo的深度的不同而有所变化,那么两者是用格雷码也需要同步才能产生空满信号标志,那么两者是如何同步的呢?是不是每一位设计一个同步装置呢?谢谢!


不是。由于读写时钟异步引起的亚稳态问题是无法消除的,值能尽可能减少它发生的概率,比如使用gray码。格雷码的作用不是同步而是减小亚稳态发生的概率

[ 本帖最后由 wice3 于 2007-1-13 13:52 编辑 ]
发表于 2007-1-12 23:45:36 | 显示全部楼层


原帖由 wice3 于 2007-1-12 22:36 发表
不是。由于读写时钟异步引起的亚稳态问题是无法消除的,值能尽可能减少它发生的概率,比如使用gray码。格雷码的作用不是同步而是消除亚稳态发生的概率




faint,格雷码的作用是保证每次只有一位的信息翻转,与亚稳态发生概率没有任何关系。减少亚稳态传播的手段是采用基于多级串联触发器的同步电路——一般认为在N个时钟周期内第N+1级触发器进入亚稳态的概率将大大降低(即N越大概率越低)。实际应用中通常采用两级串联触发器作同步电路,少数苛求可靠性的应用会采用更多级的设计。

格雷码主要用于并行信号的传递。如果采用普通二进制编码,那么当指针变化时多个比特位将可能发生信息翻转,由于亚稳态的进入/退出时间可能不一致,这些翻转的比特位在经过并行同步电路之后会在某个时钟周期输出错误的指针值。而格雷码只有一位信息翻转,也就是说只有一位可能会进入/退出亚稳态,因此不会产生类似的错误。
 楼主| 发表于 2007-1-13 10:01:36 | 显示全部楼层
同意frankrick的观点,也就是说如果有很多位同时翻转的话,空满标志产生错误的可能性会很大,而使用格雷码,只有一位变化,那么同步的时候只有一位可能进入亚稳态,这样出现错误的概率会很小,是不是可以这样理解呢?
发表于 2007-1-13 12:29:33 | 显示全部楼层


原帖由 frankrick 于 2007-1-12 23:45 发表



faint,格雷码的作用是保证每次只有一位的信息翻转,与亚稳态发生概率没有任何关系。减少亚稳态传播的手段是采用基于多级串联触发器的同步电路——一般认为在N个时钟周期内第N+1级触发器进入亚稳态的概率 ...


我的回答确实不妥,当时的主要意思是想说gray码不是用来做同步的,是为了改善由于读写时钟异步所引起的亚稳态,而亚稳态引起对空满的错误判断概率问题。 当时有点心不在焉,不好意思啦,:p。我已经对自己的回复进行了修正。有不妥的地方请继续指出。
发表于 2007-1-13 14:50:55 | 显示全部楼层
学习一下,
发表于 2007-1-13 22:47:48 | 显示全部楼层


原帖由 wice3 于 2007-1-13 12:29 发表
我的回答确实不妥,当时的主要意思是想说gray码不是用来做同步的,是为了改善由于读写时钟异步所引起的亚稳态,而亚稳态引起对空满的错误判断概率问题。 当时有点心不在焉,不好意思啦,:p。我已经对自己的回 ...




嗯....减小信号进入亚稳态的主要措施是串接更多的触发器,因为后一级触发器进入亚稳态的概率(或者说前一级触发器维持亚稳态的概率)随时间的增加而大大降低,因此每增加一级触发器,就多出了一个时钟周期的时间。
发表于 2007-1-18 00:12:52 | 显示全部楼层

回复 #3 wice3 的帖子

gray码也会产生亚稳态,因为gray只有一位变化,当产生亚稳态时重新同步的指针可能是前一个值或者是当前值,这样当fifo同时读写的时候空满标记可能会提早产生,也就是实际fifo不空却产生空标记,或者fifo不满却产生满标记。但这样并不会造成数据错误。但如果计数器不是gray的话,指针计数器可能出现多位变化的情况,当同步的时钟刚好采到变化的边沿时,就会输出一个错误的值,可能既不是计数器的前一个值也不是当前值,这样fifo就进入了错误的状态了
 楼主| 发表于 2007-1-18 09:37:24 | 显示全部楼层

回复 #9 ILvM 的帖子

这样解释更为简单易懂,就是说即使错也只错一位,但这一位并不会对电路有太大的影响
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-3-29 07:24 , Processed in 0.030884 second(s), 9 queries , Gzip On, Redis On.

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