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

相关文章

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

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

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc