Xilinx AXI DataMover使用说明与测试

news2024/11/28 12:47:10

Xilinx AXI DataMover使用说明与测试

  • 1 架构说明
  • 2 IP设置说明
    • 2.1 接口说明
    • 2.2 设置说明
  • 3 测试说明
    • 3.1 S2MM测试
    • 3.2 MM2S测试

本文主要介绍Xilinx AXI DataMover的使用和测试方法。

1 架构说明

在Xilinx的数据传输总线中,AXI Memory Map接口和AXI Stream接口是最常用的两类接口,如何实现这两类总线接口的转换是比较常见的问题,Xilinx AXI DataMover是实现AXI MM接口与ST接口转换的一个常用IP。AXI DataMover有两个子模块,分别是MM2S和S2MM:

  • S2MM:该子模块处理从AXI Stream到AXI Memory Map的事务。它具有专用的符合AXI Stream的命令和状态队列、重置块和错误信号。基于输入的命令和来自AXI Stream接口的输入数据,S2MM模块在AXI MM接口上发出写请求。输入流数据可以选择性地存储在S2MM模块中。数据路径接口(AXI4-Read和AXI4-Stream Master)可以选择与命令和状态接口(AXI4-Stream Command和AXI4-Stream Status)异步。
    在这里插入图片描述
  • MM2S:这个模块处理从AXI Memory Map到AXI Stream域的事务。它具有专用的符合AXI Stream的命令和状态队列、重置块和错误信号。根据命令输入,该子模块在AXI MM接口上发出读取请求,并将读取的数据转换为AXI Stream接口的数据从AXI Stream接口输出。可以选择将读取数据存储在MM2S块中。数据路径接口(AXI4-Read和AXI4-Stream Master)可以选择与命令和状态接口(AXI4-Stream Command 和AXI4-Stream Status)异步。
    在这里插入图片描述

2 IP设置说明

2.1 接口说明

AXI DataMover的接口主要包括时钟复位信号、输入输出的ST接口、输入输出的MM接口、输入的转换指令、输出的转换状态。

S2MM接口说明
m_axi_s2mm_aclkS2MM时钟
m_axi_s2mm_aresetnS2MM复位
m_axis_s2mm_cmdsts_awclkS2MM CMD和STS时钟
m_axis_s2mm_cmdsts_aresetnS2MM CMD和STS复位
S_AXIS_S2MM_CMDS2MM指令
S_AXIS_S2MM输入的S接口数据流
M_AXI_S2MM输出的MM接口数据流
M_AXIS_S2MM_STS输出的S2MM的状态
s2mm_errS2MM错误标识
MM2S接口说明
m_axi_mm2s_aclkMM2S时钟
m_axi_mm2s_aresetnMM2S复位
m_axis_mm2s_cmdsts_awclkMM2S CMD和STS时钟
m_axis_mm2s_cmdsts_aresetnMM2S CMD和STS复位
S_AXIS_MM2S_CMDMM2S指令
M_AXI_MM2S输入的MM接口数据流
M_AXIS_MM2S输出的S接口数据流
M_AXIS_MM2S_STS输出的MM2S的状态
mm2s_errS2MM错误标识

在这里插入图片描述

2.2 设置说明

DataMover操作由控制接口输入的控制指令控制,该接口接收来自用户逻辑的传输命令。MM2S和S2MM各有一个专用的命令接口。命令在输入命令接口上加载单个数据节拍。如果是32位的AXI总线,命令字段的宽度通常是72位。如果系统地址空间超过32位,命令字宽度将被扩展(通过参数化)。例如,64位地址系统要求命令字宽度为104位,以容纳更宽的地址范围,该地址宽度由下图中的Address Width参数决定。

整个命令字段如下图所示:

  • BTT:传输的数据字节数
  • Type:地址转换类型,0-FIXED;1-INCR
  • DSA:只有在DRR设置为1时才生效
  • EOF:指示是否为最后一帧命令,影响流接口的tlast信号
  • DRR:在DRE启用时生效
  • SADDR:MM的起始地址,注意地址对齐
  • TAG:标签字段,可传递给Status接口
  • RSVD:保留
  • xUSER:写入m_axis_mm2s_aruser信号
  • xCACHE:写入m_axis_s2mm_awcache信号
    在这里插入图片描述
    注:AXI DataMover核心支持可选的数据调整引擎(Data Realignment Engine, DRE)。当DRE启用时,DRE允许在内存映射数据路径上将数据重新对齐到字节(8位)级别。DRE支持提供高达64位tdata宽度的AXI4-Stream接口。

