AXI学习记录(3)

AXI学习记录(3)------AXI数据传输结构介绍



前言

上一篇博客AXI学习记录(2)------AXI地址传输结构介绍中简单介绍了AXI传输事务中的AXI地址传输结构,接下来将介绍AXI数据传输结构。


1 AXI读写数据结构

下面将分别介绍AXI读写中的窄传输(Narrow Transfers),混合端传输(Mixed-endian)和非对齐传输(Unaligned Transfers)相关内容。
注意:AXI有两个独立的数据总线,且读写数据总线分开;Master产生的传输数据宽度必须大于小于数据总线宽度。

首先介绍一下WSTRB(Write Strobes)信号,该信号的作用是允许在写数据总线上进行稀疏传输(个人理解为类似于Mask这样的操作)。下图中展示了64bits数据总线WSTRB信号与WDATA的对应关系,即WSTRB[n]对应WDATA[(8×n)+7:(8×n)],下图中上面数字为WDATA位宽,下面数字为WSTRB中n的值。
在这里插入图片描述

1.1 窄传输

Master产生一个传输,其数据宽度小于数据总线宽度时,这就称为窄传输。对于INCR和WRAP传输模式来说,每拍(beat)传输可以使用不同的字节通道(byte lanes);对于FIXED传输模式来说,每拍传输只能使用相同的字节通道。

使用下图为例介绍一下窄传输是怎么回事,其中灰色格子表示这些bits数据不传输,这不就是上面介绍的WSTRB吗,如下:

  1. Burst Length是3;
  2. 起始地址为4;
  3. 每拍传输32bits数据;
  4. 数据总线宽度为64bits;
  5. 传输类型为INCR。

在这里插入图片描述
根据上图,也能想象出FIXED传输模式的传输情况,即每次有效的数据都位于[31:0]处,而[63:32]处则都是灰色(不传输)。

1.2 混合端传输

首先介绍一下什么是大小端,有啥区别?
大端:即数据高bits存放在内存低地址,并将数据从高bits->低bits依次存放在内存地址低->高位。如下图所示,数据高8bits为0x0A,存放在内存地址低位。
在这里插入图片描述
小端:即数据低bits存放在内存低地址,并将数据从低bits->高bits依次存放在内存地址低->高位。如下图所示,数据低8bits为0x0D,存放在内存地址低位。
在这里插入图片描述
为了访问位于同一片Memory空间中的混合端数据结构,AXI中使用了一种字节不变(Byte invariance)的方式。下图中举例说明了大小端不损坏共存于一块Memory中情况,这不就是以太网帧结构吗,Header用小端形式传输,Payload使用大端形式传输。Spec中就直接说了AXI使用Byte invariance方式确保小端访问Header信号但是不会损坏大端Payload信息,具体怎么操作呢?没有看到。。。个人感觉是在对帧处理时使用一个Flag表示这里一段是大端还是小端,后续需要看看
在这里插入图片描述

1.3 非对齐传输

什么叫非对齐传输?例如:数据总线为32bits,即4bytes,如果起始地址为0x00(保证地址对齐),就表示对齐传输;如果起始地址为0x01(地址未对齐),那就是非对齐传输了。

下图是Spec中给的例子,对于非对齐传输起始地址,使用WSTRB信号来MASK掉其他低位地址bits即可。例如起始地址是0x07,则使用WSTRB[7]来选中起始地址
在这里插入图片描述


2 读/写回复结构

读写响应信号分别使用RRESP[1:0]和BRESP[1:0]来表示,4种响应类型如下图所示:
在这里插入图片描述
下面分别介绍上述4种响应类型:

  1. OKAY:正常访问Okay表示一个正常访问是否成功,也可以表示一个独占访问失败。
  2. EXOKAY:独占访问Okay表示一个独占访问的读和写部分都成功了。
  3. SLVERR:从机错误,用于当访问成功到达从机,但是从机期望返回一个错误条件给源主机。
  4. DECERR:解码错误,表示没有从机对应事物的地址。

注意

  1. 对于写事务,一次Burst传输中只有一次回复,并不是写一个数据就回复一下。
  2. 对于读事务,一次Burst传输中会有多次回复,这很合理,毕竟每拍读取的数据都要确认是否正确吧。
  3. 请求的数据传输中即使报告了错误也必须执行完。例如:Master向Slave发起一次读Burst操作,这次Burst操作中Burst Length=8,而Slave报告了错误,但是这次Burst中8拍读操作还是得执行完,只不过Slave要向Maste回复8次错误响应。

总结

本文简单介绍了AXI数据传输结构,个人觉得后续需要注意混合端传输AXI协议具体怎么处理,Spec中没看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值