ZYNQ学习--AXI总线协议

一、AXI 总线简介

  AXI(Advanced Extensible Interface)高级拓展总线是AMBA(Advanced Microcontroller Bus Architecture)高级微控制总线架构中的一个高性能总线协议,由ARM公司开发。AXI总线协议被广泛应用于高带宽、低延迟的片上系统(SoC)设计中,尤其是在处理器、存储器、外设之间的数据传输。2010年发布AXI4

1.1 AXI4-Full

  • 用途:主要面向高性能内存映射需求,适用于复杂系统中频繁的数据传输和大规模的突发传输场景。
  • 特点:支持突发传输,一次传输可以多达 256次传输周期,(所谓突发传输,就是给一个地址,可以对从这个地址开始的若干个地址处的值都进行读写,至于这若干个地址分别是什么,需要根据写/读地址通道 Master 给出的控制信号来决定)。 提供读/写独立通道,读写操作可以并行完整的地址映射,用于复杂的存储器管理。支持多种数据宽度(如 32 位、64位、128 位等),并支持字节控制,使其非常灵活。
  • 应用场景:高带宽、高吞吐量需求的场景,比如 DDR 控制器、处理器与外设之间的通信。

1.2 AXI4-Lite

  • 用途:轻量级、低吞吐量的内存映射通信,适用于较简单的设备控制和配置寄存器访问。
  • 特点:只支持单次传输,不支持突发传输。占用很少的逻辑资源,适合那些只需要简单控制命令的外设。地址映射简单,只支持32和64bit 数据长度,但相比 AXI4-Full 的复杂性更低。
  • 应用场景:低速外设、寄存器配置接口,如简单的 GPIO 控制、系统状态寄存器等。

1.3 AXI4-Stream

  • 用途:面向高速流数据传输,特别适用于不需要地址映射的持续数据流场景。
  • 特点:无地址信号,数据是持续流动的,特别适合需要连续传输大量数据的应用。 支持无限制的突发传输,更适合音频、视频、数据包等大规模数据流的传输。数据宽度和传输速率可以动态调整,满足不同的性能需求。
  • 应用场景:高速数据流传输,如音频、视频处理系统,网络数据包处理。

1.4 AXI 的工作方式

  要通过AXI总线实现通信,需要一个主设备/上位机(Master)和一个从设备/下位机(Slave),并通过AXI总线将其相连。
在这里插入图片描述
   如果多设备通过AXI进行,可以通过AXI Interconnect IP或者 AXI SmartConnect IP实现。两个IP核都是用于存储器映射的,SmartConnect可以提供高带宽且资源使用更合理。
在这里插入图片描述
注: AXI4-Stream可以用DMA,Stream FIFO等IP进行存储器到流数据的转换

1.5 AXI 通道简述

AXI4 和 AXI4-Lite 包含五个独立的通道(如图所示)

  • 读地址 Read Address Channel:对应的地址通道会携带一次事务所需的全部地址和控制信息。
  • 读数据 Read Data Channel :位宽可为8、16、32、64、128、256、512、1024bit 的数据总线且包含读响应数据
  • 写地址 Write Address Channel:对应的地址通道会携带一次事务所需的全部地址和控制信息。
  • 写数据 Write Data Channel:位宽可为8、16、32、64、128、256、512、1024bit 的数据总线,包含数据掩码位WSTRB: 为每一个8bit数据准备的字节选通信号,用于指示数据的哪几个字节是有效的
  • 写响应 Write Response Channel:从设备使用写响应通道回应写事务,全部的写事务都需要写响应通道的完成信号。

在这里插入图片描述
注:AXI4-Stream 只有一个通道和AXI的写数据通道类似,突发长度无限制

1.6 读写数据的过程示意

  突发长度在控制信号中,一个地址可以对应多个数据。每一个通道都拥有自己的VALID与READY信号用于实现握手,其中VALID信号表示通道的地址、数据或控制信息已经可用,而READY信号则表示接收方已准备好接收信息,其中,读数据和写数据通道还拥有LAST信号,该信号用于指示当前传输是否为当前事务中的最后一次传输

读数据的过程如下图所示:
在这里插入图片描述
写数据的过程如下图所示:
在这里插入图片描述

二、AXI4-Full 信号描述

