AXI4简介
起初SoC片上总线处于发展阶段,不像微机总线那样成熟,目前还没有统一的标准,因此各大厂商和组织纷纷推出自己的标准,以便在未来的SoC片上总线标准中占有一席之地。ARM公司就在1995年推出了自己的总线——AMBA(Advanced Microcontroller Bus Architecture,高级微处理器总线架构)。它独立于处理器和制造工艺技术,增强了各种应用中的外设和系统宏单元的可重用性,非常适合于现代大规模集成电路设计自动化的要求。
AXI 表示 Advanced Extensible Interface(高级可扩展接口),包含在AMBA标准中。AXI4 接口 (AMBA 4.0) 分 3 种类型:
- AXI4 (AXI4-Full):主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输。
- AXI4-Lite:一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。适用于吞吐量较小的地址映射通信总线。
- AXI4-Stream:用于高速流传输数据,去掉了地址项,允许无限制的数据突发传输规模。
这里需要首先介绍一下存储映射(Meamory Map):如果一个协议是存储映射的,那么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表明是针对该存储空间的读写操作。
AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而 AXI-Stream 接口则像 FIFO 一样,数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速 AD、PCIe、DMA 接口等需要高速数据传输的场合。
协议的制定是要建立在总线构成之上的。AXI总线协议的两端可以分为分为主(master)、从(slave)两端,是多主多从的拓扑结构,其拓扑结构如下图所示,他们之间一般需要通过一个AXI Interconnect相连接。作用是提供将一个或多个AXI主设备连接到一个或多个AXI从设备的一种交换机制。
主设备和从设备需要按照约定好的数据传输方式来发送和接收数据。AXI 协议就是描述了主设备和从设备之间的数据传输方式。在该协议中,主设备和从设备之间通过握手信号建立连接。所谓的握手呢就是在通信过程中,主从之间会进行协调,只有等接收方准备好之后,才能开始数据传输,这种机制我们称之为“握手”。
AXI Interconnect的主要作用是:当存在多个主机以及从机器时,AXI Interconnect负责将它们联系并管理起来。由于AXI支持乱序发送,乱序发送需要主机的ID信号支撑,而不同的主机发送的ID可能相同,而AXI Interconnect解决了这一问题,他会对不同主机的ID信号进行处理让ID变得唯一。
AXI协议将读地址通道,读数据通道,写地址通道,写数据通道,写响应通道分开,各自通道都有自己的握手协议。每个通道互不干扰却又彼此依赖。
AXI总线优点
AMBA AXI 协议支持支持高性能、高频率系统设计。
- 适合高带宽低延时设计
- 无需复杂的桥就能实现高频操作
- 能满足大部分器件的接口要求
- 适合高初始延时的存储控制器
- 提供互联架构的灵活性与独立性
- 向下兼容已有的AHB和APB接口特性
- 分离的地址/控制、数据相位
- 使用字节选通,支持非对齐的数据传输
- 基于 burst 传输,只需传输首地址
- 读写数据通道分离,能提供低功耗 DMA
- 支持多种寻址方式
- 支持乱序传输
- 易于添加寄存器级来进行时序收敛
-
通道
AXI 协议定义了 5 条通道:其中 2 条用于读取传输事务(transaction):
- 读地址(AR):read address
- 读数据 (R):read data
另 3 条用于写入传输事务(transaction):
- 写地址(AW):write address
- 写数据(W):write data
- 写响应(R):write response
很多人会有疑问,既然有写响应通道,为什么没有读响应通道呢?原因其实也很简单,因为读数据通道本身就具备了读响应功能。其实就是用读数据通道来传输读响应信号。
读传输事务
当AXI4总线进行读传输事务时,首先会由主设备通过读地址通道向从设备发送地址和部分控制信号,然后该地址的数据通过读数据通道由从设备发送给主设备。
每个地址可多次发生数据传输,此类型的传输事务称为突发。需要注意的是AXI4-Lite是不支持突发的。
-
写传输事务
当AXI4总线进行写传输事务时,首先由主设备通过写地址通道向从设备发送写地址信号,方便从设备设置地址和部分控制限号,然后主设备再通过写数据通道向从设备发送此地址要写入的数据信号,最后由从设备向主设备通过写响应通道发送写响应信号,以指示数据写入是否成功。
写响应通道 (Write Response Channel) 上可能的响应值包括:
- OKAY (0b00):正常访问成功。表示已成功完成正常访问
- EXOKAY (0b01):专属访问成功。
- SLVERR (0b10):从设备错误。已成功访问从设备,但从设备希望向发端主设备返回错误条件(例如,数据读取无效)。
- DECERR (0b11):解码器错误。通常由互连组件生成,用于指示传输事务地址处没有任何从设备
-
通道定义
5个通道都具有的同一类信号:VALID、READY。这两个信号用来实现AXI协议的握手机制(handshake)。在读写数据两条数据通道中,传输突发传输(Burst Transaction)中的最后一个数据,必须要给出 LAST 信号,来标识这是此次突发传输中的最后一个数据。在共同的定义之外,各个通道有自己的定义。
读写地址通道
读、写事务分别向读、写通道写入本次事务的地址和部分控制信号。
读数据通道
从机通过读数据通道向主机发送当前地址的数据以及本次传输的响应。总线数据位宽可以是8,16,32,64,128,512或1024bit。
写数据通道
主机通过写数据通道向从机发送当前地址将要写入的数据。总线数据位宽可以是8,16,32,64,128,512或1024bit。写数据通道还具有STROBE 信号,该信号以数据的字节为单位进行选取,可实现数据的掩码功能。也就是不写入我们不想写入的数据,关于数据掩码的话DDR3部分有比较详细的介绍。
写响应通道
写响应通道用于从机将写操作响应回复给主机。所有写传输操作都需要以写回复通道上接收写响应作为完成信号。
信号
全局信号
ACLK:全局时钟信号,所有的传输操作都发生在 ACLK 的上升沿。
ARESETn:低电平有效的同步复位信号(可以是异步复位,但必须同步释放在时钟上升沿,即异步复位同步释放)。
写地址通道信号
写地址通道包含的所有信号如下表所示:
信号 |
方向 |
含义 |
AWID |
O |