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通道

读操作的通道如下图所示

axi_read_channel.JPG

写操作的通道如下图所示

axi_write_channel.JPG

1.2.AXI系统

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

  • AXI master:AXI通信主机
  • AXI slave:AXI通信从机
  • AXI interconnect:AXI通信通路

axi_typical_system.JPG

AXI接口协议可用于:

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

1.3.AXI接口

1.3.1.全局信号

信号名

来源

描述

ACLK

system clock

全局时钟信号

ARESTn

system reset

全局复位信号,低有效

1.3.2.写地址通道

信号名

来源

描述

AWID

master

写地址ID(用于区分该地址属于哪个写地址组)

AWADDR

master

写地址

AWLEN

master

突发长度

AWSIZE

master

突发尺寸(每次突发传输的最长byte数)

AWBURST

master

突发方式(FIXED,INCR,WRAP)

AWCACHE

master

存储类型(标记系统需要的传输类型)

AWPROT

master

保护模式

AWQOS

master

QoS标识符

AWREGION

master

region标识符(当slave有多种逻辑接口时标识使用的逻辑接口)

AWUSER

master

用户自定义信号

AWVALID

master

写地址有效信号(有效时表示AWADDR上地址有效)

AWREADY

master

写从机就绪信号(有效时表示从机准备好接收地址)

1.3.3.写数据通道

信号名

来源

描述

WDATA

master

写数据

WSTRB

master

数据段有效(标记写数据中哪几个8位字段有效)

WLAST

master

last信号(有效时表示当前为突发传输最后一个数据)

WUSER

master

用户自定义信号

WVALID

master

写有效信号(有效时表示WDATA上数据有效)

WREADY

slave

写ready信号(有效时表示从机准备好接收数据)

1.3.4.写响应通道

信号名

来源

描述

BID

slave

响应ID

BRESP

slave

写响应

BUSER

slave

用户自定义信号

BVALID

slave

写响应信号有效

BREADY

master

写响应ready(主机准备好接受写响应信号)

1.3.5.读地址通道

信号名

来源

描述

ARID

master

读地址ID

ARADDR

master

读地址

ARLEN

master

突发长度

ARSIZE

master

突发尺寸(每次突发传输的byte数)

ARBURST

master

突发类型(FIXED,INCR,WRAP)

ARCACHE

master

存储类型

ARPROT

master

保护类型

ARQOS

master

QoS标识符

ARREGION

master

区域标识符

ARUSER

master

用户自定义

ARVALID

master

读地址有效(有效时表示ARADDR上地址有效)

ARREADY

slave

写有效信号(有效时表示从机准备好接收读地址)

1.3.6.读数据通道

信号名

来源

描述

RID

slave

读ID标签

RDATA

slave

读数据

RRESP

slave

读响应

RLAST

slave

有效时表示为突发传输的最后一个

RUSER

slave

用户自定义

RVALID

slave

读数据有效信号

RREADY

master

主机就绪信号(有效时表示)

1.3.7.低功耗接口信号

信号名

来源

描述

CSYSREQ

Clock controller

该信号有效时,系统退出低功耗模式

CSYSACK

Peripheral device

退出低功耗模式应答信号

CACTIVE

Peripheral device

外设申请时钟信号

2.AXI接口时序

2.1.复位

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

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

2.2.基本传输

2.2.1.握手信号

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

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

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.读操作顺序

read_depend.PNG

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

2.2.2.2.写操作顺序

write_depend.PNG

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

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

0000

0000

Device Non-bufferable

0001

0001

Device Bufferable

0010

0010

Normal Non-cacheable Non-bufferable

0011

0011

Normal Non-cacheable Bufferable

1010

0110

Write-through No-allocate

1110 (0110)

0110

Write-through Read-allocate

1010

1110 (1010)

Write-through Write-allocate

1110

1110

Write-through Read and Write-allocate

1011

0111

Write-back No-allocate

1111

(0111) 0111

Write-back Read-allocate

1011

1111 (1011)

Write-back Write-allocate

1111

1111

Write-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总线带宽时,为窄带传输,每次使用的数据位数不同:

  • 固定地址的突发下,使用同一段数据信号线
  • 在递增地址和包装地址的突发下,使用不同段信号线

narrow.JPG

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

3.2.2.2.不对齐传输(Unaligned transfers)

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

Unaligned.JPG

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

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的不同定义不同的存储器类型

mem_type.PNG

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JackieZheng

AngularJS in Action读书笔记4(实战篇)——创建Statistic模块

  个人感觉《Angularjs in action》这本书写的很好,很流畅,循序渐进,深入浅出,关键是结合了一个托管于Github上的实例讲解的,有代码可查,...

20570
来自专栏微信终端开发团队的专栏

Hello Bonjour!

Hello Bonjour! 一开始用Bonjour,我是拒绝的。 让我们以一个问题开头:如何能在本地网络找到自己想要的硬件设备及相应服务,并连接? 在这个以I...

276100
来自专栏互联网开发者交流社区

SEO-搜索引擎高级搜索指令

18050
来自专栏逸鹏说道

Web前端性能优化教程01:减少Http请求和使用内容分发网络

性能黄金法则 只有10%-20%的最终用户响应时间花在接收请求的HTML文档上,剩下的80%-90%时间花在HTML文档所引用的所有组件(图片,script,c...

44170
来自专栏逸鹏说道

大公司都有哪些开源项目之腾讯

1.WeUI 为微信Web服务量身设计 WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知...

51860
来自专栏TSW

5201314对程序员意味着什么?

作为年轻人的潮流聚集地,Qzone在每个特殊的日子总会迎来一波猛烈的流量冲击。比如刚过去的520,下图是今年5月20号的流量情况:

24570
来自专栏安恒网络空间安全讲武堂

​writeup | 强网杯—Share your mind

0x01 分析题目 拿到题目后,首先先分析一下题目,发现有注册和登录,尝试登录成功后,发现如下几个页面 Overview // 显示当前自己所有发帖 Write...

36560
来自专栏腾讯移动品质中心TMQ的专栏

【浅谈Chromium中的设计模式(一)】——Chromium中模块分层和进程模型

“EP”(中文:工程生产力)是目前项目中提升研发能力的一个很重要的衡量指标。笔者重点学习了Chromium产品是如何从代码和设计层面来保证快速高效的工程生产力。...

53080
来自专栏CDN及云技术分享

原来你是这样的http2

目前HTTP/2.0(简称h2)已经在广泛使用(截止2018年8月根据Alexa流行度排名的头部1千万网站中,h2占比约29%,https://w3techs....

745130
来自专栏zhisheng

Python爬虫入门二之爬虫基础了解

1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓...

35160

扫码关注云+社区

领取腾讯云代金券