AXI协议的特点
- 地址/控制信号与数据之间分开传输
- 支持基于stobes的不对齐数据传输
- 使用基于burst的传输(仅在发布起始地址时)
- 读、写数据分开传输,并提供低开销的DMA
- 支持提前发布多个地址
- 支持乱序事务完成
- 允许方便地添加寄存器阶段,以提供定时关闭
AXI协议一共有5个通道
- read address(M)
- read data(S)
- write address(M)
- write data(M)
- write reponse(S)
AXI中的通道都是单向的,就像水流只能从高处流向低处,上面每个通道后面表明了该通道哪里是数据的发出端,即水流的上游高地。
每一个独立的channel都包括了一组信息和握手信号VALID/READY
各通道信号说明
WRITE ADDRESS
信号名 | source | 描述 |
AWID
| Master | 这个信号是信号的写地址组的标识标签 |
AWADDR
| .. | 写地址给出了写突发事务中第一次传输的地址 |
AWLEN
| .. | burst length,突发长度给出了突发中传输的确切数量。此信息确定了与该地址相关的数据传输的数量 (传了多少个) |
AWSIZE
| .. | burst size,描述了在burst中每一次传输的size |
AWBURST
| .. | burst type,type和size信息,确定如何计算突发内每个传输的地址 (每个的地址是多少) |
AWLOCK
| .. | 提供有关传输的原子特性的其他信息 |
AWCACHE
| .. | memory type,用于指示事务被要求如何在系统中执行 |
AWPROT
| .. | protection type,该信号指示事务的特权和安全级别,以及该事务是数据访问还是指令访问 |
AWQOS
| .. |
Quality of Service,为每个写事务发送的标识符(axi4)
|
AWREGION
| .. | 区域标识符,允许从服务器上的单个物理接口用于多个逻辑接口(axi4) |
AWUSER
| .. | 用户信号,可选写地址通道中的用户自定义信号(axi4) |
AWVALID
| .. | 写地址有效,指示该通道正在发送有效写地址和控制信息 |
AWREADY
| slave | 写地址ready,指示slave已经ready to接收一个地址和相关的控制信号 |
WRITE DATA
信号名 | source | 描述 |
WID
| Master | 写数据传输的标签tag(axi3) |
WDATA
| 写数据 | |
WSTRB
| write strobe,指示了哪些byte lanes上的数据是有效的。写数据总线上,每8bit有一个write strobe bit控制 | |
WLAST
| 指示写burst中的最后一次传输 | |
WUSER
| 可选写数据通道中的用户自定义信号(axi4) | |
WVALID
| 写有效,指示写数据是有效的而且strobes是available的 | |
WREADY
| slave | 写ready,slave可以接收写数据 |
WRITE RESPONSE
信号名 | source | 描述 |
BID
| slave | 写响应的ID |
BRESP
| 写响应,指示了写事务的状态 | |
BUSER
| ||
BVALID
| 指示该通道正在发送有效的写响应信号 | |
BREADY
| master | 指示master可以接收写响应,这里的master是接收端(下游) |
READ ADDRESS
READ DATA
接口要求
全局信号
Clock:每个AXI组件都使用同一个ACLK,上升沿有效
Reset:异步低有效
复位时,master的读、写地址valid和写数据valid置低;slave的读数据valid和响应valid置低;其他信号随意。(就是置低所有的valid,其中master作为发送端控制3个valid,slave作为发送端控制2个valid。valid就像水坝一样,由上游控制是不是要开闸放水)
复位解除之后,允许master在clk上升沿到来时把valid置高(master是slave的上级,要先决定是不是放水)
读写事务
握手信号的存在使master和slave都可以控制信息传递的速率,只有当valid和ready同时拉高时数据才可以被传输
下图中,信息(地址、数据或info) 在T1到来,valid置高,但ready在T3才被置高。所以source必须保持信息的稳定直到传输完成。
下图中,ready很早就被置高了,这样valid一旦被置高,传输就可以在单周期内完成。
注意,valid的产生与ready无关,且一旦valid置高就必须保持,直到一次握手完成。
但是ready可以在等待valid的过程中被重新置低。
不同通道的握手机制
每一个通道都有valid/ready握手信号
写地址通道
master作为source
写的master只有在信息有效的时候才能断言valid信号,且必须保持到ready到来的下一个posedge。
(不推荐默认的AWREADY状态为LOW,因为它强制传输至少需要两个周期,一个用于断言AWVALID,另一个用于断言AWREADY)
写数据通道
WVALID的默认状态可以是1,但前提是slave可以在单周期内一直接受写数据
WLAST信号要和最后一次写转移同时到来。
写响应通道
接收写数据的slave作为source,可以再写响应有效的时候发出BVALID信号。并一直保持到发送端发出BREADY的下一个时钟上升沿。
BREADY只有在master总是可以在单周期内接受写响应的时候才可以默认为1
读地址通道
读数据通道
通道间的关系
写响应必须跟随它所属的写事务的最后一次传输
读数据必须跟在对应的地址后面
要符合握手关系
传输事务架构
地址架构
master通过驱动传输事务中的第一个byte的控制信息和地址开启每个burst
在burst的过程中,slave需要计算burst传输序列的地址
burst不能超过4KB地址边界
burst length
(AXI4中多出的长度是为了适应INCR burst类型)
AXI对突发的使用有以下规则:
•对于wrapping burst,burst长度必须是2,4,8或16
•burst不能跨越4KB地址边界
•不支持提前终止burst。