漫谈AMBA总线-AXI4协议的基本介绍

带宽/bandwidth 和延迟/latency 是衡量总线性能最重要的两个因素。
1.1 what is amba ?
amba全称advanced microcontroller bus architecture(高级微控制总线架构),是一种开放的、标准的片上互联总线规范协议簇。从本质上来说,amba协议簇定义了片上功能模块是如何进行相互通信。同时随着时间演化,已经从amba到现在的amba5。协议簇的演化路径如下图所示:
1.2 example for amba
如上图所示的soc设计实例。通过amba协议连接了各个功能模块,比如cpu、gpu、dma、ddr等。amba协议通过简化和规范了模块接口信号,使得ip设计更加灵活兼容的同时也促进了ip的多次复用。
1.3 this text focus on
本文主要集中在amba协议中的axi4协议。之所以选择axi4作为讲解,是因为这个协议在soc、ic设计中应用比较广泛。
2.1 brief introduction of axi4 
axi协议描述了单向数据传输的过程,在使用axi协议构建的系统中,有两种axi接口:manager(master)、subordinate(slave)。axi manager接口只能和axi subordinate接口连接。axi manager(axi_m)接口发起axi读写命令,axi subordinate接口接收到axi读写命令之后给出响应。
axi协议是一个点对点接口规范,而不是soc互联总线协议。所以如果想要连接多个axi master和多个axi slave时,就需要实现互联总线结构。如下图所示:
上文提到,axi协议本身只规定了点对点接口之间的信号个数、时序特性。所以上图多个master的axi interconnect模块只是在接口上遵守了axi协议,互联总线内部的拓扑结构、仲裁机制、路由机制、流控机制等和axi协议本身没有关系,取决于设计者的思路和应用场景。
ps : 可以用synopsys designware 、arm socrates等工具生成符合应用场景(ppa)的axi接口的互联总线。
2.2 axi channel overview
axi协议规定了axi manager和axi subordinate之间点对点的信号个数、时序特性。axi协议用于axi manager和axi subordinate接口之间数据的传输。axi协议将所有的信号分成五个通道,分别是写地址通道(aw)、写数据通道(w)、写响应通道(b)、读地址通道(ar)、读数据通道(r)。如下图所示:
写数据: 1. manager 通过write address(aw)通道向subordinate发出想要写数据的地址 2. manager 通过write data(w)通道向subordinate发出写数据
3. subordinate收到地址和数据后完成写入操作,并通过write response(b)通道告诉manager当前的地址和数据写入是否成功(写响应)     读数据: 1. manager 通过read address(ar)通道向subordinate发出想要读数据的地址
2. subordinate收到地址后,通过read data(r)通道向manager返回需要的数据(读数据)。
ps : axi manager在发起写操作的时候,可以先发写地址,再发写数据,最后等待写响应。同时,axi manager也可以同时发出写地址和写数据,最后等待写响应,如上图所示。 ps : axi协议所定义的读写通道并不对称,可以看到写数据包含三个通道(aw、w、b),读数据包含两个通道(ar、r)。因为slave返回的读命令响应可以伴随着数据一起返回。   2.2 axi channel transfer overview   上文提到,axi协议将信号分为五个通道。读写操作需要五个通道的配合完成;对于写操作,需要aw、w、b通道配合。对于读操作,需要ar、r通道配合。 而对于每个通道的数据传输,需要通道内信号在时间上组合来完成数据传输。如下图示,axi协议中的五个通道,每个通道中都有相同的握手机制。
2.3 axi channel transfer timing overview   上文提到,axi协议中的通道的数据传输是依靠握手机制。source通过拉高valid信号指示有数据发送。而destination拉高ready信号表示可以接收数据。只有source和destination同时有效,数据才能完成传输。
如图1所示,source有数据发送,在t2周期拉高valid信号并保持发送的数据。在t4周期,destination拉高ready信号表示可以接收数据。数据在t5周期被完整传输。这里的valid和ready同时为1且时长1周期的握手,称为1次transfer。
如图2所示,在t2周期,destination拉高ready信号表示可以接收数据,此时source并没有数据发送,直到t4周期source有数据发送便拉高valid信号,在t5周期完成一次数据传输(transfer)。
如图3所示,source和destination同时在t4周期作用,完成一次数据传输(transfer)。
ps : source和destination之间没有任何关系。当source有数据发送,拉高valid信号;当destination可以接受数据,拉高ready信号。source和destination根据自己的情况拉高信号向对方表明意图。
ps : 为了避免死锁产生,需要遵从source不能根据destination的ready信号来操作valid信号,但是ready信号可以根据valid信号来设置。举例来说,source和destination可以认为是谈恋爱的双方:
1. source可以主动表达自己心意,destination也可以主动表示自己心意,两者没有依赖关系可以达到目的。
2. source可以向destination表达自己心意,destination根据source表达过来的心意可以回复source也能达到目的。
3. 当source等待destination主动表达心意,destination也等待source主动表达心意,没有人主动表达自己的心意,那么就会陷入互相等待形成死锁(事则不成)。
ps : source有数据发送时,拉高valid信号。此时source只有等待destination接受这笔数据才可以拉低valid信号(图1)(发数据要慎重,一旦发起必须等到对方接受才能恢复,即valid: 发数据,须慎重,一旦发,必须接,接完后,才能动)
ps : destination比较灵活,可以根据自身情况拉高拉低ready信号。但是当valid为1时,destination拉高ready信号时,必须接受这笔数据才可以拉低ready信号(ready: 接数据,随意动,源有效,必须接,接完后,才能动)。如下图,在t2、t4周期使用ready表示自己可以接收数据,但在下一周期又认为自己接受不了而拉低ready信号。在t6周期,valid和ready都拉高的时候,必须接收这笔数据才能进行下面操作。
2.4 axi channel transcation timing overview
2.41 write transcation : single data
写操作时序图1:单数据
如上文所示,manager向subordinate写数据时,manager先发送写地址,再发送写数据,最后等待subordinate的响应。时序图如下:
如上图所示,每个通道传输的数据不一致,但是都通过相似的握手信号来完成数据的交互。从aw通道的地址信号开始,接着w通道的数据到最后的b通道的响应,这一完整的过程称为一次transaction。
写操作时序图2:单数据
如上文所示,manager向subordinate写数据时,manager同时发送写地址和写数据,最后等待subordinate的响应。时序图如下:
2.42 read transcation : single data
读操作时序图:单数据
如上文所示,manager向subordinate读数据时,manager先发送读地址,然后等待subordinate的响应。时序图如下:
2.43 write transcation : multi data
写操作时序:多数据
如上文所示,manager向subordinate写多个数据,manager发送写地址和写数据,等待subordinate的响应。时序图如下:
在这里,从第一个写数据到最后一个写数据(data1~data8),在一个transaction中,整个w通道的数据过程称为一次写burst;写burst内部每一拍的数据称为一个写beat。
2.44 read transcation : multi data
读操作时序:多数据
如上文所示,manager向subordinate读数据时,manager先发送读地址,然后等待subordinate的响应。时序图如下:
对比读操作和写操作的波形可以明显看出读写通道的不对称。可以看到每一个读数据都有一个匹配的读响应伴随,读响应借助读数据通道返回。而写操作波形图中,有专门的通道(b通道)进行写操作的响应。
写响应在写数据操作完成之后返回一个写响应,而对读操作来说,伴随着每个数据都有一个读响应。这也能体现两者不对称。
在这里,从第一个读数据到最后一个读数据(data0~data5),在一个transaction中,整个r通道的数据过程称为一次读burst;读burst内部每一拍的数据称为一个读beat。
这也就是amba spec提到的axi协议是基于burst的传输(the axi protocol is burst-based)。
3. axi channel dependencies
虽然这一节会提及通道依赖性,但其实来说,通道依赖性已经在上文中完整体现,即:
1.写通道的依赖性:写操作由地址和数据开始,到写响应完成。这就定义了第一条依赖性:写响应要在地址和数据之后。
2.读通道的依赖性:读操作由读地址开始,到读数据和读响应完成。这就定义了第二条依赖性:读数据和读响应要在读地址之后。
上面通道依赖性很好理解,只有当slave收到命令之后才能给出响应:对于写通道的依赖性就是写地址和写数据都到达slave,这时候slave完成写操作并给出写响应。对于读通道的依赖性就是读地址到达slave后,slave返回读取的数据和读响应。如下amba spec原图所示:
除过上图所示的依赖特性,在axi4协议里面没有规定其他任何的依赖关系。


高精度和高速度为何能直接影响着功耗的量级
块传输,块传输是什么意思
NTC的响应速度有多快
FM28V020 推出V系列并口256Kb F-RAM器件
vivo X70系列只是vivo专业影像之路的一步,未来更可期待
漫谈AMBA总线-AXI4协议的基本介绍
分享几种电压电流转换电路图 常见电压电流转换电路结构和原理讲解
excel导出功能如何实现?
最抢手配色—惹火红!aigo国民好物移动固态硬盘S7 Pro初体验
华盛昌DT-8806系列非接触红外额温计技术优势
采用USB控制器ISP1161实现USB主机功能的设计研究
PID控制算法基本原理
5G仅仅是网速变快吗?看看这些企业实例
摩尔线程与爱特云V2.0完成产品兼容互认证
驾驶式电动扫地车维护以及注意事项
PBXact-25:完全弥补了小型企业IPPBX用户的市场需求
基于EIoT能源物联网的工厂智能照明系统应用改造
OPPO Reno3全系列或将都标配双模5G
广东省首个区块链政策发布,区块链浪潮已经堵不住了
2021年非ARM核32位MCU市场占有率第一,爱普特强势助力国产“芯机遇”