FIFO Generate IP核AXI接口配置全解

当需要在设计中使用自定义IP时,可以通过为IP核的各种参数指定值来进行定制。以下是一般步骤的概述:

首先是从IP catalog中选择IP核。

然后双击这个选定的IP核,打开一个定制向导或参数设置窗口。或在工具栏或右键菜单中选择“Customize IP”命令,启动定制向导或打开相关参数设置。

对于AXI memory mapped的FIFO Generator IP核,通常包含多个配置选项卡,以便用户可以根据其应用需求进行定制。以下是一些常见的配置选项卡示例,但请注意,这些可能因Vivado的版本更新而略有变化:

1  Basic Tab

AXI Interface Option

四种AXI接口样式是可用的:AXI4-Stream、AXI4、AXI3和AXI4-Lite。

Clocking Options

FIFO可以被配置为写操作和读操作使用独立时钟域或公共时钟域。

独立时钟(Independent Clock):允许用户在写端口和读端口上实现独特的时钟域。FIFO Generator IP负责处理时钟域之间的同步,不需要对时钟的相位和频率有特定的要求。

公共时钟(Common Clocks):当在单个时钟域内进行数据缓冲时,可以选择公共时钟选项。这意味着写端口和读端口都使用相同的时钟信号。

使用从设备时钟使能进行写入

注意:此选项仅适用于AXI Stream接口。

从设备接口时钟使能(Slave Interface Clock Enable)允许AXI主设备以AXI从设备接口(或FIFO的写入侧)的分频速率运行。

当您希望AXI主设备以较低的频率向FIFO写入数据时,此功能非常有用。时钟使能信号允许您控制何时从AXI主设备向FIFO发送数据,从而有效地降低了数据写入速率。

使用主设备时钟使能进行读取

注意:此选项仅适用于AXI Stream接口。

主设备接口时钟使能(Master Interface Clock Enable)允许AXI从设备以AXI主设备接口(或FIFO的读取侧)的分频速率运行。

当您希望AXI从设备以较低的频率从FIFO读取数据时,此功能非常有用。时钟使能信号允许您控制何时从FIFO向AXI从设备发送数据,从而有效地降低了数据读取速率。

2  Ports Tabs

AXI FIFO的宽度是由通道中所有通道信息信号的总和来确定的。对于AXI4-Stream、AXI4、AXI3和AXI4-Lite接口,它们的通道信息信号在特定的表格(Table 4-3和Table 4-4)中列出。在配置AXI FIFO时,Vivado集成设计环境(IDE)提供了多个选项卡来进行相关配置。

2.1 AXI4/AXI3 Ports Tab

在AXI4和AXI3接口中,可以为ID、ADDR、DATA和USER信号配置宽度。

ID WidthAXI3接口中ID宽度应用于的所有通道。

ADDR Width:当同时选择了写通道和读通道时,相同的ADDR宽度将应用于写通道和读通道。这是因为AXI协议中的地址空间通常是共享的,因此读写操作使用相同的地址空间。

DATA Width:当同时选择了写通道和读通道时,DATA宽度也会在两个通道上保持一致。DATA宽度定义了每个数据传输中可以携带的数据位数。

USER Width:USER信号是AXI4/AXI3 FIFO中的可选信号,并且可以为每个通道独立配置。USER信号可以用于传输自定义的辅助信息。

对于所有选定的信号,AXI4/AXI3 FIFO的相应通道宽度是通过将特定通道中所有信号的宽度相加来确定的,如表4-3所示。

2.2 AXI4-Stream Ports Tab

在AXI4-Stream接口中,可以配置TDATATUSERTIDTDEST信号的宽度。而TKEEPTSTRB信号的宽度则是由配置的TDATA宽度决定的,它们内部使用公式(TDATA Width) / 8来计算。

对于所有选定的信号,AXI4-Stream FIFO的总宽度是通过将所有选定信号的宽度相加来确定的。这意味着,如果您配置了一个32位的TDATA、一个8位的TUSER、一个4位的TID和一个4位的TDEST,那么AXI4-Stream FIFO的总宽度将是48位(32位+8位+4位+4位)。同时,TKEEPTSTRB的宽度将分别为4位(因为32位的TDATA被分为8个字节)。

4.3  AXI4-Lite Ports Tab

