FIFO Generate IP核使用——Native接口Basic页配置

Xilinx FIFO Generator IP核是一个经过全面验证的先入先出(FIFO)内存队列,专为需要按顺序存储和检索的应用而设计。该IP核为所有FIFO配置提供了优化解决方案,并在利用最小资源的同时实现最大性能(高达500MHz)。通过Vivado Design Suite提供,还可以自定义宽度、深度、状态标志、内存类型以及写/读端口纵横比。
在Vivado Design Suite中需要使用FIFO Generate IP核时,打开Vivado后,在IP Catalog 中搜索FIFO,找到FIFO Generator IP核,双击或点击右键的Customize IP…来打开该IP核,如下图所示。
在这里插入图片描述
在FIFO Generator IP核的Basic选项页,可以看到该IP核有三种接口类型,分别为Native、AXI Memory Mapped和AXI Stream。
在这里插入图片描述
Native接口FIFO内核经过优化,适用于缓冲、数据宽度转换和时钟域解耦应用,提供有序的存储和检索功能。
AXI Memory Mapped接口和AXI4-Stream接口FIFO是从Native接口FIFO派生而来的。

1 Native接口FIFO Implementation

表1-2列出了Native接口支持的内存和时钟配置。
在这里插入图片描述
注意:
1、independent clock built-in FIFO 的嵌入式寄存器支持仅适用于UltraScale系列。
2、Xilinx仅针对UltraScale设备支持非对称读写端口比例,并且,在使用built-in FIFO时,非对称配置的最大深度限制为8192。

1.1 Common Clock: Block RAM、Distributed RAM, Shift Register

此实现类别允许您选择块RAM、分布式RAM或移位寄存器,并支持用于写入和读取数据访问的公共时钟。此配置支持的特性集包括非对称长宽比(不同的写入和读取端口宽度)、状态标志(满、几乎满、空和几乎空),以及使用用户定义阈值生成的可编程空和满标志。

此外,还支持可选的握手和错误标志(写入确认、溢出、有效和下溢),以及可选的数据计数,用于提供FIFO中的字数。对于块RAM和分布式RAM实现,您还可以选择核心的同步或异步复位。块RAM FIFO配置还支持ECC。

1.2 Common Clock: Built-in FIFO

此实现选项允许您选择Built-in FIFO,并支持用于写入和读取数据访问的公共时钟。此配置支持的特性包括状态标志(满和空),以及使用用户定义阈值的可选可编程满和空标志(对于7系列设备,可编程满/空标志直接连接到ALMOSTFULL/ALMOSTEMPTY标志)。

此外,还提供可选的握手和错误标志(写入确认、溢出、有效和下溢)。内置FIFO配置还支持内置的ECC功能以及UltraScale设备特有的功能,如非对称长宽比(不同的写入和读取端口宽度)、动态功耗门控和ECC流水线寄存器。

1.3 Independent Clocks: Block RAM and Distributed RAM

此实现选项允许您选择块RAM或分布式RAM,并支持用于写入和读取数据访问的独立时钟域。读取域中的操作与读取时钟同步,写入域中的操作与写入时钟同步。

此类型的FIFO支持的特性集包括非对称长宽比、状态标志,以及使用用户定义阈值生成的可编程满和空标志。可选的读取数据计数和写入数据计数指示器提供了相对于各自时钟域的FIFO中的字数。此外,还提供可选的握手和错误标志(写入确认、溢出、有效和下溢)。块RAM FIFO配置还支持ECC。

当时用这两种时钟时,Basic选项页会出现Synchronization Stages选项。
在这里插入图片描述

Synchronization stages(同步阶段)定义了跨交叉时钟域逻辑的同步器级数。这个设置用于确定在跨越不同时钟域的逻辑中,需要多少个同步器阶段来确保数据的准确性和一致性。在表4-1中,可以找到关于同步阶段和操作频率的示例。
在这里插入图片描述
同步器是一种硬件逻辑电路,用于在不同时钟域之间传递信号,以避免由于时钟不同步而导致的数据错误或不一致。通过增加同步器的级数,可以提高信号传递的可靠性和稳定性,但也会增加硬件的复杂性和成本。

因此,在选择同步阶段数时,需要根据具体的应用场景和需求进行权衡。如果时钟域之间的差异较大,或者对数据的一致性和准确性有很高的要求,那么可能需要增加同步器的级数。反之,如果时钟域之间的差异较小,或者对数据的一致性和准确性要求不是特别高,那么可以减少同步器的级数以降低硬件的复杂性和成本。

1.4 Independent Clocks: Built-in FIFO

此实现选项允许您选择Built-inFIFO。读取域中的操作与读取时钟同步,写入域中的操作与写入时钟同步。

此配置支持的特性集包括状态标志(满和空),以及使用用户定义阈值生成的可编程满和空标志(对于7系列设备,可编程满/空标志直接连接到ALMOSTFULL/ALMOSTEMPTY标志)。此外,还提供可选的握手和错误标志(写入确认、溢出、有效和下溢)。Built-in FIFO配置还支持内置的ECC功能以及UltraScale设备特有的功能,如非对称长宽比、动态功耗门控和ECC流水线寄存器。

