集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3821|回复: 5

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

[复制链接]
ccs 发表于 2010-6-20 13:39:44 | 显示全部楼层 |阅读模式
读指针和写指针随着fifo的深度的不同而有所变化,那么两者是用格雷码也需要同步才能产生空满信号标志,那么两者是如何同步的呢?是不是每一位设计一个同步装置呢?谢谢!
 楼主| ccs 发表于 2010-6-20 13:40:02 | 显示全部楼层
当然是指针的每一位都需要对应的同步电路,因为格雷码每次只有一位翻转,所以不会存在指针输出不一致的问题(多位的亚稳态退出时间可能不一样)。
 楼主| ccs 发表于 2010-6-20 13:40:13 | 显示全部楼层
不是。由于读写时钟异步引起的亚稳态问题是无法消除的,值能尽可能减少它发生的概率,比如使用gray码。格雷码的作用不是同步而是减小亚稳态发生的概率
 楼主| ccs 发表于 2010-6-20 13:40:27 | 显示全部楼层
faint,格雷码的作用是保证每次只有一位的信息翻转,与亚稳态发生概率没有任何关系。减少亚稳态传播的手段是采用基于多级串联触发器的同步电路——一般认为在N个时钟周期内第N+1级触发器进入亚稳态的概率将大大降低(即N越大概率越低)。实际应用中通常采用两级串联触发器作同步电路,少数苛求可靠性的应用会采用更多级的设计。

格雷码主要用于并行信号的传递。如果采用普通二进制编码,那么当指针变化时多个比特位将可能发生信息翻转,由于亚稳态的进入/退出时间可能不一致,这些翻转的比特位在经过并行同步电路之后会在某个时钟周期输出错误的指针值。而格雷码只有一位信息翻转,也就是说只有一位可能会进入/退出亚稳态,因此不会产生类似的错误。
 楼主| ccs 发表于 2010-6-20 13:40:50 | 显示全部楼层
减小信号进入亚稳态的主要措施是串接更多的触发器,因为后一级触发器进入亚稳态的概率(或者说前一级触发器维持亚稳态的概率)随时间的增加而大大降低,因此每增加一级触发器,就多出了一个时钟周期的时间。
 楼主| ccs 发表于 2010-6-20 13:41:03 | 显示全部楼层
gray码也会产生亚稳态,因为gray只有一位变化,当产生亚稳态时重新同步的指针可能是前一个值或者是当前值,这样当fifo同时读写的时候空满标记可能会提早产生,也就是实际fifo不空却产生空标记,或者fifo不满却产生满标记。但这样并不会造成数据错误。但如果计数器不是gray的话,指针计数器可能出现多位变化的情况,当同步的时钟刚好采到变化的边沿时,就会输出一个错误的值,可能既不是计数器的前一个值也不是当前值,这样fifo就进入了错误的状态了
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-23 15:19 , Processed in 0.079116 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表