FPGA FIFO基本介绍(FIFO Geneerator(13.2))

这篇具有很好参考价值的文章主要介绍了FPGA FIFO基本介绍(FIFO Geneerator(13.2))。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

软件:vivado 2020.2 

参考文献:文档xilinx官网pg057-fifo-generator文档下载链接官网https://docs.xilinx.com/v/u/en-US/pg057-fifo-generatorhttps://docs.xilinx.com/v/u/en-US/pg057-fifo-generatorhttps://docs.xilinx.com/v/u/en-US/pg057-fifo-generator

原官网免费文档已被上传为付费文档,笔者上传的免费文档未过审核。


一、FIFO的基本思想

        first-in first-out (FIFO),即先入先出。fifo可以当做一个进出互不影响的储存器,当然,储存器是有容量的,一直进,储存器满了,自然无法再进;同样,一直出也是一个道理。为了方便理解 ,我们把fifo比作快递中转站,那么所要传递的数据就是一个个快递。对于fifo来说,写通道就是往中转站里存快递;读通道就是从中转站里取快递。

       当上家(主机)想要往中转站(fifo)里存快递(写数据)时,先发出一个信号(wr_en)告诉中转站,它想要存快递,而中转站(fifo)也要告诉上家是否满了(满信号);同样中转站也要告诉下家(从机)它是否还有库存(空信号),下家(从机)发送ready信号告诉中转站(fifo),它准备好接收信号。fifo的深度就是其容量。

        同步fifo即主从机使用同一clk。异步fifo即用不同clk。

二、不同接口的fifo(Native Axi stream)

2.1 Native 接口fifo

axi_stream读native fifo,vivado fifo,vivado ipcore,fpga开发,开发语言

2.1.1 Native接口主要信号及其功能

写数据通道:

      wr_clk.          写时钟

       wr_en           写使能信号,告诉fifo进行写数据使能;

       full                 满信号,告诉写模块,fifo已满;

       almost_full   将满信号,比full提前一个时钟拉高,提示fifo将满;

       prog_full        标记信号,当fifo中数据达到prog_full,此信号拉高;

      din                   写数据,写模块往fifo里写东西时,将din写入fifo

读数据通道:同理,不过多赘述。

2.1.2 Native 接口读写数据的发生时序

          写数据:wr_en拉高时,写入数据,但是full信号拉高(即fifo满)写数据暂停。

          读数据:rd_en拉高时,读取数据,但是empty信号拉高(fifo空)读数据暂停。

换而言之,wr_en && ~full时,写入数据;rd_en && ~empty时,读取数据。

2.1.3 Native 接口fifo算法以及具体verilog代码

native 接口 FIFO Generator 13.2 verilog 代码

2.1.4 standard fifo 与fwft fifo输出时序逻辑分析

[vivado fifo] 如何理解standard fifo 和fwft fifo的输出时序问题

2.2AXI Stream接口FIFO

axi_stream读native fifo,vivado fifo,vivado ipcore,fpga开发,开发语言

2.1.1 axis接口fifo主要信号及其功能

        axis接口是axi三种常见类型之一,axi stream。先挖个坑,以后有时间可能会系统介绍axif,axil和axis。回归正题axis接口与native接口类似,不过有写些接口的名称发生变化。

       valid -- rd_en--~empty  :     valid是输出有效信号,其拉高时,数据有效。与rd_en信号含义略有不同但是功能相同,都是想写数据时拉高;同样fifo想往从机里写数据,也要告诉从机fifo内还有数据即~empty拉高。

     ready --~full --rd_en      :        ready是输入准备信号,其拉高说明从机准备好接收数据。fifo准备好接收数据的前提是内部还有空间即~full拉高;而从机的rd_en就是告诉fifo其准备好接收信号。

     与native interface不同的是axi interface满足数据传输时,传输的数据不止有data信号。

       data   :   传输的数据

        strobe: 掩码。掩码的第n位为1,则data第nbyte数据正常输出。为0,则第n byte数据全为0。

      last信号:一次传输完成后,拉高一个时钟。

      user:用户自定义信号。

      id:用于标识传输id。

2.2.2 输出时序逻辑与axi的握手机制

         axis接口数据传输时采用的握手机制是一种非常经典的valid-ready握手机制(就用它俩握手,笔者也不知道有没有官方名字)。其特征为

       1.数据发送方输出valid告诉对方数据有效; 数据接收方输出ready,告诉对方准备接收

        2.当且仅当,valid && ready == 1时发生数据传输。

思考:1.主机 从机 valid ready 它们之间有什么联系?

       没有联系,valid是由发送方输出,ready由接收方发出。通常是主机向从机发送数据,所以valid有主机发出比较常见。但是对于全双工、半双工这些一定会有从机发送数据的情况,此时valid就是由从机发出。

        2. valid和ready同时拉高时,才输出。那么,没传完一个拉低了呢?

        指有二者同时拉高时输出,任和其他情况都不发生数据传输。一次传输要求二者全程拉高,如果中断,数据传输中止,等待下次握手,接着传。