使用独立时钟的选项允许设计者在复杂的系统中更灵活地管理数据流动,尤其是在读取和写入操作需要独立控制时钟的场景中。此外,这些实现选项还提供了丰富的特性和配置选项,以满足不同应用的需求。ECC的支持增强了数据传输的可靠性,而动态功耗门控等功能则有助于优化系统的功耗性能。

2 AXI Memory Mapped接口

AXI Memory Mapped接口主要有三种协议:AXI4、AXI4-Lite以及AXI3。

AXI4主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输。

AXI4-Lite则是一个轻量级的地址映射单次传输接口,即无突发传输接口,占用很少的逻辑单元。

AXI3用于连接处理器和内存或其他高速外设,是在AXI4之前的一个版本。

每种接口都有其特定的应用场景和优势,根据具体的设计需求,可以选择合适的AXI Memory Mapped接口风格。
在这里插入图片描述
读写模式的选择根据具体使用情况而定。

Independent Clock配置允许用户在写端口和读端口上实现独特的时钟域。FIFO Generator IP核负责处理时钟域之间的同步,对相位和频率没有要求。当需要在单个时钟域中进行数据缓冲时,可以选择Common Clock选项,以便FIFO Generator IP核生成一个针对单个时钟优化的IP核。

3 AXI-Stream接口

AXI-Stream是一种高效、简单的数据传输协议,主要用于高吞吐量的数据流传输场景。相比于传统的AXI总线,AXI-Stream总线更加简单和轻量级。它通过无需地址的方式,将数据从一个模块传输到另一个模块,特别适用于需要高速数据传输的应用场景。
在这里插入图片描述
Independent Clock配置允许用户在写端口和读端口上实现独特的时钟域。
当需要在单个时钟域中进行数据缓冲时,选择Common Clock选项。

HAS ACLKEN用于选择Clock Enable Type。

**Slave接口时钟使能(Slave Interface Clock Enable)**功能允许AXI主设备以AXI从设备接口(或FIFO的写入端)的分频速率运行。在这种情况下,时钟使能信号是单时钟宽度的,并且是同步的,它确保了主设备和从设备之间的时钟同步,从而避免了数据丢失或传输错误等问题。

具体来说,Slave接口时钟使能机制允许AXI主设备以更加灵活的方式与从设备进行通信。通过调整时钟使能信号的频率,主设备可以在不同的速率下读取或写入数据,从而实现更加高效和灵活的数据传输。这种分频操作特别适用于需要处理大量数据或需要平衡不同设备之间数据传输速率的场景。

**主接口时钟使能(Master Interface Clock Enable)**功能允许AXI从设备以AXI主设备接口(或FIFO的读取端)的分频速率运行。在这种情况下,时钟使能信号是单时钟宽度的,并且是同步的,提高了数据传输的可靠性和稳定性。这种机制确保了数据在传输过程中的准确性和一致性,从而保证了整个系统的正常运行。

通过利用主接口时钟使能功能,AXI从设备可以根据实际需求以较低的速率读取数据,这在某些应用中可能是有利的。例如,当主设备写入数据的速率高于从设备处理数据的速率时,通过降低从设备的读取速率,可以避免数据拥塞或丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/5468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python编程从入门到实践》day19

#昨日知识点回顾 使用unittest模块测试单元和类 #今日知识点学习 第12章 武装飞船 12.1 规划项目 游戏《外星人入侵》 12.2 安装pygame 终端管理器执行 pip install pygame 12.3 开始游戏项目 12.3.1 创建Pygame窗口及响应用户输入 import sysimport pygameclass…

Android4.4真机移植过程笔记(三)

如果文章字体看得不是很清楚,大家可以下载pdf文档查看,文档已上传~oo~ 7、安装加密APK 需要修改文件如下: 相对Android4.2改动还是蛮大的,有些文件连路径都变了: //Android4.2 1、frameworks/native/libs…

tableau基础学习——添加标靶图、甘特图、瀑布图

标靶图 添加参考线 添加参考分布 甘特图 创建新的字段 如设置延迟天数****计划交货日期-实际交货日期 为正代表提前交货,负则代表延迟交货 步骤:创建——计算新字段 把延迟天数放在颜色、大小里面就可以 瀑布图 两个表按照地区连接 先做个条形图&…

Linux的vim下制作进度条

目录 前言: 回车和换行有区别吗? 回车和换行的区别展示(这个我在Linux下演示) 为什么会消失呢? 回车和换行的区别 为什么\r和\n产生的效果不同? 打印进度条: (1)打印字符串 …

Anomalib:用于异常检测的深度学习库!

大家好,今天给大家介绍了一个用于无监督异常检测和定位的新型库:anomalib,Github链接:https://github.com/openvinotoolkit/anomalib 简介 考虑到可重复性和模块化,这个开源库提供了文献中的算法和一组工具,以通过即插即用的方法设计自定义异常检测算法。 Anomalib 包…

【STM32】快速使用F407通用定时器输出可变PWM

