关于 AXI协议的学习解释说明
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。
AXI的特点
单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。
AXI总线还定义了在进出低功耗节电模式前后的握手协议,规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有IP在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。
总之,AXI 能够使SoC 以更小的面积、更低的功耗,获得更加优异的性能。AXI获得如此优异性能的一个主要原因,就是它的单向通道体系结构。单向通道体系结构使得片上的信息流只以单方向传输,减少了延时。
AXI的工作模式
A. 握手机制
AXI所采用的是一种READY,VALID握手通信机制,即主从模块进行数据通信前,新根据操作对各所用到的数据、地址通道进行握手。主要操作包括传输发送者A等到传输接受者B的READY信号后,A将数据与VALID信号同时发送给B。根据READY和VALID拉高的先后顺序,可分为如下3种情况:
Valid before Ready handshake
Ready before Valid handshake
Valid with Ready handshake
每个channel内的valid和ready之间没有严格的先后顺序,但是channel间的valid和ready信号有依赖关系。对于读操作,spec要求读data必须出现在读addr之后,因此读操作的两个channel之间存在如下的依赖关系,即必须等到ARVALID和ARREADY同时为High后,RVALID才能拉高。
Read transaction handshake dependencies
对于写操作,addr和data两个channel之间不存在依赖关系,但是只能等最后一次transfer结束后,才能拉高BVALID。从下图中看不出AWVLAID, AWREAY与BVALID之间的关系,但是,隐含条件是slave只有接收到addr和data后,才能做出响应,因此AWAVLID, AWREADY为High,且最后一次transfer结束后才能拉高BVALID.
Write transaction handshake dependencies
B. axi总线的五个通道:
- 读地址通道,包含ARVALID, ARADDR, ARREADY信号;
- 写地址通道,包含AWVALID,AWADDR, AWREADY信号;
- 读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;
- 写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;
- 写应答通道,包含BVALID, BRESP, BREADY信号;
另外,还有两个global signal,ACLK,ARESETN信号;
其中ACLK为axi总线时钟,仅上升沿有效,ARESETN是axi总线复位信号,低电平有效,异步复位同步释放;所有master和slave共用ACLK和ARESETn。
READY与VALID是对应的通道握手信号;WSTRB信号为1的bit对应WDATA有效数据字节,WSTRB宽度是32bit/8=4bit;BRESP与RRESP分别为写回应信号,读回应信号,宽度都为2bit,‘h0代表成功,其他为错误。
a. 读操作:
顺序
- 主与从进行读地址通道握手并传输地址内容,
- 读数据通道握手并传输所读内容以及读取操作的回应。
对于读操作,slave必须先知道master想要读取的地址,因此,slave必须先接收到command后再回数据。normal的操作如图所示:
Channel architecture of READ TRANSACTION
READ Burst
b. 写操作:
顺序
- 主与从进行写地址通道握手并传输地址内容,
- 写数据通道握手并传输所读内容,
- 写回应通道握手,并传输写回应数据。
对于写操作,command和数据都是master发给slave的,因此command和data没有顺序,可以先发command,再发data,也可以先发data,在发送data过程中发送command。normal的操作如图所示:
Channel architecture of writeTRANSACTION
Write Burst
什么是支持 outstanding
Outstanding 支持的多少是需要设定的。举个例子,如果 outstanding设为5,对于写来说,可以连续发送5个写操作而不用等待bresponse的响应,否则必须等待有一个responese回来才能发送下一个写操作,对于读来说,是通过rlast信号来看是否有respone,也类似于写操作;也就是说,如果没有respone的操作超过了outstanding的值,则会通过拉低响应的ready信号,从而不能发送有效操作;
三、 各个通道的时序关系:
1、读地址通道:
output [0: 0] master_axi_arid; // axi read command ID
output [35: 0] master_axi_araddr; // axi read command address
output [3:0] master_axi_arlen; // axi encoded read command length
output [2:0] master_axi_arsize; // axi encoded read command size
output [1:0] master_axi_arburst; // axi read command burst type.
output [1:0] master_axi_arlock; // axi atomic access indicator
output [3:0] master_axi_arcache; // axi cache control os for the read.
output [2:0] master_axi_arprot; // axi read command protection type.
output master_axi_arvalid; // axi read command valid indicator.
input master_axi_arready; // indicates that axi is ready to accept the read command.
2、读数据通道:
Input [0:0] master_axi_rid; // axi read data ID.
Input [255:0] master_axi_rdata ; // axi read data.
Input [1:0] master_axi_rresp ; // aix read data response a response is sent with each burst indicating the status of the burst.
input master_axi_rlast; // Indicates that this is the final world of the data for the command.
input master_axi_rvalid; // axi read data valid indicator.
output master_axi_rready; // indicates that the axi master is ready to accept read data.
4.写地址通道:
output [ 0: 0] master_axi_awid; // axi write command ID
output [35: 0] master_axi_awaddr; // axi write command address
output [ 3:0] master_axi_awlen; // axi encoded write command length
output [ 2:0] master_axi_awsize; // axi encoded write command size
output [ 1:0] master_axi_awburst; // axi write command burst type.
output [ 1:0] master_axi_awlock; // axi atomic access indicator
output [ 3:0] master_axi_awcache; // axi cache control os for the read.
output [ 2:0] master_axi_awprot; // axi read command protection type.
output master_axi_awprot; // axi read command valid indicator.
input master_axi_awready; // indicates that aix is ready to accept the read command.
5.写数据通道:
output [ 0:0] master_axi_wid; // axi write data ID.
output [255:0] master_axi_wdata ; // axi write data.
output [ 31:0] master_axi_wstrb ; // axi write data strobe.
output master_axi_wlast; // Indicates that this is the final world of the data for the command.
output master_axi_wvalid; // axi write data valid indicator.
input master_axi_0_wready; // indicates that the axi master is ready to accept write data.
6.写响应通道:
input [0:0] master_axi_bid; // AXI write respone ID.
input [1:0] master_axi_bresp; // AXI write respone A responese is sent for the entire burst.
input master_axi_bvalid; // AXI write response valid indicator.
input master_axi_bready; // Indicates that the AXI master is ready to accepta write respone.
7.写地址、写数据、写响应的时序关系
四.传输顺序说明
AXI 协议可以完成按照固定顺序的传输操作,其通过接口给每一个传输操作一个ID标记,协议要求具有相同的ID标记的传输要按照指定顺序完成,但是不同的ID的传输可以不按照制定的顺序进行传输; 完成乱序传输的能力意味着可以完成向快速内存的传输,不用等待之前向慢速内存的传输,这样可以提高系统的性能,减少不必要的等待时间;
关于 AXI协议的学习解释说明的更多相关文章
- Paxos协议超级详细解释+简单实例
转载自: https://blog.csdn.net/cnh294141800/article/details/53768464 Paxos协议超级详细解释+简单实例 Basic-Paxos算法 ...
- 【SIP协议】学习初学笔记
1.SIP这玩意是怎么走来和如何构建的? 通俗的说,SIP就是一个轻量级信令协议,它可以作为音频.视频.及时信息的信令. 说到SIP是怎么出来的就要提H.323,而提到这个标准由不得不提到ITU-T, ...
- AXI协议(一)
最近弄Zynq,不懂AXI协议Zynq很难玩儿的转.这些笔记主要攻克AXI中的一些难题. 所有的AXI4包含了5个不同的通道: (1)读/写地址通道(Read/Write address ch ...
- TCP/IP协议组学习笔记
TCP/IP协议族学习笔记: 一.基础概念: (1)TCP(Transmission Control Protocol) 传输控制协议. (2)IP(Internet Protocol)网际协议.IP ...
- 使用wireshark 抓取 http https tcp ip 协议进行学习
使用wireshark 抓取 http https tcp ip 协议进行学习 前言 本节使用wireshark工具抓包学习tcp ip http 协议 1. tcp 1.1 tcp三次握手在wire ...
- AXI协议中的模棱两可的含义的解释(Cachable和Bufferable)
转载:https://blog.csdn.net/hit_shaoqi/article/details/53243173 Cachable和Bufferable 一个Master发出一个读写的requ ...
- LFI、RFI、PHP封装协议安全问题学习
本文希望分享一些本地文件包含.远程文件包含.PHP的封装协议(伪协议)中可能包含的漏洞 相关学习资料 http://www.ibm.com/developerworks/cn/java/j-lo-lo ...
- 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念
wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...
- TCP/IP协议原理学习笔记
昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...
随机推荐
- BCP IN示例
参考:http://www.cnblogs.com/qanholas/archive/2011/07/05/2098616.html bcp {dbtable | query} {in | out | ...
- [ASP.NET]uploadify简单使用讲解
背景:在用户控件中使用html 的file控件或者ASP.NET的FileUpLoad控件都无法获取到文件,于是想到听说过的uploadify uploadify官网:www.uploadify.co ...
- 使用ABP框架踩过的坑系列5
DDD领域驱动开发,实际是为复杂的业务场景而生的,为了让开发人员专注于业务,而操作系统.数据库.网络之类的技术细节,必须要持久透明化:实际就是数据库系统DBMS的ORM抽象,目标就是业务不需要考虑数据 ...
- Elasticsearch、Kibana Windows下环境搭建
Elasticsearch 簡介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是 ...
- 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...
- pageadmin CMS网站建设教程:模板中如何实现信息数据共享
pageadmin CMS网站制作教程:模板中如何实现信息数据共享 很多时候信息数据需要共享,一个最常用的应用场景就是手机版(独立手机,非响应式)本共享pc版本数据,下面以这个场景为例讲解. 假设手机 ...
- 合服导致 globalserver 起不来的问题
globalserver 报错 RMIInitArmyBackObject InitError 根据报错信息一路追查下来,发现某个帮派的数据解析 json 的时候报错.监视变量,找出这段字符串,大致结 ...
- java验证身份证合理性
package com.tiantian.util; import java.util.Calendar;import java.util.HashMap;import java.util.Map;i ...
- 查看服务器CPU的个数、CPU的核数、多核超线程数、机器硬件型号
这里有几个概念: 1.一台物理机的物理CPU的个数 2.一个CPU上的核数 3.一个核上面支持的线程数 有下面的计算公式: # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 ...
- Github只下载某一目录的文件
比如要下载: https://github.com/xubo245/SparkLearning/tree/master/docs 将“tree/master”改成“trunk https://gith ...