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

news2024/9/25 23:10:21

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.coloradmin.cn/o/2165069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互

文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 前言 本文主要分享如何在群晖NAS本地部署并运行一个基于大语言模型Llama 2的个人本地聊天机器人并结合内网穿透工具…

Web安全-SQL注入之联合查询注入

声明 环境 墨者学院-SQL手工注入漏洞测试(MySQL数据库-字符型) 判断是否存在漏洞 http://124.70.64.48:42937/new_list.php?idtingjigonggao and 12-- and 11正常 http://124.70.64.48:42937/new_list.php?idtingjigonggao and 12-- and 12出错,存在字符型注入…

yolov8训练数据集——labelme的json文件转txt文件

yolov8的环境搭建,参考:Home - Ultralytics YOLO Docs 1.把标注好的json文件和jpg放同一个目录下。 2.运行转换脚本文件labelme2yolo.py文件: # -*- coding: utf-8 -*-import os import numpy as np import json from glob import glob im…

python学习笔记(3)——控制语句

控制语句 我们在前面学习的过程中,都是很短的示例代码,没有进行复杂的操作。现在,我们将开始学习流程控制语句。 前面学习的变量、数据类型(整数、浮点数、布尔)、序列(字符串、列表、元组、字 典、集合&am…

GPS在Linux下的使用(war driving的前置学习)

1.ls /dev/tty* 列出所有与 tty 相关的设备文件。这些设备文件通常对应终端设备 ttyUSB0是GPS端口 2.cat /dev/ttyUSB0 用于读取并显示连接到 /dev/ttyUSB0 串口设备发送的原始数据 这种是GPS定位不全的,要拿到更开阔的地方 这种是GPS定位全的 因为会持续输出…

大模型神书《HuggingFace自然语言处理详解——基于BERT中文模型的任务实战》读完少走几年弯路!

这几年,自然语言处理(NLP)绝对是机器学习领域最火的方向。那么今天给大家带来一本 《HuggingFace自然语言处理详解——基于BERT中文模型的任务实战》 这本大模型书籍资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证…

MoveIt控制机械臂的运动实现——机器人抓取系统基础系列(二)

文章目录 概要1 用户接口和代码案例2 不同的规划类型2.1 关节空间规划2.2 工作空间规划2.3 笛卡尔空间规划 3 MoveIt运行实操4 相关资料推荐小结 概要 MoveIt为开发者提供了针对机械臂的集成化开发平台,由一系列操作相关的功能包组成,包括运动规划、操作…

一、人物朝向摄像机移动

一、导入插件Cinemachine 重命名为ThirdPersonCamera Follow和LookAt 选择为player 镜像Y轴,取消X轴 摄像机绑定模式为World Space 二、挂载代码PlayerController using System.Collections; using System.Collections.Generic; using UnityEngine;public class…

查询最近正在执行的sql(DM8 : 达梦数据库)

查询最近正在执行的sql DM8 : 达梦数据库 1 查询最近正在执行的sql2 更多达梦数据库学习使用列表 1 查询最近正在执行的sql 迁移数据时 , 业务无响应 , 查看最近活动的sql , 有没有迁移相关的表 , 通过最后的时间字段 , 判断会话是否正在执行 SELECT SESS_ID, SQL_TEXT, STATE…

三条命令实现linux内核升级

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 如果报:curl: (35) Peer reports incompatible or unsupported protocol version. 执行命令: yum update -y nss curl libcurl 2.yum --enablerepoelrepo-kernel install …

iOS六大设计原则设计模式

六大设计原则: 一、单一职责原则 一个类或者模块只负责完成一个职责或者功能。 类似于:UIView 和 CALayer 二、开放封闭原则 对扩展开放,对修改封闭。 我们要尽量通过扩展软件实体来解决需求变化,而不是通过修改已有的代码来…

Redis主从集群搭建

一、什么是主从复制 主从复制,是指将一台redis服务的数据复制到集群中其他的redis服务,前者称(Maste),后者称(Slave);数据的复制是单向的,只能从主节点复制到从节点,一个主节点可以有多个从节点&#xff0…

【CubeMX学习笔记】关于CAN通信协议

目录 一、CAN通信简介 二、CAN数据帧类型 三、格式帧 四、位同步 传输数据时可能遇到的问题 最小时间单位 硬同步 再同步 波特率的计算 STM32中的CAN外设 一、原理图 二、标识符筛选 三、配置单个邮箱(正常模式或自发自收只需要修改模式) …

探索 ShellGPT:终端中的 AI 助手

文章目录 探索 ShellGPT:终端中的 AI 助手背景介绍ShellGPT 是什么?如何安装 ShellGPT?简单的库函数使用方法场景应用常见问题及解决方案总结 探索 ShellGPT:终端中的 AI 助手 背景介绍 在当今快速发展的技术领域,命…

人体动捕相关算法

SMPL、SMPLify SMPL(Skinned Multi-Person Linear (SMPL) Model)Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image,2015 SMPL 关节点数量:K23,其中0号节点(不在K之…

一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

一区黏菌算法双向深度学习注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 一区黏菌算法双向深度学习注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元…

keil的debug功能

文章目录 一.窗口介绍二.功能2.1 debug断点调试和窗口变量2.2 四个花括号功能2.2.1 进去函数和下一步功能2.2.2 跳过函数和跳过该行代码功能2.2.3 函数内部跳出功能2.2.4 执行到光标处 2.3 查看内部寄存器 一.窗口介绍 二.功能 2.1 debug断点调试和窗口变量 先打开下图debug断…

Scanner流程控制语句

1. Scanner类 Scanner的意思是扫描 Scanner是JDK提供的一个类,位于java.util包下,所以我们如果需要使用则必须导包,导包的语句必须在声明包之后,在声明类之前 Scanner类是用来接受用户输入的各种信息 Scanner类提供了用于接受…

Ubuntu中交叉编译armdillo库

网上关于交叉编译armdillo库比较少,借鉴了一些但是在前几天编译时总是磕磕绊绊,于是写一个详细的编译过程。 交叉编译armdillo库包含两个步骤:交叉编译依赖库和交叉编译armdillo库。armdillo官网介绍依赖库如下图所示: 需要注意如…

01【MATLAB】最小二乘系统辨识

目录 1.系统辨识的定义及其分类 1.1 系统辨识的定义 1.2 系统辨识的分类 2.参数模型 3.系统辨识的步骤 一、最小二乘法(Least Squares Method)一般步骤 二、LSM原理及应用 三、LSM在控制系统建模中的应用 1.系统辨识的定义及其分类 1.1 系统辨识的…