整个状态字段如下图所示

  • TAG:CMD传递过来的TAG信号
  • INTERR:1-DataMover内部错误;0-无错误
  • DECERR:1-地址编码错误;0-无错误
  • SLVERR:1-从设备响应错误;0-无错误
  • OKAY:1-整个数据转换过程正常;0-数据转换过程出现错误
    在这里插入图片描述
    注:IBTT功能启用时,状态字段如下图所示
  • BRCVD:流接口实际接收的字节数
  • EOP:流接口接收到tlast信号置一
    在这里插入图片描述

IP的设置如下图所示

  • Channel Type:Full-允许将MM2S通道配置为所有可能的组合和高级功能;Basic-基本模式,限制了一些特性,并限制MM2S仅用于32位或64位宽的数据
  • Maximum Burst Size:MM接口最大的突发长度
  • Width of BTT field:命令中BTT字段的宽度
  • Address Width:命令中SADDR字段的宽度
    在这里插入图片描述
  • Enable Asynchronous Clocks:使能命令状态接口的时钟与数据流的时钟异步
  • Allow Unaligned Transfers:使能DRE
  • Enable Store and Forward:启用此参数可确保在存储和转发FIFO中存在请求传输所需的所有数据之前,不会将传输发送到AXI4写地址通道。
  • Enable Indeterminate BTT Mode:启用IBTT模式。当传输命令发送到DataMover S2MM命令输入时,输入S2MM流通道上接收的字节数未知时需要启用该功能
    在这里插入图片描述

3 测试说明

测试工程的架构如下图所示,测试工程可从GitHub下载,主要模块的功能如下所述:

  • st1、st2:两个流信号,st1带指令和数据,将数据写入BRAM,st2只有指令,从BRAM读出数据
  • axis interconnect:互联总线
  • remove_head:拆解帧头和数据
  • ctrl_command:生成转换指令
  • ST2MM:接口转换模块,即DataMover IP
  • add_head:合并数据和帧头
  • BRAM:块存储器
    在这里插入图片描述

3.1 S2MM测试

写入数据的流程如下图所示,st1接口输入帧头和数据,经过remove_head模块拆分出帧头和数据,帧头传输给ctrl_command模块生成S2MM的控制命令,数据传输给ST2MM模块,ST2MM模块将数据格式由Stream转换为MM,并将数据写入BRAM。
在这里插入图片描述
在这里插入图片描述

3.2 MM2S测试

读出数据的流程如下图所示,st2接口输入帧头,remove_head模块拆分出帧头给ctrl_command模块,ctrl_command模块生成MM2S的控制命令和生成新的帧头,并将新的帧头传输给add_head模块。ST2MM从BRAM中取出数据,并转换为Stream接口的数据。add_head模块组合帧头和数据形成新的流信号。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Java Spring拦截器优化实践: 专注于API路径拦截

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spring IOC之AnnotationConfigApplicationContext

博主介绍:✌全网粉丝近5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus…

C进阶 -- 自定义类型

