全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

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

时间:2024-01-17 12:21

人气:

作者:admin

标签: 总线  AXI4  AMBA  A  数据传输 

导读:漫谈AMBA总线-AXI4协议的基本介绍-本文主要集中在AMBA协议中的AXI4协议。之所以选择AXI4作为讲解,是因为这个协议在SoC、IC设计中应用比较广泛。...

带宽/BandWidth 延迟/Latency 是衡量总线性能最重要的两个因素。

1.1 What is AMBA ?

AMBA全称Advanced Microcontroller Bus Architecture(高级微控制总线架构),是一种开放的、标准的片上互联总线规范协议簇。从本质上来说,AMBA协议簇定义了片上功能模块是如何进行相互通信。同时随着时间演化,已经从AMBA到现在的AMBA5。协议簇的演化路径如下图所示:

e21e08fa-b4ed-11ee-8b88-92fbcf53809c.png

1.2 Example for AMBA

e2328c94-b4ed-11ee-8b88-92fbcf53809c.png

如上图所示的SoC设计实例。通过AMBA协议连接了各个功能模块,比如CPUGPUDMADDR等。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时,就需要实现互联总线结构。如下图所示:

e24468d8-b4ed-11ee-8b88-92fbcf53809c.png

上文提到,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)。如下图所示:

e248ce82-b4ed-11ee-8b88-92fbcf53809c.png

写数据: 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返回需要的数据(读数据)。

e24d3dbe-b4ed-11ee-8b88-92fbcf53809c.png


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协议中的五个通道,每个通道中都有相同的握手机。  

e25d57c6-b4ed-11ee-8b88-92fbcf53809c.png

2.3 AXI Channel Transfer Timing Overview   上文提到,AXI协议中的通道的数据传输是依靠握手机制。source通过拉高Valid信号指示有数据发送。而destination拉高Ready信号表示可以接收数据。只有source和destination同时有效,数据才能完成传输。  

e26a3914-b4ed-11ee-8b88-92fbcf53809c.png

e271aa78-b4ed-11ee-8b88-92fbcf53809c.png

e2798fb8-b4ed-11ee-8b88-92fbcf53809c.png

如图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都拉高的时候,必须接收这笔数据才能进行下面操作。

e27df60c-b4ed-11ee-8b88-92fbcf53809c.png


 

2.4 AXI Channel Transcation Timing Overview

2.41 Write Transcation : single data
写操作时序图1:单数据
如上文所示,Manager向Subordinate写数据时,Manager发送写地址,发送写数据,最后等待Subordinate的响应。时序图如下:

e281bd00-b4ed-11ee-8b88-92fbcf53809c.png

如上图所示,每个通道传输的数据不一致,但是都通过相似的握手信号来完成数据的交互。从AW通道的地址信号开始,接着W通道的数据到最后的B通道的响应,这一完整的过程称为一次Transaction

写操作时序图2:单数据
如上文所示,Manager向Subordinate写数据时,Manager同时发送写地址和写数据,最后等待Subordinate的响应。时序图如下:

e2947f6c-b4ed-11ee-8b88-92fbcf53809c.png

2.42 Read Transcation : single data
读操作时序图:单数据
如上文所示,Manager向Subordinate读数据时,Manager发送读地址,然后等待Subordinate的响应。时序图如下:

e2acda4e-b4ed-11ee-8b88-92fbcf53809c.png


2.43 Write Transcation : multi data
写操作时序:多数据
如上文所示,Manager向Subordinate写多个数据,Manager发送写地址和写数据,等待Subordinate的响应。时序图如下:

e2b6ad44-b4ed-11ee-8b88-92fbcf53809c.png


在这里,从第一个写数据到最后一个写数据(data1~data8),在一个Transaction中,整个W通道数据过程称为一次写Burst;写Burst内部每一拍的数据称为一个写Beat。
 

2.44 Read Transcation : multi data
读操作时序:多数据
如上文所示,Manager向Subordinate读数据时,Manager发送读地址,然后等待Subordinate的响应。时序图如下:

e2bb7798-b4ed-11ee-8b88-92fbcf53809c.png

对比读操作和写操作的波形可以明显看出读写通道的不对称。可以看到每一个读数据都有一个匹配的读响应伴随,读响应借助读数据通道返回。而写操作波形图中,有专门的通道(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原图所示:

e2cd02f6-b4ed-11ee-8b88-92fbcf53809c.png

e2d971d0-b4ed-11ee-8b88-92fbcf53809c.png

除过上图所示的依赖特性,在AXI4协议里面没有规定其他任何的依赖关系。

审核编辑:黄飞

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信