在AXI4-Lite接口中,当同时选择了写通道和读通道时,会对这两个通道应用相同的ADDR和DATA宽度。对于AXI4-Lite FIFO的特定通道宽度,它是通过将该通道中所有信号的宽度相加来确定的。如Table 4-4所示。

3  AW/W/B/AR/R/AXI4-Stream Configuration Tab

AXI FIFO的功能在某些方面与Native FIFO在first-word fall-through模式下的功能相似。它支持的功能集包括ECC(错误检查和纠正,通常用于块RAM)、可编程就绪生成(如满、几乎满、可编程满)和可编程有效生成(如空、几乎空、可编程空)。

3.1 配置选项

1. FIFO

  这是用于实现先进先出(FIFO)缓冲器的选项。它通常用于在不同速率的数据生产者和消费者之间缓存数据,或者在两个时钟域之间传递数据。

2. Register Slice

这是一个寄存器切片选项,它可以提供数据的缓冲和同步,但不像FIFO那样具有完整的先进先出功能。它可能用于需要简单数据缓冲或延迟的场景。

3. Pass Through Wire

这是一个直通线选项,它直接传递数据而不进行任何缓冲或处理。这在不需要任何缓冲或同步的场景中可能是有用的。

3.2 FIFO Options

1.FIFO Implementation Type

FIFO Generator IP核可以根据计算出的宽度和选定的FIFO深度,以最优配置组合内存基本单元(block RAM或distributed RAM)。

2. FIFO Application Type

指定了FIFO的应用类型,例如数据FIFO、Packet FIFO或低延迟数据FIFO。每种类型都有其特定的用途和性能特点。

3. FIFO Width

AXI FIFO支持对称的写和读宽度。AXI FIFO的宽度是根据所选的接口类型(AXI4-Stream、AXI4、AXI3或AXI4-Lite)以及在该接口内选定的信号和配置的信号宽度来确定的。

3.3 ECC Options

ECC(Error Correction Code,错误检查和纠正)选项为使用块RAM(Block RAM)的FIFO宏提供了内置或通用的互联、错误注入和纠正检查功能。这个特性在公共时钟和独立时钟的块RAM FIFO中都可用。

在AXI FIFO的设计中,数据阈值参数提供了对FIFO状态进行监控和控制的重要机制。这些参数允许用户自定义何时FIFO被视为“满”或“空”,并可以生成中断以通知系统这些状态的变化。下面是您提到的数据阈值参数的详细解释:

3.4 Data Threshold Parameters

Programmable Full Type
  • 功能:允许用户从下拉菜单中选择一个可编程的满阈值类型。每个阈值的有效范围将在IDE中显示,并可能根据IDE中其他选项的选择而有所不同。
  • Full Threshold Assert Value:当选择带有单个阈值常量的可编程满阈值时可用。用户可以输入一个自定义的值。该阈值的有效范围将在IDE中提供。
Programmable Empty Type
  • 功能:允许用户从下拉菜单中选择一个可编程的空阈值类型。与满阈值类似,每个空阈值的有效范围也将在IDE中显示,并可能根据IDE中其他选项的选择而有所不同。
  • Empty Threshold Assert Value:当选择带有单个阈值常量的可编程空阈值时可用。用户可以输入一个自定义的值。该阈值的有效范围将在IDE中提供。
Provide FIFO Occupancy Data Counts

允许FIFO提供关于其内部数据占用情况的数据计数。这通常表示FIFO中当前存储的数据个数。此外,对于块RAM和分布式RAM实现,还可以选择性地提供溢出和欠流中断标志(Overflow和Underflow)。

3.5 Occupancy Data Counts

在AXI FIFO中,data_count是一个用于跟踪FIFO中数据个数的参数。数据计数总线的宽度被设置为log2(FIFO深度) + 1。这是因为一个N位的计数器可以表示从0到2^N - 1的数值,因此一个能够表示从0到FIFO深度(包括0和FIFO深度)的计数器需要log2(FIFO深度) + 1位。

在公共时钟模式下,AXI FIFO提供单一的“Data Count”输出,这个输出反映了FIFO中当前的总数据个数。在独立时钟模式下,AXI FIFO提供两个数据计数输出:Read Data Count和Write Data Count。

关于数据阈值参数的例子,下面给出了“可编程满阈值”和“可编程空阈值”以及数据计数的具体应用场景:

可编程满阈值