公共信号

信号名来源描述
ACLK时钟源公共时钟信号
ARESETn复位源公共复位信号,低有效

所有信号都在公共时钟的上升沿被采样。

写地址通道信号

信号名来源描述
AWID主设备写地址ID,该信号用于标识写地址组
AWADDR主设备写地址,写突发操作中第一次数据传输的地址
AWLEN主设备突发长度,这个字段标识突发传输的次数
AWSIZE主设备突发大小,这个字段表示每次突发传输的大小
AWBURST主设备突发类型,包括突发类型和突发大小信息,该字段决定了每次突发传输时地址的计算方法
AWLOCK主设备锁定类型,提供关于传输时原子特性的额外信息
AWCACHE主设备存储器类型
AWPROT主设备保护类型
AWQOS主设备服务质量,即每次写传输的QoS标识符,仅AXI4支持
AWREGION主设备区域标识符,允许一个从设备的单个物理接口用作多个逻辑接口,仅AXI4支持
AWUSER主设备用户定义信号,可选
AWVALID主设备主设备给出的地址和相关控制信号有效
AWREADY从设备从设备已准备好接收地址和相关的控制信号

写数据通道信号

信号名来源描述
WID主设备写数据ID,该信号用于标识写数据传输,仅AXI3支持
WDATA主设备写出的数据
WSTRB主设备数据的字节选通,数据中每8bit对应这里的1bit
WLAST主设备该信号用于标识当前传输是否为突发传输中的最后一次传输
WUSER主设备用户定义信号,可选
WVALID主设备主设备给出的数据和字节选通信号有效
WREADY从设备从设备已准备好接收数据选通信号

写响应通道信号

信号名来源描述
BID从设备写响应ID,该信号用于标识写响应传输
BRESP从设备写响应,该信号表示写传输的状态,事务是否结束
BUSER从设备用户定义信号,可选
BVALID从设备从设备给出的写响应信号有效
BREADY主设备主设备已准备好接收写响应信号

读地址通道信号

信号名来源描述
ARID主设备读地址ID,该信号用于标识读地址组
ARADDR主设备读地址,读突发操作中第一次数据传输的地址
ARLEN主设备突发长度,这个字段标识每次突发传输的传输次数
ARSIZE主设备突发大小,这个字段表示每次突发传输的大小
ARBURST主设备突发类型,包括突发类型和突发大小信息,该字段决定了每次突发传输时地址的计算方法
ARLOCK主设备锁定类型,提供关于传输时原子特性的额外信息
ARCACHE主设备存储器类型
ARPROT主设备保护类型
ARQOS主设备服务质量,即每次读传输的QoS标识符,仅AXI4支持
ARREGION主设备区域标识符,允许一个从设备的单个物理接口用作多个逻辑接口,仅AXI4支持
ARUSER主设备用户定义信号,可选
ARVALID主设备主设备给出的地址和相关控制信号有效
ARREADY从设备从设备已准备好接收地址和相关的控制信号

读数据通道信号

信号名来源描述
RID从设备读数据ID,该信号用于标识读数据传输
RDATA从设备读出的数据
==RRESP ==从设备读响应,这信号表示读传输的状态
==RLAST ==从设备该信号用于标识当前传输是否为突发传输中的最后一次传输
RUSER从设备用户定义信号,可选
RVALID从设备从设备给出的数据和响应信息有效
RREADY主设备主设备已准备好接收读取的数据和响应信息

低功耗接口信号

信号名来源描述
CSYSREQ时钟控制器系统退出低功耗状态请求,外设的系统时钟控制器通过该信号发出请求用于离开低功耗状态
CSYSACK外设退出低功耗状态响应,外设响应系统低功耗状态退出请求时使用的信号
CACTIVE外设时钟激活,该信号表示外设需要时钟信号

三、AXI 总线协议

3.1 时钟和复位

  • 时钟:每个AXI组件都需要一个全局时钟信号ACLK,全部的信号都在ACLK的上升沿被采样,一切输出信号都必须在ACLK的上升沿之后发生改变。
  • 复位:AXI协议使用低有效复位信号ARESETn,该信号是可以异步拉低,但必须在ACLK的上升沿同步释放。
  • 在复位期间,下列信号需要遵循特定的要求:
    主接口必须拉低ARVALID、AWVALID与WVALID信号。
    从接口必须拉低RVALID与BVALID信号。
    其它信号则可以为任意值。

