AXI接口协议学习总结
下面将AXI接口协议学到的相关内容整理如下
一、AXI接口协议定义
AXI是Advanced eXtensible Interface的缩写,译为高级可扩展接口协议,是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)高级微控制器总线架构的一部分,是一种高性能、低时延、高带宽的芯片内部多主机与多从机互连总线,可以用来替代APB和AHB总线,2003年发布了AXI第一版即AXI3.0(称为AXI3),2010年发布了AXI第二版即AXI4.0(称为AXI4)。
二、AXI接口协议特点
1、地址信号、地址控制信号、数据信号、数据控制信号相互对立;
2、只需要传输首地址;
3、向下兼容AHB和APB;
4、地址信号与数据信号分离,满足低时延;
5、使用字节选通,支持非对齐的数据传输。
三、三种AXI接口协议
AXI以下有三种接口协议,满足不同的使用需求
1、AXI4:属于存储器映射(通过地址访问数据)协议,主要用于高速数据传输,例如处理器/FPGA等主设备访问DDR等从设备。相当于原来的AHB接口协议。
2、AXI-Lite:是AXI4的简化版,单次仅能读写1个数据,类似原来处理器通过EMIF读写FPGA寄存器,主要用于寄存器的配置。相当于原来的APB接口协议。
3、AXI-stream:与上面两种存储器映射方式不同,数据传输不需要地址,主从设备之间直接连续读写数据,主要用于视频、高速AD、PCIe、DMA接口等需要高速数据传输场景,与FIFO类似。
四、AXI接口通道
(一)AXI接口通道总体分类
AXI接口通道可以总体分为读通道和写通道。
1、读通道又包括:读地址通道和读数据通道,读取数据过程如下图所示。
其中:
1)、读地址通道:不仅包括读数据的地址,还可以携带控制消息,用于描述被传输的数据属性。
2)、读数据通道:读数据和读响应信号包括数据总线(8/16/32/64/128/256/512/1024 bit)和指示读传输完成的读响应信号。
2、写通道又包括:写地址通道、写数据通道,写数据反馈,写数据过程如下图所示。
其中:
1)、写地址通道:同上,不仅包括写数据的地址,还可以携带控制消息,用于描述被传输的数据属性。
2)、写数据通道:包括数据总线(8/16…1024 bit)和字节线(用于指示8 bit 数据信号的有效性)。
3)、写响应通道:slave使用写响应通道对写传输进行响应。
(二)AXI接口握手信号
以上提到读地址通道、读数据通道、写地址通道、写数据通道,写数据反馈通道这5个通道,都有独立的VALID/READY信号,实现握手机制,发送端和接收端都可以实现流控,发送端使用VALID表明地址/控制信号、数据是有效的,接收端使用READY表明自己能够接收信息。
注意:主设备和从设备可以是发送或接收。
(三)多主机、多从机互连
AXI严格来讲应该是主机与从机点对点的接口协议,但是通过xilinx提供的Interconnect IP核可以实现多主机与多从机的互连,即AXI互联矩阵,作用是提供将一个或多个AXI主设备连接到一个或多个AXI从设备的一种交换机制,类似于交换机的交换矩阵。
AXI可以提供三种接口之间互连:
1、master/interconnect;
2、slave/interconnect;
3、master/slave。
地址及数据总线共享方式有三种:
1、共享地址与数据总线;
2、共享地址总线,多数据总线;
3、multilayer多层,多地址总线,多数据总线。
在大多数系统中,地址通道的带宽要求没有数据通道高,因此可以使用共享地址总线,多数据总线结构来对系统性能和互联复杂度进行平衡。
拓扑结构如下图所示:
五、AXI接口信号说明
(一)全局信号
1、ACLK:全局时钟信号
2、ARESTn:全局复位信号
(二)读地址信号
1、ARID:读地址ID,M->S;
2、ARADDR:读地址,M->S;
3、ARLEN:突发长度,M->S;(读取的个数)
4、ARSIZE:突发尺寸,M->S;(每次突发传输的字节数)
5、ARBURST:突发类型,M->S;(有FIXED,INCR,WRAP三种类型,其中FIXED为固定地址,循环读取相同位置的数据;INCR为地址自增方式,依次读取数据;WRAP回环突发和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是2,4,8,16次传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐)
6、ARCACHE:存储类型,M->S;
7、ARPROT:保护类型,M->S;
8、ARQOS:Qos标识符,M->S;
9、ARREGION:区域标识符,M->S;
10、ARUSER:用户自定义,M->S;
11、ARVALID:读地址有效,M->S;(表示ARADDR总线上地址有效)
12、ARREADY:写有效信号,S->M;(表示从机已经准备好接收ARADDR总线的地址了)
(三)读数据信号
1、RID:读数据ID,S->M;
2、RDATA:读数据,S->M;
3、RRESP:读响应,S->M;
(读传输的响应信息是附加在读数据通道上的,写传输的响应在写响应通道)
4、RLAST:突发传输的最后一个,S->M;
5、RUSER:用户自定义,S->M;
6、RVALID:读数据有效,S->M;
7、RREADY:读数据有效信号,M->S;(表示主机已经准备好接收读取数据了)
(四)写地址信号
1、AWID:写地址ID,M->S;(用于区分该地址属于哪个写地址组)
2、AWADDR:写地址,M->S;
3、AWLEN:突发长度,M->S;(写入的个数)
4、AWSIZE:突发尺寸,M->S;(每次突发传输的最长字节数)
5、AWBURST:突发类型,M->S;(有FIXED,INCR,WRAP三种类型,其中FIXED为固定地址,循环写入相同位置的数据;INCR为地址自增方式,依次写入数据;WRAP回环突发和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是2,4,8,16次传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐)
6、AWCACHE:存储类型,M->S;(标记系统需要的传输类型)
7、AWPROT:保护模式,M->S;
8、AWQOS:Qos标识符,M->S;
9、AWREGION:区域标识符,M->S;(当slave有多种逻辑接口时标识使用的逻辑接口)
10、AWUSER:用户自定义,M->S;
11、AWVALID:读地址有效,M->S;(表示AWADDR总线上地址有效)
12、AWREADY:写有效信号,S->M;(表示从机已经准备好接收AWADDR总线的地址了)
(五)写数据信号
1、WDATA:写数据,M->S;
2、WSTRB:数据段有效,M->S;(标记写数据哪几个字节有效)
3、WLAST:突发传输的最后一个,M->S;
4、WUSER:用户自定义,M->S;
5、WVALID:写数据有效,M->S;(表示WDATA总线上的数据已经有效了)
6、WREADY:写数据有效信号,M->S;(表示从机已经准备好接收写入的数据)
(六)写响应信号
1、BID:响应ID,S->M;
2、BRESP:写响应,S->M;
3、BUSER:用户自定义,S->M;
4、BVALID:写响应有效,S->M;
5、BREADY:写响应有效信号,M->S;(表示主机已经准备好接收写响应信号了)
六、AXI接口时序
(一)时钟、复位与VALID信号
AXI的复位信号(ARESETn)可以进行异步复位,但是复位完必须与ACLK的上升沿同步。在复位过程中,要求:
1、主机接口必须驱动ARVALID、AWVALID、和WVALID为低电平。
2、从机接口必须驱动RVALID和BVALD 为低电平。
3、所有其他信号可以为任何值。
4、在完成复位后,允许master驱动ARVALID,、AWVALID、WVALID为高。但是上升沿信号是在ARESETn是拉高之后而且要在ACLK上升沿。如下图:
(二)AWVALID信号与地址/控制信息
写地址通道的主机可以在地址/控制信息有效时拉高 AWVALID,当AWVALID拉高后要保持地址/控制信息不变,直到AWREADY也拉高并且时钟产生上升沿之后。换句话说,在握手传输的时,我们的数据信息和地址信息要保持不变,这样才能确保传输的数据为有效可靠的。也就是AWVALID和信息数据是同步变化的,如下图。
(三)AWREADY信号与地址/控制信息
AWREADY的默认状态可以是高或者低。AXI协议建议的默认状态为高。当AWREADY为高时,从机能够接受任何提供给它的有效地址。不建议默认AWREADY状态为低,因为它强制进行握手传输,至少需要两个时钟周期,一个周期拉高AWVALID,另一个周期拉高AWREADY。
(四)信号依赖关系
首先,单箭头表示可以等待有效再置位,双重箭头表示必须等待有效再置位。
下图为读操作的依赖关系,ARREADY可以等待ARVALID信号,RVALID必须等待ARVALID和ARREADY同时有效后(一次地址传输发生)才能能有效
在AXI4中,定义了额外的依赖关系,即BVALID必须依赖AWVALID、AWREADY、WVALID和WREADY信号,如下图所示。