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

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

3天内不再提示

浅谈FIFO设计思路

CHANBAEK 来源:数字电路IC 作者:lookoutwl 2023-09-11 17:05 次阅读

FIFO在设计是一个非常常见并且非常重要的模块,很多公司有成熟的IP,所以一部分人并没有人真正研究写过FIFO,本文仅简述FIFO中部分值得保留的设计思路。

FIFO可以分为2大类:有直接使用寄存器搭的FIFO(多用于小型FIFO、和异步FIFO),也有使用SRAM搭的FIFO(多用于大型存储)。

因为SRAM比寄存器面积小。其他更细划分如单口,双口等等不做详细介绍。

本文将简述以下两个方向:

lSRAM出口通常不是当拍可以读出数据,因此需要逻辑对这部分做逻辑,实现和寄存器相同时序。

l由于第一条逻辑造成,当用户读取SRAM数据时会有几拍延迟,因此为消除延迟将会增加数据输出开关功能(见本公众号文章模块端口握手设计模块多对多端口握手设计-总结)以及数据输入切换功能。

本文设计FIFO如下图所示:

图片

第一条中SRAM出口无法做到当怕出数的原因是由SRAM的知道工艺造成(可以在存储器芯片手册里看到),例如在TSMC 5nm工艺下,读使能有效到数据稳定输出大概需要500ps,而且如果位宽过大,在ECC时又需要几百ps延迟,因此可能一拍数据无法收敛,因此需要几级寄存器缓存,一般是3拍(控制信号缓存+读数据延迟+ECC延迟)。

第二条中输出开关功能,参见本文相应文章,功能主要保证当FIFO有数据时会传递至最后一级输出寄存器中。

第二条中的输入切换功能,是指2个mux模块,功能主要保证输出reg优先被填满,当输出reg被填满之后,新数据才会被存入SRAM中。输出寄存器数量和SRAM延时寄存器数量相同,保证当输出寄存器中数据在3拍读出之后SRAM数据经过延时之后恰好可以继续被读出,而不会中间出现间隔。

对于mux2的功能是在FIFO数据为空,且同时又读写使能,可以直接把输入数据输出。

上述内容仅用于同步FIFO设计,而异步大型FIFO经常采用同步SRAM缓存+异步寄存器FIFO的设计模式,有时间待续异步FIFO设计。

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

    关注

    31

    文章

    5283

    浏览量

    119766
  • sram
    +关注

    关注

    6

    文章

    761

    浏览量

    114584
  • fifo
    +关注

    关注

    3

    文章

    386

    浏览量

    43484
  • FIFO设计
    +关注

    关注

    0

    文章

    7

    浏览量

    4953
收藏 人收藏

    评论

    相关推荐

    FIFO队列原理简述

    FIFO是队列机制中最简单的,每个接口上只有一个FIFO队列,表面上看FIFO队列并没有提供什么QoS保证,甚至很多人认为FIFO严格意义上不算做一种队列技术,实则不然,
    发表于 07-10 09:22 1621次阅读

    握手型接口的同步FIFO实现

    按照正常的思路,在前文完成前向时序优化和后向时序优化后,后面紧跟的应该是双向时序优化策略了,不过不急,需要先实现一下握手型同步FIFO
    的头像 发表于 12-04 14:03 638次阅读
    握手型接口的同步<b class='flag-5'>FIFO</b>实现

    求助verilog编写实现AXIStream-FIFO功能思路

    empty、full,改为valid、last、ready等5、可用block ram实现6、读写接口分别为AXI stream master和slave 我看了Xilinx的FIFO generator的datasheet不是很清楚时序图,能不能讲解一下编程的思路,贴出
    发表于 02-21 16:24

    什么是fifo

    1.什么是FIFOFIFO是英文First In First Out 的缩写,是一种先进先出的数
    发表于 07-22 16:00 0次下载

    高速异步FIFO的设计与实现

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

    一种异步FIFO的设计方法

    摘要:使用FIFO同步源自不同时钟域的数据是在数字IC设计中经常使用的方法,设计功能正确的FUFO会遇到很多问题,探讨了两种不同的异步FIFO的设计思路。两种思路
    发表于 03-24 12:58 759次阅读
    一种异步<b class='flag-5'>FIFO</b>的设计方法

    什么是fifo fifo什么意思 GPIF和FIFO的区别

    什么是fifo (First Input First Output,先入先出队列)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。1.什么是FIFO
    发表于 12-20 13:51 1.2w次阅读

    最经典的FIFO原理

    最经典的FIFO原理,详细讲述了FIFO的原理,适合入门新手,仔细分析阅读,也适合高手查阅。
    发表于 05-03 15:15 0次下载

    如何配置自己需要的FIFOFIFO配置全攻略

    配置FIFO的方法有两种: 一种是通过QUARTUS II 中TOOLS下的MegaWizard Plug-In Manager 中选择FIFO参数编辑器来搭建自己需要的FIFO,这是自动生成
    发表于 07-20 08:00 17次下载
    如何配置自己需要的<b class='flag-5'>FIFO</b>?<b class='flag-5'>FIFO</b>配置全攻略

    FPGA之FIFO练习1:设计思路

    FIFO队列具有处理简单,开销小的优点。但FIFO不区分报文类型,采用尽力而为的转发模式,使对时间敏感的实时应用(如VoIP)的延迟得不到保证,关键业务的带宽也不能得到保证。
    的头像 发表于 12-02 07:02 1644次阅读
    FPGA之<b class='flag-5'>FIFO</b>练习1:设计<b class='flag-5'>思路</b>

    FPGA之FIFO练习3:设计思路

    根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读
    的头像 发表于 11-29 07:08 1838次阅读

    FPGA之FIFO练习2:设计思路

    FIFO( First Input First Output)简单说就是指先进先出。由于微电子技术的飞速发展,新一代FIFO芯片容量越来越大,体积越来越小,价格越来越便宜。
    的头像 发表于 11-18 07:10 1748次阅读

    FIFO设计—同步FIFO

    FIFO是异步数据传输时常用的存储器,多bit数据异步传输时,无论是从快时钟域到慢时钟域,还是从慢时钟域到快时钟域,都可以使用FIFO处理。
    发表于 05-26 16:12 1474次阅读
    <b class='flag-5'>FIFO</b>设计—同步<b class='flag-5'>FIFO</b>

    FIFO设计—异步FIFO

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

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

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