1、来源
AXI协议是ARM公司的AMBA3.0总线中的一种,他是面向高性能、高带宽、低延时的片内总线,它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道,并支持显著传输访问和乱序访问,并更容易时序收敛。
2、总线类型
此针对VIVADO EDA工具,其有三种AXI总线,分别为:
AXI4_Lite:轻量级的地址映射单次传输接口,占用很少的逻辑资源。
AXI4 :其面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256次数据突发传输。
AXI_Stream:面向高速流数据传输,去掉了地址项,允许无限制的数据突发传输规模。
下面讲解针对AXI4信号(AXI4_Lite和AXI4 信号基本一样)
3、协议特点及特性
1、适合高带宽低延时的设计。
2、无需复杂的桥就能实现高频操作。
3、能满足大部分器件的接口要求。
4、适合高初始延时的存储控制器。
5、提供互联架构的灵活性和独立性。
6、可以向下兼容AHB和APB接口
7、分离的地址/控制、数据相位。
8、使用字节选通,支持非对齐的数据传输。
9、基于BURST(突发)传输的,因此只需要传输首地址。
10、读写数据通道分离,可以提供低功耗的DMA。
11、支持多种寻址方式。
12、支持乱序传输。
13、易于添加寄存器级来进行时序收敛。
4、协议信号
AXI协议通常将其分成五个独立的传输通道,分别是:读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。解下来分别对几个通道的信号进行说明。
1)、写地址通道
写地址通道为AW开头、后续跟随具体的作用;
len :这个信号是用来表示传输的长度的,在地址这里发送一遍是为了让地址指针有个开始和结束的位置。
size :为突发传输的大小,这个一般固定为一个定值即可。
burst :为突发类型,一般采用的方式为01增量突发模式,这个模式可以试着写一下让其一直突发看看其能不能超过4KB边界,有惊喜。
剩下的那些信号,除了vald和ready有用以外其他固定位0即可。
到最后剩下需要进行变化交互的信号为,ID号(点对点传输为固定)、ADDR、vald、ready信号,这几个信号交互即可。
2)、写数据通道
写数据通道需要重点介绍的就是WSTRB信号,这个信号是表面那个字节有效的,1有效、0无效,如果传输的时候所有数据都有效及全部置1即可。
WUSER:用户自定义信号、可以将其直接为0;
3)、写响应通道
这个通道是在写完数据后再进行判断的,其中需要注意的信号为BRESP,这个信号有回传的时候有几种情况,分别是:
00:表示请求已成功完成,数据传输正常。
01 :表示请求已成功完成,但在数据传输过程中发生了额外的错误,通常是由于某种条件导致的。
10 :表示从设备(Slave)发生了错误,无法处理请求。这可能是由于地址无效或其他硬件故障。
11 :表示请求被取消,通常是由于从设备不支持该请求或其他原因。
总结起来就一句话,不等于0的时候就表示上次传输有问题,重传即可。
4)、读地址通道
读地址通道和写地址通道基本一样的,回看写地址通达即可。
5)、读数据通道
读数据通道可以理解为,把前面的写数据通道和写响应通道做了一个集合并进行约减。 如不理解可以看以下写数据通道和读数据通道。
在这里只需要把ready拉高,就可以接收数据了,需要注意的是咱们单字节的时候最终读出来的数会比预设读周期多一个,这里采用-1方式即可。
5、读写时序
因为AXI4采用的是握手机制的方式进行通信的,因此只有VALID和READY两个信号同时有效的时候才表明本次传输有效。下面介绍出现的几种情况。
1)
2)
3)
下面说一下读写的整个流程
写
整个写操作可以分成三部分:
第一步:检测到写地址通道的请求信号后发送地址和地址使能信号。
第二步:检测到写数据通道的请求信号后发送数据和写数据使能信号,达到最后一次传输的要求时拉高最后一次传输信号。
第三步:拉高写响应通道的请求信号,让从机发送响应信号过来判断本次操作是否成功,不成功就继续上述操作即可。
读
整个读操作可以分成两部分:
第一步:检测到读地址通道的请求信号后发送地址和地址使能信号。
第二步:拉高读数据通道的数据请求信号后等待从机传数据过来,检测到数据使能信号有效时判断数据是否有效,有效就接收,无效就丢弃并记录当前位置以便后面再次进行读操作。