2.2.3 axis接口fifo代码

暂时不想写,代码都在内网机,所有代码全是我用平板手打的太麻烦了。等以后吧。不会的,联系我也行。(๑ت๑)

       文章来源地址https://www.toymoban.com/news/detail-822919.html

到了这里,关于FPGA FIFO基本介绍(FIFO Geneerator(13.2))的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

    在这个视频中,我将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。 那么,什么是非监督学习呢?在课程的一开始,我曾简单地介绍过非监督学习,然而,我们还是有

    2024年04月22日
    浏览(38)
  • Doris--基础--13.2--SQl函数--日期函数

    转换datetime值dt,从 from_tz 转到 to_tz 时区,并返回的结果值。 如果参数无效该函数返回NULL。 获取当前的日期,以DATE类型返回 获得当前的时间,以Datetime类型返回 获得当前的时间,以TIME类型返回 向日期添加指定的时间间隔。 date 参数是合法的日期表达式。 expr 参数是您希望

    2024年02月06日
    浏览(37)
  • 一起自学SLAM算法:13.2 运行SLAM构建地图

    连载文章,长期更新,欢迎关注: 写在前面 第1章-ROS入门必备知识 第2章-C++编程范式 第3章-OpenCV图像处理 第4章-机器人传感器 第5章-机器人主机 第6章-机器人底盘 第7章-SLAM中的数学基础 第8章-激光SLAM系统 第9章-视觉SLAM系统 第10章-其他SLAM系统

    2024年02月02日
    浏览(32)
  • axi4-stream-fifo使用

    1.读TDFV( 0xC )寄存器                                                //查询FIFO可写次数 2.写TDFD(lite接口: 0x10 ,full接口:0x0)寄存器       //写待发数据 3.写TLR ( 0x14 )寄存器                                                 //写包长度 ,单位Byte

    2024年02月12日
    浏览(33)
  • 基于xilinx的axi-fifo的应用

    作为一个有一定工作经验(划水好多年)的FPGA工程师,很多模块都已经学习过或者使用过,但是如果让我重新实现,感觉又是一脸懵。因此,这是我发文档的原因。对于自己来说,这是一个总结归纳的过程,对读者,可能是一次解惑。 后期,将会逐渐分享DDR/ETH/SERDES/PCIe/SP

    2024年02月09日
    浏览(45)
  • VS2022+QT5.13.2环境配置及安装测试教程

    (1)visual Studio2022下载链接:https://visualstudio.microsoft.com/zh-hans/?rr=https://www.microsoft.com/zh-cn/ (2)下载完成后,打开VisualStudioSetup,点击继续,选择以下模块。 `(1)通过路径下载qt5.13.2,https://download.qt.io/archive/qt/5.13/5.13.2/ (2)下载完毕后,打开软件,点击Next。如果有QT账号,

    2024年02月15日
    浏览(44)
  • 详解AXI4-Stream接口(3)--AXI4 STREAM DATA FIFO IP的使用

    目录 1、AXI4 STREAM DATA FIFO是什么? 2、自己编写的仿真验证 3、官方例程仿真         IP核----AXI4 STREAM DATA FIFO也是一种先入先出形式的数据缓存队列(FIFO),不过输入输出接口

    2024年02月09日
    浏览(32)
  • VS2022+QT5.13.2:无法打开 源 文件 “ui_QtGuiApplicationx.h“在解决方案(亲测有效)

    @[TOC] 问题描述 VS2022+QT5.13.2 在工程文件,生成解决方案在时候提示如下错误: 错误(活动) E1696 无法打开 源 文件 “ui_QtWidgetsApplication1.h” QtWidgetsApplication1 E:testQtWidgetsApplication1QtWidgetsApplication1.h 4 错误 C1083 无法打开包括文件: “ui_QtWidgetsApplication1.h”: No such file or directory (编

    2024年02月05日
    浏览(36)
  • FPGA之FIFO详解,初识FIFO

           在篇博客里引入FIFO IP核的概念,FIFO是FPGA中最常用的IP核,经常用在接口模块、串并转换、协议处理、数据缓存等很多场合,所以活学活用这个IP核对于后期项目开发很重要,并且灵活掌握FIFO,也是一名合格的FPGA工程师的一项基本功。        FIFO顾名思义就是First

    2024年01月20日
    浏览(36)
  • GT1030 GTX1050 GT705 Pascal Maxwell Fermi系列N卡Monterey 12.5 – Ventura 13.2 开启QE/CI驱动详尽教程

    如标题所述,Dortania团队经过努力,在农历新年前发布了支持Monterey 12.5 – Ventura 13.2版本的OCLP(Opencore-Legacy-Patcher)0.6.1版本 https://github.com/dortania/OpenCore-Legacy-Patcher/releases 这次拼了!把老N卡一网打尽了,除测试N卡外,有兴趣测试的黑果可以先对照下面的显卡支持范围。 一、

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包