【FPGA开发】AXI-Stream总线协议解读

文章目录

  • AXI-Stream概述
    • 协议中一些定义
      • 字节定义
      • 流的定义
    • 数据流类别
      • 字节流
      • 连续对齐流
      • 连续不对齐流
      • 稀疏流
  • 协议的信号
    • 信号列表

文章为个人理解整理,如有错误,欢迎指正!

参考文献
ARM官方手册 《IHI0051B》

AXI-Stream概述

协议中一些定义

AXI-Stream是两个连接在一起的器件进行数据交换的标准协议,他是点对点协议,连接一个发送端和一个接收端。

字节定义

1、数据字节:包含有效信息的数据字节,数据字节在源端和目的端之间传输
2、位置字节:指示数据流中数据字节的相对位置,一个占位符,它不包含在源端和目的端之间传输的任何相关数据值。
3、空字节:不包含上述两种字节意义的第三种字节。

流的定义

1、Transfer:AXI-Stream协议中的一次数据传输。一次TVALIDTREADY的握手,就是一次transfer
2、Packet:AXI-Stream协议中传输的一组字节,一个Packet包含一个或多个Transfer,类似于AXI突发。
3、Frame:一个Frame包含整数个Packet,一个Frame可以有很多的字节,例如整个视频帧缓冲区。一个Frame是AXI—Stream协议中,字节分组的最高级别。
4、Data Stream:可以包含独立的字节传输,或者在Packet中组合在一起的一系列字节传输。

上述四个流的定义,从上到下,暗含了层级的概念。

数据流类别

AXI-Stream支持多种数据流形式。
本节中显示的示例包含4字节宽总线上的十六进制值,列按时间顺序从左到右排列

字节流

字节流是数据字节和空字节的传输,字节流传输可以传输任意数量的数据字节,这取决于数据宽度。
空字节可以在发送端和接收端之间的任何点从流中插入或删除。
图1-1给了两个字节流的例子,由于空字节没有任何有效信息,所以两个图传输的信息是一样的。
在这里插入图片描述

连续对齐流

连续对齐流是传输一定数量的数据字节,其中每个数据包没有位置字节或空字节,如图1-2所示。
在这里插入图片描述

连续不对齐流

连续不对齐流中,可以有任意数据的位置字节,但是位置字节不会插在数据字节中间,只会在包头或者包尾,或者同时在包头和包尾。
如图1-3左边的包,D-01至D-11的数据字节是连续的,在尾巴处有两个位置字节;
如图1-3右边的包,D-01至D-11的数据字节是连续的,在头部和尾巴处各有三个位置字节;
在这里插入图片描述

稀疏流

稀疏流传输数据字节和位置字节,所有的数据字节必须要从源端传到目的端,所有数据字节和位置字节的相对位置在源端和目的端之间不能改变,一般来说,数据流中的主体是数据字节。
图1-4所示,每两个数据字节后跟着一个位置字节。
在这里插入图片描述

协议的信号

信号列表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前四个信号不再赘述,时钟、复位、valid和ready握手,都是AXI协议中的老演员了,时序要求和AXI-FULL、AXI-Lite差不多。


TDATA:数据,位宽必须是字节的整数倍,推荐8, 16, 32, 64, 128, 256, 512 or 1024-bits。

字节位置:数据流中先传输的是数据流的低字节,对于一个没有空字节的满包流,位置满足如下规律

  • 字节序列n从0开始向上编号
  • 每次传输,t,按顺序从0往上编号
  • 数据总线的宽度为w字节
  • INT(x)是x的舍入整数值

字节n包含在传输t中,其中: t = INT(n/w) ,
在字节位置b,其中:b = n - (t * w)
它包含在:TDATA[(8b+7):8b]

字节类型:数据字节、位置字节和空字节。

数据合并、打包和宽度转换:其中的宽度转换,包括向上转换和向下转换。


TSTRB:可以理解为标识符,指示TDATA中的每个字节,是数据字节还是位置字节。
TKEEP:同样理解为标识符,指示TDATA中的每个字节,是否需要作为数据流的一部分被处理。
在这里插入图片描述


TLAST:指示Packet的边界。
TID:是数据流标识符,其位宽建议不大于8。
TDEST:为数据流提供路由信息,其位宽建议不大于8。
TUSER:是用户定义的边带信息,可以沿着数据流传输。其宽度建议为TDATA_WIDTH/8的整数倍。
TWAKEUP:标识与axis - stream接口相关的任何活动

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

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

相关文章

谷粒商城のMySQL集群分库分表

文章目录 前言一、MySQL的集群架构二、MySQL主从同步实践1.创建主节点实例2.创建从节点实例3.修改配置4.开始同步4.测试主从同步效果5.小结 三、MySQL分库分表1.配置sharding-proxy2.测试sharding-proxy3.小结 前言 本篇是谷粒商城集群部署篇,搭建MySQL集群以及分库…

计算机组成原理对于学习嵌入式开发的意义

计算机组成原理对于学习嵌入式开发的意义 前言 最近有位同学向我咨询,问学习嵌入式开发需不需要学习硬件?进而引申到了需不需要学习计算机组成原理呢? 正文 首先计算机组成原理是计算机科学与技术专业的一门核心基础课程,它深入…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

SpringBoot 2.2.10 无法执行Test单元测试

