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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: hiwzy

[讨论] 今天华为面试题:异步FIFO读时钟是写时钟的100倍,或者写是读的100倍会出现什么问题?

[复制链接]
发表于 2016-9-18 09:48:52 | 显示全部楼层
回复 8# masaka_xlw

无语……你说的timing,transition等等问题,那是快时钟频率太高时序无法收敛而已,快慢时钟相差倍数并不是这个的问题根源。至于你说的快时钟到慢时钟,指针会漏掉,这是很正常的现象,但是漏掉指针如果导致FIFO功能出错,那就是你FIFO设计出错了。

异步FIFO需要保证空满信号及时报出,满了不要去写,空了不要去读。异步FIFO的空满由于异步传递延时的问题,只会出现提前报出虚空虚满的问题,而不会出现漏掉空满的问题。 满信号的产生是写时钟域下,当前周期写指针与两个写时钟周期前的读指针比较,如果判断满了,当下不会再写,但是读时钟域有可能在这两个周期有读动作,只会造成FIFO实际上被读出成非满状态,而此时即使报出满状态是没有关系的,这个时候就是虚满的状态。空状态与之类似,自己分析一下。


异步FIFO读写频率能不能相差百倍以上,自己写一个FIFO验证一下就完了,不要想当然觉得漏掉指针就一定有问题。
发表于 2016-9-18 17:04:48 | 显示全部楼层
楼上正解,这个问题不知道要问什么。FIFO本身就是要解决这个跨时钟问题。
发表于 2016-9-18 17:34:09 | 显示全部楼层
空读或满写呗
发表于 2016-9-22 03:13:03 | 显示全部楼层
回复 11# 杰克淡定
【1】这主题讨论的是,如果FIFO输入合法的前提下,FIFO的问题。我们至今不会让自己设计的FIFO因为FIFO自身原因指针跑飞,这是致命bug,也不知道你说的“属于正常”是怎么回事。async-FIFO的功能稳定性就在于你对Timing的控制能力,甚至都会涉及到Lib 里面使用哪些cell,满足哪些参数(transition之类的就是在这里使用的,调这个很费时间,有经验的一定会有体会)。想deliver稳定的能在较为极端状态下工作的async-FIFO,远不止几行所谓的RTL,或仅仅看功能性分析。。。【2】如果你说的是,FIFO因为使用不当而指针跑飞,然后再想办法软件容错或硬件容错,给FIFO的content或者PTR做retention之类的。。这显然是另外一码事。。。

另外,工程师应该“淡定“一些,正如你名字一样,别动不动就“无语”,大家不懂得东西都很多。。

cheers!
发表于 2016-9-22 08:52:57 | 显示全部楼层
回复 14# masaka_xlw


  如果你认为快到慢时钟同步过程中,漏掉指针会导致异步FIFO功能出错,实际上只要读写时钟相差两倍就一定会出现遗漏指针,那我请问你:异步FIFO的设计,是否应该限制读写时钟不能超过两倍呢?甚至,即使是相差两倍以内的异步时钟,同步过程中也可能漏掉指针,按照你的逻辑,异步FIFO压根就没法用。
发表于 2016-9-22 09:12:43 | 显示全部楼层
以我有限的fifo知识来看,跨时钟时使用格雷码,并做适当的跨时钟处理,就可以避免所谓的指针丢失问题。而时序问题可就不好讨论了,是另外一个层面的关系,设计的面太多,不同的底层实现,不通的布局都会导致时序问题,这个和两边使用的时钟差别的程度好像没有什么关系。
另外请教,masaka_xlw ,
1)这种设计在架构上应该不会有。之前碰到即使8x clk -> 1x clk的时候,为了稳妥起见,最后的实现方式是:
   8x- > 4x -> 1x。
具体是什么考虑,能否说得详细一些?
发表于 2016-9-22 19:13:18 | 显示全部楼层
不会有问题
发表于 2016-9-23 04:49:15 | 显示全部楼层
回复 15# 杰克淡定 FIFO自身需要保证的东西,和使用FIFO时需要保证的东西,是两码事
发表于 2016-9-23 05:02:36 | 显示全部楼层
回复 16# tao2000

就是类似于常见的结构中,在internal register 和 memory之间加Cache一样。设计的目标是,就FIFO本身而言,必须保证其current_state是 能被正确识别的, 所以为了增加FIFO工作的稳定度和流畅性,不会让两个速度差别太大的domain直接连在FIFO两端,而是通过内部的一个“FIFO Cache”。当然从使用者的角度,他是不知道这种所谓的cascaded FIFO里面还有一个缓冲。统计结果表明,差别为8x 的async-FIFO出问题的几率 要比 两个差别为4x的 async-FIFO出问题的几率 高3~4个数量级, 当然这和使用的工艺有关系,这个结果是40nm的。
发表于 2016-9-23 09:05:09 | 显示全部楼层
回复 19# masaka_xlw

再次请教,fifo的时钟问题可以分为3个部分,1)高速时钟部分X100,2)低速时钟部分X1,3)跨时钟部分。显然我们不是在讨论1,和2的部分,重点是跨时钟部分。对跨时钟部分而言,稳定性的根源应该是亚稳态。亚稳态无法根本消除,只能把发生的概率降低。您所说的X8比X2,X4高几个数量级问题是否指的是这个?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 17:05 , Processed in 0.021392 second(s), 6 queries , Gzip On, Redis On.

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