我是靠谱客的博主 碧蓝小松鼠,最近开发中收集的这篇文章主要介绍AXI学习笔记-11.AXI总线结构2.AXI接口时序3.数据结构4.传输特性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文首发于个人博客

1.AXI总线结构

AXI总线由5个通道构成:

通道名称通道功能数据流向
read address读地址通道主机->从机
read data读数据通道(包括数据通道和读响应通道)从机->主机
write address写地址通道主机->从机
write data写数据通道(包括数据通道和每8bit一个byte的写数据有效信号)主机->从机
write response写响应通道从机->主机

1.1.AXI通道

读操作的通道如下图所示

7241055-66d7903c2519b7b8.JPG
axi_read_channel.JPG

写操作的通道如下图所示


7241055-222aeff2548af4bd.JPG
axi_write_channel.JPG

1.2.AXI系统

常见的标准AXI系统如下图所示,通常包括:

  • AXI master:AXI通信主机
  • AXI slave:AXI通信从机
  • AXI interconnect:AXI通信通路
7241055-3b726a5bcd98be9f.JPG
axi_typical_system.JPG

AXI接口协议可用于:

  • AXI master - AXI interconnect的连接
  • AXI slave - AXI interconnect的连接
  • AXI master - AXI slave的连接

1.3.AXI接口

1.3.1.全局信号

信号名来源描述
ACLKsystem clock全局时钟信号
ARESTnsystem reset全局复位信号,低有效

1.3.2.写地址通道

信号名来源描述
AWIDmaster写地址ID(用于区分该地址属于哪个写地址组)
AWADDRmaster写地址
AWLENmaster突发长度
AWSIZEmaster突发尺寸(每次突发传输的最长byte数)
AWBURSTmaster突发方式(FIXED,INCR,WRAP)
AWCACHEmaster存储类型(标记系统需要的传输类型)
AWPROTmaster保护模式
AWQOSmasterQoS标识符
AWREGIONmasterregion标识符(当slave有多种逻辑接口时标识使用的逻辑接口)
AWUSERmaster用户自定义信号
AWVALIDmaster写地址有效信号(有效时表示AWADDR上地址有效)
AWREADYmaster写从机就绪信号(有效时表示从机准备好接收地址)

1.3.3.写数据通道

信号名来源描述
WDATAmaster写数据
WSTRBmaster数据段有效(标记写数据中哪几个8位字段有效)
WLASTmasterlast信号(有效时表示当前为突发传输最后一个数据)
WUSERmaster用户自定义信号
WVALIDmaster写有效信号(有效时表示WDATA上数据有效)
WREADYslave写ready信号(有效时表示从机准备好接收数据)

1.3.4.写响应通道

信号名来源描述
BIDslave响应ID
BRESPslave写响应
BUSERslave用户自定义信号
BVALIDslave写响应信号有效
BREADYmaster写响应ready(主机准备好接受写响应信号)

1.3.5.读地址通道

信号名来源描述
ARIDmaster读地址ID
ARADDRmaster读地址
ARLENmaster突发长度
ARSIZEmaster突发尺寸(每次突发传输的byte数)
ARBURSTmaster突发类型(FIXED,INCR,WRAP)
ARCACHEmaster存储类型
ARPROTmaster保护类型
ARQOSmasterQoS标识符
ARREGIONmaster区域标识符
ARUSERmaster用户自定义
ARVALIDmaster读地址有效(有效时表示ARADDR上地址有效)
ARREADYslave写有效信号(有效时表示从机准备好接收读地址)

1.3.6.读数据通道

信号名来源描述
RIDslave读ID标签
RDATAslave读数据
RRESPslave读响应
RLASTslave有效时表示为突发传输的最后一个
RUSERslave用户自定义
RVALIDslave读数据有效信号
RREADYmaster主机就绪信号(有效时表示)

1.3.7.低功耗接口信号

信号名来源描述
CSYSREQClock controller该信号有效时,系统退出低功耗模式
CSYSACKPeripheral device退出低功耗模式应答信号
CACTIVEPeripheral device外设申请时钟信号

2.AXI接口时序

2.1.复位

复位信号可以异步复位,但必须同步释放,复位时,信号要求如下:

  • 主机驱动的所有VALID信号(ARVALID, AWVALID和WVALID)必须被拉低
  • 从机驱动的所有VALID信号(RVALID和BVALID)必须被拉低
  • 其他信号无要求

2.2.基本传输

2.2.1.握手信号

握手信号包括VALID和READY信号,传输行为仅在VALID和READY同时有效时发生。其中:

  • VALID信号表示地址/数据/应答信号总线上的信号是有效的,由传输发起方控制
  • READY信号表示传输接收方已经准备好接收,由传输接收方控制
7241055-6827f11b9b02c650.png
basic_handshake.png

VALID和READY的先后关系具有三种情况:

  • VALID先有效,等待READY有效后完成传输(VALID一旦有效后在传输完成前不可取消)
  • READY先有效,等待VALID有效后完成传输(READY可以在VALID有效前撤销)
  • VALID和READY同时有效,立刻完成传输

