0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

异步FIFO相关面试问题

CHANBAEK 来源: FPGA的现今未 作者: FPGA的现今未 2023-10-01 10:11 次阅读

又到了一年一度的招聘季节,有粉丝私信问了一个问题,一个关于以前流传出来的大厂面试的题目,个人觉得算是比较经典的题目,也是工作中经常遇到的一个问题,所以准备写一篇回答下。

题目内容

有一个数据需要从A时钟域同步到B时钟域,数据位宽是512bit的,但是考虑到其他原因,目前只允许使用256bit异步FIFO(已经考虑空度满写的保护),因此设计了一个方案,如下图所示,请问该方案有什么问题?如何优化?

图片

分析

通过上图我们可以看到,512bit的数据,被分成了2组256bit的数据,采用同一个写使能信号写入到2个不同的异步FIFO中。在读这一侧,通过一个FIFO的空信号,同时将2个FIFO中的数据读出来。乍一看起来好像没有什么问题,且仿真的话,也不会有问题。但是在实际芯片中却不是这么回事。主要的错误就是误认为完全相同的异步FIFO在空、满信号状态上表现也一样。

我们知道异步FIFO的空满信号是通过格雷码地址经过转换后比较得到的,而格雷码在穿越异步时钟域的时候,由于亚稳态,有可能造成穿越的结果出现延迟。如下图所示,在t1时刻,写地址的格雷码已经由00变成01,即写入了一个数据。读时钟r_clk在采样的过程中,由于亚稳态写地址同步后,可能得到01,或者00,如果得到01,那么在t2时刻empty信号就可以拉低了,如果是00,那么在t2时刻empty不会拉低,需要在t3时刻拉低。

图片

一句话总结,对于2个完全一样的异步FIFO,即使同时写入数据,在读时钟域,empty信号的产生也是不一样的,同样,在写时钟域,full信号的产生也是不一样的。

解决方案

这个问题的解决方案其实很简单,写入测,ready_o信号的产生不能只使用fifo_1的满信号,也要使用fifo_2的满信号,即ready_o = full1_n & full2_n(full低电平有效)。同理,在读数据的时候,不能只看fifo_1是否空,必须是2个fifo都不空的时候才可能读数据。

图片

总结

其实上面这个题目在实际项目是经常用到的。2个FIFO被同时写入的时候,默认为2个FIFO是同时不空的,通过上面的分析,我们知道异步FIFO不是这么回事,那同步FIFO呢?理论上来讲,同步FIFO是同时不空的。但是不同厂家设计的FIFO,其特性可能也有差异,从代码的可移植性和可靠性来讲,也不建议采用一个FIFO为空就推断另一个FIFO也为空的方案,必须严格遵守:使用哪个FIFO,就要使用它的空、满信号。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43069
  • 信号
    +关注

    关注

    11

    文章

    2640

    浏览量

    75389
  • 时钟域
    +关注

    关注

    0

    文章

    49

    浏览量

    9455
  • 异步FIFO
    +关注

    关注

    0

    文章

    20

    浏览量

    8309
收藏 人收藏

    评论

    相关推荐

    面试问题-难忘的面试经历

    是因为我在处理一个具体的技术问题时的方法有问题。稍后我会讨论我在那次面试时遇到的问题。这些年我看到了很多关于工程师面试问题的文章。有一些是棘手的智力问题,会让你感到极其困扰。其它一些是基本技能的考核
    发表于 09-21 09:41

    程序员面试问题总结

    面试问题总结 20180516
    发表于 07-26 17:21

    Camera Link接口的异步FIFO设计与实现

    介绍了异步FIFO在Camera Link接口中的应用,将Camera Link接口中的帧有效信号FVAL和行有效信号LVAL引入到异步FIFO的设计中。分析了FPGA中设计
    发表于 07-28 16:08 32次下载

    异步FIFO结构及FPGA设计

    摘要:首先介绍异步FIFO的概念、应用及其结构,然后分析实现异步FIFO的难点问题及其解决办法;在传统设计的基础上提出一种新颖的电路结构并对其进行
    发表于 06-20 12:46 3688次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>结构及FPGA设计

    异步FIFO结构及FPGA设计

    异步FIFO结构及FPGA设计,解决亚稳态的问题
    发表于 11-10 15:21 4次下载

    异步FIFO的设计分析及详细代码

    本文首先对异步 FIFO 设计的重点难点进行分析,最后给出详细代码。 一、FIFO简单讲解 FIFO的本质是RAM, 先进先出 重要参数:fifo
    发表于 11-15 12:52 8054次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>的设计分析及详细代码

    基于FPGA的异步FIFO设计方法详解

    在现代电路设计中,一个系统往往包含了多个时钟,如何在异步时钟间传递数据成为一个很重要的问题,而使用异步FIFO可以有效地解决这个问题。异步FIFO
    发表于 07-17 08:33 7932次阅读
    基于FPGA的<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>设计方法详解

    Java面试问题如何给出100分回答详细课程说明

    本文档的主要内容详细介绍的是Java面试问题如何给出100分回答详细课程说明。
    发表于 03-20 08:00 3次下载
    Java<b class='flag-5'>面试问</b>题如何给出100分回答详细课程说明

    中国移动面试问题汇总下载

    中国移动面试问题汇总下载
    发表于 05-21 10:20 0次下载

    华为 LTE 网络面试问题汇总下载

    华为 LTE 网络面试问题汇总下载
    发表于 05-21 10:05 0次下载

    异步FIFO之Verilog代码实现案例

    同步FIFO的意思是说FIFO的读写时钟是同一个时钟,不同于异步FIFO异步FIFO的读写时钟
    发表于 11-01 09:58 1222次阅读

    异步fifo详解

    异步fifo详解 一. 什么是异步FIFO FIFO即First in First out的英文简称,是一种先进先出的数据缓存器,与普通存储
    的头像 发表于 12-12 14:17 3003次阅读

    FIFO设计—异步FIFO

    异步FIFO主要由五部分组成:写控制端、读控制端、FIFO Memory和两个时钟同步端
    发表于 05-26 16:17 1050次阅读
    <b class='flag-5'>FIFO</b>设计—<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>

    异步FIFO-格雷码

    很多人在面试时被问到为什么异步FIFO中需要用到格雷码,可能大部分的答案是格雷码可以消除亚稳态。这种回答比较模糊,今天我们就针对这个来深入探讨一下。
    的头像 发表于 08-26 14:20 636次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>-格雷码

    同步FIFO异步FIFO的区别 同步FIFO异步FIFO各在什么情况下应用

    同步FIFO异步FIFO的区别 同步FIFO异步FIFO各在什么情况下应用? 1. 同步
    的头像 发表于 10-18 15:23 1016次阅读