声明:本文章是本人学习AMBA AXI协议的一些个人理解,仅用于学习交流之用。本人学习AXI协议时参考的是ARM公司官方的AXI协议技术规范文档(编号:IHI0022J)。受限于本人的知识水平,本文章可能存在缺漏和错误之处,欢迎大家批评指正。
1.AXI协议介绍
AXI 全称: Advanced eXtensible Interface,中文直译:先进拓展接口。AXI支持高性能、高频系统设计,用于主(Manager)从(Subordinate)设备之间的通信。
AXI总线接口的特性有很多,在这里我只列出来我认为比较重要的几个特性:
- 地址/控制周期与数据周期分离,并且拥有各自独立的传输通道
- 支持非对齐的数据传输
- 支持只需要发送起始地址的burst事务传输
- 支持读写数据分离,且拥有各自独立的传输通道
- 支持Outstanding功能
- 支持Out-of-order功能
2.AXI架构
AXI协议定义了5个独立的数据传输通道,它们分别是:
- 写请求通道:所有通过这个通道传输的信号用 AW 开头命名
- 写数据通道:所有通过这个通道传输的信号用 W 开头命名
- 写响应通道:所有通过这个通道传输的信号用 B 开头命名
- 读请求通道:所有通过这个通道传输的信号用 AR 开头命名
- 读数据通道:所有通过这个通道传输的信号用 R 开头命名
注:在之前的AXI协议版本中,写请求通道又名写地址通道,只是在最新版本的规范当中改了名字。类似的读请求通道又名读地址通道。
这5个通道的架构如图1和图2所示:
这5个数据传输通道,每一个都使用了 VALID-READY 握手机制来控制数据的传输速率。正因为AXI拥有这5个独立的传输通道才能够支持Outstanding功能和Out-of-Order功能。
3.AXI的通道信号
之前有稍稍提到,AXI每一通道都有独特的通道信号。隶属于同一通道的信号命名开头相同,像写请求通道的信号就以AW为开头命名。
AXI定义了大量的通道信号,在这里只列举我认为比较常用的或者比较重要的信号。写请求通道的信号如表1所示:
信号名 | 信号位宽 | 信号源 | 信号描述 |
---|---|---|---|
AWVALID | 1 | 主设备 | Valid指示信号 |
AWREADY | 1 | 从设备 | Ready指示信号 |
AWID | ID_W_WIDTH | 主设备 | 写事务ID号 |
AWADDR | ADDR_WIDTH | 主设备 | 写事务地址 |
AWREGION |