此外,需要注意的是允许READY信号等待VALID信号再有效,即即使从机准备好,也可以不提供READY信号,等到主机发送VALID信号再提供READY信号。对应的VALID信号不允许等待READY信号,即不允许VALID等待READY信号拉高后再拉高,否则容易产生死锁现象。

2.2.1.1.命令通道握手(读地址,写地址,写响应)

  • 仅当地址等信息有效时,才拉高VALID,该VALID必须保持直到传输完成(READY置位)
  • READY默认状态不关心,仅当准备好接收时拉高READY

2.2.1.2数据通道握手(写数据和读地址)

  • 突发读写模式下,仅数据信息有效时才拉高VALID,该VALID必须保持直到传输完成。当突发传输最后一个数据发送时拉高LAST信号
  • READY默认状态不关心,仅当准备好接收时拉高READY

2.2.2.通道顺序

传输中,通道传输的先后有以下规定

  • 写响应通道传输必须在写操作完成以后进行
  • 读数据通道传输必须在读地址通道传输后进行
  • 必须遵循一系列的状态依赖关系

下文中会使用一些图描述依赖关系。图表中,单箭头表示可以等待有效再置位,双重箭头表示必须等待有效再置位

2.2.2.1.读操作顺序

7241055-f9a086c1aeaf85d9.PNG
read_depend.PNG

上图为读操作的依赖关系,ARREADY可以等待ARVALID信号,RVALID必须等待ARVALID和ARREADY同时有效后(一次地址传输发生)才能能有效

2.2.2.2.写操作顺序

7241055-f69a8e5caa0de817.PNG
write_depend.PNG

AXI3中写操作中唯一的强依赖关系是写响应通道BVALID,仅当WVALID和WREADY信号同时有效(数据传输完成)且WLAST信号有效(突发传输的最后一个数据传输完成)后才会被置位。

7241055-95eba49e89a88a9f.PNG
axi4_write_depend.PNG

在AXI4中,定义了额外的依赖关系,即BVALID必须依赖AWVALID、AWREADY、WVALID和WREADY信号。

3.数据结构

3.1.地址通道数据结构

AXI总线是基于突发传输的总线,若主机要开始一次突发传输,需要传输一次地址和相关控制信号,之后从机自动计算地址,但一次突发传输的地址范围不能跨越4KB。

3.1.1.突发传输信息

3.1.1.1.突发长度(AxLEN)

突发长度为每次突发传输的传输次数,范围限制1~16(AXI4增量模式1~256)且不能跨越4kb的地址空间,每次突发传输不允许提前终止(可以通过关闭所有数据字段的方式使一段传输数据无效,但传输行为必须完成)。每次传输的突发长度为AxLEN[3:0] + 1(AXI增量模式AxLEN[7:0] + 1)

  • ARLEN[7:0]:读地址通道的突发长度接口
  • AWLEN[7:0]:写地址通道的突发长度接口

对于回卷模式突发传输,突发长度仅能是2,4,8或16。

3.1.1.2.突发尺寸(AxSIZE)

突发尺寸为每次传输的byte数量,与突发传输的地址预测相关性很强。每次的突发尺寸不能超过数据通道的宽度;若突发尺寸小于数据通道宽度,需要指定哪些位数是有效的。突发尺寸为2AxSIZE[2:0]

  • ARSIZE[2:0]:读地址通道突发尺寸
  • AWSIZE[2:0]:写地址通道突发尺寸

3.1.1.3.突发类型(AxBURST)

AXI支持三种突发类型:

  • FIXED(AxBURST[1:0]=0b00):固定突发模式,每次突发传输的地址相同
  • INCR(AxBURST[1:0]=0b01):增量突发模式,突发传输地址递增,递增量与突发尺寸相关
  • WRAP(AxBURST[1:0]=0b10):回卷突发模式,突发传输地址可溢出性递增,突发长度仅支持2,4,8,16。地址空间被划分为长度【突发尺寸*突发长度】的块,传输地址不会超出起始地址所在的块,一旦递增超出,则回到该块的起始地址。

3.1.2.存储类型(AxCACHE)

AXI4可支持不同的存储类型,AxCACHE[3:0]用于描述不同的存储类型,如下图所示

ARCACHE[3:0]AWCACHE[3:0]Memory type
00000000Device Non-bufferable
00010001Device Bufferable
00100010Normal Non-cacheable Non-bufferable
00110011Normal Non-cacheable Bufferable
10100110Write-through No-allocate
1110 (0110)0110Write-through Read-allocate
10101110 (1010)Write-through Write-allocate
11101110Write-through Read and Write-allocate
10110111Write-back No-allocate
1111(0111) 0111Write-back Read-allocate
10111111 (1011)Write-back Write-allocate
11111111Write-back Read and Write-allocate

3.1.3.Qos标识符(AxQOS)

AXI4总线支持QoS,该标识符AxQOS[3:0]表示服务的优先级

3.1.4.REGION标识符(AxREGION)

region标识符用于指定选用的高级逻辑接口类型,当使用该标识符AxREGION[3:0]时,表示有多个逻辑接口共享该物理接口

