问小白 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是AMBA协议中两种重要的接口类型,分别适用于不同的应用场景。AXI4-Lite主要用于低速外设的寄存器访问,而AXI4-Stream则适用于高速数据流传输。本文将详细介绍这两种协议的基本概念、应用场景以及具体实现细节。

AXI4-Lite接口

AXI4-Lite接口由五个独立的通道构成:读地址、读数据、写地址、写数据和写响应。在一次读事务中,主机首先在读地址通道给出读地址和控制信号,然后从机由读数据通道返回读出的数据。在一次写事务中,主机在写地址通道给出写地址和控制信号,然后在写数据通道发送要写的数据。从机在接收数据之后,在写响应通道给出响应信号。

对于AXI4-Lite接口,一次读/写事务只能读取/写入一个地址处的数据。每个通道都包含了一组信号,尤其需要注意的是VALID和READY信号。VALID信号由源端产生,表示当前地址或者数据线上的信息是有效的;而READY信号由目的端产生,则表示已经准备好接收地址、数据以及控制信息。

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

在AXI协议中,所有的输入信号都在是ACLK的上升沿采样,所有的输出信号必须在ACLK的上升沿之后才能改变。为了防止死锁,VALID信号和READY必须遵守以下的约定:VALID信号的拉高不能依赖于READY信号,也就是说源端不允许等目的端的READY信号拉高之后,才将VALID信号拉高。而且,一旦VALID拉高,源端必须保持其处于拉高状态,直至成功握手(在时钟上升沿检测到VALID和READY均为高电平)后才能拉低VALID,目的端可以等检测到VALID信号拉高后,才将READY信号拉高;也可以不等。

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号