在ARESETn被释放后的下一个时钟上升沿,主设备可以拉高ARVALID、AWVALID与WVALID信号,如下图所示:
在这里插入图片描述

3.2 握手过程 – 每个数据传输都发生

  五个事务通道都使用VALID/READY作为握手信号,传输地址、数据和控制信息,使用这种握手方式,主从双方都可以对传输速度进行控制。源端产生VALID信号意味着其地址、数据或控制信息有效目的端产生READY信号意味着它可以接收信息,只有当双方的VALID与READY信号都为高时传输才会开始。
  读数据和写数据通道还拥有LAST信号,该信号用于指示当前传输是否为当前事务中的最后一次传输。

握手示意:VALID有效时候发生传输,且要求有效时候数据稳定不变
  源端必须在令VALID信号有效之后再等待READY信号有效,一旦VALID有效,源端必须等待握手发生,即在保持VALID不变的情况下,等待目的端的READY信号有效。
在这里插入图片描述
  源端在T1之后给出地址、数据或控制信息,并令VALID有效,在T2之后,目的端检测到VALID有效并给出READY有效信息,在T3阶段传输会发生,因此在T3阶段及之前,源端不能释放或改变需要传输的信息。

3.2 突发结构 – AXI4中突发长度 = AxLEN[7:0] + 1

AXI协议定义了三种突发类型:

  • 固定(FIXED):在突发事务中,每次传输的地址一致,有效的字节线也是一致的,但是可以通过WSTRB信号控制实际有效的字节。这种方式通常用于对同一位置的重复访问,如读取或清空FIFO时。支持1~16的突发长度
  • 递增(INCR):在一次递增突发事务中,每次传输,地址都会在之前的地址基础上递增,递增量为传输大小(和 突发字节SIZE有关 )。支持1~256的突发长度。
  • 回绕(WRAP):这种类型和递增方式类似,但是,地址到达上界后,地址就会回绕到下界仅支持为2、4、8或16的突发长度。

突发读时序
在这里插入图片描述
突发写时序
在这里插入图片描述

3.3 读写响应结构 RESP

AXI协议提供了读写事务中的响应信号:
 对于读事务而言,从设备在读数据通道上发送响应信息,使用RRESP[1:0]信号。
 对于写事务而言,从设备在写响应通道上发送响应信息,使用BRESP[1:0]信号。
响应共有四种类型:

  • OKAY:一般访问成功。该信号表示一个一般访问成功,也表示一个独占访问失败。
  • EXOKAY:独占访问成功。
  • SLVERR:从设备错误。该信号表示向从设备的访问已成功,但从设备希望向原始主设备返回一个错误条件。
  • DECERR:译码错误。通常由互联器生成,表示根据给定的事务地址找不到从设备。

3.4 通道间的关系

AXI协议要求各个通道间必须保持如下关系:

  • 写响应必须紧跟在其所属的写事务的最后一次写传输之后。
  • 读数据必须紧跟着它的地址之后。
  • 通道握手必须符合通道握手依赖关系。

除此之外,协议没有规定其它的任何关系,这意味着,在一个事务中,写数据信号可以提前于写地址信号,这种情况通常发生在写地址的通道的寄存器阶段要更多时, 同样,写数据可以和写地址信号同时出现

==注意:==当互联器需要决定目标地址空间或从设备地址空间时,必须对地址和写数据重排,以确保写数据仅对其关联的从设备有效。

3.5 通道握手信号依赖关系 – 其他关系类似参考手册即可

手册中提供了信号依赖图:

  • 单头箭头指向的信号可以在始端信号有效前或有效后有效。
  • 双头箭头指向的信号只有在始端信号有效后才能有效。

读传输依赖如图:从设备在使能RVALID前必须等待ARVALID和ARREADY信号都使能,从设备可以在主设备使能ARVALID前使能ARREADY
在这里插入图片描述

四、AXI-Lite 总线协议 – 传输过程与AXI是类似

  只支持单次传输,不支持突发传输。占用很少的逻辑资源,适合那些只需要简单控制命令的外设。地址映射简单,只支持32和64bit 数据长度,但相比 AXI4-Full 的复杂性更低。下图为Lite的五个通道信号。
