AXI4读操作

图 4‑15 读通道架构

如上图所示,主设备向从设备通过读地址通道指定读数据地址及控制信号,从设备通过读数据通道将指定地址上的数据传输给主设备。

图4‑16 Read Burst 流程

1、当状态机的当前状态为WAIT_START时,master将ARVALID拉高。

2、slave收到ARVALID信号后,将ARREADY拉高,持续到一次burst_len传完为止。master收到ARREADY拉高的信号后,将ARVALID拉低。

3、ARADDR在ARVALID为高时给定对应地址。

4、RREADY信号在收到RVALID信号为高时拉高,保持一个周期,读取出数据。

5、RVALID信号由slave控制,具体控制模式参考slave模块的设计。

6、当一次读取的最后一个数据包读取时将RLAST拉高,表示一次Burst读取完毕。

图4‑17 读操作信号依赖

如图可知,读操作的两个channel之间存在如下的依赖关系:必须等到ARVALID和ARREADY同时为High后,RVALID才能拉高。

AXI4写操作:

图4‑18 写通道架构

如上图所示,主设备向从设备通过写地址通道指定写数据地址及控制信号,从设备通过写数据通道将指定数据写到从设备的指定地址上。待数据写入完成后,从设备通过写响应通道向主设备传递写响应信号,表明写入完成。

图4‑19 Write Burst 流程

1、当状态机的当前状态为WAIT_START时,master将AWVALID拉高。

2、slave收到AWVALID信号后,将AWREADY拉高,持续到一次burst_len写完为止.master收到AWREADY拉高的信号后,将AWVALID拉低。

3、AWADDR在AWVALID为高时给定对应地址。

4、WREADY信号在收到WVALID信号为高时拉高,保持一个周期,写入数据。

5、WVALID信号由slave控制,具体控制模式参考slave模块说明。

6、当一次写入的最后一个数据包读取时将WLAST拉高,表示一次写入完毕。

7、BRESP和BVALID都由slave控制,当收到WLAST信号时,BVALID拉高。

8、BREADY可以一直拉高,也可以在AWREADY信号拉高后保持拉高。直到BVALID信号拉高时将其拉低即可。

其中写操作的信号依赖关系如下:

图4‑20 写操作依赖

如图可知,ADDR和DATA两个channel之间不存在依赖关系,需要满足的是必须等到WVALID和WREADY同时为High,且最后一次传输完成后,BVALID才能拉高,表明写操作结束。

通道握手信号之间的依赖关系

为了对VALID和READY之间的关系有更深刻理解,下面在展开说明一下。

为了防止发生死锁,必须重视握手信号之间的依赖关系。

任何交易中:

l一个 AXI 模块的VALID 信号不能依赖于另一个模块的READY 信号

lREADY 信号可以等待VALID 信号使能

-------------------注意---------------------------------------------

可以在使能 VALID 信号之后使能READY,也可以在使能VALID 信号之前将

READY 信号使能为默认值,这样设计更高效。.

--------------------------------------------------------------------

图4‑21和图4‑22为各握手信号之间的依赖关系图。单箭头指向的信号可以在指向它的信号未使能或使能后,它再使能;双箭头向的信号,必须在指向它的信号全都使能后,它再使能。

图4‑21中所示,在一次读交易中:

l从设备使能ARREADY 信号之前,可以在等待 ARVALID 信号被使能。

l从设备必须等待ARVALID 和ARREADY信号都有效后,再去使能RVALID 信号以返回读数据

图4‑21 读交易中握手信号的依赖关系

图4‑22中所示,在一次写交易中:

l主设备必须等待从设备使能AWVALID 、WVALID信号之后,主设备再去使能AWREADY 、WREADY信号。

l从设备可以等待使能AWREADY、WVALID信号或者同时使能俩个信号后,再去使能AWREADY。

l从设备可以等待使能AWREADY、WVALID信号或者同时使能俩个信号后,再去使能AWREADY。

l从设备可以等待使能AWREADY、WVALID信号或者同时使能俩个信号后,再去使能AWREADY。

图4‑22 写交易握手信号依赖关系

注意:

在一次写交易中,主设备不必等AWREADY 有效之后去发送WVALID ,这一点是很重要的。如果主设备在发送WVALID 信号之前,必定不会等待使能AWREADY 信号,反过来如果从设备在等待使能WVALID 信号,再去使能AWREADY则这样就会造成死锁状况。

