1、AMBA的演进过程
有朋友后台留言,觉得 ACE 有点跳跃,希望讲一下 AXI。开始之前,先上图,看看 AMBA 的演进过程。目前最新版本是 AXI5,5 和 4 的差别不大,所以下文以 3和 4 为主。AXI 的全称是 Advanced eXtensible Interface。在 spec 里面是这么自夸的:
用于高带宽和低延迟设计。提供高频操作,无需使用复杂电桥。协议满足各种组件的接口要求。
2、AXI通道之间的关系
前面说到AXI的五个通道是独立的,但通道间必须保持一定的约定关系:
- 写回复必须在一次写事务的最后一个写数据之后
- 读数据必须在接收到读地址信号之后
- 通道间握手必须满足一定的依赖关系
前两条好理解,重点看一下第三条。之前讲过,为了避免死锁,协议规定发送方的VALID不能依赖接收方的READY;反过来,接收方的READY可以等待,也可以不等待发送方的VALID。当发生一次读传输时,读地址通道中,主机(master)是发送方,而从机(slave)是接收方;在读数据通道中,主机是接收方,从机是发送方。
3、AXI协议传输事务的结构
了解完通道握手的依赖关系,我们再看看传输事务的结构。首先看传输的地址结构。AXI协议是基于突发(burst)传输的。所谓突发传输,就是在一次事务中,连续地传输多个地址相邻的数据。一次突发传输中可以包含一至多次数据(Transfer)。每个 transfer 因为使用一个周期,又被称为一拍数据(Beat)。每个数据可以是多个Byte构成。