🏆结构体 🍭✨🎇🎆🙅‍♀️ 🍭结构体是一些值的集合,这些值称为 成员变量。结构的每个成员可以是不同的变量。 🥇 结构体类型的声明 struct Student {int age;//成员变量 }stu;/…

Rn页面滚动显示隐藏head动画

完整代码 import { View, Text, StyleSheet, Animated } from react-native export default () > {const opacity new Animated.Value(0)const handleScroll Animated.event([{ nativeEvent: { contentOffset: { y: opacity } } }],{ useNativeDriver: true })return (&l…

LSTM+CRF模型

今天讲讲LSTM和CRF模型,LSTM(长短期记忆)是一种特殊的循环神经网络(RNN)模型,用于处理序列数据、时间序列数据和文本数据等。LSTM通过引入门控机制,解决了传统RNN模型在处理长期依赖关系时的困难…

JavaSE | 初识Java(一) | JDK \ JRE \ JVM

Java初识 Java 是一门半编译型、半解释型语言。先通过 javac 编译程序把源文件进行编译,编译后生成的 .class 文件是由字节 码组成的平台无关、面向 JVM 的文件。最后启动 java 虚拟机 来运行 .class 文件,此时 JVM 会将字节码转换成平台能够理…

【C语言深入理解指针(3)】

1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* ; ⼀般使⽤: int main() {char ch w;char *pc &ch;*pc w;return 0; }还有⼀种使⽤⽅式如下: int main() {const char* pstr "hello bit.";//这⾥是把⼀个字符串放到ps…

链表经典面试题(五)

求链表的公共结点 1.题目2.详细的图示3.详细注释和代码实现 1.题目 2.详细的图示 3.详细注释和代码实现 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {//定义两个表示长度的指针,让它们指向headA和headB//我们暂时无法知道哪…

cesium 鹰眼图1

cesium 鹰眼图1 1、实现思路 用两个cesium实体来实现一个加载3维一个加载2维,在利用“viewer.scene.preRender.addEventListener”监听事件按监听实体的移动,使两个实体保持一样 2、示例代码 <!DOCTYPE html> <html lang="en"><head><

【Linux】探访环境变量的奥秘

一、概念先知 首先我们在聊【环境变量】之前知道它是什么&#x1f447; 环境变量(environment variables)&#xff1a;一般是指在操作系统在开机的时候帮我们维护系统运行时的一些动态参数读者可以回忆一下我们在学习 Java / Python 的时候&#xff0c;你们的老师是否有让你们配…

毛玻璃员工卡片悬停效果

效果展示 页面结构组成 通过效果展示图&#xff0c;我们可以看出页面布局比较常规&#xff0c;最核心的就是卡片&#xff0c;当鼠标没有悬停在卡片上时&#xff0c;文字和头像处于半透明状态&#xff0c;当鼠标悬停在卡片上是&#xff0c;底部会展示社交图标。 CSS 知识点 b…

去雨去雪去雾算法之本地与服务器的TensorBoard使用教程

在进行去雨去雾去雪算法实验时&#xff0c;需要注意几个参数设置&#xff0c;num_workers只能设置为0&#xff0c;否则会报各种稀奇古怪的错误。 本地使用TensorBoard 此外&#xff0c;发现生成的文件是events.out.tfevents格式的&#xff0c;查询了一番得知该文件是通过Tens…

postgresql-管理表空间

postgresql-管理表空间 基本概念创建表空间用户授权移动表空间 修改表空间移动表空间位置 删除表空间 基本概念 在 PostgreSQL 中&#xff0c;表空间&#xff08;tablespace&#xff09;表示数据文件的存放目录&#xff0c;这些数据文件代表了数 据库的对象&#xff0c;例如表…

Windows历史版本下载

1、微PE工具箱&#xff08;非广告本人常用&#xff09; 常用安装Windows系统的微PE工具 地址&#xff1a;https://www.wepe.com.cn/download.html 2、Windows系统下载地址&#xff08;非微软官方&#xff09; 地址&#xff1a;MSDN, 我告诉你 - 做一个安静的工具站 下载&…

郁金香2021年游戏辅助技术中级班(六)

郁金香2021年游戏辅助技术中级班&#xff08;六&#xff09; 055-ce,xdbg调试分析接任务交任务完成任务056-C,C写代码测试接任务交任务完成任务我们再来分析一下完成任务 057-C,C写代码测试交任务完成任务 055-ce,xdbg调试分析接任务交任务完成任务 创建一个新角色&#xff0c…

猫头虎解析:深入浅出cURL命令和HTTP请求

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Redis是否要分库的实践

Redis的分库其实没有带来任何效率上的提升&#xff0c;只是提供了一个命名空间&#xff0c;而这个命名空间可以完全通过key的设计来避开这个问题。 一个优雅的Redis的key的设计如下

【数据结构】排序之插入排序和选择排序

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、排序的概念及其分类 &#x1f4d2;1.1排序的概念 &#x1f4d2;1.2排序…

【计算机网络】详解TCP协议(下) 滑动窗口 | 流量控制 | 拥塞控制

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…