AXI协议中的基本交易

本部分给出基于 AXI协议的基本交易的示例。每个示例都使用了VALID 和READY握手机制。地址信息及数据的传输都是在VALID 和READY 信号同时为高的时候传输。示例下面几部分介绍:

Ø读猝发示例

Ø连续的读猝发示例

Ø写猝发示例

本部分也介绍了交易顺序。

读猝发示例

图4‑23为一个4 拍的读猝发 交易的时序图。在这个例子中,主设备发送地址,一个周期后从设备接收。

主设备在发送地址的同时也发送了一些控制信息,用于记录猝发的类型和长度,为了保持图的清晰性,在此省略这些信号。

地址总线上出现地址之后,在读数据通道上发生数据的传输。从设备一直保持

VALID 信号为低,直到读数据准备好。从设备发送RLAST 信号标志着此次猝发交易中这是最后一个数据的传输。

图4‑23 读猝发交易

交叠读猝发示例

图4‑24为主设备在从设备接收第一个猝发交易的地址后发送另一个猝发交易的地址的时序图。这样可以保证一个从设备在完成第一个猝发交易的同时可以开始处理第二个猝发 交易的数据。

图4‑24 交叠读猝发交易

写猝发示例

图4‑25为一次写交易的时序图。当主设备发送地址和控制信息到写地址通道之后,交易过程开始。然后主设备通过写数据通道发送每一个写数据,当为最后一个需要发送的数据时,主设备将WLAST 信号置高。当从设备接收完所有的数据时,从设备返回给主设备一个写响应信号标志本次写交易的结束。

图4‑25 写猝发交易

信号描述

定义了AXI协议中使用的信号。虽然总线宽度和交易ID的宽度都是需要具体说明的,但在本章的表中先显示32位的数据总线,一个4位的写入数据选通,和4位的ID域。本章包含以下几个部分:

l全局信号

l写地址通道信号

l写数据通道信号

l写响应通道信号

l读地址通道信号

l读数据通道信号

l低功耗接口信号

全局信号

表4‑12 AXI全局信号

信号名

AXI4

AXI4-Lit

ACLK

全局时钟。所有的信号在全局时钟的上升沿采样

ARESETN

全局复位,低有效。

写地址通道信号

表4‑13 写地址通道信号

信号名

AXI4

AXI4-Lit

AWID

写地址ID。这个信号用于写地址信号组的标记。

不支持

AWADDR

写地址。写地址给出突发数据传输的第一个传输地址。

AWLEN

突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。

不支持

AWSIZE

突发大小。这个信号用于确定突发传输中每个传输的大小。

不支持

AWBURST

突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。

不支持

AWLOCK

锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。

不支持

AWCACHE

缓存类型,建议值为0011。

AWPROT

保护类型,建议值为000。

AWQOS

QoS标识符,xilinx AXI4不支持。

不支持

AWREGION

用于每个写操作的地址通道上的域标识符。

不支持

AWUSER

xilinx AXI4不支持。

不支持

AWVALID

写地址有效信号。为高指示地址有效。

AWREADY

写地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。

写数据通道信号

表4‑14 写数据通道信号

信号名

AXI4

AXI-Lite

WDATA

写数据,32位到1024位宽

只支持32位宽

WSTRB

写字节选通,用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位写选通信号。

从设备端可选择忽略。

WLAST

写最后一个数据指示信号。表示突发传输中的最后一个数据。

不支持

WUSER

xilinx AXI4不支持。

不支持

WVALID

写有效。为高指示数据有效。

WREADY

写准备。为高表示从设备空闲,准备接收数据;为低表示从设备忙。

写响应通道信号

表4‑15 写响应通道信号

信号名

AXI4

AXI-Lite

BID

响应ID。写响应识别标记,BID值必须匹配AWID值。

不支持

BRESP

写响应。该信号表示写状态,可允许相应的表示为OKAYEXOKAYSLVERRDECERR。

EXOKAY状态不支持

BUSER

xilinx AXI4不支持。

不支持

BVALID

写响应有效。为高指示响应数据有效。

BREADY

写响应准备。为高表示主设备空闲,准备接收写响应;为低表示主设备忙。

读地址通道信号

表4‑16 读地址通道信号

信号名

AXI4

AXI-Lite

ARID

读地址ID。这个信号用于读地址信号组的标记。

不支持

ARADDR

读地址。读地址给出突发数据传输的第一个传输地址。

