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

    关注

    1664

    文章

    22506

    浏览量

    639405
  • Xilinx
    +关注

    关注

    73

    文章

    2208

    浏览量

    131944
  • fifo
    +关注

    关注

    3

    文章

    407

    浏览量

    45910

原文标题:FIFO使用技巧

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    浅谈FPGA无叶风扇控制器的应用

    本项目探讨了基于FPGA控制器的无叶风扇,它能够带来无叶片的空气流动体验。FPGA的灵活性和性能使得它非常适合用于实时控制和信号处理。
    的头像 发表于 04-22 09:29 399次阅读

    FIFO存储器的种类、IP配置及应用

    FIRST IN FIRST OUT (先入先出)。顾名思义,FIFO是一个数据具有先进先出的存储器。
    的头像 发表于 01-13 15:15 618次阅读
    <b class='flag-5'>FIFO</b>存储器的种类、IP配置及应用

    基于FPGA的高效内存到串行数据传输模块设计

    本文介绍了一个基于FPGA的内存到串行数据传输模块,该模块设计用来高效地处理存储器的数据并传输至串行接口。项目中自定义的“datamover_mm2s_fpga_”方案利用异步FIFO
    的头像 发表于 11-12 14:31 4512次阅读
    基于<b class='flag-5'>FPGA</b>的高效内存到串行数据传输模块设计

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

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

    PathFinderFPGA的角色与缺陷

    自 1990 年代末以来,PathFinder 一直是 FPGA 布线(routing)阶段的主力算法,为设计工具提供“能连通又不重叠”的路径规划方案。
    的头像 发表于 10-15 10:44 654次阅读
    PathFinder<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的角色与缺陷

    求助,关于串口设备驱动fifo问题

    的一帧有300对字节,最少37字节,DMA模式为循环模式,缓冲buf,自己理解的是DMA的buf就是serial.cfifo buf,buf的size设置为2048; 问题: 1、数据接收存在粘包
    发表于 09-12 08:18

    聊聊FPGA的TDC原理

    今天我们不谈高大上的物理学,只聊聊如何在 FPGA ,用一串加法器和 D 触发器,“数清楚时间”——这就是时间数字转换器(TDC)的魅力。
    的头像 发表于 09-02 15:15 2651次阅读
    聊聊<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的TDC原理

    AI狂飙, FPGA会掉队吗? ()

    在上篇,我们介绍了FPGA的前面两个特点:硬件可编程、并行与实时,也列举了这两个特点带来的诸多机会。本文中,我们将继续介绍另外两个特点,以集齐FPGA的四大特点和生存机会。
    的头像 发表于 08-08 09:36 1206次阅读
    AI狂飙, <b class='flag-5'>FPGA</b>会掉队吗? (<b class='flag-5'>中</b>)

    FPGA机器学习的具体应用

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

    CYT2B93CAE如何构建不产生中断的FIFO

    你好,我正在使用 CYT2B93CAE 使用设备配置器 5.3,我选择将不匹配的 ID 存储 FIFO 0 ,问题是它正在生成中断,而对于不匹配的 ID,我不想中断 CPU,只是将它们传递给 DMA 线。 如何构建不产生中断
    发表于 07-15 06:29

    差分晶振高速 FPGA 上的应用

    差分晶振高速 FPGA 设计具有非常重要的应用,尤其是在对时钟精度、抗干扰能力、信号完整性要求高的系统
    的头像 发表于 07-11 14:24 1133次阅读
    差分晶振<b class='flag-5'>在</b>高速 <b class='flag-5'>FPGA</b> 上的应用

    【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 2895次阅读
    PLL技术<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的动态调频与展频功能应用

    请问CY7C68013A可以使用8bit FIFO数据接口吗?

    因为FPGA管脚不太够,想问下CY7C68013A-56PVXI可以使用8bit FIFO数据接口吗?可以的话,FPGA连接的是低8bit(FD0~FD7) 还是高8bit(FD8~FD15)呢?
    发表于 05-30 07:20

    如何将小于1024字节的缓冲区从FPGA发送到PC?

    => (USB 3.0) => FX3 => (从属 FIFO 同步) => FPGA。 我尝试从 FPGA 发送 64 个字节,并且
    发表于 05-09 08:18