【FPGA IP系列】FIFO的通俗理解

2023-10-29

FPGA厂商提供了丰富的IP核,基础性IP核都是可以直接免费调用的,比如FIFO、RAM等等。

本文主要介绍FIFO的一些基础知识,帮助大家能够理解FIFO的基础概念。

一、FIFO介绍

FIFO全称是First In First Out,即先进先出。

FIFO是一个数据缓存队列,主要特点就是数据顺序写入,再按照同样的顺序输出数据,即先进去的数据先被取出来。

1、FIFO的通俗理解

FIFO可以类比一个水池。

当写通道打开时,就相当于往水池里加水;而当读通道打开时,就相当于从水池中放水。

如果持续不断地加水和放水,如果加水速度超过了放水速度,那么水池就会满了,这时FIFO就会发生溢出,水会溢出水池。

相反,如果放水速度快于加水速度,那么水池就会变空,FIFO就会出现空的情况。

2、FIFO的分类

根据FIFO输入时钟的区别,可以分为同步FIFO和异步FIFO。

同步 FIFO 只有一个独立的时钟端口 clock,所有的输入输出信号都同步于 clock 信号。

异步FIFO有两个时钟,写端口和读端口分别有独立的时钟,所有写相关的信号都是属于写时钟,所有与读相关的信号都属于读时钟。

2、FIFO IP

FIFO一般不需要自己去写代码实现,FPGA官方软件都提供了FIFO IP,直接使用即可。

FPGA IP特性:

  • 配置选项和控制手段广泛:提供了丰富的配置选项和控制手段,可以根据用户的需求进行灵活配置。

  • 灵活的接口和支持多种数据宽度:接口设计灵活,同时支持多种不同数据宽度的操作。

  • 支持多种读写模式:支持单写单读、单写多读、多写单读、多写多读等读写模式,可以适应不同的应用场景。

  • 多种存储方式:支持异步、同步等不同的存储方式,可以根据需求选择合适的存储方式。

  • 可配置的参数:可以配置深度、宽度、读写数据宽度等参数,使得用户可以按需定制FIFO的特性。

二、FIFO的应用

FIFO的应用非常广泛,其中同步fifo主要用于处理数据缓存,异步fifo主要用于处理跨时钟数据传输处理。

常用的应用场景如下:

接口数据/消息缓冲:FIFO可以用于缓存数据或消息,以应对数据流量突发情况,同时降低或消除背压的频率,减小上级模块的复杂度。

接口协议隔离:在模块与复杂的协议进行对接时,FIFO可以作为隔离后的用户接口,降低模块接口协议设计复杂度,并实现协议接口的IP化,提高系统的复用性。

跨时钟域处理:FIFO可以用于处理异步时钟域的数据、消息和总线。通过FIFO,可以实现简单、快速、安全的跨时钟域处理。

数据位宽转换:FIFO可以用于实现数据的位宽转换,例如从512位转换为256位。

三、FIFO的重要概念

1、主要端口

读写时钟:同步FIFO是指读时钟和写时钟为同一个时钟。异步FIFO读写时钟是独立的两个时钟。

读写使能:读写控制的使能

满信号:FIFO里面的缓存数据数量达到了最大深度值

空信号:FIFO里面的缓存全部被读空

深度:FIFO所能容纳的最大数据数量

2、FIFO的存储结构

FIFO通常采用循环存储结构,即存储空间是一个环形的缓冲区。

数据写入时,从第一个写入地址开始,依次向后写入;数据读取时,从第一个读取地址开始,依次向后读取。

当写入数据量达到FIFO的深度时,将不能再写入数据,此时需要停止写入操作,等待读取操作将数据读出,否则将发生溢出。

同样,当读取数据量达到FIFO的深度时,将不能再读取数据,此时需要停止读取操作,等待写入操作将数据写入。

3、FIFO的空满状态

FIFO具有空标志和满标志,用于指示FIFO的存储状态。

当FIFO空时,写入操作将停止,直到FIFO非空;当FIFO满时,读取操作将停止,直到FIFO非满。

