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

相关文章

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

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

linux下查看自己的外网ip

局域网的服务器是通过ADSL路由器连接外网的,但ADSL是从ISP运营商那儿通过动态获得IP的,那么我怎么知道自己的外网地址是多少呢? 今天得到几个办法: curl -s http://whatismyip.org wget http://whatismyip.org 然后再  cat index.html 也可以看到

FPGA编译与部署方法全方位介绍

FPGA编译与部署是FPGA开发中的核心环节,涉及从代码编写、调试到将设计部署到FPGA硬件的全过程。这个流程需要经过创建项目、编写FPGA VI、模拟调试、编译生成比特流文件,最后将设计部署到硬件上运行。编译的特点在于并行执行能力、定制化硬件实现以及复杂的时钟管理。通过LabVIEW的FPGA模块和NI硬件,可以快速完成开发和部署,尤其适用于复杂控制与高性能数据处理系统。 1. FPG

linux下TCP/IP实现简单聊天程序

可以在同一台电脑上运行,在一个终端上运行服务器端,在一个终端上运行客户端。 服务器端的IP地址要和本地的IP相同,并分配端口号,客户端的默认设置为本地,端口号自动分配。 服务器端: #include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。