AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed


💡 Note:

本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。

主要是分享AXI3.0和4.0部分。

如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习 🙌


Burst 传输

跟burst相关的信号有AxSIZE, AxLEN, AxBURST,编码如下:

AXI对burst传输方式的要求:
  1. AXI3.0中incr burst的burst length最大为8,AxLEN为4bit信号;在AXI4.0中,incr burst的burst length为256,AxLEN为8bit信号。

  1. 对于其他类型的burst传输(fixed,wrap),burst length最大16.

  1. AXI4.0(H suite)中说,对于非INCR burst,支持1-16 burst length,但后面又说wrap传输只支持2、4、8、16 burst length。

  1. Burst length不能超过4KB边界。

  1. Burst 传输不能被提前终止,即使发生了传输错误。在写中,发生错误,也还要将写传输周期完成,master可以将wtrb拉低。在读的时候,传输周期也要完成,但是master可以discard data。

对于device设备,读操作发生错误,会怎么样呢?Device memory一般是read-sensitive的,读了之后,device中的设备就被移除了,如果我们把数据discard,这些数据就丢失了。所以spec中建议:a Manager must use a burst length that exactly matches the size of the required data transfer.

  1. 在AXI4.0中,对于一个non-modifible的INCR burst,并且她的长度大于16,也可以把它转换成多个小的burst。虽然是non-modifiable,也可以改变,但只能改变Axlen和响应的地址,其他的控制信号不能改变。

  1. 要注意,AxBURST, AxLEN, AxSIZE这些信号,在Axvalid, Axready同时为高的那一个周期内被采样一次,而不是每次transfer都采样。RDATA/RRESP是每个transfer都会返回,而BRESP是一个burst只返回一次。

  1. 对于exclusive access ,还有一些特殊的要求,见exclusive 部分。

Wrap 操作
  1. wrap的burst length为2、4、8、16,没有1.(如果是1的话,那么就是fixed address了)

  1. Wrap的地址要跟transfer size对齐,比如地址位宽是64bit,transfer size是32bit,那么地址要跟0x4对齐,不能是0x1,0x2,0x3这种。

  1. 要知道Wrap boundary address是什么?Wrap boundary是小于等于传输的起始地址,它跟burst的byte size(burst length*transfer size)对齐。比如AxSIZE为2,也就是4个byte的transfer size,burst length为4,所以这个burst的transfer size 为0x10,如果传输是从0x14开始的,那么每次transfer的起始地址是0x14->0x18->0x1c->0x10,会返回到0x10,这个0x10就是wrap boundary address。(始终要记住,地址是跟transfer size对齐,也就是跟0x4对齐)

  1. Wrap传输一般用在cache access中。

  1. AxBURST[1:0]==0b10表示wrap传输

  1. 在非对齐写访问中,比如transfer szie是4byte,数据位宽是8byte,那么地址也要跟transfer size对齐。

INCR读写example

上图是读操作,ARVALID和ARREADY同时有效的时候,采样相关的控制信号,下一个周期ARVALID和ARREAD拉低,在一次burst传输中,控制信号只采样一次。

上图读操作的burst length是4,4次transfer,从图中可以看出,每次transfer 都要回一个rresp,这跟写不同,写只回一次bresp;最后一次transfer的时候,RLAST拉高一个cycle。

写跟读的不同是写的bresp只回一次。在所有数据都传输结束之后会resp。

问题:如果slave那边在burst传输过程中,buffer满了,发生slave error,slave会提前发送resp告诉master吗?

猜测:应该不会,因为即使发生错误,也要把burst传输完成。但也有可能会提前返回resp,这样可以告诉master,后面的数据可以只发0就行了,把wstrb都拉低。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AMBA协议是指Advanced Microcontroller Bus Architecture(高级微控制器总线结构)协议,其中包括多个不同的总线协议,用于在现代SoC(系统级芯片)设计中实现高效的内部通信。其中,AMBA的第四代是AXI(Advanced eXtensible Interface)协议。 AXI协议是AMBA协议中的一种,被广泛应用于现代SoC设计中。它提供了一种高性能,灵活且可扩展的总线接口,用于在处理器、外设设备和内存之间进行高效的数据传输AXI协议具有多个特性,包括支持高带宽、流水线设计、分层模型和端到端数据保护等。 AXI协议的主要特点包括: 1. 高带宽:AXI协议支持高频率的数据传输,能够满足现代SoC设计对于大量数据的处理需求。 2. 流水线设计:AXI协议使用流水线技术,可以同时进行多个传输操作,提高了总线的效率和吞吐量。 3. 分层模型:AXI协议采用分层的结构,可以灵活地连接多个从属设备,并支持多个处理器之间的共享内存访问。 4. 端到端数据保护:AXI协议引入了一些机制,如校验和和错误检测,以确保数据在传输过程中的完整性和可靠性。 总的来说,AMBA协议中的AXI协议是一种用于现代SoC设计的高性能、灵活和可扩展的总线接口协议,通过提供高带宽、流水线设计和端到端数据保护等特性,满足了现代SoC设计对于高效数据传输的需求。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [AMBA协议- AXI协议指南(1)](https://blog.csdn.net/ygyglg/article/details/129937804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值