很早之前的项目今天clone现在,想执行一个业务订单的检查,该检查的代码放在test单元测试中,启动也是好好的,当点击对应的方法执行Test的时候就报错 tip:已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…

多表查询综合归纳

目录 1. 多表关系 1.1 一对多(多对一) 1.2 多对多 1.3 一对一 2. 多表查询概述 2.1 熟悉表 2.2 笛卡尔积 2.3 消除笛卡尔积 2.4 多表查询分类 3. 内连接 3.1 隐式内连接 3.2 显式内连接 4. 外连接 4.1 左外连接 4.2 右外连接 5. 自连接 …

python爬虫(二)爬取国家博物馆的信息

import requests from bs4 import BeautifulSoup# 起始网址 url https://www.chnmuseum.cn/zx/xingnew/index_1.shtml # 用于存储所有数据 all_data [] page 1 global_index 1 # 定义全局序号变量并初始化为1 while True:html_url requests.get(url).textif requests.get…

基于NI Vision和MATLAB的图像颜色识别与透视变换

1. 任务概述 利用LabVIEW的NI Vision模块读取图片,对图像中具有特征颜色的部分进行识别,并对识别的颜色区域进行标记。接着,通过图像处理算法检测图像的四个顶点(左上、左下、右上、右下),并识别每个顶点周…

Qt_day7_文件IO

目录 文件IO 1. QFileDialog 文件对话框(熟悉) 2. QFileInfo 文件信息类(熟悉) 3. QFile 文件读写类(掌握) 4. UI操作与耗时操作(掌握) 5. 多线程(掌握)…

[论文笔记]An LLM Compiler for Parallel Function Calling

引言 今天带来一篇优化函数调用的论文笔记——An LLM Compiler for Parallel Function Calling。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 当前的函数(工具)调用方法通常需要对每个函数进行顺序推理和操作&…

网络性能测试

一、iperf网络性能测试工具 测试udp丢包率 在服务器启动 iperf 服务端 iperf -p 9000 -s -u -i 1参数说明: -p : 端口号 -s : 表示服务端 -u : 表示 udp 协议 -i : 检测的时间间隔(单位,秒) 在客户端,启动 iperf 客户端 iperf -c xxx.xxx.14…

Rust语言在系统编程中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 Rust语言在系统编程中的应用 Rust语言在系统编程中的应用 Rust语言在系统编程中的应用 引言 Rust 概述 定义与原理 发展历程 Ru…

1-Equity-Transformer:求解NP-Hard Min-Max路由问题的顺序生成算法(AAAI-24)(完)(code)

文章目录 AbstractIntroduction问题表述Methodology多智能体位置编码公平上下文编码训练方案ExperimentsmTSP的性能评估mPDP的性能评估Related WorkConclusionAbstract 最小最大路由问题旨在通过智能体合作完成任务来最小化多个智能体中最长行程的长度。这些问题包括对现实世界…

数字后端教程之Innovus report_property和get_property使用方法及应用案例

数字IC后端实现Innovus中使用report_property可以报告出各种各样object的属性,主要有cell,net,PG Net,Pin,时钟clock,时序库lib属性,Design属性,timing path,timin arc等…

【Vitepress报错】Error: [vitepress] 8 dead link(s) found.

原因 VitePress 在编译时,发现 死链接(dead links) 会构建失败!具体在哪我也找不到… 解决方案 如图第一行蓝色提示信息,设置 Vitepress 属性 ignoredeadlinks 为 true 可忽略报错。 .vuepress/config.js export default defineConfig(…

【开源风云】从若依系列脚手架汲取编程之道(七)

📕开源风云系列 本篇文字量巨大,甚至在发表编辑之时造成编辑器卡顿,哈哈,最近在忙人生的另一项规划,文章更新就逐渐缓慢了,希望我们都逐渐走向自己的道路呀! 🍊本系列将从开源名将若…

Docker+Django项目部署-从Linux+Windows实战

一、概述 1. 什么是Docker Docker 是一个开源的应用容器引擎,支持在win、mac、Linux系统上进行安装。可以帮助我们在一台电脑上创建出多个隔离的环境,比传统的虚拟机极大的节省资源 。 为什么要创建隔离的环境? 假设你先在有一个centos7.…

[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]

YOLOv5是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv5具有更高的…

蓝桥杯备赛(持续更新)

16届蓝桥杯算法类知识图谱.pdf 1. 格式打印 %03d:如果是两位数,将会在前面添上一位0 %.2f:会保留两位小数 如果是long,必须在数字后面加上L。 2. 进制转化 2.1. 十进制转任意进制: 十进制转任意进制时&#xff…

使用Element UI实现前端分页,及el-table表格跨页选择数据,切换分页保留分页数据,限制多选数量

文章目录 一、前端分页1、模板部分 (\<template>)2、数据部分 (data)3、计算属性 (computed)4、方法 (methods) 二、跨页选择1、模板部分 (\<template>)2、数据部分 (data)3、方法 (methods) 三、限制数量1、模板部分 (\<template>)2、数据部分 (data)3、方法…

ThriveX 博客管理系统前后端项目部署教程

前端 前端项目地址&#xff1a;https://github.com/LiuYuYang01/ThriveX-Blog 控制端项目地址&#xff1a;https://github.com/LiuYuYang01/ThriveX-Admin Vercel 首先以 Vercel 进行部署&#xff0c;两种方式部署都是一样的&#xff0c;我们以前端项目进行演示 首先我们先…