FPGA IP核之 FIFO

2024-01-18 16:50
文章标签 ip fpga fifo 核之

本文主要是介绍FPGA IP核之 FIFO,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        FIFO是英文 First In First Out的缩写,即先进先出,常常作为数据缓冲器,实现数据先入先出的读写方式。我们学过ROM 和 RAM,它们都是按照地址进行数据的读写操作,而FIFO则更像一根管子,数据从一头流向另一头。也因此,FIFO 只有一个写端口和一个读端口,外部无需使用地址。

         

FIFO的作用,以及基本引脚

        FIFO很类似于存储器,但是又有所不同。试想当我们采集数据的速度比读取数据的速度快时,我们要怎么样才能保证两个节奏不同的系统协调工作呢?我们肯定是要在中间设置一个缓冲器对数据流进行缓冲,这样才能避免数据流丢失或者读非所送的情况发生。

        FIFO最基本的几个引脚有 :

  • full 写满标志位:当full 有效时说明FIFO已经写满了
  • empty 读空标志位:说明FIFO已经空了没有数据了
  • rdreq 读请求信号:有效时,读出FIFO内数据
  • wreq 写请求信号:有效时,写入数据到FIFO内

SCFIFO IP核配置

        

1、Basic Functions --> Miscellaneous --> FIFO

2、三个框分别是配置FIFO的位宽,深度,以及是读和写同步还是异步(SCFIFO or DCFIFO) 

此页面主要配置FIFO的引脚,具体引脚功能描述如下:

 

wrreq 和 rdreq :写使能 和 读使能信号,用于指示FIFO是写还是读;注意:FIFO 的读请求信号 rdreq 当 FIFO 的满标志信号 full 有效 时拉高,当 FIFO 的空标志信号 empty 有效时拉低,以此保证FIFO不被写满也不被读空。 

一般默认即可

 

 3、这个页面上面的框用于配置FIFO的属性(重点介绍),下面的框用于配置FIFO使用的资源(Auto即可)

        从上面的框中可以看出,FIFO有两个模式:

普通同步模式:即当检测到读请求有效时的下一拍数据才出来,而下面的则是先出数据FIFO模式,因为读请求来临前,第一个数据就已经出来了,所以当检测到读有效时,立刻就能输出数据。

4、 FIFO性能、是否禁用保护电路、以及实现方式(存储器还是逻辑方式)

第一个框为性能设置,选择“Yes(best speed)”将获得最大的速度(性能),但是需要牺牲 更多的资源(面积);选择“No(smallest area)”将使用更少的资源(面积)但是速度(性 能)可能不是最快的。这里我们没有特殊要求,默认即可。

框 2 为选择是否禁止上溢检测和下溢检测的保护电路(上溢检测保护电路主要是用于 在 FIFO 存储满时禁止继续写数据;下溢检测保护电路主要是用于 FIFO 被读空时,禁止继 续读数据)。如果需要则保持默认,如果不需要可以选择禁用下面的两个选项来提高 FIFO 速度(性能),这里我们没有特殊需求所以保持默认即可。

框 3 为选择是否只使用逻辑单元实现 FIFO 存储器。这里使用默认设置,即用存储块实现 FIFO

 

接下来的EDA和Summary步骤都没有什么特殊的配置的地方,这里我们顺便输出一个FIFO_Inst的实例,方便调用。

·        至此,我们的SCFIFO IP核配置就完成了。

DCFIFO IP核配置 

        DCFIFO IP核的配置其实与SCFIFO大同小异,在第一个页面中,我们选择下方的 “sychronize reading and writing”,即异步读写,同时我们还可以看到,现在可以自由设置输出的位宽。

        

 点击next后我们看到DCFIFO的优化配置界面:

三个选项的作用是: 

         可能有同学会不懂什么叫“亚稳态”?

        大家都知道“亚健康”,就是处于健康和疾病之间的一种状态,同理,“亚稳态”就是触发器无法在某个规定时间段内达到一个可确认的状态,此时输出处于不稳定状态。

        我们知道,触发器有在时钟脉冲来临时有建立时间和保持时间两个时间段,而在这两个时间段中,数据应该保持稳定,如果数据不稳,那么输出信号将处于亚稳态,之后才会回到稳态,因为亚稳态时输出的电平无法确定,因此我们需要避免亚稳态的产生。

        同步时钟电路的输入信号和时钟信号是满足时序要求的,因此不会出现亚稳态;而在异步时钟电路中,输入信号和时钟是不固定的,以DCFIFO为例,可能会出现数据写入未稳定就开始读取,因此有可能会发生建立时间和保持时间中数据的不稳定,从而导致亚稳态。

        接下来就是DCFIFO的接口配置:

         其中,大部分引脚可以参考前文的讲解,都是一样的。

 之后的步骤内容都与SCFIFO相同,按步骤操作即可。

        FIFO IP核基础知识是为了以后学习图像处理打基础,等以后遇到实际项目时,我会再写一篇实战心得。

        

这篇关于FPGA IP核之 FIFO的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/619640

相关文章

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安