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

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

3天内不再提示

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

路科验证 来源:芯时代青年 2024-03-19 13:37 次阅读

格雷码的事聊完了,后面顺理成章的就是读写通路模块的设计。不过在读写控制通路之前还要明确下另一个问题,就是空满信号的产生位置的事情。

这个问题在面试时的问法是:空满信号分别在哪个时钟域产生?

众所周知,信号跳变时打两拍(或者三拍)能够消除亚稳态,但是信号从亚稳态恢复的时候不一定恢复成0还是1。而因为格雷码每次变化1比特的特性,可以保证即使恢复错了也不过是错成之前的值罢了。

当然了即使没有亚稳态误恢复的问题,读写指针传到对面的时钟域去,总归会延迟好几拍的,所以在写时钟域看到的读指针是落后于实时读指针的,同理读时钟域看到的写指针也是落后于真实的写指针的。

910c4d72-e5ae-11ee-a297-92fbcf53809c.png

那么来分析下滞后的影响,令fifo_cnt为fifo中已有的数据量计数值。

1.waddr准确,raddr滞后,那么计算得到fifo_cnt会偏大。如waddr=7,raddr=4,滞后的raddr=1,计算得到fifo_cnt为6,而实际上fifo_cnt为3;

2.waddr滞后,raddr准确,那么计算得到fifo_cnt会偏小。如waddr=7,raddr=4,滞后的waddr=5,计算得到fifo_cnt为1,而实际上fifo_cnt为3;

进一步的,如果fifo_cnt计算偏大了,对于读和写来说会有什么影响呢?读可能发生功能问题,写可能发生性能问题。读可能发生功能问题在于,本来你里面没数了,结果fifo_cnt算的偏大还以为有数,有数就能读一读就出错了。写可能发生性能问题在于,本来你里面没满呢,结果fifo_cnt算的偏大还以为满了,满了就不能写本来能写的写不进去那性能不就降下来了么。

如果fifo_cnt计算偏小了,对于读和写来说会有什么影响呢?读可能发生性能问题,写可能发生功能问题。读可能发生性能问题在于,本来你里面还有数,结果fifo_cnt算的偏小还以为没数了,没数了就不能读了。写可能发生功能问题在于,本来你已经满了,结果fifo_cnt算的偏小还以为没满,没满就能写一写就出错了。

所以,对于写fifo而言,fifo_cnt计算偏小不可接收,fifo_cnt计算偏大可以接收,所以满信号必须由准确的waddr和滞后的raddr产生,也就是在写时钟域产生。

对于读fifo而言,fifo_cnt计算偏小可以接收,fifo_cnt计算偏大不可接收。所以空信号必须由滞后的waddr和准确的raddr产生,也就是在读时钟域产生。

91181a8a-e5ae-11ee-a297-92fbcf53809c.jpg



审核编辑:刘清

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

    关注

    3

    文章

    369

    浏览量

    43069
  • 格雷码
    +关注

    关注

    2

    文章

    34

    浏览量

    13093
  • 时钟域
    +关注

    关注

    0

    文章

    49

    浏览量

    9455

原文标题:【芯片设计】FIFO漫谈之异步FIFO空满信号的产生位置

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求助 FPGA 异步FIFO IP核

    各位大神: 异步FIFO 信号为什么都是高?描述如下:always @(posedge DFIFO_clk or negedge rs
    发表于 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的安全问题:

    关于异步fifo的安全问题:1. 虽然异步fifo可以提供多个握手信号,但真正影响安全性能的就两个:2. 一个是读时钟域的空
    发表于 03-05 10:40

    FPGA零基础学习Vivado-FIFO使用教程

    rd_rst_busy:读复位忙信号 在了解了FIFO的端口之后,我们来实现一个应用实例。比如,我们以10MHz的速度往FIFO里面写数据,写之后,在20MHz的时钟下将数
    发表于 06-16 17:50

    高速异步FIFO的设计与实现

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

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

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

    异步FIFO结构及FPGA设计

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

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

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

    异步FIFO之Verilog代码实现案例

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

    异步fifo详解

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

    FIFO设计—异步FIFO

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

    采用格雷码异步FIFO跟标准FIFO有什么区别

    异步FIFO包含"读"和"写“两个部分,写操作和读操作在不同的时钟域中执行,这意味着Write_Clk和Read_Clk的频率和相位可以完全独立。异步FIFO
    的头像 发表于 09-14 11:21 591次阅读
    采用格雷码<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>跟标准<b class='flag-5'>FIFO</b>有什么区别

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

    简单的一种,其特点是输入和输出都与时钟信号同步,当时钟到来时,数据总是处于稳定状态,因此容易实现数据的传输和存储。 而异步FIFO则是在波形的上升沿和下降沿上进行处理,在输入输出端口处分别增加输入和输出指针,用于管理数据的读写。
    的头像 发表于 10-18 15:23 1016次阅读