3.1.5.权限标识符(AxPROT)

权限标识符AxPROT[2:0]用于防止非法传输

3.1.6.用户自定义(AxUSER)

用户自定义数据

3.2.数据通道数据结构

3.2.1.数据选通(WSTRB)

WSTRB的每一位对应数据中的8位(1字节),用于标志数据中的对应字节是否有效。即当WSTRB[n] = 1时,标志数据中WDATA[(8n)+7: (8n)]部分有效。

3.2.2.数据(xDATA)

3.2.2.1.窄带传输(Narrow transfers)

当传输的数据位宽小于xDATA总线带宽时,为窄带传输,每次使用的数据位数不同:

  • 固定地址的突发下,使用同一段数据信号线
  • 在递增地址和包装地址的突发下,使用不同段信号线
7241055-835c7b4b676037f4.JPG
narrow.JPG

上图为地址递增突发下,在32位数据信号下使用8bit传输的窄带传输使用的位数图。第一次传输使用0~7位,第二次使用8~15位,依次递增;在第五次传输时回到开头使用0~7位

3.2.2.2.不对齐传输(Unaligned transfers)

当传输位宽超过1byte,起始地址不为数据总线硬件带宽(byte单位)整数倍时,为不对齐传输。不对齐传输的时候需要配合数据选通在第一次传输时将某几个byte置为无效,使第二次突发传输的起始地址(从机自动计算)为突发尺寸的整数倍。

7241055-eaa53dc2fb2ad5f6.JPG
Unaligned.JPG

如图,突发尺寸为4byte,若要对齐传输,起始地址要为4的整数倍。图中起始地址为0x07,因此为非对齐传输。第一次传输时,前3个数据为无效字段,可以使用数据选通WSTRB将前3个byte置为无效。

7241055-471c58fc6a0cf673.PNG
unaligned_narrow.PNG

上图是在窄带传输下的非对齐传输启动。传输带宽为32bit,每次传输使用16bit,由于是窄带传输,因此每次交替使用低字节和高字节。现在关注启动状态,由于启动地址为7,而硬件带宽为8bit,则必须由地址0启动,设置前7个字段为无效,那么下次传输从地址8开始,满足不对齐传输。

3.2.3.用户自定义(*USER)

用户自定义数据

3.3.应答通道数据结构

3.3.1.响应信号(*RESP)

针对读和写均有响应的响应信号:

  • BRESP[1:0]写响应信号,每次突发传输完成后
  • RRESP[1:0]读响应信号(位于读数据通道)

响应信号含义如下:

  • OKAY(00):正常访问正确/特权访问失败/不支持特权访问
  • EXOKAY(01):特权访问成功
  • SLVERR(10):从机错误,传输失败
  • DECERR(11):互连解码错误,传输失败

3.3.2.用户自定义

用户自定义数据

4.传输特性

AXI从机分为两种:

  • 存储器从机(Memory Slave):需要支持所有传输特性
  • 外设从机(Peripheral Slave):仅需要支持指定的操作,但是可以保证所有类型的传输完成(不要求非指定的操作响应正确)

AxCACHE用于指定传输特性,传输特性用于标定传输如何在系统中进行和系统级缓存如何处理传输。

4.1.存储器特性

存储器特性包括4个位,如下所示:

  • AxCACHE[0](Bufferable):AxCACHE[0]表示传输过程中是否有缓存,当该位置为1时,表示表示传输路径上具有buffer(可延迟transaction到达最终点的时间)

  • AxCACHE[1](Modifiable):标记传输是否可以被修改/优化,当其置0时,每个传输将不会被更改,具体来说,AxADDR、AxSIZE、AxLEN、AxBURST、AxLOCK和AxPROT信号不会被修改(地址,突发传输信息,传输隐私信息不被修改)。但是AxCACHE[0]、ID和QoS可能被修改,同时,一个突发长度长于16的突发传输可能被切开,但是保证传输效果相同。当该位置1时,除了以上可能发生的改变,另外:

    • 多个传输可能被合并为一个传输,一个传输可能被切分为多个传输
    • 读传输在从机端读出的数据可能多于主机的请求(多的数据被保存在cache中用于优化数据访问)
    • 写传输可能访问到超过主机请求的地址范围,妥善使用WSTRB保证仅有需要的地址被覆盖

    另外,AxLOCK和AxPROT信号仍然不能被改变,同时需要注意的是:AxCACHE[0]=0,具有相同的AXI ID和指向相同的从机的一系列传输的顺序不能改变。

  • AxCACHE[2](Read-allocate)和AxCACHE[3](Write-allocate):读写操作前是否检查缓存以优化传输

4.2.存储器类型

通过ARCACHE和AWCACHE的不同定义不同的存储器类型

7241055-824171e8be727fdf.PNG
mem_type.PNG

最后

以上就是碧蓝小松鼠为你收集整理的AXI学习笔记-11.AXI总线结构2.AXI接口时序3.数据结构4.传输特性的全部内容,希望文章能够帮你解决AXI学习笔记-11.AXI总线结构2.AXI接口时序3.数据结构4.传输特性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部