ARLEN

突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。

不支持

ARSIZE

突发大小。这个信号用于确定突发传输中每个传输的大小。

不支持

ARBURST

突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。

不支持

ARLOCK

锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。

不支持

ARCACHE

缓存类型,建议值为0011。

ARPROT

保护类型,建议值为000。

ARQOS

QoS标识符,xilinx AXI4不支持。

不支持

ARREGION

用于每个读操作的地址通道上的域标识符。

不支持

ARUSER

xilinx AXI4不支持。

不支持

ARVALID

读地址有效信号。为高指示地址有效。

ARREADY

读地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。

读数据通道信号

表4‑17 读数据通道信号

信号名

AXI4

AXI-Lite

RID

读ID标记,该信号是读数据信号组标记,由从设备产生RID,RID必须和读交易中的ARID匹配。

不支持

RDATA

读数据。32位到1024位宽

只支持32位宽

RRESP

读响应。该信号表示读状态,可允许相应的表示为OKAYEXOKAYSLVERRDECERR。

EXOKAY状态不支持

RLAST

读最后一个数据指示信号。表示突发传输中的最后一个数据。

不支持

RUSER

xilinx AXI4不支持。

不支持

RVALID

读有效。为高指示数据有效。

RREADY

读准备。为高表示主设备空闲,准备接收数据;为低表示主设备忙。

AXI4-Stream信号

信号名

默认值

功能

TVALID

No

N/A

Stream读写数据有效。为高指示数据有效。

TREADY

Yes

1

Stream读写读准备。为高表示对端设备空闲,准备接收数据;为低表示对端设备忙。

TDATA

Yes

0

Stream读写数据,8到4096位宽。

TSTRB

Yes

同TKEEP,否则为1

字节选通信号。用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位选通信号。

TKEEP

Yes

1

字节选通信号。TKEEP未被确认的那些相关的字节是空字节,可以从数据流中去除。

TLAST

Yes

0

表明包的边界。

Yes

0

数据流标识符。

TDEST

Yes

0

数据流路由信息。

TUSER

Yes

0

用户定义的边带信息,这些信息能伴随数据流进行发送。

低功耗接口信号

表4‑18 低功耗接口信号

AXI4猝发地址及选择

地址选择

主要描述AXI猝发类型、在一次猝发过程中如何计算地址以及字节传输的通道。包含章节如下:

●关于地址选择

●猝发长度

●猝发大小

●猝发类型

●猝发地址

关于地址选择

AXI协议是基于猝发方式,主设备开始每次的猝发,是通过发送传输所需的控制信息和传输过程中所需的首字节地址的方式,随着猝发交易进行,从设备负责计算接下来的传输所需要的地址。

猝发数不能超过4KB临界值,这是为了防止猝发长度在从设备之间出现交叉现象,同时也限制了从设备需要地址增量的大小。

猝发长度

AWLEN 或ARLEN信号说明每次猝发传输开始时,数据传输的个数,如下图所示,每猝发可以传输长1-16个数据。

图4‑26 每猝发可以传输长1-16个数据

对于循回猝发方式来讲,猝发的长度必须是2,4,8,或16。

每次交易进行时,必须通过设置AWLEN 或ARLEN信号来确定传输长度,任何器件都不能通过尽早地终止猝发的方式去减少数据传输个数。在一次写猝发的过程中,主设备通过禁止写选通信号的方式终止进一步的写操作,但是它必须完成本次猝发中剩下数据传输。在一次读猝发过程中,主设备能丢弃进一步的读到数据,但是它必须完成在本次猝发中剩下的数据传输。

-------------------注意---------------------------------------------

当访问一个读敏感设备例如FIFO时,抛弃不需要的读数据会导致丢失数据。主设备不会来访问这样一种设备,它使用的猝发长度比自身需要的还长。--------------------------------------------------------------------

猝发大小

下图中显示, 通过ARSIZE 或AWSIZE信号设定了,在一次猝发中,每一时钟节拍内传输数据字节的最大字节数,或数据传输的最大字节数。

图4‑27 burst大小译码表

AXI协议通过传输地址来决定使用哪一个数据总线上的字节通道进行传输。

对于地址递增或地址循回的猝发,并且要求传输数据的宽度比数据总线上的要窄,这中猝发过程中,每次数据传输,使用不同的字节通道,这些通道对应于猝发中每一个时钟节拍。一个固定格式的猝发,其地址保持不变,每拍数据传输都使用相同的字节通道。

