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

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

3天内不再提示

FIFO和RAM,到底用哪个?

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-07-11 17:23 次阅读

FPGA的设计中的,内部的FIFO和RAM是两种非常常见的存储单元。有的场景是只能使用RAM,比如存放表项的时候,有的场景是RAM和FIFO都可以使用,比如存放数据的时候,从功能的角度来讲,FPGAer都知道这两种存储单元如何使用,但是从工程的角度,比如板上问题的定位、存储单位读写逻辑的修改和维护等方面来看,用FIFO还是用RAM还是有点点讲究了。

FIFO

关于FIFO的基本原理,可以参考FIFO的应用,里面对FIFO有非常详细的介绍。这里从优缺点2个方面重新看到FIFO

FIFO的优点

从使用FIFO的角度来看,FIFO优点很明显,使用简单,问题定位也方便。

首先是时序简单:FIFO通过读写使能控制,只要不满,就可以写入数据;只要不空,就可以读出数据。不需要关心数据在内部的存储位置。

定位问题简单:在工程实践中,对FIFO的问题定位比较简单,常见的错误就是上下溢出、非空情况下不读、长空长满等。这些现象FIFO一般都给出了相应的信号,所以非常好定位。

扩展性好:FIFO不仅仅是一个缓存,同时也很好的逻辑隔离单元,写逻辑部分的修改不影响读逻辑;同理读逻辑部分的修改不影响写逻辑,减少了逻辑的耦合性。

FIFO的缺点

FIFO的缺点,首先不能控制地址,也就不能控制数据写入和读出的位置,所以不能存放表项;还有一个缺点就是从资源的角度来看,需要有额外的逻辑来控制读写,还要产生空、满信号等;最后在一些特殊的应用场景下,比如对数据从写入到读出有延时需求的场景,不同的FIFO设计,有可能不满足要求。

RAM

关于RAM的基础原理,前面有也有过详细的介绍,可以参考RAM的应用。

RAM的优点

存放表项:由于RAM的读写地址可以由用户自己控制,所以RAM是FPGA内存放大表项的几乎唯一的选择。

覆盖:在数据需要丢弃的场景中,可以通过重复写的方式来覆盖原来的数据,从而实现丢弃的功能。

回读:在有的场景中,同一个数据可能需要从缓存中多次读出,这种场景下RAM也是唯一的选择。

RAM的缺点

读写控制:相比FIFO的读写控制,增加了地址这个控制信号。从以往的经验来看,地址信号是比较容易引起问题的,常见的就是地址错误导致数据写入错误。

溢出:由于RAM没有空满状态,RAM作为缓存的时候,写入和读出的逻辑,需要从方案上保证不溢出,复杂度略有增加。

问题定位难:除了上述地址错误导致写入的数据错误不好定位外,RAM没有空满状态,做缓存的时候,RAM的溢出同样不好定位。

总结

经过上面的分析,从功能、控制难易程度、问题定位难易程度考虑,我们可以总结出如下几条原则:

1、表项的存储采用RAM;

2、对数据有覆盖和回读需求的,使用RAM,使用的时候要做好读写长度的控制以及状态的监测;

3、除上述2种情况外,既可以用RAM又可以用FIFO的场景,一律用FIFO;