在这里插入图片描述

参考资料

AXI_总线_中文版
正点原子SDK篇_AXI接口简介 – 视频
AXI4协议之AXI4-Lite接口详解及实战

补充

  • 计算 AXI总线的最大传输带宽(实际是会受到主从端信号影响的) 需要考虑以下因素:
    1.AXl总线的频率
    2.AXl总线的数据宽度
    3.AXl总线的传输协议

假设AXI总线的频率为F,数据宽度为W,传输协议为AXI4,那么AXI总线的最大传输带宽可以通过以下公式计算: 最大传输带宽=FW2

其中,2是因为AXI4协议中每个时钟周期可以传输两个数据,即读和写。因此,最大传输带宽的单位为bps(比特每秒)举个例子,如果AXI总线的频率为100 MHz,数据宽度为64位(即8字节),那么最大传输带宽为:最大传输带宽=100 MHz8字节2=1.6 Gbps,这个值表示AXI总线的最大传输带宽为1.6 Gbps。

  • 突发传输:一般表示的是两个设备之间进行数据传送的一种模式,也可将其称为突发模式下的数据传输。而突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。在突发传输模式下,多个数据单元当做一个单元(相当一个数据块)来传送,从而提高了传输效率。AXI Full 中突发传输相当于单个传输事务可以传输多个数据以此来提高数据的传输效率,减小了传输管理的开销。

  • 主设备可以在前面事务未完成的时候就发送新的事务。AXI outstanding 就是发出去的地址数量,未处理的地址可以先存放在AXI总线的缓存里,等完成一次传输事物之后,无需再握手传输地址,即可立即进行下一次的数据传输,所以outstanding本质上是为了实现数据传输的pipeline,本次事务握手完成,对下一次事务完成进行等待,事务上有一些特殊规定处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/429590.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute

问题描述: 利用 PyQt5 编写可视化界面是较为普遍的做法,但是使用全新UI版本的 Pycharm 修改之前正常的UI文件时,在没有动其他代码的情况下发现出现以下报错 AttributeError: type object Qt has no attribute Qt::ContextMenuPolicy::Defaul…

JavaEE: 深入探索TCP网络编程的奇妙世界(四)

文章目录 TCP核心机制TCP核心机制四: 滑动窗口为啥要使用滑动窗口?滑动窗口介绍滑动窗口出现丢包咋办? TCP核心机制五: 流量控制 TCP核心机制 上一篇文章 JavaEE: 深入探索TCP网络编程的奇妙世界(三) 书接上文~ TCP核心机制四: 滑动窗口 为啥要使用滑动窗口? 之前我们讨…

BERT的代码实现

目录 1.BERT的理论 2.代码实现 2.1构建输入数据格式 2.2定义BERT编码器的类 2.3BERT的两个任务 2.3.1任务一:Masked Language Modeling MLM掩蔽语言模型任务 2.3.2 任务二:next sentence prediction 3.整合代码 4.知识点个人理解 1.BERT的理论 B…

深度学习02-pytorch-08-自动微分模块

​​​​​​​ 其实自动微分模块,就是求相当于机器学习中的线性回归损失函数的导数。就是求梯度。 反向传播的目的: 更新参数, 所以会使用到自动微分模块。 神经网络传输的数据都是 float32 类型。 案例1: 代码功能概述: 该…

鸿蒙Harmony应用开发,数据驾驶舱 项目结构搭建

对于一个项目而言,在拿到我们的开发任务后,我们最重要的就是技术的选型。选型定下来了之后我们便开始脚手架的搭建,然后开始撸代码,开搞. 首先我们需要对一些常见依赖库的引入 我们需要再oh-package.json5的dependencies节点下面…

8--SpringBoot原理分析、注解-详解(面试高频提问点)

目录 SpringBootApplication 1.元注解 --->元注解 Target Retention Documented Inherited 2.SpringBootConfiguration Configuration Component Indexed 3.EnableAutoConfiguration(自动配置核心注解) 4.ComponentScan Conditional Co…

基于PHP的新闻管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的新闻管理系统。…

JavaWeb--纯小白笔记03:servlet入门---动态网页的创建

