AXI4-Stream Interconnect模块的使用

2024-03-28 04:30

本文主要是介绍AXI4-Stream Interconnect模块的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
显示AXI4-Stream互连核心框图。 在AXI4-Stream互连中,AXI4-Stream交换机核心路由从接口(SI)和主接口(MI)之间的通信。 在连接SI或MI到交换机的每一条路径上,一个可选的AXI4-Stream基础设施核心(耦合器)系列可以执行各种转换和缓冲功能。 两个耦合器包括:AXI4-流寄存器切片、AXI4-流数据FIFO、AXI4-流时钟转换器、AXI4-流数据宽度转换器和AXI4-流协议转换器。
可以将AXI4-Stream互连核心配置为多达16个从接口(SI)和多达16个主接口(MI)。 每个SI连接到一个AXI4-Stream主设备并接受transfe来自连接的主设备的RS。 每个MI连接到一个AXI4-Stream从设备,并发出传输到从设备。 在中心是开关核心,路由之间的SI和MI传输。 在SI和开关之间的每条通路上,或者在开关和MI之间,可以有一个或多个AXI4-Stream基础设施核心来执行各种转换和存储功能。
该开关有效地将AXI4-Stream互连核心从SI相关功能单元(SI半球)和MI相关单元(MI半球)之间的中间分割开来)。 可能的话,ADO系统设计工具自动将耦合器插入SI或MI半球,以解决连接的主从设备的配置差异。

为AXI4-Stream互连生成一个项目

AXI4-Stream互连v2.1需要IP积分器。 要访问IP,首先创建Vivado项目,然后从Vivado流导航器中选择CreateBlockDesign。 在块设计画布中,从工具栏中选择AddIP选项,并从IP积分器IP目录窗口中选择AXI4-Stream互连。 在块设计画布中添加了一个AXI4-Stream互连IP实例。 单击图中的IP实例将打开其自定义窗口。
Toplevel Settings

Toplevel Settings
Number of Slave Interfaces

此参数指定IP上存在的AXI4-Stream从接口的数量。 值可以在1到16之间。

Number of Master Interfaces

此参数指定IP上存在的AXI4-Stream主接口的数量。 值可以在1到16之间。

Enable ACLKEN

如果设置为“是”,则此参数指定所有AXI4-Stream接口时钟是否存在可选的ACLKEN信号。

Use Control Register Routing

使用控制寄存器路由
此参数指定路由模式。 控制寄存器路由使AXI4-Lite控制寄存器接口能够处理传输路由。 如果此选项设置为No,则内联TDEST值用于路由。

Data Flow Properties

数据流属性
只有当从接口的数量大于1时,数据流属性选项修改。

Arbitrate on Maximum Number of Transfers

最高转让次数仲裁
此设置指定在放弃授予的仲裁之前要计算多少传输,并直接传递到AXI4-Stream互连实例中的AXI4-Stream交换机。 领事有关有效值范围和此参数的使用的更多详细信息,请参阅AXI4-StreamSwitch参数描述。

Arbitrate on Number of LOW TVALID Cycles

对LOW TVALID周期数进行仲裁
此设置允许在没有传输的情况下放弃授予的仲裁,并直接传递到AXI4-Stream互连实例中的AXI4-Stream交换机。 请参阅AXI4-Stream有关有效值范围和此参数的使用的更多详细信息,请切换参数描述。

Arbitrate on TLAST Transfer

对TLAST传输进行仲裁
此设置允许在接收到具有TLAST断言的传输并直接传递到AXI4-Stream互连insta中的AXI4-Stream交换机时放弃授予的仲裁NCE。 有关此参数的有效值范围和使用的更多细节,请参阅AXI4-StreamSwitch参数描述。

Arbiter Algorithm

仲裁算法
此设置允许选择仲裁算法,并直接传递到AXI4-流互连实例中的AXI4_Stream开关。 请参阅AXI4-Stream开关参数有关有效值范围和此参数使用的更多详细信息的说明。
Slave Interfaces

Enable Register Slice

启用寄存器切片
如果选中,则在Snn_AXIS接口和AXI4流开关之间的SI半球耦合器中插入AXI4流寄存器切片。

FIFO Depth

如果选择大于0的值,则在Snn_AXIS接口和AXI4流开关之间的SI半球耦合器中插入AXI4流数据FIFO。 FIFO的选定深度直接配置到AXI4-流数据FIFO实例中。

FIFO Packet Mode

FIFO分组模式
如果检查并选择大于0的FIFO深度进行Snn_AXIS,则启用AXI4流数据FIFO的分组模式。 有关Packet的更多细节,请参阅AXI4-Data FIFO参数描述分组模式操作。

Master Interfaces

Enable Register Slice

如果选中,则在AXI4流开关和Mnn_AXIS接口之间的MI半球耦合器中插入AXI4流寄存器切片。

FIFO Depth

如果选择大于0的值,则在AXI4流开关和Mnn_AXIS接口之间的MI半球耦合器中插入AXI4流数据FIFO。 FIFO的选定深度直接配置到AXI4-流数据FIFO实例中。 有关FIFO深度的有效范围的更多细节,请参阅AXI4-流数据FIFO参数描述。

FIFO Packet Mode

如果检查并选择大于0的FIFO深度进行Snn_AXIS,则启用AXI4流数据FIFO的分组模式。 有关更多细节,请参阅AXI4-流数据FIFO参数描述在分组模式操作上。

Base TDEST and High TDEST

上图所示的路由参数设置了解码,根据TDEST信号将从接口传输到主接口,并直接传递给AXI4-StreamSwitchI在AXI4-Stream互连中的状态。 有关路由的有效范围和使用,请参阅AXI4-StreamSwitch参数描述。 当使用控制寄存器路由设置为“是”时,这些参数是不可配置的。

参考:pg085 AXI4-Stream Interconnect部分

仿真部分:

在AXI4_Stream_Interconnect中,AXI4-Stream交换机核心路由从接口和主接口之间通信。
首先,在IP Catalog里添加模块:
在这里插入图片描述设置为2个Slave接口和2个Master接口,分别为S0,S1,M0,M1。其他设置保持不变。
在这里插入图片描述上图为S0,S1,M0, M1传输方式。可以在S接口与M接口之间相互传输。在S0==>M0, S1==>M1传输模式时,得到的仿真结果如下:
在这里插入图片描述从仿真结果可以看出,ARESETN低位有效,在S_AXIS_ARESETN复位后的两个时钟周期后 S_TREADY拉高,同时M_AXIS_TVAILD拉高,S0==>M0,S1==>M1数据成功传输。
注意:TDEST是选择通道的信号,使用 TDEST信号确定要将每个传输发送到哪个Mxx_AXIS接口。所以转换接口传输(如S0==>M1,S1==>M0)的时候要改变对应的S_TDEST的值。
这是最基本的数据传输,我在学习这个模块的过程中还遇到过下面的问题,可以进行参考。不一定完全正确,欢迎大家指正!
Tips:
1.如果能够读取数据,但是数据不连续,去看teatbench里给数据的延迟问题,多给一个延迟周期。
2.若从coe里面读取数据,输出端M_DATA可以成功读取,但是缺少S_VAILD前面的部分,要去看S_TLAST信号是不是给的太早,适当延迟S_TLAST信号,就可以将S_DATA读取coe的数据延迟一段时间。

这篇关于AXI4-Stream Interconnect模块的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3