ZYNQ学习--AXI总线协议

news2024/9/23 4:08:34

一、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.coloradmin.cn/o/2156500.html

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

相关文章

大语言模型超参数调优:开启 AI 潜能的钥匙

前言 在人工智能的广袤领域中,大语言模型(LLM)凭借其强大的实力,不断重塑着我们对机器理解语言的认知。然而,要使这些模型在特定应用场景中发挥最大效能,关键在于巧妙调整其超参数。本文将引领你深入探究 …

x-cmd pkg | bat: cat 命令现代化替代品,终端用户必备工具

目录 简介快速上手安装使用与第三方工具组合使用 功能特点竞品和相关作品进一步阅读 简介 bat 是由 github.com/sharkdp 用 Rust 开发的 cat 命令现代化替代品。它比 cat 命令扩展了更多的现代化功能,如语法高亮、自动分页、Git集成等,能为用户提供更为…

python如何跨文件调用自己定义的函数

当自己定义函数过多时,只有一个python文件时代码会很长,不易理清代码框架,比如下面这段代码,如何隐藏具体函数细节呢?也就是把def函数放到另外一个python文件里步骤如下: 一个python文件代码篇幅过长 imp…

结构体对齐、函数传参、库移植

结构体字节对齐 按固定位大小匹配地址&#xff0c;a:10b:1020位 <32位4字节 202040位>32位 所以ab20作为一个int型&#xff0c;int c:20 单独做4个字节&#xff08;int&#xff09; 101020 &#xff08;int&#xff09;4个字节 &#xff0c;20&#xff08;int&#x…

算法之逻辑斯蒂回归(Logistic regression)

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 逻辑斯蒂回归&#xff08;Logistic Regression&#xff09;是统计学中一种广泛应用于二分类问题的算法。它的主要目标是预测二分类问题中的事件发生的概率。尽管名字里有“回归”&#xff0c;但逻…

wordpress迁移到别的服务器

wordpress论坛网站搭建 于2023/11/16写的该文章 一-配置环境 配置LNMP&#xff08;linuxnginxmysqlphpphpmyadmin&#xff09;环境或者LAMP&#xff08;apache&#xff09; 可以选择集成了这些软件的套件 下载链接&#xff1a;https://www.xp.cn/download.html 手动下载这…

https加密原理

以为http的数据都是以明文传送&#xff0c;会有很大的安全问题&#xff0c;所以出现的https协议。https就是在http协议的基础上增加了一个安全层&#xff0c;可以对数据进行加密和解密(例如SSL、TLS等)。 https加密解密的原理&#xff1a;证书非对称加密对称加密 在讲解原理前…

Python爬虫之urllib模块详解

Python爬虫入门 此专栏为Python爬虫入门到进阶学习。 话不多说&#xff0c;直接开始吧。 urllib模块 Python中自带的一个基于爬虫的模块&#xff0c;其实这个模块都几乎没什么人用了&#xff0c;我就随便写写了。 - 作用&#xff1a;可以使用代码模拟浏览器发起请求。&…

2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)

模块化概述 什么是模块&#xff1f;模块是一个封装了特定功能的代码块&#xff0c;可以独立开发、测试和维护。模块通过导出&#xff08;export&#xff09;和导入&#xff08;import&#xff09;与其他模块通信&#xff0c;保持内部细节的封装。 前端 JavaScript 模块化是指…

【Pytorch】一文快速教你高效使用torch.no_grad()

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 博主简介 博主致力于嵌入式、Python、人工智能、C/C领域和各种前沿技术的优质博客分享&#xff0c;用最优质的内容带来最舒适的…

2024年中国研究生数学建模竞赛A/C/D/E题全析全解

问题一&#xff1a; 针对问题一&#xff0c;可以采用以下低复杂度模型&#xff0c;来计算风机主轴及塔架的疲劳损伤累积程度。 建模思路&#xff1a; 累积疲劳损伤计算&#xff1a; 根据Palmgren-Miner线性累积损伤理论&#xff0c;元件的疲劳损伤可以累积。因此&#xff0c;…

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

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

手机在网状态查询接口如何用C#进行调用?

一、什么是手机在网状态查询接口&#xff1f; 手机在网状态查询接口是利用实时数据来对手机号码在运营商网络中的状态进行查询的工具&#xff0c;包括正常使用状态、停机状态、不在网状态、预销户状态等。 二、手机在网状态查询适用哪些场景&#xff1f; 例如&#xff1a;商…

【线程池】ThreadPoolExecutor应用

ThreadPoolExecutor应用 每一步的坚持与积累,都是铸就高薪和大牛的必经的修炼 哈哈,不吹牛逼了,今天来分享最近在提升中的学习总结,无论是对在职场还是求职,看完,我相信都会有些许的收获和成长 也难得过了一个悠闲点的周末,哈哈哈,一起奥利给!! 本文总纲: 1.为什么要自定义线程…

联合体的用法和用联合体判断大小端存储

像结构体⼀样&#xff0c;联合体也是由⼀个或者多个成员构成&#xff0c;这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫&#xff1a;共⽤体。 给联合体其中⼀个成员赋值&#xff0c;其他成…

Linux 文件系统(下)

目录 一.文件系统 1.文件在磁盘上的存储方式 a.盘面、磁道和扇区 b.分区和分组 2.有关Block group相关字段详解 a.inode编号 b.inode Table&#xff08;节点表&#xff09; c.Data blocks&#xff08;数据区&#xff09; d.小结 二.软硬链接 1.软链接 a.软链接的创建…

SystemExit: 系统退出异常的完美解决方法⚙️

&#x1f6aa;SystemExit: 系统退出异常的完美解决方法⚙️ &#x1f6aa;SystemExit: 系统退出异常的完美解决方法⚙️摘要引言正文1. 什么是SystemExit异常&#xff1f;&#x1f4dc;2. 捕获SystemExit&#xff1a;是否应该这样做&#xff1f;⚠️3. 正确处理SystemExit的最…

javase复习day30综合练习

制造假数据 制造数据 练习一 package Demo1;import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; im…

上海数科(北京)律师事务所开业庆典圆满举行

金秋送爽&#xff0c;丹桂飘香。2024年9月22日&#xff0c;数智科技焕新启航主题论坛暨上海数科&#xff08;北京&#xff09;律师事务所&#xff08;以下简称“数科北京”&#xff09;开业庆典在北京中海广场中楼隆重举行。 庆典现场星光熠熠&#xff0c;汇聚了来自法律界、科…

程序员的AI时代:拥抱变革,塑造未来

你们有没有想过&#xff0c;如果有一天&#xff0c;你的编程工作被一个AI助手取代了&#xff0c;你会怎么办&#xff1f;这不是危言耸听&#xff0c;随着AIGC技术的飞速发展&#xff0c;这样的场景可能真的会出现。但是&#xff0c;别担心&#xff0c;今天我们就来聊聊&#xf…