带你快速入门AXI4总线--AXI4-Stream篇(1)----AXI4-Stream总线
写在前面
随着对XILINX器件使用的深入,发现越来越多的IP都选配了AXI4的接口。这使得只要学会了AXI4总线的使用,基本上就能对XILINX IP的使用做到简单的上手。所以学会AXI4总线,对XILINX器件的调试设计有很大的帮助。
AXI4-Stream协议是AXI4三个协议中最简单的一个部分,本着先易后难的理念,该系列先对AXI4-Stream协议及其使用做一个简单的介绍。
AXI4系列链接:带你快速入门AXI4总线--汇总篇(直达链接)
1、什么是AXI4-Stream?
AXI 表示 Advanced eXtensible Interface(高级可扩展接口),它是由 Arm 定义的接口协议,包含在“高级微控制器总线架构 AMBA”标准中。
AXI4 接口 (AMBA 4.0) 分 3 种类型:
- AXI4 (AXI4-Full):用于满足高性能存储器映射需求。
- AXI4-Lite:用于简单的低吞吐量存储器映射通信(例如,往来于状态寄存器的通信)。
- AXI4-Stream:用于高速流传输数据。
AXI-Stream顾名思义是用来传输数据流的,如图像输入,高速AD等,这种数据流的处理一般是和DMA一并使用的。
2、AXI4-Stream的信号描述
该协议的信号接口如下,我依据功能对其进行了划分,共分为4个大块。接下来分别对其进行讲解:
2.1、系统类
该类信号比较简单,只有两个:ACLK和ARESETn。分别是系统的全局时钟与全局复位:
- ACLK:全局时钟信号,所有信号在主时钟信号的上升沿采样
- ARESETn:复位信号,低电平有效
2.2、传输数据类
该类信号用于数据的传输过程:
- TVALID:主机数据有效信号。由主机发出,表明当前发送的数据有效
- TREADY:从机发出的接收准备好信号。由从机发出,表明从机准备好接收数据
- TDATA:主机发出的数据,数据宽度为BYTE的整数倍
- TLAST:主机发出的数据,表明当前数据为该报数据(packet)的最后一个数据,即为数据包的边界
2.2.1、握手(handshake)
AXIS协议的通信机制是通过握手过程建立起来的,可分为以下三种情况:
情况1:主机先于从机做好了发送数据的准备
主机先拉高TVALID信号--表明当前主机可以传送数据给从机,而TVALID一旦被拉高,则只能在从机进行响应传输了数据后才能拉低。从机在接收到主机发送的准备好的信号后,会对自身的情况做判断,判断自己是否具备了接收数据的准备,这也给了从机对数据流进行反压的能力,保证从机的接收处理能力不会瘫痪。一旦从机可以接收数据,便拉高TREADY信号,表明自己可以接收数据。此时TVALID && TREADY为高,在时钟的上升沿进行数据传输。
情况2:主机后于从机做好了发送数据的准备
从机拉高TREADY信号,表明自己可以接收数据。主机会对自身的情况做判断,判断自己是否具备了发送数据的准备,一旦主机可以发送数据便拉高TVALID信号,此时TVALID && TREADY为高,在时钟的上升沿进行数据传输。
情况3:主机、从机同时做好了发送/接收数据的准备
主机拉高TVALID信号的同时从机拉高TREADY信号,分别表明自己可以发送/接收数据,在时钟的上升沿进行数据传输。
握手机制可以用个通俗的例子比较----快递小哥(主机MASTER)拿了一车快递,准备全部送去小区的菜鸟驿站入库,与驿站值班小妹(从机SLAVE)对话如下:
情况1:主机先于从机做好了发送数据的准备
小哥:老妹,我这来了一车快递,赶紧让我入库(主机可以发送数据,拉高TVALID)
小妹:你先别急,我这货架还没空出来呢!先让我整理整理(从机没有做好接收数据的准备)
小妹: 好了,大兄弟,你赶紧入库吧(从机可以接收数据,拉高TREADY)
小妹:慢慢来,一件一件的来(每个时钟输出一个数据,流式传输stream)
情况2:主机后于从机做好了发送数据的准备
小妹:大兄弟,你赶紧入库吧,我都等你半天了,不然早回家了(从机可以接收数据,拉高TREADY)
小哥:老妹,我这车快没电了,跑不快,再给我两分钟(主机没有做好发送数据的准备)
小哥:老妹,我终于来了,赶紧的吧(主机可以发送数据,拉高TVALID)
小妹:慢慢来,一件一件的来(每个时钟输出一个数据,流式传输stream)
情况3:主机、从机同时做好了发送/接收数据的准备
小妹:来了啊,大兄弟,赶紧的吧(从机可以接收数据,拉高TREADY)
小哥:哎哟我去,这不巧了吗,咱也刚到(同时主机也可以发送数据,拉高TVALID)
小妹:慢慢来,一件一件的来(每个时钟输出一个数据,流式传输stream)
2.2.2、TLAST
在具有帧或者包概念的流式传输中,TLAST信号,用来表示一个包的结尾。例如发送大小为32字节的包,在发送第32个字节的时候,可以把TLAST信号拉高,来表示这个包发送完了。时序如下:
对于没有包或帧概念的数据流,TLAST的默认值是不确定的。则有以下选项:
- 设置TLAST低。这表明所有传输都在同一个数据包中
- 设置TLAST高。这表明所有传输都是单独的数据包
- 自动产生脉冲TLAST值。这个选项在固定数量的传输之后断言TLAST,例如在两次或16次传输之后
2.2.3、TDATA
主机发送给从机的信息(数据,空数据,位置数据),为BYTE的整数倍,是AXIS传输通道的主要载荷。
2.3、数据修饰类
在AXIS中,定义了三种流数据字节:
- 数据字节(Data Byte):包含在源和目标之间传输的有效信息的数据字节。
- 占位字节 (Position byte):表示流内部数据字节的相对位置的字节。 这是一个不包含在源和目标之间传输的任何相关数据值的占位符。
- 空字节(Null byte):不包含任何数据信息的字节或关于流内数据字节的相对位置的任何信息。
data type是最有意义的数据;position type 作为占位符使用,可以用来表征date type 的相对位置,null type不包含任何有用的信息。数据流的结构可以有很多种,例如:可以只传数据,也即都是data type,不包含position type和null type;也可以将data type 和 null type 混着传输;还可以将position type 和 data type混着传输。当然三者混着传输也没有问题。
那么不难想象信号TKEEP、WSTRB就是用来区分数据类型的了:
2.4、传输修饰类
这三个信号通常是在多个AXI接口的组件构成拓扑结构时用于表征传输的源与目的:
- TID :表示不同数据流的数据流标识符,指示数据来源
- DEST :用于提供路由信息,指示数据目的地
- TUSER:AXI4协议留给用户自定义的数据,可用来表征额外的信息
3、总结
AXI4-Stream跟AXI4的区别在于AXI4-Stream没有地址接口,这样就不涉及读写数据的概念了,只有简单的发送与接收说法,减少了延时,允许无限制的数据突发传输规模。AXI4-Stream的核心思想在于流式处理数据。
接下来详解AXI4-Stream接口的IP核----AXI4-STREAM DATA FIFO。
带你快速入门AXI4总线--AXI4-Stream篇(1)----AXI4-Stream总线相关推荐
- 带你快速入门AXI4总线--AXI4-Full篇(3)----XILINX AXI4-Full接口IP源码仿真分析(Master接口)
写在前面 接slave接口篇,本文继续打包一个AXI4-Full-Master接口的IP,学习下源码,再仿真看看波形. 带你快速入门AXI4总线--AXI4-Full篇(2)----XILINX AX ...
- 带你快速入门AXI4总线--AXI4-Full篇(1)----AXI4-Full总线
写在前面 AXI4系列链接:带你快速入门AXI4总线--汇总篇(直达链接) 1.什么是AXI4-Full? AXI 表示 Advanced eXtensible Interface(高级可扩展接口), ...
- 【效率】超详细!手把手带你快速入门 GitHub!
作者:Peter 编辑:JackTian 来源:公众号「杰哥的IT之旅」 快速入门GitHub GitHub在程序开发领域家喻户晓,现在几乎整个互联网的开发者都将版本管理工具GitHub作为版 ...
- 一文带你快速入门【哈希表】
最近开始学习哈希表,为此特写一遍文章介绍一下哈希表,带大家快速入门哈希表
- 手把手带你快速入门超越GAN的Normalizing Flow
手把手带你快速入门超越GAN的Normalizing Flow 作者:Aryansh Omray,微软数据科学工程师,Medium技术博主 机器学习领域的一个基本问题就是如何学习复杂数据的表征是机器学 ...
- 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding
文章目录 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding Jetpack 官方推荐架构 ViewModel 添加依赖 创建ViewModel 初始化ViewMode ...
- Markdown 快速入门上(基础语法篇)
Markdown 快速入门上(基础语法篇) 1. 简介 Markdown 是一门轻量级的标记性语言,可以用来修饰纯文本使得文档具有一定的优美格式. 像Microsoft Word 文本编辑器, 你需要 ...
- 新手如何快速入门Python(菜鸟必看篇)
学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如 ...
- Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇
Pandas高级数据分析快速入门之一--Python开发环境篇 Pandas高级数据分析快速入门之二--基础篇 Pandas高级数据分析快速入门之三--数据挖掘与统计分析篇 Pandas高级数据分析快 ...
最新文章
- 解决git clone慢问题
- 学习python需要什么基础-学习python需要什么基础吗?老男孩Python
- 走过2011,展望2012
- Python案例:输出指定范围的闰年
- 知乎高赞:如果你是一个 Java 面试官,你会问哪些问题....
- HDU2572 终曲【字符串匹配】
- python画柱状图-Python Excel 绘制柱形图
- python多态_记录学习python第9天-继承/多态
- Python 之pdb调试
- Facebook高管:文字分享将枯竭 5年后或许全是视频
- java毕业生设计学生课堂互动教学系统计算机源码+系统+mysql+调试部署+lw
- Unity3D中unitypackage文件的图标显示及打开方式异常问题的解决方法(值得收藏)
- cisco思科交换机恢复出厂设置清除配置的方法
- 花名的新思考:花名的最优用法?
- 红旗linux如何开远程桌面,配置VNC服务实现红旗Linux远程桌面访问
- R软件R2WinBUGS程序包在网状Meta分析中的应用
- 天津大学电子海图控件TjuES57Map
- 好文:华杉:我等用功,不求日增,但求日减。减一分人欲,则增一分天理,这是何等简易!何等洒脱!...
- 国家贫困县75万重奖矿工拳王 称其他方面可省点
- [附源码]计算机毕业设计JAVA基于JAVAWEB的高校实训管理系统
热门文章
- Android 代码形式安装证书到手机内
- phpstorm+xdebug远程调试
- 【Excel】excel中怎样隔行插入空行?
- reactjs simple text editor
- 电脑上的PDF文件太大了怎么办?
- 支持亿级标签接入,ClickHouse在广域物联网云平台架构的探索与实践
- 包无法进行更新、相关性或冲突验证。 (Exception from HRESULT: 0x80073CF3)的解决办法
- iphone计算机的声音怎么办,苹果耳机插电脑上没声音怎么办_苹果耳机插win10电脑没声音如何解决-win7之家...
- 滴滴打车2015-2016
- Ubuntu操作系统是什么?它和windows有什么区别呢?