假设你希望FIFO中的数小于16,可以设置可编程满阈值为16。当FIFO中的单词数量达到或超过16时,满阈值将被触发,系统可以采取相应的措施,如暂停向FIFO写入数据,以防止数据溢出。

可编程空阈值

如果设置可编程空阈值为8,当FIFO中的数降至或低于8时,空阈值将被触发,系统可以开始从FIFO中读取数据,以确保FIFO不会完全排空,从而保持数据的连续性和流畅性。

数据计数

使用数据计数来确定FIFO中的事务数量。

Status Flags Tab

4.1 Underflow Flag

  • 功能:用于指示读操作不成功。这通常发生在尝试从FIFO中读取数据但FIFO为空时。当Underflow 条件被满足时,该标志会被设置。
  • 同步性:Underflow 标志与读时钟(rd_clk)同步。这意味着当在读时钟的某个边沿检测到FIFO为空且尝试进行读操作时,Underflow 标志会被设置。
  • 非破坏性:Underflow 事件不会改变FIFO的状态。

4.2 Overflow Flag

  • 功能:用于指示写操作不成功。这通常发生在尝试向FIFO中写入数据但FIFO已满时。当Overflow 条件被满足时,该标志会被设置。
  • 同步性:Overflow 标志与写时钟(wr_clk)同步。这意味着当在写时钟的某个边沿检测到FIFO已满且尝试进行写操作时,Overflow 标志会被设置。
  • 非破坏性:Overflow 事件同样不会改变FIFO的状态。

Summary Tab

在AXI FIFO的Summary(摘要)标签页中,会显示用户所选的AXI FIFO选项的总结,包括接口类型、FIFO类型、FIFO尺寸以及任何额外功能的选择状态。在“Additional Features”(额外功能)部分,大部分功能会显示为“Not Selected”(未选择,如果未使用)或“Selected”(已选择,如果使用)。

关于FIFO深度的说明,它提供了所选配置的实际FIFO深度。这些深度可能与在AXI FIFO IDE的第4个屏幕上所选的深度略有不同。这通常是因为FIFO的实际深度可能是由硬件实现、性能优化或对齐要求等因素决定的,这些因素可能导致实际的FIFO深度与用户在界面上指定的不完全相同。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SAPUI5基础知识1 - 概览,库,支持工具,自学教程

1. SAPUI5 概览 1.1 SAPUI5 SAPUI5是一种用于构建企业级Web应用程序的开发框架。它是由SAP开发的,基于HTML5、CSS3和JavaScript技术。 SAPUI5提供了一套丰富的UI控件和工具,使开发人员能够快速构建现代化、可扩展和可定制的应用程序。 它还提供了数据…

STM32CubeMX学习笔记32---FreeRTOS资源管理

一、CPU利用率简介 1 基本概念 CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高&#xf…

JVM调参实践总结

JVM调优–理论篇从理论层面介绍了如何对JVM调优。这里再写一篇WIKI,尝试记录下JVM参数使用的最佳实践,注意,这里重点介绍HotSpot VM的调参,其他JVM的调参可以类比,但不可照搬。 Java版本选择 基于Java开发应用时&…

面向新手在无人机竞速场景下的飞行辅助系统——浙大 FAST-Lab 高飞团队 ICRA 论文三项 Best Paper 入围

恭喜浙江大学 FAST-Lab 钟宇航同学的论文 A Trajectory-based Flight Assistive System for Novice Pilots in Drone Racing Scenario 顺利发表 ICRA 2024,并同时入选三项 Finalist: the IEEE ICRA Best Conference Paper Awardthe IEEE ICRA Best Pape…

干货!Kali Linux命令大全(建议收藏)

