问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://m.blog.csdn.net/qq_40238141/article/details/142528811

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中定义的面向数据流的协议,常用于对数据流的处理,如:摄像头(视频信号);高速AD;Xilinx的AXI-DMA模块;在进行SOC设计中需要高速数据传输处理的场合,常常使用AXIS协议。

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

  • Transfer:AXI4-Stream接口的一次数据传输。单个传输由单个TVALID、TREADY握手定义。
  • Packet:通过AXI4-Stream接口一起传输的一组字节。数据包类似于AXI4突发传输。一个包可以由单个传输或多个传输组成。实现时可以使用包来更有效地处理包大小的组中的流。
  • Frame :AXI4-Stream中最高级别的字节分组。一帧包含整数个数的报文。一个帧可以是一个非常大的字节数,例如整个视频帧缓冲区。

AXIS数据流有多种形式:

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

AXIS与AXI-FULL的区别:

  • 取消了Address Write/Address Read通道;
  • 取消了反馈响应信号Bresp和Rresp;
  • 半双工,仅能读或者写;
  • 不允许乱序;
  • 无最大突发传输长度;
  • 包含TID信号指示源,TDEST指示目的地;
  • 包括一个用于插入和溢出空字节的TKEEP信号;

AXI-Stream端口信号(Master)

  • ACLK 输入信号,系统时钟
  • ARESETN 输入信号,系统复位
  • TVALID 输出信号,数据有效信号,握手信号
  • TREADY 输入信号,准备接收信号,握手信号
  • TDATA 输出信号,数据线,数据传输
  • TSTRB 输出信号,用于流格式
  • TKEEP 输出信号,主机数据有效信号,高电平表示有效,低电平表示无效
  • TLAST 输出信号,表示最后一个字节,下一个时钟周期的数据将无效
  • TID 输出信号,用于源地址,用于多机通信
  • TDEST 输出信号,用于目的地址,用于多机通信
  • TUSER 输出信号,用户自定义,用于多机通信

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

  • TVALID:TVALID是数据有效信号,若TVALID为高电平,标志着TDATA数据线上的数据是有效的,能够被取走,TVALID信号与TREADY信号是一组握手信号;
  • TREADY:TREADY是指从机是否准备好接收数据,若TREADY为高电平,则标志着从机此时已经准备好接收数据,TREADY信号与TVALID信号是一组握手信号;
  • TDATA:数据通道,位宽可以是8、16、32;当TVALID与TREADY均为高电平(有效)时,TDATA数据被传递;
  • TLAST:数据流结束信号,当TLAST为高电平时,说明此时传输的数据为数据流的最后一个数据;在Xilinx的AXI-DMA中,TLAST信号可以控制整个数据流传输的结束(当传输过程中TLAST为高,则结束一次DMA传输);
  • 本质上AXIS协议也就是握手协议,只不过增加了一个TLAST信号,和一些其他的附带指示其他信息的信号;如TID、TDEST、TUSER等都是用于多级通讯的,在单一数据流方向的系统中,我们只需要关注上述几个重要的信号即可。TLAST:常为1或0;TKEEP和TSTRB:全部为1或0;TREADY:时刻准备接收,数据反压问题。

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

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

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

  • AXI4协议之AXI4-Lite接口详解及实战-CSDN博客
  • AXI Reference Guide (UG761) • 查看器 • AMD 技术信息门户网站
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号