当前位置: 首页 > news >正文

一文理解AXI4-lite与AXI4-stream协议

AXI4-lite与AXI4-stream协议

        上篇博文《AMBA3.0 AXI总线入门》浅要介绍AXI4总线协议,AXI总线作为一种总线,可以挂载多个主设备(master)和从设备(slave),AXI总线协议定义了主设备和从设备之间如何进行通信。主设备可以向从设备发起读事务(Read Transaction)和写事务(Write Transaction),从设备只能被动接受主设备发起的请求并作出响应。一般来说,所有的设备共享总线的控制总线、地址总线和数据总线,但是同一时间只能有一对主从设备通过总线进行通信。由于可能会有多个主设备同时访问总线,因此必须要有个控制器选择哪个主设备优先进行通信,这便是总线仲裁;此外主设备可能会访问不同的从设备,此时控制器需要对主设备访问的地址进行译码,选择对应的从设备来和主设备进行通信。

        AXI4总线协议支持以下三种类型的接口(Interface):

        AXI4(有时候也叫AXI4-full):高性能存储映射接口;

        AXI4-Lite:简化版的AXI4接口,用于较少数据量的存储映射通信;

        AXI4-Steam:用于高速数据流传输,非存储映射接口。

所谓存储映射,即主设备访问从设备时需要给出访问的地址,即从设备是对应一段内存空间地址的,data && address

        这三种类型的接口应用场景也有所区别。AXI4-full接口支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI4-Lite接口为外设提供单个数据传输,数据总线只能是32位或者64位,每次传输只能传输一个数据。主要用于访问一些低速外设中的寄存器。而AXI-Steam接口则向FIFO一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速AD、PCIe、DMA接口等需要高速数据传输的场合。

        AXI4-full接口支持突发传输,所谓突发传输,就是给一个地址,可以对从这个地址开始的若干个地址处的值都进行读写,至于这若干个地址分别是什么,需要根据写/读地址通道 Master 给出的控制信号来决定。

        AXI4-Lite接口为外设提供单个数据传输,所谓单个数据传输,就是给一个地址,就只能读写这一个地址处的值。

AXI4-Lite接口

        AXI4-Lite接口由五个独立的通道构成:读地址;读数据;写地址;写数据;写响应。

        在一次读事务(Read Transaction)的过程中,主机首先在读地址通道给出读地址和控制信号,然后从机由读数据通道返回读出的数据。

        在一次写事务(Write Transaction)的过程中,主机在写地址通道给出写地址和控制信号,然后在写数据通道发送要写的数据。从机在接收数据之后,在写响应通道给出响应信号。

        对于AXI4-Lite接口,一次读/写事务只能读取/写入一个地址处的数据,但是对于AXI4-Full接口,一次读/写事务中,Master发出一个地址,而Slave可以从该地址开始连续读出、写入多个地址处的数据,并发送到读/写数据通道,这便是所谓的突发传输。

        每个通道都包含了一组信号,尤其需要注意的是 VALID READY 信号。VALID 信号由源端(source)产生,表示当前地址或者数据线上的信息是有效的;而 READY 信号由目的端(destination)产生,则表示已经准备好接收地址、数据以及控制信息。对于读数据通道,Slave需要将数据发送给Master,所以Slave是源端,也就是Slave负责产生 VALID 信号,Master负责产生READY信号

        对于写数据通道,Master需要将数据发送给Slave,所以Master是源端,也就是Master负责产生 VALID 信号,Slave负责产生READY信号。

在由通道传输信息的时候,需要通过 VALID READY 信号进行握手,如下图所示,图片中的 INFORMATION 是指通过通道传输的某种信息,可以是地址、数据、控制信号等等。在由通道传输信息的时候,需要通过 VALID READY 信号进行握手,如下图所示,图片中的 INFORMATION 是指通过通道传输的某种信息,可以是地址、数据、控制信号等等。

AXI 协议中,所有的输入信号都在是 ACLK 的上升沿采样,所有的输出信号必须在 ACLK 的上升沿之后才能改变。在 T1 之后,源端将 VALID 拉高,表明 INFORMATION 信号线上传输的是有效的地址、数据或者控制信息。目的端在 T2 之后将 READY 拉高,表明它已经准备好接收数据,此时源端必须保持 INFORMATION 数据稳定不变,直到 T3 时刻进行数据传输。

为了防止死锁,VALID信号和READY必须遵守以下的约定

VALID信号的拉高不能依赖于 READY 信号,也就是说源端不允许等目的端的 READY 信号拉高之后,才将 VALID 信号拉高。而且, 一旦 VALID 拉高,源端必须保持其处于拉高状态,直至成功握手(在时钟上升沿检测到 VALID READY 均为高电平)后才能拉低 VALID,目的端可以等检测到 VALID 信号拉高后,才将READY信号拉高;也可以不等。

到这里,已经简单介绍了 AXI4-Lite 接口的读写过程,以及握手协议。

