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

    文章

    388

    浏览量

    43664
  • 信号
    +关注

    关注

    11

    文章

    2791

    浏览量

    76746
  • 时钟域
    +关注

    关注

    0

    文章

    52

    浏览量

    9535
  • 异步FIFO
    +关注

    关注

    0

    文章

    20

    浏览量

    8355
收藏 人收藏

    评论

    相关推荐

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

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

    程序员面试问题总结

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

    异步FIFO结构及FPGA设计

    首先介绍异步FIFO 的概念、应用及其结构,然后分析实现异步FIFO的难点问题及其解决办法; 在传统设计的基础上提出一种新颖的电路结构并对其进行综合仿真和FPGA 实现。
    发表于 04-16 09:25 46次下载

    高速异步FIFO的设计与实现

    本文主要研究了用FPGA 芯片内部的EBRSRAM 来实现异步FIFO 设计方案,重点阐述了异步FIFO 的标志信号——空/满状态的设计思路,并且用VHDL 语言实现,最后进行了仿真验
    发表于 01-13 17:11 40次下载

    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 3866次阅读
    <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 8631次阅读
    <b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>的设计分析及详细代码

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

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

    基于异步FIFO结构原理

    在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO(Firstln F irsto ut)是解决这个
    发表于 02-07 14:22 0次下载
    基于<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>结构原理

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

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

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

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

    异步fifo详解

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

    FIFO设计—异步FIFO

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

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

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