空满状态的判断通常采用比较读写指针的位置关系,例如当写入指针等于读取指针时,FIFO为空;当写入指针比读取指针多一位(达到FIFO的深度)时,FIFO为满。

4、FIFO的读写操作

FIFO的读写操作遵循先进先出的原则。

写入数据时,根据写地址将数据写入FIFO的空闲位置;读取数据时,根据读地址从FIFO的存储位置读取数据。

在连续的读写操作中,读写指针会自动递增,以便在下次读写时正确指向FIFO的下一个位置。

5、FIFO的同步处理

由于FIFO通常涉及不同时钟域之间的数据传输,因此需要进行同步处理。

在异步FIFO中,写入时钟和读取时钟是不同的,需要使用握手协议进行同步。

在同步FIFO中,读写时钟是同一个时钟,但仍然需要进行时序分析,以保证数据的稳定性和可靠性


本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦

本文由FPGA狂飙原创,有任何问题,都可以在评论区和我交流哦

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【FPGA IP系列】FIFO的通俗理解 的相关文章

  • libero-soc许可证申请和环境配置

    环境 64位机 在哪台电脑上安装libero soc 就用哪台电脑申请许可证 1 注册 https www microsemi co 在官网注册 之后申请的许可证会发到注册时填写的邮箱 2 申请许可证 https www microsemi
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • 蓝桥杯真题:迷宫

    目录 题目描述 运行限制 dfs bfs 结果 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 下图给出了一个迷宫的平面图 其中标记为 11 的为障碍 标记为 00 的为可以通行的地方 010000 000
  • 【PIPE】流水线设计中的基本模块

    大概分成以下几节 1 概述及协议 2 valid forward valid超前 3 bubble collapse 消除气爆 4 input output skid 不知中文怎么说 5 pipe halt 流水停顿 6 idle pres
  • 使用七牛云进行文件上传

    目录 一 七牛云入门测试 1 注册七牛云账号 完成后选择对象存储 2 在里面创建空间 一个空间相当于一个文件夹 就是将对象上传到的地方 3 查看个人秘钥 注册完成账号后 会有一个秘钥 上传文件的时候进行授权和认证 4 文件上传测试 二 封装
  • FPGA Lattice Diamond 开发环境搭建

    FPGA Lattice Diamond 开发环境搭建 Lattice Diamond 软件下载 在浏览器中输入 Lattice 的官网地址 http www latticesemi com 进入官网首页在上方选择产品系列选项 出现如下图所
  • ALLEGRO等长时如何将PIN DELAY和VIA长度计算在内

    在PCB设计中 对于时序要求严格的线路 Via和IC pin delay的长度必须得到重视 通过下面的操作 可将Via和Pin delay加入到线路长度的计算中 1st 计算Pin delay 打开Constraint Manager 选择
  • 打印存储在 reg 类型变量中的有符号整数值

    如何打印存储在 8 位寄存器中的有符号整数值 声明为 reg 7 0 acc Using display acc d acc 它打印无符号值 正确的语法是什么 display功能 如果您声明reg as signed display将显示减
  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)

    FMC141是一款基于VITA57 4标准的4通道2 8GSPS 2 5GSPS 1 6GSPS采样率16位DA播放FMC子卡 该板卡为FMC 标准 符合VITA57 4与VITA57 1规范 16通道的JESD204B接口通过FMC 连接
  • 在vhdl中生成随机整数

    我需要在 vhdl 中生成 0 1023 之间的随机整数 但是我在互联网上找不到这方面的好资源 请问有人帮我吗 下面是生成范围 0 1023 内均匀 均匀 分布的整数的示例 请注意 floor必须在与最大值 1 相乘之后使用运算 在本例中为
  • VHDL——连接开关和LED

    我有 Xilinx Spartan6 和下一个 VHDL 代码 library ieee use ieee std logic 1164 all use ieee numeric std all entity Switches Leds i
  • Vivado 比特流消息:违反规​​则 (LUTLP-1) 组合循环

    我在串流时遇到问题 该项目旨在创建一个占空比为 1 2 的时钟 综合和实现过程中没有任何问题 我尝试了几种方法来解决它 但他们的表现并不好 module clock div clk clk out input clk output reg
  • 在 C 中操作 80 位数据类型

    我正在用 C 实现一些加密算法 其中涉及 80 位密钥 特定操作涉及将密钥旋转移位 x 个位数 我已经尝试过 long double 类型 如果我没记错的话 它是 80 位 但这不适用于位移运算符 我能想到的唯一替代方案是使用 10 个元素
  • 如何生成异步复位verilog总是阻塞凿子

    Chisel 始终生成敏感度列表中仅包含时钟的块 always posedge clk begin end 是否可以将模块配置为使用异步重置并生成这样的始终块 always posedge clk or posedge reset begi
  • Vivado ILA的debug信息保存与读取

    保存 write hw ila data D Project FPGA ILA Debug Data 202401041115 ila upload hw ila data hw ila 1 读取 display hw ila data r
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主
  • UIO 设备上的 mmap EINVAL 错误

    在尝试使用 UIO 而不是直接映射后 我在 Xilinx Zynq 上映射物理内存时遇到问题 dev mem 虽然计划是以普通用户身份运行应用程序 而不是root这仍在运行root 显然 第一个映射成功 其余映射到同一个文件描述符12 de
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 可以购买哪些 FPGA(现场可编程门阵列)在家中进行实验? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么是 FPGA 在哪里可以买到 它们要花多少钱 您需要什么样的系统来试验它们 如何对它们进行编程 如果这是正确的术语 您能否使用普通 M
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar

