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

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

3天内不再提示

在FPGA设计中FIFO的使用技巧

FPGA设计论坛 来源:EETOP 作者:lucien_1986 2021-09-09 11:15 次阅读

FIFO是在FPGA设计中使用的非常频繁,也是影响FPGA设计代码稳定性以及效率等得关键因素。在数据连续读取时,为了能不间断的读出数据而又不导致FIFO为空后还错误的读出数据。可以将FIFO的Empty和Almost_empty以及读使能配合起来使用,来保证能够连续读,并准确的判断FIFO空满状态,提前决定是否能启动读使能。

具体的实施办法是:当Empty为1,立即停止读;当Empty为0,Almost_empty为0时,可以放心读;当Empty为0,但是Almost_empty为1时,如果上一拍读使能Read也为1,那么不能读;当Empty为0,但是Almost_empty为1时,如果上一拍读使能Read为0,可以读最后一拍。

在FIFO使用时,使用到Almost_full信号以及读写counter来控制FIFO的读满预警,如果数据不是在空满判断的下一拍写入FIFO,则设计FIFO的满预警时要小心。如果你不确定判断满预警之后要延迟多少拍才能真正写入FIFO,那么尽量让FIFO有足够满预警裕量。

例如,在wr_data_count为128才是真的满了,你可以设成wr_data_count为120的时候就给出满预警,可以保证设计的可靠和安全。当然,如果你能准确的算出判断满预警与真正写入FIFO的延迟,可以用精确的满预警阈值。

当需要使用到数据位宽转换时,如将128位的数据转换成64位的数据,最好不要用XILINX自己生成的位宽转换FIFO。可以例化两个64位的FIFO,自己控制128转64。这样可以大大的节省资源,是XILINX CORE生成的FIFO资源的一半。

另外,当需要使用到位宽大于18bits,且深度小于等于512的FIFO时,建议使用XILINX COREGenerator来产生,它可以将一个36bits位宽512深度的FIFO在一个18×1024的BLOCK RAM中实现。如果我们自己用BLOCK RAM来实现一个FIFO,那只能例化一个36×1024的BLOCK RAM基元,造成浪费。

责任编辑:haq

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

    关注

    1602

    文章

    21309

    浏览量

    593120
  • Xilinx
    +关注

    关注

    70

    文章

    2119

    浏览量

    119366
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43060

原文标题:FIFO使用技巧

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32FIFO指的是什么?

    STM32FIFO指的是什么?是数据结构还是硬件上的寄存器还是其他的东西?请老师们指教
    发表于 04-12 07:14

    FPGA学习-异步FIFO原型设计与验证

      点击上方 蓝字 关注我们   第一节:fifo基础     内容: 1. 掌握FPGA设计中关于数据缓存的使用 2. 掌握FIFO工作原理
    的头像 发表于 11-17 14:00 215次阅读

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

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

    XILINX FPGA IP之FIFO Generator例化仿真

    上文XILINX FPGA IP之FIFO对XILINX FIFO Generator IP的特性和内部处理流程进行了简要的说明,本文通过实际例子对该IP的使用进行进一步的说明。本例子例化一个读数据位宽是写数据位宽两倍的
    的头像 发表于 09-07 18:31 898次阅读
    XILINX <b class='flag-5'>FPGA</b> IP之<b class='flag-5'>FIFO</b> Generator例化仿真

    XILINX FPGA IP之FIFO Generator

    在数字设计中,fifo是数据操作任务所需的普遍结构,如跨时钟域、低延迟内存缓冲和总线宽度转换。
    的头像 发表于 09-07 18:31 639次阅读
    XILINX <b class='flag-5'>FPGA</b> IP之<b class='flag-5'>FIFO</b> Generator

    FPGA学习笔记:FIFO IP核的使用方法

    FIFO(First In First Out, 先入先出 ),是一种数据缓冲器,用来实现数据先入先出的读写方式。数据按顺序写入 FIFO,先被写入的数据同样在读取的时候先被读出,所以 FIFO存储器没有地址线,有一个写端口和一
    的头像 发表于 09-07 18:30 961次阅读
    <b class='flag-5'>FPGA</b>学习笔记:<b class='flag-5'>FIFO</b> IP核的使用方法

    FIFO的一些基础知识

    FPGA厂商提供了丰富的IP核,基础性IP核都是可以直接免费调用的,比如FIFO、RAM等等。
    的头像 发表于 08-07 15:41 1426次阅读
    <b class='flag-5'>FIFO</b>的一些基础知识

    FPGA FIFO深度计算的基本步骤和示例

    FIFO(First In First Out)是一种先进先出的存储结构,经常被用来在FPGA设计中进行数据缓存或者匹配传输速率。
    的头像 发表于 08-07 15:39 509次阅读

    使用IP核创建单时钟FIFO

    FIFO,先进先出。在FPGA中使用的FIFO一般是指对数据的存储具有先进先出的缓冲器,FIFO与普通的存储器的不同在于它没有读写地址线。举个例子,当
    的头像 发表于 07-23 11:47 392次阅读
    使用IP核创建单时钟<b class='flag-5'>FIFO</b>

    FIFO和RAM,到底用哪个?

    FPGA的设计中的,内部的FIFO和RAM是两种非常常见的存储单元
    的头像 发表于 07-11 17:23 1025次阅读

    同步FIFO设计详解及代码分享

    FIFO (先入先出, First In First Out )存储器,在 FPGA 和数字 IC 设计中非常常用。 根据接入的时钟信号,可以分为同步 FIFO 和异步 FIFO
    发表于 06-27 10:24 1315次阅读
    同步<b class='flag-5'>FIFO</b>设计详解及代码分享

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

    应用FIFO的读写是可以同步进行的。 首先,我们先来新建工程。 新建好之后,我们先调用一下IP核: IP核管理器界面,搜索FIFO,然后选中图示所选项双击打开。
    发表于 06-16 17:50

    基于寄存器的同步FIFO

      FIFOFPGA设计中最有用的模块之一。FIFO 在模块之间提供简单的握手和同步机制,是设计人员将数据从一个模块传输到另一个模块的常用选择。 在这篇文章中,展示了一个简单的 RTL 同步
    的头像 发表于 06-14 09:02 489次阅读

    一个简单的RTL同步FIFO设计

    FIFOFPGA设计中最有用的模块之一。FIFO 在模块之间提供简单的握手和同步机制,是设计人员将数据从一个模块传输到另一个模块的常用选择。
    发表于 06-14 08:59 256次阅读

    FIFO设计—异步FIFO

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