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

    关注

    1655

    文章

    22283

    浏览量

    630270
  • Xilinx
    +关注

    关注

    73

    文章

    2192

    浏览量

    129928
  • fifo
    +关注

    关注

    3

    文章

    406

    浏览量

    45492

原文标题:FIFO使用技巧

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何利用Verilog HDLFPGA上实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDLFPGA上实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。FPGA
    的头像 发表于 10-22 17:21 3955次阅读
    如何利用Verilog HDL<b class='flag-5'>在</b><b class='flag-5'>FPGA</b>上实现SRAM的读写测试

    FPGA机器学习的具体应用

    ,越来越多地被应用于机器学习任务。本文将探讨 FPGA 机器学习的应用,特别是加速神经网络推理、优化算法和提升处理效率方面的优势。
    的头像 发表于 07-16 15:34 2632次阅读

    【RK3568+PG2L50H开发板实验例程】FPGA部分 | ROM、RAM、FIFO 的使用

    ROM 数据。 2.3. FIFO 介绍 FIFO 即先入先出, FPGA FIFO
    发表于 07-10 10:37

    PLL技术FPGA的动态调频与展频功能应用

    随着现代电子系统的不断发展,时钟管理成为影响系统性能、稳定性和电磁兼容性(EMI)的关键因素之一。FPGA设计,PLL因其高精度、灵活性和可编程性而得到广泛应用,本文将深入探讨PLL技术
    的头像 发表于 06-20 11:51 2212次阅读
    PLL技术<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的动态调频与展频功能应用

    智多晶FIFO_Generator IP介绍

    FIFO_Generator是智多晶设计的一款通用型FIFO IP。当前发布的FIFO_Generator IP是2.0版本,相比之前的1.1版本主要新增了非等比输入输出数据位宽支持和异步FI
    的头像 发表于 04-25 17:24 1469次阅读
    智多晶<b class='flag-5'>FIFO</b>_Generator IP介绍

    AD9122输出fifo不正确的原因?怎么解决?

    目前遇到了几个问题,问题分别是[FPGA]给的时钟是250兆Hz,数据为40mhz正弦信号,ddr传输。不采用pll工作模式,dacclk采用1G,0x1c配置00,0x1d配置00,0x1e配置01,Fifo乱序,输出也乱序,查了几次
    发表于 04-22 14:42

    AD9122输出fifo不正确的原因?怎么解决?

    目前遇到了几个问题,问题分别是Fpga给的时钟是250兆Hz,数据为40mhz正弦信号,ddr传输。不采用pll工作模式,dacclk采用1G,0x1c配置00,0x1d配置00,0x1e配置01,Fifo乱序,输出也乱序,查了几次fi
    发表于 04-15 08:11

    基于FPGAFIFO实现

    FIFO(First in First out)为先进先出队列,具有存储功能,可用于不同时钟域间传输数据以及不同的数据宽度进行数据匹配。如其名称,数据传输为单向,从一侧进入,再从另一侧出来,出来的顺序和进入的顺序相同。
    的头像 发表于 04-09 09:55 1171次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>FIFO</b>实现

    AXI接口FIFO简介

    AXI接口FIFO是从Native接口FIFO派生而来的。AXI内存映射接口提供了三种样式:AXI4、AXI3和AXI4-Lite。除了Native接口FIFO支持的应用外,AXI FIFO
    的头像 发表于 03-17 10:31 1776次阅读
    AXI接口<b class='flag-5'>FIFO</b>简介

    解锁TSMaster fifo函数:报文读取的高效方法

    前言:TSMaster目前有两种读取报文的模式:回调函数模式和fifo模式。fifo函数是TSMaster近期新增的函数,本文将重点介绍fifo模块。关于回调函数的使用方法可以参考帮助模块的《快速
    的头像 发表于 03-14 20:04 938次阅读
    解锁TSMaster <b class='flag-5'>fifo</b>函数:报文读取的高效方法

    ADS822加FIFO测试的时候老是卡死,为什么?

    请问下专家:为什么我ADS822加FIFO测试的时候老是卡死,基本过程是这样的,我外部提供一个时钟,分别给ADS822做采样时钟与FIFO的写时钟,程序开始控制FIFO写开启,读关
    发表于 02-06 06:32

    FPGAAI方面有哪些应用

    提供了强有力的支持。 一、FPGA 深度学习的应用 深度学习是 AI 的重要分支,涉及海量的数据运算。FPGA 能够针对深度学习算法
    的头像 发表于 01-06 17:37 2100次阅读

    FIFO IP核的使用教程

    在数字设计,利用FIFO进行数据处理是非常普遍的应用,例如,实现时钟域交叉、低延时存储器缓存、总线位宽调整等。下图给出了FIFO生成器支持的一种可能配置。
    的头像 发表于 01-03 09:36 4017次阅读
    <b class='flag-5'>FIFO</b> IP核的使用教程

    使用DAC3482 fifo同步失败的原因?怎么处理?

    使用AD9517产生240M时钟信号作为FPGA芯片的时钟输入,FPGA内部以其为参考时钟,使用IP核产生480M(clk_pll,作为数据产生模块的驱动时钟,因为3482是DAT
    发表于 12-23 06:02

    DAC3482字输入模式下,FIFO的输出时钟速率为什么是DACCLK/2/插值因子?

    下图是DAC3482描述FIFO模块的附图,想问下这里字输入模式下,FIFO的输出时钟速率为什么是DACCLK/2/插值因子?
    发表于 12-20 16:31