浅谈AXI协议及搭建自己的AXI IP核-01(协议解读)
一、什么是AXI协议?
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,AMBA包括以下几个部分:
- Advanced High-performance Bus (AHB):高性能总线,用于连接高性能主设备,如处理器和DMA控制器等。AHB总线具有多主从设备、分时复用等特点,支持带宽请求、优先级传输和错误处理等功能。
- Advanced Peripheral Bus (APB):外设总线,用于连接低速器件,例如控制器和定时器等。它是单主多从的设备总线,APB总线是一种简单的串行总线,具有定时器可编程特性,其速度较慢,但其节点可达数目较多。
- Advanced eXtensible Interface (AXI):可扩展性接口,用于连接系统中高速器件之间的互连。AXI是多主和多从设备的连接,AXI总线支持优先级传输、带宽请求、流水线传输和乱序传输等功能,是AMBA规范中最高级别的总线接口协议。
学过STM32的同学应该很眼熟APB总线,在STM32等微处理器架构中GPIO等外设都是挂载在APB总线上的,具体APB协议这里不过多深入。
而AXI由于地址/控制和数据相位是分离的,支持不对齐的数据传输及突发传输的特点,因此在擅长高速、高数据量的FPGA上大放异彩。
二、为什么要学习AXI协议
在学习xilinx FPGA过程中我们会经常遇到AXI接口,特别在ZYNQ架构上,ZYNQ-7系列上集成了2个异构高性能A9处理器以及FPGA资源,因此需要一种接口用来实现FPGA与ARM的高速数据交换,而由于上述AXI总线的天然优势使之自然而然地承担了该任务。同时xilinx的一些其他高速接口的IP核的控制(PCIE、DDR等)也是通过AXI接口实现的。因此想要学习ZYNQ架构或者处理高速信号,AXI协议都是绕不过去的门槛。
三、AXI协议
AXI协议定义了五个独立的事务通道。地址通道携带着控制信息,用于描述传输数据的性质。五个独立通道都由一组信息信号、以及提供双向握手机制的VALID和READY信号组成。
下面结合读写过程,对5个通道进行说明, - 写过程
![]()
上图表示了一次AXI写的过程,
写地址通道:首先Master在写地址通道(write address channel)发起一次写地址请求,表明自己写入的数据将存储至哪个地址。
写数据通道:随后Master在写数据通道(write data channel)写入数据,注意,axi是支持突发传输(即给一个起始地址,可以连续写入多个数据,第二次写地址时地址自增写入数据长度即可),因此可以看到写数据通道写入了多个数据,这些数据在地址上是连续的。例如假设数据位宽为16bit(2Byte),突发长度为8(一次写入8个数据),那么写地址每次需要增加 2*8 。
写应答通道:由于双方已经约定好了数据位宽及突发长度,所以在Mater写完最后一个数据(wlast)后,Slave会进行写通道和写数据的应答,表示Slave已经成功完成接受这一次突发写入内容。 - 读过程
![]()
上图表示了一次AXI读过程,
读地址通道:Master在读地址通道写入想要读取的数据地址,
读数据通道:Slave在读数据通道将该地址的突发长度数据返回给Master - 握手机制
值得注意的是,在这5个通道所产生的读写事务都是基于握手机制完成的,主从通信都使用相同的VALID/READY握手过程来传输地址、数据和控制信息。这种双向流控制机制意味着Master和Slave都可以控制信息的移动速率。传输只发生在VALID和READY信号都是1的时候。
- 源端产生VALID=1信号:表示地址、数据或控制信息可用。
- 终端生成READY=1信号:表示可以接受该信息。
那么就存在一个问题,握过程中VALID和READY的前后关系,或者握手过程是怎么样的?
AXI支持三种形式的握手形式:
- VALID before READY:
![]()
源端发起VALID后必须等到终端回应READY后才可以释放VALID。 - READY before VALID :
![]()
终端先产生READY信号,源端产生VALID,终端拉高READY后可以取消拉高,不必一直保持到完成握手。 - VALID with READY:
![]()
VALID和READY信号同时拉高,完成握手。
4. 读写时序
写时序图
![]()
读时序
![]()
浅谈AXI协议及搭建自己的AXI IP核-01(协议解读)的更多相关文章
- 浅谈Java语言环境搭建-JDK8
title: 浅谈Java语言环境搭建-JDK8 blog: CSDN data: Java学习路线及视频 1.What's the JDK,JRE JDK(Java Development Kit ...
- 浅谈OSI七层网络模型和TCP/IP四层模型
OSI七层网络模型 OSI(Open System Interconnection)开放系统互连参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系. OSI七层模型 功能 ...
- Appium自动化—浅谈iOS自动化测试环境搭建
在日常的测试工作中,我们会发现有些测试工作重复率极高,测试人员需要花费大量的时间进行这些重复性的测试,浪费了大量的人力与时间.若能够将常用的测试场景进行自动化,那必定能节省许多的人力与时间.作为一个初 ...
- 浅谈数据库技术,磁盘冗余阵列,IP分配,ECC内存,ADO,DAO,JDBC
整理-----数据库技术,磁盘冗余阵列,IP分配, ECC内存,ADO, DAO,JDBC 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发.发布和支持.My ...
- 浅谈HTTPS以及Fiddler抓取HTTPS协议
最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...
- 【转】 浅谈Radius协议
浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报 分类: Radius协议分析(6) 从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...
- 转:浅谈Radius协议 -来自CSDN:http://blog.csdn.net/wangpengqi/article/details/17097221
浅谈Radius协议 2013-12-03 16:06 5791人阅读 评论(0) 收藏 举报 分类: Radius协议分析(6) 从事Radius协议开发有段时间了,小弟不怕才疏学浅,卖弄一下, ...
- 浅谈一下SSI+Oracle框架的整合搭建
浅谈一下SSI+Oracle框架的整合搭建 最近换了一家公司,公司几乎所有的项目都采用的是Struts2+Spring+Ibatis+Oracle的架构,上一个东家一般用的就是JSF+Spring,所 ...
- 浅谈通信网络(三)——TCP/IP协议
简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议.In ...
- 浅谈HTTPS以及Fiddler抓取HTTPS协议(摘抄)
一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...
随机推荐
- Laravel配置Route调用artisan
//web调用artisan Route::get('/artisan', function(\Illuminate\Http\Request $request) { $all = \Illumina ...
- 20K star!让网页设计秒变手绘风,这个开源库太有创意了!
"Rough.js 是一个轻量级的图形库(仅8KB),能够为网页元素赋予自然的手绘质感.通过独特的算法模拟人类绘画的不规则性,开发者只需几行代码即可为图表.流程图.UI组件等数字内容注入生动 ...
- 通过cmd/批处理 开启关闭windows中的mysql数据库
目录 cmd 开启关闭mysql 批处理 开启关闭mysql 每次通过服务开启关闭mysql太麻烦,可以通过cmd或批处理来解决 cmd 开启关闭mysql cmd需要使用管理员打开 //开启mysq ...
- 工具 | Hashcat
0x00 简介 Hashcat是一款强大的密码破解工具. 下载地址 Hashcat下载: Hashcat下载 0x01 功能说明 直接破解 组合攻击 掩码暴力破解 混合攻击 联合攻击 注:仅供安全研究 ...
- 为Java虚拟机分配堆内存大于机器物理内存会怎么样?
之前在某个地方看到的一个问题,"如果为Java虚拟机指定的堆内存大于物理内存会怎么样?",今天正好又看到了HotSpot VM中关于为堆分配内存的源代码实现,顺便从源代码角度解答一 ...
- 三-select模型
select模型是对简单C/S模型的优化,他解决了accept函数阻塞等待连接的问题.并且允许应用程序同时监视多个套接字,从而实现简单的并发请求.通过调用select函数确认一个或多个套接字当前的状态 ...
- 搭建邮局-3.安装邮局前端roundcube和测试
目录 搭建邮局-1.安装hMailserver和配置邮局 https://www.cnblogs.com/daen/p/16040202.html 搭建邮局-2.添加域名和域名解析 https://w ...
- 飞牛OS给容器魔方上行宽带限速
下面我将详细讲解(容器网络命名空间限速)的持久化配置步骤,确保在飞牛OS重启后自动生效.请严格按照顺序执行以下操作: ️ 完整持久化配置教程(带详细解释) 步骤1:确认容器魔方名称 # 查看运行的容器 ...
- 算法新手村 Day01
作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 前言: 算法 算法的分类 几个排序算法 0.两值交换 1.选择排序 动图 思路 代码 2.冒泡排序 动图 思路 代码 3.插入排序 动图 思路 ...
- 超实用!10 个 Excel 数据验证技巧,轻松解决数据录入难题
[Excel基础系列之十二] 嗨,宝子们,我是社会牛马"表哥"--EETools. 在数据管理与日常办公中,Excel 数据验证如同一位 "数据质检员",从源头 ...






