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
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603016
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121309
  • fifo
    +关注

    关注

    3

    文章

    387

    浏览量

    43651

原文标题:FIFO使用技巧

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

收藏 人收藏

    评论

    相关推荐

    FPGA 实时信号处理应用 FPGA图像处理的优势

    优势之一是其并行处理能力。与传统的CPU或GPU相比,FPGA可以同时执行多个操作,这在图像处理尤为重要,因为图像处理通常涉及大量的并行数据流和复杂的算法。例如,进行图像滤波或边缘检测时,
    的头像 发表于 12-02 10:01 425次阅读

    FPGA 人工智能的应用

    随着人工智能技术的飞速发展,FPGA(现场可编程门阵列)AI领域扮演着越来越重要的角色。FPGA以其独特的灵活性、低延迟和高能效等优势,为AI应用提供了强大的硬件支持。 1. FPGA
    的头像 发表于 12-02 09:53 370次阅读

    AFE4960如何正确的从FIFO读取样本呢?

    我有一些问题想请教。 双芯片串行模式下,MCU 收到 AFE4960 发送的 FIFO_RDY 中断信号后,开始通过 SPI 通信从 AFE4960 的 FIFO 读取样本。 具
    发表于 11-14 06:41

    FIFO Generator的Xilinx官方手册

    都知道FF资源FPGA是非常珍贵的。 built-in FIFO:这种类型的FIFO只有7系列之后(包括UltraScale)才有。笔者
    的头像 发表于 11-12 10:46 338次阅读
    <b class='flag-5'>FIFO</b> Generator的Xilinx官方手册

    FIFO的深度应该怎么计算

    FIFOFPGA/IC设计中经常使用到的模块,它经常被用在两个模块之间进行数据的缓存,以避免数据传输过程丢失。同时FIFO也经常被用在
    的头像 发表于 10-25 15:20 289次阅读
    <b class='flag-5'>FIFO</b>的深度应该怎么计算

    FPGA物联网的应用前景

    FPGA(现场可编程门阵列)物联网的应用前景非常广阔,其高度的灵活性和可编程性使其成为物联网应用不可或缺的核心组件。以下是对FPGA
    的头像 发表于 10-25 09:22 437次阅读

    Efinity FIFO IP仿真问题 -v1

    Efinity目前不支持联合仿真,只能通过调用源文件仿真。 我们生成一个fifo IP命名为fifo_sim Deliverables中保留Testbench的选项。 IP的生成目
    的头像 发表于 10-21 11:41 990次阅读
    Efinity <b class='flag-5'>FIFO</b> IP仿真问题 -v1

    FPGA人工智能的应用有哪些?

    和安全的云计算和网络服务。 三、具体应用场景 图像分类:图像分类任务FPGA可以承担前置处理、图像卷积、全连接等任务。通过FPGA的并行计算能力,可以大幅提高算法运行速度和处理性
    发表于 07-29 17:05

    如何使用FX3同步从属fifo模式通过FPGA传输传感器数据?

    作为多路复用器选择引脚。 不过,切换到从属 FIFO 之前,我们固件调用了[i]CyU3PGpioDeInit(),以启用 GPIF II
    发表于 07-17 08:04

    如何获取FIFO接收的字节数?

    我正在尝试 UART0 上接收一个字符串,并在最基本的步骤获取 RX FIFO 缓冲区可用的字节数。 我试着使用神奇的公式fifo_l
    发表于 07-10 06:03

    同步FIFO和异步FIFO区别介绍

    1. FIFO简介 FIFO是一种先进先出数据缓存器,它与普通存储器的区别是没有外部读写地址线,使用起来非常简单,缺点是只能顺序读写,而不能随机读写。 2. 使用场景 数据缓冲:也就是数据写入过快
    的头像 发表于 06-04 14:27 1565次阅读
    同步<b class='flag-5'>FIFO</b>和异步<b class='flag-5'>FIFO</b>区别介绍

    FPGA能否正确接收来自FX3同步从站FIFO的数据?

    您好,我无法理解 AN65974 描述的时序图,以下是我从 FPGA Verilog 的角度对时序的理解, 1.复位时,SLCS、SLRD 和 SLOE 全部断态。 2. t1 时,断定
    发表于 05-31 08:09

    FX3与FPGA的连接线是否可以省略地址线?

    您好, FX3 同步从 FIFO 示例,FX3 的 GPIF 充当从 FIFO,外部 FPGA 充当主
    发表于 05-31 06:21

    STM32FIFO指的是什么?

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

    同步从fifo的例程,如何理解U2P和P2U的工作方式?

    我想问一下同步从fifo的例程,如何理解U2P和P2U的工作方式,官方的文档解释有些抽象 如果FPGA通过FX3实现数据向PC的传输的话,通过GPIF II 接口将数据放进去
    发表于 02-28 06:47