理解AXI4协议

文章来源:https://zhuanlan.zhihu.com/p/469178057

一、前言
1、实际上AXI最基础的功能有以下3个:
时钟Clock控制以及初始化Reset
数据的写入
数据的读取

2、时钟CLock以及初始化Reset
在这里插入图片描述
AXI的组件都使用相同的时钟信号ACLK。输入信号都在ACLK的上升沿被采样,输出信号的变化都发生在ACLK 上升沿之后

ARESETn采用低电平复位,注意ARVALID,AWVALID,RVALID,WVALID,BVALID在复位时必须是处于低电平的

在这里插入图片描述
二、AXI4 如何完成写的过程

1、AXI4在进行数据读写是主要使用通道(channel)的方式,这种方式保证了读写可以同步进行
Transaction:一个AXI Master 启动一个Transaction来与一个AXI Slave通信,一般情况下Transaction在多个通道上进行Master与Slave之间的信息交换,这一整套的信息交换构成了AXI Transaction

Burst:是一种根据单个地址完成多个数据项传输的过程,每一个传输的数据项都被称为Beat(Transfer) 。由于只有一个地址传输,突发中的每个Beat(Transfer)的地址都是基于传输类型(INCR,FIXED或者WRAP)计算得到的

Beat(Transfer):是AXI突发中的单个数据传输

总结:AXI Transaction 就是传输一段数据(AXI Burst) 所需的一整套操作,而AXI Burst 就是待传数据,AXI Burst 由AXI Beat组成,一个Beat就是一个transfer

2、AXI4 写地址信号

在这里插入图片描述

AWLEN[7:0]:AXI4支持INCR突发类型的突发长度在1~256之间,其余类型的突发长度在1 ~ 16之间。突发长度Burst_Length=AXLEN[7:0]+1,注意的是突发长度不能超过4KB的地址界限,WRAP的突发长度仅能取2,4,8,16

AWSIZE[2:0]:表示一个transfer中的Bytes个数,3’b000=>1 ,3’b001=>2 ,3’b010=>4 ,3’b011=>8 ,3’b100=>16,3’b101=>32 ,3’b110=>64 ,3’b111=>128;即2的n次幂

在这里插入图片描述

在这张图中,Burst_Length = awlen+ 1 = 3 + 1 = 4 ,awsize = 2,因此一个 transfer 中的 Bytes 个数 = 4 也就是说是以32 bit 传输的。 同样可以看到对应一个 awaddr 有 4 个 wdata 与 Burst_Length 对应,awaddr 与 wdata 都是 32 bit 的。

AWBURST[1:0]:定义了突发的类型 2’b00=FIXED, 2’b01=INCR,2’b10=WRAP

FIXED:固定突发模式,burst中的每一个transfer的地址都相同
INCR:递增突发模式,burst中的每一个transfer的地址都是在前一个传输地址的增量上增加一个transfer的大小,例如在一个transfer的Bytes=4的突发中,每个transfer的传输的地址都是在前一个地址上加4
WRAP:环绕突发模式类似于递增突发模式。不同的是,如果达到地址上限,地址会重新回到起始地址

阴影部分表示没有用来传输数据的地址
在这里插入图片描述

在这里插入图片描述

3、AXI4 写数据信号
在这里插入图片描述
WSTRB[n:0]:用来指示总线上哪些字节的数据是有效的,WSTRB的每一个bit位对应WDATA的每一个字节

在这里插入图片描述
比如在上面这张图中只有白色的区域传递的是有效的信号,WSTRB 分别等于 4’b0001 ,4’b0010,4’b0100,4’b1000

4、AXI4写响应信号
在这里插入图片描述
BRESP[1:0]:定义了突发的类型 2’b00=OKAY,2’b01=EXOKAY,2’b10=SLVERR;2’b11=DECERR

OKAY:正常访问成功,还可以指示独占访问失败
EXOKAY:指示独占访问成功
SLVERR:主机正常发送但是从机没有正常接受
DECERR:主机没有找到从机

5、AXI4写过程
AXI4 的写过程分为三个通道

Write address channel :写地址通道,用来写地址以及控制信息
Write data channel:写数据通道
Write response channel:写响应通道

这三个通道相互独立,信息传递之间互不干扰

在这里插入图片描述
首先看下面第一张图,单箭头指向的信号可以在箭头开始的信号之前或之后被确定,双头箭头指向的信号必须在箭头开始的信号被确定之后才能被确定,这里被确定是指有效状态被ACLK的上升沿采样采到。

在这里插入图片描述
举个例子,AWREADY 可以在 AWVALID 前被确定也可以在 AWVALID 之后被确定,具体就看下面这张图中红色点部分就可以了。

在这里插入图片描述

这里需要用上面这张图简单说一下握手过程,所谓握手过程就是 source 知道 destination 准备好了,destination 也知道 source 准备好了,具体来说就是通过 VALID 以及 READY 来互相确定。注意一下这里 source 和 destination 表示数据源以及数据目的,和 Master 以及 Slave 的定义不重合,也就是说 Master 可以做 source 也可以做 destination,比如在 write address 过程中 source 是 Master,destination 是 Slave。source 产生 VALID 信号来指示地址、数据或控制信息何时可用,destination 生成 READY 信号,表示它可以接受该信息。只有当VALID信号和READY信号都高时才能完成传输。

在这里插入图片描述
使用这张图将整个过程梳理一下。在位置 1 的时候主机发送了地址 AWADDR,并且 AWVALID 以及 AWREADY 为高,此时就完成了地址的传送。在位置 2、3、4 的时候主机发送了数据 WDATA,并且 WVALID 以及 WREADY 为高,此时就完成了数据的传送。在位置 5 的时候主机发送了数据 WDATA 并且由于是最后一个数据因此还发送了 WLAST, WVALID 以及 WREADY 为高,此时就完成了最后一个数据的传送。在位置 6 的时候从机发送了反馈 OKAY,并且 BVALID 以及 BREADY 为高,此时就完成了全部的数据写过程。

6、AXI如何完成读过程
由于读和写的过程非常相似,相关的信号仅前缀不同,因此下面仅将相关的图给出,具体的过程可以结合写过程理解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后使用这张图将整个过程梳理一下。在位置 1 、2 的时候主机发送了地址 ARADDR,并且 ARVALID 以及 ARREADY 为高,此时就完成了地址的传送。在位置 2、3、4 、5、6的时候从机发送了数据 RDATA,并且RVALID 以及 RREADY 为高,此时就完成了数据的读取。在位置 4、6 的时候由于是最后一个数据因此还发送了 RLAST,此时就完成了全部的数据读过程。上面的波形示意图中实际上省略了RRESP这个信号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值