系统信息 arch 显示机器的处理器架构 name -m 显示机器的处理器架构 name -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 -(SMBIOS/DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试读取操作 cat /proc/cpuinfo …

[综合应用]dns nfs httpd php mysql

第一步:搭建三台主机 主机名称 Ip地址 角色 503A 192.168.68.10 Mysql从 503B 192.168.68.11 Mysql从,nfs服务端,dns服务端 503Cmysql 192.168.68.12 MySQL主,web客户端 第二步:在503B上配置DNS 2.1 下载…

【3dmax笔记】027:配置修改器集、工具栏自定义与加载

文章目录 一、配置修改器集二、自定义工具栏三、加载工具栏 一、配置修改器集 可以把自己常用的修改命令放到右边框中的部分,便于自己的操作,省去了每次都要花半天时间找命令的尴尬。新建一个二维或者三维物体,点击修改面板,点击…

三分钟了解计算机网络核心概念-数据链路层和物理层

计算机网络数据链路层和物理层 节点:一般指链路层协议中的设备。 链路:一般把沿着通信路径连接相邻节点的通信信道称为链路。 MAC 协议:媒体访问控制协议,它规定了帧在链路上传输的规则。 奇偶校验位:一种差错检测方…

【含win+Mac整合包】本地部署Stable Diffusion,超详细(AI 绘画保姆级教程,100%成功部署)

什么是stable diffusion? stable diffusion是在2022年发布的基于扩散模型的文本到图像生成模型,起初它只有一堆api供开发者使用,可以说非常难上手,随着2023年5月由AUTOMATIC1111大佬基于SD API开发的SD WebUI的发布,SD第一次有了…

C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【运维自动化-配置平台】如何对主机进行纳管

主机是配置平台管控最常见的资源,也是运维日常主要的管控对象;如何对主机进行全生命周期管理呢导入主机 直接导入 直接导入仅适用于直连区域(default area)的主机,也就是网络跟蓝鲸平台能内网互通的。 资源–>主…

西奥机电食品质构分析仪:揭秘水果蔬菜硬度等指标的测试原理

西奥机电食品质构分析仪:揭秘水果蔬菜硬度等指标的测试原理 在食品科学领域,对水果蔬菜硬度的精准测量是评估其品质与口感的重要步骤。西奥机电食品质构分析仪凭借其先进的技术和独特的测试原理,为这一领域带来了革命性的变革。下面&#xf…

非标类型导致Dubbo接口出入参异常的本质 | 得物技术

一、概述 笔者支持过程中多次发现诡异的Dubbo接口异常问题,抓耳挠腮最后定位到代码上和代码外的原因,事后只感觉脑瓜子嗡嗡的。考虑到这不是第一次,也绝不会是最后一次出现类似问题,下面笔者将尽可能详细的梳理、总结一下该问题的…

6个月小猫成长必备!福派斯无麸质幼猫粮评测

你知道吗?给小猫选择适合的猫粮是一件非常不容易但很重要的事情。那么,对于6个月大的小猫来说,什么样的猫粮是最适合它们的呢?🐱 我们首先要考虑的是猫粮的营养成分。6个月大的小猫正处于快速生长期,所以需…

vue3 + ts实现canvas绘制的waterfall

实际运行效果(仅包含waterfall图表部分) component.vue <template><div ref="heatmap" :style="{ height: props.containerHeight + px }" /> </template><script setup> import ColorMap from "colormap"; import…

Labels and Databases for Mac:强大的标签与数据库管理工具

Labels and Databases for Mac是一款集标签制作与数据库管理于一体的强大工具&#xff0c;专为Mac用户打造&#xff0c;旨在提供高效、便捷的标签制作与数据管理体验。 这款软件拥有丰富的内置标签格式&#xff0c;用户可轻松创建各种标签、信封和卡片&#xff0c;满足个性化需…

掌控网络流量,优化网络性能 - AnaTraf网络流量分析仪登场

在当今日新月异的网络环境中,网络流量监控和性能诊断已成为企业IT部门不可或缺的重要工作。只有充分了解网络流量状况,才能有效优化网络性能,提高业务运营效率。针对这一需求,全新推出的AnaTraf网络流量分析仪应运而生,为企业提供全面的网络监控和性能诊断解决方案。 快速定位…

Java双亲委派机制

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 概述 Java程序在运…

pygame实现鼠标绘制并调节画笔大小

pygame实现鼠标绘制并调节画笔大小 pygame介绍调节画笔大小鼠标绘制效果 pygame介绍 Pygame是一个开源的Python库&#xff0c;专为电子游戏开发而设计。它建立在SDL&#xff08;Simple DirectMedia Layer&#xff09;的基础上&#xff0c;允许开发者使用Python这种高级语言来实…

C语言趣味代码(五)

我想以此篇结束关于C语言的博客&#xff0c;因为在C语言拖得越久越不能给大家带来新的创作&#xff0c;在此我也相信大家对C语言已经有了一个新的认知。进入正题&#xff0c;在这一篇中我主要编一个“英语单词练习小程序”来给大家展开介绍&#xff0c;从测试版逐步改良&#x…
最新文章