笔记:index.html在tomcat中为默认的名字,html里面的语法不严谨。改配置文件要小心,不然容易删掉其他 Servlet:服务器端小程序,写动态网页需要用Servlet,普通的java类通过继承HttpServlet,可以响…

【GUI设计】基于Matlab的图像处理GUI系统(1),用matlab实现

博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于Matlab的图像处理GUI系统,用matlab实现。 本次内容主要分为两部分&a…

Why is OpenAI image generation Api returning 400 bad request in Unity?

题意:为什么 OpenAI 图像生成 API 在 Unity 中返回 400 Bad Request 错误? 问题背景: Im testing out dynamically generating images using OpenAI API in Unity. Amusingly, I actually generated most of this code from chatGPT. 我正在…

【笔记】第二节 轧制、热处理和焊接工艺

2.2 钢轨的轧制工艺 坯料进厂按标准验收, 然后装加热炉加热, 加热好的钢坯经高压水除鳞后进行轧制。轧出的钢轨经锯切、打印到中央冷床冷却, 然后装缓冷坑进行缓冷。缓冷后的钢轨进行矫直、轨端加工和端头淬火。钢轨入库前逐根进行探伤和外观检查。 钢轨的轧制 #mermaid-svg-…

foreach,for in和for of的区别

forEach 不能使用break return 结束并退出循环 for in 和 for of 可以使用break return; for in 遍历的是数组的索引(即键名),而for of遍历的是数组元素值。 for of 遍历的只是数组内的元素,而不包括数组的原型属性…

后端-navicat查找语句(单表与多表)

表格字段设置如图 语句&#xff1a; 1.输出 1.输出name和age列 SELECT name,age from student 1.2.全部输出 select * from student 2.where子语句 1.运算符&#xff1a; 等于 >大于 >大于等于 <小于 <小于等于 ! <>不等于 select * from stude…

JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操

JdbcTemplate是Spring框架中的一个重要组件&#xff0c;主要用于简化JDBC数据库操作。它提供了许多常用的方法&#xff0c;如查询、插入、更新、删除等。本文将介绍JdbcTemplate的常用方法及其使用方式&#xff0c;以及参数绑定和删除数据的方法。 一、JdbcTemplate常用方法 查…

钉钉与MySQL对接集成获取部门列表2.0打通EXECUTE语句

钉钉与MySQL对接集成获取部门列表2.0打通EXECUTE语句 接入系统&#xff1a;钉钉 钉钉是阿里巴巴集团打造的企业级智能移动办公平台&#xff0c;是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉工…

828华为云征文|华为Flexus云服务器搭建Cloudreve私人网盘

一、华为云 Flexus X 实例&#xff1a;开启高效云服务新篇&#x1f31f; 在云计算的广阔领域中&#xff0c;资源的灵活配置与卓越性能犹如璀璨星辰般闪耀。华为云 Flexus X 实例恰似一颗最为耀眼的新星&#xff0c;将云服务器技术推向了崭新的高度。 华为云 Flexus X 实例基于…

基于SpringBoot+Vue的商城积分系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目源码、Python精…

我的AI工具箱Tauri版-MicrosoftTTS文本转语音

本教程基于自研的AI工具箱Tauri版进行MicrosoftTTS文本转语音服务。 MicrosoftTTS文本转语音服务 是自研的AI工具箱Tauri版中的一款功能模块&#xff0c;专为实现高效的文本转语音操作而设计。通过集成微软TTS服务&#xff0c;用户可以将大量文本自动转换为自然流畅的语音文件…

物理学基础精解【9】

文章目录 直线与二元一次方程两直线夹角直线方程斜率两点式方程截距式方程将不同形式的直线方程转换为截距方程直线的一般方程直线一般方程的系数有一个或两个为零的直线 参考文献 直线与二元一次方程 两直线夹角 两直线 y 1 k 1 x b 1 , y 2 k 2 x b 2 形成夹角 a 1 和 a…

关于字节 c++

字节的介绍 字节是计算机中最小的存储单位&#xff0c;通常由8个二进制位组成&#xff0c;用来存储一个字符。在C中&#xff0c;字节也是基本数据类型之一&#xff0c;用关键字"byte"来表示。字节主要用于存储一些较小的数据&#xff0c;如整数、字符等。字节的大小…