新浪博客

AXIprotocol学习记录(4)——AXI传输数据结构

2018-09-22 09:11阅读:
AXI 协议是基于burst 传输,master 每次向slave发送burst的第一个byte位传输控制信息和地址信息,slave 必须按照burst的传输规则计算出地址。
burst 传输必须不能越过4KB 地址接界线,这样是为了防止一个burst越过两个slave边界,这样也限制了一个slave必须支持的地址增量。
4.1.1 burst 长度:
ARLEN[7:0]:读传输的burst 长度;
AWLEN[7:0]:写传输的burst 长度;
AxLEN代表ARLEN[7:0]AWLEN[7:0]
AXI3 burst 长度为:AxLEN[3:0]+1
AXI4
burst 长度为:AxLEN[7:0]+1;提供了INCR burst类型额外的burst 长度。
AXI burst 使用规则限制:
  • l wrapping burst 中,burst 长度必须是2,4,8,16
  • l 一个burst 长度不能越过4KB 地址边界;
  • l burst 传输不可以提前终止;
没有component 可以提前终止burst。然而,为了减少写burst传输数据个数,master 可以通过关闭所有写strobe的方式关闭更多的写操作,在这种情况下,master 必须计算出burst传输需要保持传输的个数。在读burst中,master可以丢弃读数据,但是master也必须计算出burst传输中所有传输的个数。
丢弃读数据在读敏感设备中可能导致数据丢失,比如FIFOmaster必须用一个burst长度来匹配传输数据所需长度。
4.1.2 burst 传输的size
每一个burst传输中数据按照byte一拍一拍传输:
ARSIZE [2:0]:读传输;
AWSIZE[2:0]:写传输;
AxSIZE代表ARSIZEAWSIZE
burst size编码:
AXIprotocol学习记录(4)——AXI传输数据结构
传输的大小必须不能超过每次传输相关器件的数据宽度。
4.1.3 burst 类型
AXI 协议定义三种burst 类型:
FIXED
  • l burst 传输中每次传输的地址相同;
  • l burst 中所有拍的有效byte line是固定的,然而这些byte line中,真正有WSTRBbyteburst中每一拍都不同。
INCR
增量burstburst中每次传输的地址比前一个变大,增量跟传输的大小相关。例如,一个4byte大小的burst传输,地址比前一个地址加四。
WRAP
循环 burst 和增量burst相类似,除非高位地址被限制,会循环到低位地址。
循环burst的限制:
  • l 起始地址必须包含每次传输的大小;
  • l burst 长度必须是2,4,8,16
循环burst的特性:
  • l burst传输中的最低位地址用于计算所有数据传输的地址,burst每次传输的大小*burst传输的个数,这个地址也就是循环边界;
  • l 增量burst中每次传输的地址增量相同,然而地址增量是循环边界+所有传输数据大小,地址循环在循环边界之内;
  • l burst中,第一个传输地址可能大于循环边界,这样导致所有循环burst 的第一个地址大于循环边界;
burst类型主要用于cache line通道。
burst类型定义信号:
ARBURST [1:0]:读传输;
AWBURST[1:0]:写传输;
AxBURST代表ARBURSTAWBURST
AxBURST编码规则:
AXIprotocol学习记录(4)——AXI传输数据结构
4.1.4 burst地址
AXIprotocol学习记录(4)——AXI传输数据结构
AXIprotocol学习记录(4)——AXI传输数据结构
burst通用等式定义:
AXIprotocol学习记录(4)——AXI传输数据结构
burst 第一个传输的地址:
AXIprotocol学习记录(4)——AXI传输数据结构
增量burst和循环burst每次传输地址计算:
AXIprotocol学习记录(4)——AXI传输数据结构
循环burst中循环地址边界计算:
AXIprotocol学习记录(4)——AXI传输数据结构
循环burst中地址达到最大时候的转换:
AXIprotocol学习记录(4)——AXI传输数据结构
burst第一次传输byte line的计算方法:
AXIprotocol学习记录(4)——AXI传输数据结构
burst传输其他byte line计算方法:
AXIprotocol学习记录(4)——AXI传输数据结构
传输数据:
AXIprotocol学习记录(4)——AXI传输数据结构
4.2 读写数据结构
4.2.1 write strobes ——写跳变
WSTRB[n:0]信号为高代表对应数据线包含有效信息,每次写8bit数据对应一个strobe,因此WSTRB[n]对应WDATA[(8n)+7:(8n)]
master 必须确保strobe 为高的时候,对应byte line 只含有效数据。
WVALID为低时,write strobe 可以为任何值,尽管协议要求为低或者保持前一个数值。

我的更多文章

下载客户端阅读体验更佳

APP专享