任何数据传输的宽度都不能超过交易中期间的数据总线宽度。

猝发类型

AXI 协议定义了三种猝发类型:

●地址固定的猝发

●地址递增的猝发

●地址循回的猝发

下图显示了如何通过ARBURST 或 AWBURST信号选择猝发类型。

图4‑28 burst类型译码表

地址固定的猝发

在固定猝发类型中,猝发过程中,每次传输地址保持一样。如当加载或者清空一个FIFO外设时,使用这种类型可以重复访问同一个位置。

地址递增的猝发

在地址递增的猝发类型中,猝发中每次传输所需的地址是通过增加前一个传输地址来得到。增加的值取决于传输量的大小。例如:一次猝发中,每次传输所需的地址为四个字节,那么这个地址就是有前一个地址值加四得到的。

地址循回的猝发

地址循回的猝发类型类似于地址递增猝发类型,在地址递增猝发类型中,每次传输所需的地址值是前一次传输地址的递增,而在地址循回猝发类型中,当到达循回的边界时,地址再次回到低地址。循回的边界是指,每次猝发的大小乘以该猝发过程的传输总量。

对于地址循回的猝发有两个限制:

●起始地址必须与数据的大小对齐

●猝发的长度必须为 2,4,8 或16

猝发地址

这一节提供一些简单的公式,在猝发过程中,用于确定地址和传输字节通道。公式中使用到的变量如下:

Start_Address  主设备发起的起始地址

Number_Bytes 每次数据传输中允许的最大的字节数

Data_Bus_Bytes 数据总线上的字节通道数

Aligned_Address  与起始地址对齐的类型

Burst_Length   一次猝发中数据传输的总量

Address_N     猝发中传输N的地址,N是2-16之间的一个整数。

Wrap_Boundary  一次循回猝发中的最低地址

Lower_Byte_Lane 一次传输中最低地址对应的字节通道

Upper_Byte_Lane  一次传输中最高地址对应的字节通道

INT(x)        x四舍五入后的值

使用如下公式确定猝发过程中的传输地址 :

●  Start_Address = ADDR

●   Number_Bytes=2SIZE

●   Burst_Length= LEN+1

●Aligned_Address=(INT(Start_Address / Number_Bytes))x Number_Bytes

使用如下公式确定猝发中首次传输所需的地址

●Address_1 = Start_Address .

使用如下公式确定猝发中首次传输后任何传输所需的地址

●Address_N = Aligned_Address+(N–1) x Number_Bytes.

对于循回猝发方式,Wrap_Boundary这个变量用于记录循回的边界:

●Wrap_Boundary =(INT (Start_Address /( Number_Bytesx Burst_Length)))

x(Number_Bytesx Burst_Length).

如果Address_N = Wrap_Boundary +(Number_Bytesx Burst_Length),使用以下公式:

●Address_N = Wrap_Boundary .

计算完循回边界后使用如下公式:

●Address_N = Start_Address +((N–1)x Number_Bytes) - ( Number_Bytesx Burst_Length).

通过使用以下方程可以确定一次猝发中,哪个字节通道用于首次传输

●Lower_Byte_Lane=Start_Address-(INT(Start_Address/ Data_Bus_Bytes))

x Data_Bus_Bytes

●Upper_Byte_Lane=Aligned_Address+(Number_Bytes-1)-(INT ( Start_Address / Data_Bus_Bytes)) x Data_Bus_Bytes.

使用如下公式可以确定一次猝发中,首次传输之后,所有传输都使用了哪些字节通道

●Lower_Byte_Lane= Address_N –(INT ( Address_N / Data_Bus_Bytes)) x Data_Bus_Bytes

●Upper_Byte_Lane= Lower_Byte_Lane+ Number_Bytes–1.

传输的数据公式如下:

●DATA[(8xUpper_Byte_Lane)+7:(8xLower_Byte_Lane)].