审核编辑:汤梓红

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

    关注

    1

    文章

    53

    浏览量

    16073
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1321

    浏览量

    113705
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43069
收藏 人收藏

    评论

    相关推荐

    vs1003中的指令RAM和代码RAM是干什么的?

    vs1003进行解码时,单片机每次只能发送32字节音频数据,等解码完毕后,又要发送32字节,中间那段间隔是否太短了,除了发送字节之外,单片机还来得及干其他事吗?vs1003中的指令RAM和代码RAM不知道是干什么的,能否当
    发表于 11-02 17:14

    Xilinx FPGA入门连载59:FPGA 片内ROM FIFO RAM联合实例之功能概述

    `Xilinx FPGA入门连载59:FPGA 片内ROM FIFO RAM联合实例之功能概述特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s
    发表于 03-16 12:43

    Xilinx FPGA入门连载60:FPGA 片内ROM FIFO RAM联合实例之功能仿真

    `Xilinx FPGA入门连载60:FPGA 片内ROM FIFO RAM联合实例之功能仿真特权同学,版权所有配套例程和更多资料下载链接:http://pan.baidu.com/s
    发表于 03-18 09:20

    请问TI的C6678UART外设到底哪个时钟作为源?

    源不一定是150M,要根据自己的使用设置UART的时钟源。但是我看了TI的C6678器件数据手册、PLL手册、CorePac手册、UART手册等等都没看到UART外设到底哪个时钟作为源,按PLL
    发表于 06-25 04:37

    勇敢的芯伴你玩转Altera FPGA连载90:FPGA片内ROM FIFO RAM联合实例

    ,我们鼠标点击选中Instance下面的唯一一个选项,然后单击InstanceManager后面的运行按钮,执行一次触发采集。图9.99 波形采样触发设置波形如图9.100所示。这里包括了ROM的读取操作、FIFO的写和读操作、RAM
    发表于 09-07 22:16

    Xilinx FPGA片内ROM FIFO RAM联合实例之功能概述

    1 功能概述该工程实例内部系统功能框图如图所示。我们通过IP核分别例化了ROM、FIFORAM,ROM有预存储的数据可供读取,将其放入FIFO中,随后再读出送到RAM供读取。通过I
    发表于 01-10 09:46

    哪个使用RAMFIFO更好?

    亲爱的xilinx用户我需要存储一个超过60个时钟周期的数据向量,然后使用它。我很困惑,在这种情况下,哪两个用于RAMFIFO,以获得项目的最佳区域和速度,或者如果有另一种更好的方法来处理这种情况。
    发表于 03-25 06:56

    RAM接口控制器系列之FIFO

    取出、掉电丢失。在各类逻辑系统中运用非常广泛。在FPGA高级应用四的这个标题下,我们将会从内部存储器到外部存储器,介绍FIFOram、ddr几种常用的存储器设计。第一期我们介绍FIFOFIFO,全称是first in first out (先入先出存储队列) 。在程序中
    发表于 06-28 09:27

    NB-IOT模组到底怎么的?

    有用过NB-IOT模块的筒子来说一说,NB-IOT模组到底怎么的,实现什么功能。 1、通过AT命令来开发,这样是不是灵活性不高。 2、使用物联网卡吗,哪个运营商,有固定IP吗,还是使用什么样的卡。 3、使用NB-IOT给你的产
    发表于 10-31 06:37

    cortexM3和armv7m到底哪个是内核哪个是架构?

    cortexM3和armv7m到底哪个是内核,哪个是架构?他们有什么关系啊
    发表于 11-02 06:15

    FIFO芯片IDT72V3680的功能特点及应用

    1 FIFO概述   FIFO芯片是一种具有存储功能的高速逻辑芯片,可在高速数字系统中用作数据缓存。FIFO通常利用双口RAM和读写地址产生模块来实现其功能。
    发表于 08-06 10:22 5052次阅读
    <b class='flag-5'>FIFO</b>芯片IDT72V3680的功能特点及应用

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

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

    如何使用FPGA内部的RAM以及程序对该RAM的数据读写操作

    RAM是FPGA中常用的基础模块,可广泛用于缓存数据的情况,同样它也是ROM,FIFO的基础。本实验将为大家介绍如何使用FPGA内部的RAM以及程序对该RAM的数据读写操作。
    的头像 发表于 02-08 15:50 1.2w次阅读
    如何使用FPGA内部的<b class='flag-5'>RAM</b>以及程序对该<b class='flag-5'>RAM</b>的数据读写操作

    FIFO的阈值如何设置

    FIFO是First in First out 的缩写,一般是由寄存器reg或者ram搭起来的,相对于普通存储器而言,FIFO没有地址可操作的地址总线,因而使用比较方便,但是数据只能像水流一样排队进排队出。
    的头像 发表于 08-19 09:02 1912次阅读

    FIFO的一些基础知识

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