AMBA学习(2) AXI

AXI协议基于VALID/READY握手,源端发送VALID后等待目的地READY响应才开始传输。在写操作中,包括write_addr、write_data、write_response的握手过程。Burst_length定义了突发传输的字节数,而burst_type包括固定、递增和循环三种模式。读操作与写操作类似,通过RVALID和RREADY进行数据接收的确认。
摘要由CSDN通过智能技术生成

长期使用AHB总线,AXI甚至有些遗忘,最近复习下。

1. handshake process

AXI是一种基于握手VAILD/READY的总线传输协议,在source端的写过程中,会先发送VALID信号,等到destination回应READY,transfer 才会开始:

Image
但是需要注意的是VAILD是不可以等到READY响应后再去拉高设计的,但是READY可以提前拉高以等待VAILD的到来:
Image
在带宽比较紧凑的传输中,也会出现VAILD和READY完全一致的情况:
Image

  • write_addr: master在写地址有效期间需要拉高AWVAILD信号,并且一直保持到slaver响应AWREADY。协议推荐的AWREADY默认为拉高的,表示slaver一直可以响应master的写请求。
  • write_data: 和write_addr相同,这里WLAST和WSTRB[3:0]分别表示最后一次写入的数据和写数据选通信号。
  • write_response:在master完成对slaver的写操作后,slaver需要给出response,BRESP[1:0],其值分别有OKAY, EXOKAY, SLVERR, and DECERR.随后需要在给出response后在给出一个response_valid信号:BVALID,同样的master也会回应一个BREADY。
  • read_addr:handshake过程类似,master-ARVALID/slaver-ARREADY。
  • read_data:slaver向master传输数据时,给出RVALID,在master收到RVALID后会拉高RREADY来表示其收到数据,slaver必须给出RLAST信号指示最后一位。

2. Burst length

  • Burst_length: burst的单位为byte,ARSIZE[2:0]和AWSIZE[2:0]分别定义的burst_len如下:
    Image
  • Burst type: AXI支持以下三种burst_type:
    Image
  1. Fixed burst表示固定地址burst传输,每次从固定的地址上传输数据。
  2. Incrementing burst 表示地址递增burst ,每次累加的数值取决于burst的长度,如果每次burst传输4byte,则累加的数值也为4。
  3. Wrapping burst顾名思义,会在地址递增到边界的时候进行回环。

理解了AXI这个addr/data/response的信号都需要进行handshake的过程后,我们在来看一次完整的AXI传输,写操作如下:

Image
可以看出slaver针对master的valid信号,都会给出ready作为回应。而slaver对应write的整体回应BRESP,同样会给出valid信号,然后master进行回应。 而读操作也是类似:
Image

本文使用 Zhihu On VSCode 创作并发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值