网上的文章太啰嗦,这里直接开始。 使用的是STM32CubeIDE,HAL。以通用定时器TIM12在 通道2上输出1KHz的PWM为例。 要确定输出的引脚、定时器连接在哪里。 TIM2、3、4、5、12、13、14在APB1上,最大计数频率84M。 TIM1、8、9、10、11在APB2…

RS0102YH8功能和参数介绍及如何计算热耗散

RS0102YH8功能和参数介绍-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 RS0102YH8 是一款电平转换芯片,由润石(RUNIC)公司生产。以下是关于RS0102YH8的一些功能和参数的介绍: 电平转换功能: RS0102YH8旨在提供电平转换…

Web APIs 学习归纳5--- BOM浏览器对象

前面几节主要针对DOM进行了学习,现在开始新的内容的学习---DOM浏览器对象。 DOM是更注重页面(document)内容的设计,但是BOM不仅限于页面(document)的设计,而是更加全面包括页面的刷新&#xff0…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-8.2-链接脚本

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

C++入门基础(二)

目录 缺省参数缺省参数概念缺省参数分类全缺省参数半缺省参数声明与定义分离 缺省参数的应用 函数重载函数重载概念例子1 参数类型不同例子2 参数的个数不同例子3 参数的顺序不同 C支持函数重载的原理--名字修饰(name Mangling) 感谢各位大佬对我的支持,如果我的文章对你有用,欢…

傲软录屏(ApowerREC)一款简单好用的录屏软件,中文破姐版 v1.6.9.6(240501)

软件介绍 傲软录屏,是由ApowerREC开发的一款高级录屏软件,兼容多个操作系统平台,包括Windows、Mac以及基于安卓和iOS的设备。这款专业工具具备捕捉各类屏幕活动的能力,确保音视频同步,无论用户是进行电脑桌面操作、参…

算法入门<二>:分治算法之汉诺塔问题及递归造成的栈溢出

1、分治算法 分治(divide and conquer),全称分而治之,是一种非常重要且常见的算法策略。分治通常基于递归实现,包括“分”和“治”两个步骤。 分(划分阶段):递归地将原问题分解为两…

ARM学习(27)链接库依赖学习(二)dlopen failed:library xxxx.so

笔者继续学习一下链接的依赖库。 1、起因 Android下面需要需要一个日志解码库,所以笔者就编译了一个parse.so来进行解码, 编译器:Clang,基于llvm后端的编译器平台:交叉编译,linux -> aarch64 linux An…

Angular中的管道(Pipe)

Angular中的管道(Pipe) 文章目录 Angular中的管道(Pipe)前言一、内置管道1. date管道格式化日期2. currency管道格式化货币3. uppercase和lowercase管道转换字符串大小写4. 小数位数5. JavaScript 对象序列化6. slice7. 管道链 二、自定义管道 前言 Angular中的管道&#xff0…

【Qt之OpenGL】01创建OpenGL窗口

1.创建子类继承QOpenGLWidget 2.重写三个虚函数 /** 设置OpenGL的资源和状态,最先调用且调用一次* brief initializeGL*/ virtual void initializeGL() override; /** 设置OpenGL视口、投影等,当widget调整大小(或首次显示)时调用* brief resizeGL* param w* para…

四、线段、矩形、圆、椭圆、自定义多边形、边缘轮廓和文本绘制(OpenCvSharp)

功能实现: 对指定图片上进行绘制线段、矩形、圆、椭圆、自定义多边形、边缘轮廓以及自定义文本 一、布局 用到了一个pictureBox和八个button 二、引入命名空间 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.F…

【MySQL | 第九篇】重新认识MySQL锁

文章目录 9.重新认识MySQL锁9.1MySQL锁概述9.2锁分类9.2.1锁的粒度9.2.2锁的区间9.2.3锁的性能9.2.4锁的级别 9.3拓展:意向锁9.3.1意向锁概述9.3.2意向锁分类9.3.3意向锁作用(1)意向锁的兼容互斥性(2)例子1&#xff08…

【Flutter】极光推送配置流程(小米厂商通道) 章二

前言 继【Flutter】极光推送配置流程(极光通道/华为厂商/IOS) 章一 并且,我大概率不会去修改第一篇文章的内容。 随着我自己在配置公司的项目的同时,我希望一直更新这个推送系列文章。 在章一配置完后,也是出现了一些问题,所以本…

PHP算命源码_最新测算塔罗源码_可以运营

众筹商城源码 众筹商品平台 商城加共识元富之路 网上商城众筹 前端是编译后的,后端PHP,带商城 运行截图 源码贡献 https://githubs.xyz/boot?app39 部分数据库表 CREATE TABLE ti_shopro_store (id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,nam…

当Kubeflow遇上GPU池化

随着人工智能技术的迅猛发展,AI开发已成为企业创新的重要驱动力。然而,在AI开发过程中,企业面临着诸多挑战,如开发工具的选择和开发资源如何高效利用等。本文将围绕这些挑战,探讨GPU池化如何赋能Kubeflow进行AI开发&am…