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

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

3天内不再提示

异步FIFO空满判断延迟

电子设计 来源:工程师曾玲 作者:杭州卿萃科技FPG 2019-10-03 13:19 次阅读

由于设计的时候读写指针用了至少两级寄存器同步,同步会消耗至少两个时钟周期,势必会使得判断空或满有所延迟,这会不会导致设计出错呢?

异步FIFO通过比较读写指针进行满空判断,但是读写指针属于不同的时钟域,所以在比较之前需要先将读写指针进行同步处理。

将写指针同步到读时钟域再和读指针比较进行FIFO空状态判断,因为在同步写指针时需要时间,而在这个同步的时间内有可能还会写入新的数据,因此同步后的写指针一定是小于或者等于当前实际的写指针,所以此时判断FIFO为空不一定是真空,这样更加保守,一共不会出现空读的情况,虽然会影响FIFO的性能,但是并不会出错,同理将读指针同步到写时钟域再和写指针比较进行FIFO满状态判断,同步后的读指针一定是小于或者等于当前的读指针,所以此时判断FIFO为满不一定是真满,这样更保守,这样可以保证FIFO的特性:FIFO空之后不能继续读取,FIFO满之后不能继续写入。总结来说异步逻辑转到同步逻辑不可避免需要额外的时钟开销,这会导致满空趋于保守,但是保守并不等于错误,这么写会稍微有性能损失,但是不会出错。

大多数情形下,异步FIFO两端的时钟不是同频的,或者读快写慢,或者读慢写快,慢的时钟域同步到快的时钟域不会出现漏掉指针的情况,但是将指针从快的时钟域同步到慢的时钟域时可能会有指针遗漏。以读慢写快为例,进行满标志判断的时候需要将读指针同步到写时钟域,因为读慢写快,所以不会有读指针遗漏,同步消耗时钟周期,所以同步后的读指针滞后(小于等于)当前读地址,所以可能满标志会提前产生,满并非真满。

进行空标志判断的时候需要将写指针同步到读指针 ,因为读慢写快,所以当读时钟同步写指针的时候,必然会漏掉一部分写指针,我们不用关心那到底会漏掉哪些写指针,我们在乎的是漏掉的指针会对FIFO的空标志产生影响吗?

比如写指针从0写到10,期间读时钟域只同步捕捉到了3、5、8这三个写指针而漏掉了其他指针。当同步到8这个写指针时,真实的写指针可能已经写到10 ,相当于在读时钟域还没来得及觉察的情况下,写时钟域可能偷偷写了数据到FIFO去,这样在判断是空的时候会出现不是真正空的情况,漏掉的指针也没有对FIFO的逻辑操作产生影响。

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

    关注

    31

    文章

    5327

    浏览量

    120056
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43562
  • 指针
    +关注

    关注

    1

    文章

    480

    浏览量

    70517
收藏 人收藏

    评论

    相关推荐

    求助 FPGA 异步FIFO IP核

    各位大神: 异步FIFO 信号为什么都是高?描述如下:always @(posedge DFIFO_clk or negedge rst_n )beginif(!rst_n)be
    发表于 07-01 01:51

    异步FIFO指针同步产生的问题

    如图所示的异步FIFO,个人觉得在读写时钟同步时会产生两个时钟周期的延时,如果读写时钟频率相差不大,某一时刻读写指针相等,当写指针同步到读模块时会产生延时,实际同步到读模块的写指针是两个时钟周期之前的,这样就不会产生
    发表于 08-29 18:30

    关于异步fifo里面读写指针同步器的问题,求教

    这是网上比较流行的一个异步fifo方案,但是fifo判断不是应该是立即的吗,加上同步器之后
    发表于 07-24 16:25

    【锆石A4 FPGA试用体验】fifo实验(2)-异步fifo

    本帖最后由 630183258 于 2016-11-5 17:31 编辑 一、异步fifo的原理图管脚定义:data输入数据q输出数据wrreq写使能信号,高电平有效wrfull写数据标志位
    发表于 11-05 16:57

    关于异步fifo的安全问题:

    xilinx均采用。8. 也就是说,如果双口RAM真空之前报,则延迟造成的rdreq,异步fifo仍然可以正确响应9. 双开RAM真之前
    发表于 03-05 10:40

    高速异步FIFO的设计与实现

    本文主要研究了用FPGA 芯片内部的EBRSRAM 来实现异步FIFO 设计方案,重点阐述了异步FIFO 的标志信号——/
    发表于 01-13 17:11 40次下载

    如何解决异步FIFO跨时钟域亚稳态问题?

    跨时钟域的问题:前一篇已经提到要通过比较读写指针来判断产生读和写信号,但是读指针是属于读时钟域的,写指针是属于写时钟域的,而异步FIFO
    的头像 发表于 09-05 14:29 6024次阅读

    异步FIFO用格雷码的原因有哪些

    异步FIFO通过比较读写地址进行判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理,将写地址同步到读时钟域再
    的头像 发表于 08-04 14:05 4400次阅读

    异步FIFO之Verilog代码实现案例

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

    异步fifo详解

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

    FIFO设计—异步FIFO

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

    FIFO相关信号及状态的原理说明

    FIFO(First In First Out)是异步数据传输时经常使用的存储器。该存储器的特点是数据先进先出(后进后出)。
    发表于 05-29 15:35 7343次阅读
    <b class='flag-5'>FIFO</b>相关信号及<b class='flag-5'>空</b><b class='flag-5'>满</b>状态的原理说明

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

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

    请问异步FIFO的溢出操作时怎么样判断的?

    请问异步FIFO的溢出操作时怎么样判断的? 异步FIFO是数据传输的一种常用方式,在一些储存器和计算机系统中,常常会用到
    的头像 发表于 10-18 15:28 1585次阅读

    FIFO漫谈之异步FIFO信号的产生位置

    格雷码的事聊完了,后面顺理成章的就是读写通路模块的设计。不过在读写控制通路之前还要明确下另一个问题,就是信号的产生位置的事情。
    的头像 发表于 03-19 13:37 607次阅读
    <b class='flag-5'>FIFO</b>漫谈之<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b><b class='flag-5'>空</b><b class='flag-5'>满</b>信号的产生位置