AXI-Stream接口

        AXI-Stream(以下简称AXIS)是AMBA协议的AXI协议中最简单的一个协议;是AXI4中定义的面向数据流的协议,常用于对数据流的处理,如:摄像头(视频信号);高速ADXilinxAXI-DMA模块;在进行SOC设计中需要高速数据传输处理的场合,常常使用AXIS协议。

        AXI4-Stream用于数据交换的几个概念:

        Transfer:AXI4-Stream接口的一次数据传输。单个传输由单个TVALIDTREADY握手定义。

        Packet:通过AXI4-Stream接口一起传输的一组字节。数据包类似于AXI4突发传输。一个包可以由单个传输或多个传输组成。实现时可以使用包来更有效地处理包大小的组中的流。

        Frame :AXI4-Stream中最高级别的字节分组。一帧包含整数个数的报文。一个帧可以是一个非常大的字节数,例如整个视频帧缓冲区。

AXIS数据流有多种形式:

1Byte 2、连续对齐流 3、连续非对齐流 4、稀疏流

AXISAXI-FULL的区别:

取消了Address Write/Address Read通道;

取消了反馈响应信号BrespRresp

半双工,仅能读或者写;

不允许乱序;

无最大突发传输长度;

包含TID信号指示源,TDEST指示目的地;

包括一个用于插入和溢出空字节的TKEEP信号

AXI-Stream端口信号(Master

ACLK

输入信号,系统时钟

ARESETN

输入信号,系统复位

TVALID

输出信号,数据有效信号,握手信号

TREADY

输入信号,准备接收信号,握手信号

TDATA

输出信号,数据线,数据传输

TSTRB

输出信号,用于流格式

TKEEP

输出信号,主机数据有效信号,高电平表示有效,低电平表示无效

TLAST

输出信号,表示最后一个字节,下一个时钟周期的数据将无效

TID

输出信号,用于源地址,用于多机通信

TDEST

输出信号,用于目的地址,用于多机通信

TUSER

输出信号,用户自定义,用于多机通信

AXIS的所有信号都在ACLK的上升沿被采样;这里讲解下几个比较重要的信号:

TVALIDTVALID是数据有效信号,若TVALID为高电平,标志着TDATA数据线上的数据是有效的,能够被取走,TVALID信号与TREADY信号是一组握手信号;

TREADYTREADY是指从机是否准备好接收数据,若TREADY为高电平,则标志着从机此时已经准备好接收数据,TREADY信号与TVALID信号是一组握手信号;

TDATA:数据通道,位宽可以是81632;当TVALIDTREADY均为高电平(有效)时,TDATA数据被传递;

TLAST:数据流结束信号,当TLAST为高电平时,说明此时传输的数据为数据流的最后一个数据;在XilinxAXI-DMA中,TLAST信号可以控制整个数据流传输的结束(当传输过程中TLAST为高,则结束一次DMA传输);

        本质上AXIS协议也就是握手协议,只不过增加了一个TLAST信号,和一些其他的附带指示其他信息的信号;如TIDTDESTTUSER等都是用于多级通讯的,在单一数据流方向的系统中,我们只需要关注上述几个重要的信号即可。TLAST:常为10TKEEPTSTRB:全部为10TREADY:时刻准备接收,数据反压问题。

       数据反压

所谓数据反压,即AXISmaster端数据流源源不断涌入,但从机处理数据能力有限,导致输入数据量大于输出数据量。发送端:当保留TREADY信号时,从机若处理不了数据时,可以将数据缓存。若去掉TREADY信号,则处理不了的数据只能溢出。

接收端:若去除TREADY信号,则说明接收端的处理数据速度大于发送端,数据可以持续输入。

       浅要讲一下当前的对AXI-lite AXI-stream的理解,参考了以下文章,欢迎大家探讨。

AXI4协议之AXI4-Lite接口详解及实战-CSDN博客

AXI Reference Guide (UG761) • 查看器 • AMD 技术信息门户网站


http://www.mrgr.cn/news/36040.html

相关文章:

  • GEE APP:基于gee开发一个在线监测Landsat5、7、8的云量面积和百分比的可视化应用
  • 戏曲多多 1.0.6.0 专为电视端设计的戏曲与生活内容APP,同样适用于安卓手机,方便老年人使用
  • 如何在算家云搭建text-generation-webui(文本生成)
  • Python 中的时间处理
  • hexo github部署,通过域名访问你的博客
  • 要让创业者有钱赚!李彦宏百度为创业者提供最好的智能体分发渠道
  • 【游戏设计】游戏中需要管理的数据分类
  • 研一上课计划2024/9/23有感
  • 两个方法分析python打包exe
  • 双十一买什么好?五款数码好物推荐!
  • 如何优化JVM性能:调优参数技巧
  • Centos7安装nginx
  • Java 入门指南:获取对象的内存地址
  • Linux上Java项目环境安装
  • android笔记 Sqlite查询内容
  • 最精简的VScode Verilog RTL开发环境搭建教程
  • 906. 超级回文数
  • linux 下python代码获取音频文件
  • 线程的状态及常用方法
  • Python解析非参数检验