随机推荐

  • 【Spring源码系列】Bean生命周期-实例化前

    这里写目录标题 前言 一 实例化前 InstantiationAwareBeanPostProcessor介绍 InstantiationAwareBeanPostProcessor实例化前作用 InstantiationAwareBean
  • iphonex黑屏开不了机_手机死机开不了机怎么办

    大多数手机用户在使用手机过程中或多或少都遇到过死机的问题 如同电脑的操作系统也会出现死机一样 那么 当手机死机开不了机怎么办 下面介绍一下手机死机后开不了机解决办法 手机死机开不了机怎么办 苹果手机的死机解决方法 步骤1 按住你手机 开机键
  • 初探STM32F4(6)--系统时钟配置

    时钟配置 概述 时钟系统框图 时钟系统初始化代码架构分析 概述 经过前文对GPIO USART外设的初步学习 发现有两个基本知识需要补充学习 一个是系统时钟的相关配置 另一个是中断事件的相关配置 本文先学习系统时钟 阅读完本文 要能回答以下
  • C++ 防 陷阱2 重复包含头文件

    multiple definition of 错误 1 为了避免重复包含头文件 建议在声明每个都文件时采用 头文件卫士 采用google建议H 具体形式如下 ifndef PROJECT PATH FILE H define PROJECT
  • 十五)Stable Diffusion使用教程:其他

    A still life scene with the theme of small and delicate jewelry crystal clear gemstones Product positioning is conspicuo
  • ARM Linux Oops使用小结

    内核Oops小结 出现Oops消息的大部分错误时因为对NULL指针取值或者因为用了其他不正确的指针值 Oops如何产生的解释如下 由于处理器使用的地址几乎都是虚拟地址 这些地址通过一个被称为 页表 的结构被映射为物理地址 当引入一个非法指针
  • 【opencv4.3.0教程】01之opencv介绍与配置(win10+VS2015+OpenCV4.3.0)

    目录 一 前言 二 OpenCV介绍 1 介绍 2 OpenCV版本简介 3 OpenCV4 3 0下载 三 OpenCV安装与配置 1 安装 2 环境变量配置 四 配置VS2015 1 包含目录与库目录 2 链接器配置 五 测试及效果 一
  • Ajax vs Willem II,Feyenoord on top after beating Ajax 2-1

    Feyenoord on top after beating Ajax 2 1 Soccer Updated 2005 08 29 11 07 AMSTERDAM Netherlands Dirk Kuijt and Salomon Kal
  • 【概率论与数理统计】猴博士 笔记 p3-4 事件的概率、事件的独立性

    事件的概率 引入 画图 假设方块面积为1 那么P A 的数值就是点落在A上的概率 我们可以通过画图求出很多概率 如 P A B 0 25 P B A 0 23 P A B 0 58 一些概念 例1 解 0 3 画个图就行 例2 解 5 12
  • Windows平台下安装与配置MySQL ,配置环境变量,详细图解,

    1 安装检查 下载之前要看一下Windows版本 如果是专业版我们在安装之前需要多一步检查操作 如果是专业版我们需要在计算机管理中检查管理员属性中是否添加网络服务的属性 红框部分 计算机管理 gt 本地用户和组 gt 组 gt 双击Admi
  • C++复数运算

    C 复数运算探究 题目说明 抽象数据类型 ADT 的定义与实现 复数a bi a为实部 b为虚部 请用C或C 语言定义和实现复数抽象数据类型 要求能够输入两个实数作为实部和虚部 用于初始化 创建 一个复数 对任意的两个复数 能够按照复数运算
  • TypeC 基础

    type C接口形式 PD最大支持20V 5A 100W功率 通过CC线来协商Power供给 由于Type C的扩展功能 SBU1 SBU2 大部分配件诸如耳机 视频接口 debug接口等都可以实现兼容设计 在USB2 0端口 USB根据输
  • C++学习之路-构造函数的初始化列表

    构造函数 初始化列表 一 何为初始化列表 二 初始化列表的本质 三 初始化列表的优势 四 初始化列表中列表顺序问题 五 初始化列表与默认参数的配合使用 六 初始化列表的注意之处 七 构造函数的声明和实现分离时 初始化列表需写在实现里 八 子
  • 回归与分类区别

    回归与分类的根本区别在于输出空间是否为一个度量空间 我们不难看到 回归问题与分类问题本质上都是要建立映射关系 对于回归问题 其输出空间B是一个度量空间 即所谓 定量 也就是说 回归问题的输出空间定义了一个度量 去衡量输出值与真实值之间的 误
  • AGX Xavier使用记录

    整理了遇到的一些问题 Jetson AGX Xavier上查看版本 格格 gloria 博客园 Nvidia agx xavier TX2 无法查看opencv版本问题 Cc CSDN博客 Project cv bridge specifi
  • hdu1799(用递推公式求组合的个数)

    题目意思 我们知道 在编程中 我们时常需要考虑到时间复杂度 特别是对于循环的部分 例如 如果代码中出现 for i 1 i lt n i OP 那么做了n次OP运算 如果代码中出现 fori 1 i lt n i for j i 1 j l
  • Windows平台如何查看一个dll依赖的其他dll

    好多开发者在做windows开发的时候 容易遇到dll依赖的问题 VS自带一个小工具dumpbin 这个工具挺好用 可以查看dll相关依赖库 还可以看dll导出接口 下面演示下查依赖库用法 运行 dumpbin dependents nm
  • axios相应拦截器弹窗的实现

    在axios中同一封装 将请求之后code不等于0的数据进行弹窗显示 在封装axios的时候 通过require导入elementUI 之后调用message方法 import axios from axios var ui require
  • 【Jmeter线程组及报告解析】

    前言 一 线程组解析 1 含义 2 案例 3 各类线程执行顺序 二 报告解析 1 常用的压测报告 2 View Results Tree 介绍 3 Aggregate Report 聚合报告 介绍 前言 本章主要针对压测时常用的 线程组 压
  • 【FPGA IP系列】FIFO的通俗理解

    FPGA厂商提供了丰富的IP核 基础性IP核都是可以直接免费调用的 比如FIFO RAM等等 本文主要介绍FIFO的一些基础知识 帮助大家能够理解FIFO的基础概念 一 FIFO介绍 FIFO全称是First In First Out 即先