axi时序图_AXI4读写操作时序及AXI4猝发地址及选择相关推荐

  1. AXI总线详解-AXI4读写操作时序及AXI4猝发地址及选择

    AXI4读操作           图 4‑15 读通道架构   如上图所示,主设备向从设备通过读地址通道指定读数据地址及控制信号,从设备通过读数据通道将指定地址上的数据传输给主设备.         ...

  2. axi时序图_深入 AXI4总线(E3)实战:制作一个 AXI 接口 IP

    本系列我想深入探寻 AXI4 总线.不过事情总是这样,不能我说想深入就深入.当前我对 AXI总线的理解尚谈不上深入.但我希望通过一系列文章,让读者能和我一起深入探寻 AXI4. 在本系列先前的文章中, ...

  3. java进阶之UML类图和时序图

    目录 UML概述 UML图分类 类图和时序图 类图 类图概述 类图的结构 类图中的关系 时序图 时序图概述 组成元素 示例图 UML概述 统一建模语言(英语:Unified Modeling Lang ...

  4. Android毕业设计必备工具(时序图,类图一键生成)

    系列文章目录 Android毕业设计必备工具(时序图,类图一键生成) ` 文章目录 系列文章目录 前言 一.插件名称 二.下载步骤 详细步骤 三.使用步骤 时序图: 类图: 总结 前言 好久不见,最近 ...

  5. FIFO的读写操作时序图

    FIFO的读写操作时序图(自己的笔记) 1.write operation 2.read operation 1)standard read mode 2)FWFT read mode 补充:xili ...

  6. 示波器观察IIC通讯协议-STM32F4读写24C08EEPROM时序图-新人首更

    示波器观察时序不是因为好奇,是因为遇到了问题 STM32F4探索者开发板板载24C02EEPROM,自制了一块开发板,需要存储容量更大的24C08A芯片,焊接后发现开发板上能成功运行的程序,在自己的板 ...

  7. lj245a引脚功能图_如何快速读懂时序图?

    我们都知道在学校是通过铃声来控制所有班级的上下课时间,那个单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念. 一.时钟电路 单片机时钟电路有三种方式:① 单片机内 ...

  8. sip 时序图_时序图怎么看_教你如何看懂时序图 - 什么是时序图_时序图怎么看_教你如何看懂时序图...

    时序图怎么看_教你如何看懂时序图 操作时序永远使用是任何一片IC芯片的最主要的内容.一个芯片的所有使用细节都会在它的官方器件手册上包含.所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上 ...

  9. lj245a引脚功能图_技术文章—教你快速读懂单片机时序图

    我们都知道在学校是通过铃声来控制所有班级的上下课时间,那个单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念: 一.时钟电路 单片机时钟电路有三种方式: 1.单片机 ...

最新文章

  1. SQL 数据完整性 基础知识
  2. 使用SHA1、SHA2双证书进行微软数字签名
  3. 私聊模式的设计与实现
  4. python学习之老男孩python全栈第九期_day004知识点总结
  5. element ui登录界面_Vue和Element-UI做一个简单的登录页面
  6. 计算机网络——HTTP协议和Web
  7. python编写脚本方法_python 定时器,实现每天凌晨3点执行的方法
  8. (43)VHDL实现译码器与解码器
  9. 白中英 计算机组成原理_白中英《计算机组成原理》(第5版)笔记和课后习题答案详解...
  10. Python二:【ImageEnhance】+【PIL模块】如何利用python实现图像增强
  11. jpython 传入参数_C++嵌入Python程序(二):参数传入及返回
  12. 增选54位院士,京东副总裁梅涛等18位华人入选!
  13. 骑士CMS文件包含+getshell漏洞复现(python自动化验证扫描漏洞)
  14. html5 获取本机号码,如何获取本机手机号码
  15. 基于JAVA的GUI编程的的迷宫游戏 2020-12-15
  16. usb无线网卡android,台式机轻松上网:教你制作USB无线网卡
  17. 定制小狼豪(五笔+拼音)输入法
  18. 绝妙一招 教你如何拍出烟雾缥缈的作品
  19. 婚姻家庭法简答题及答案
  20. 浏览器刷新+缓存原理

热门文章

  1. Java实现在线考试系统(系统介绍)
  2. UML类图中类与类之间的关系
  3. 理解梅尔频谱(mel spectrogram)
  4. ipad手写笔哪款好?ipad手写笔推荐
  5. 怎样通过任务管理器优化电脑速度
  6. 《保健养生》---保健专家齐国力[2]
  7. Java集合:ConcurrentHashMap详解
  8. 下一代5G网络:比4G快1000倍 普及至少需8年
  9. nasm 用xmm寄存器做矩阵相加溢出了如何处理?
  10. 那些年我做家教学过的东西_决策与风险decision and risk_1_贝叶斯推断Bayes Inference