赞
踩
AXI4总线协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。
而所谓的总线、接口和协议,三个词常常被联系在一起,分别理解三个词的含义:
常用的AXI总线有:AXI4.0、 AXI4.0_Lite、AXI4.0_Stream。
AXI4总线分为主、从两端,两者间可以连续的进行通信。
AMBA AXI协议支持支持高性能、高频率系统设计。
关键特点:
AXI协议是基于突发的,定义了以下5个独立的通道:
其中,地址通道携带控制消息,用于描述被传输的数据属性;数据传输使用写通道来实现master到slave的传输,slave使用写响应通道来完成一次写传输;读通道用来实现数据从slave到master的传输。
图1-1 读传输
图1-2 写传输
AXI使用基于VALID/READY的握手机制数据传输协议,传输源端使用VALID 表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。
AXI协议提供单一的接口定义,能用在下述三种接口之一:
可以使用以下几种典型的系统拓扑架构:
在大多数系统中,地址通道的带宽要求没有数据通道高,因此可以使用共享地址总线,多数据总线结构来对系统性能和互联复杂度进行平衡。
寄存器片(Register Slices):
每个AXI通道使用单一方向传输信息,并且各个通道直接没有任何固定关系。因此可以可以在任何通道任何点插入寄存器片,当然这会导致额外的周期延迟。
使用寄存器片可以实现周期延迟(cycles of latency)和最大操作频率的折中;使用寄存器片可以分割低速外设的长路径。
表2-1 为全局信号,用在AXI-3 和AXI-4两种协议接口。所有的信号都是用全局时钟的上升沿进行采样。
信号 | 源 | 描述 |
---|---|---|
ACLK | 时钟源 | 全局时钟信号 |
ARESETn | 复位源 | 全局复位信号,低有效 |
表2-2 为AXI写地址通道信号
信号 | 源 | 描述 |
---|---|---|
AWID | Master | 写地址ID, 用来标志一组写信号 |
AWADDR | Master | 写地址,一次突发写的首地址 |
AWLEN | Master | 突发长度,一次突发写传输数据的个数 |
AWSIZE | Master | 突发大小,每一次突发传输的字节数 |
AWBURST | Master | 突发类型,FIXED,INCR,WRAP,决定每一次突发以哪种法师计算 |
AWLOCK | Master | 总线锁信号,normal, exclusive, locked |
AWCACHE | Master | Cache类型,表明一次事务是怎样通过系统的bufferable, cacheable, read-allocate, write-allocate |
AWPORT | Master | 保护类型,,传输的特权级及安全等级 |
AWQOS | Master | 质量服务QoS,可作为安全级标志 |
AWREGION | Master | 域标记,可以实现一个物理地址与多个逻辑地址的映射,也可以对某些地址进行保护 |
AWUSER | Master | 用户自定义信号 |
AWVALID | Master | 有效信号,表明此通道的地址控制信号有效 |
AWREADY | Slave | 从设备已经准备好接受地址和控制信息 |
信号名 | 源 | 描述 |
---|---|---|
WID | Master | 一次写传输的ID |
WDATA | Master | 写数据 |
WSTRB | Master | 写数据有效的字节线,用来表明哪8bits数据是有效的 |
WLAST | Master | 突发写传输的最后一个数据 |
WUSER | Master | 用户自定义信号 |
WVALID | Master | 写有效 |
WREADY | Slave | 表明从机可以接收写数据 |
信号名 | 源 | 描述 |
---|---|---|
BID | Slave | 写响应ID |
BRESP | Slave | 写响应,表明写事务的状态OKAY,EXOKAY,SLVERR,DECERR |
BUSER | Slave | 用户自定义信号 |
BVALID | Slave | 写响应有效 |
BREADY | Master | 表明主机能够接收写响应 |
信号名 | 源 | 描述 |
---|---|---|
ARID | Master | 读地址ID,用来标志一组写信号 |
ARADDR | Master | 读地址,一次突发读的首地址 |
ARLEN | Master | 突发长度,突发读传输数据个数 |
ARSIZE | Master | 突发大小,每次突发传输的字节数 |
ARBURST | Master | 突发类型,FIXED,INCR,WRAP |
ARLOCK | Master | Master |
ARCACHE | Master | Cache类型,表明一次事务是怎样通过系统的bufferable,cacheable,read-allocate,write-allocate |
ARPORT | Master | 保护类型,传输的特权级及安全等级 |
ARQOS | Master | 质量服务Qos,可作为安全级标志 |
ARREGION | Master | 域标记,可以实现一个物理地址和多个逻辑地址映射,也可以对某些地址进行保护 |
ARUSER | Master | 用户自定义信号 |
ARVALID | Master | 有效信号,表明此通道地址控制信号有效 |
ARREADY | Slave | 从设备已经准备好接受地址和控制信息 |
信号名 | 源 | 描述 |
---|---|---|
RID | Master | 一次读传输ID |
RDATA | Master | 读数据 |
RRESP | Master | 读响应,表明读传输状态 |
RLAST | Master | 突发读传输的最后一个数据 |
RUSER | Master | 用户自定义信号 |
RVALID | Master | 读有效 |
RREADY | Slave | 表明从机可以接收读数据 |
信号名 | 源 | 描述 |
---|---|---|
CSYSREQ | 时钟控制器 | 系统退出低功耗请求,此信号从时钟控制器到外设 |
CSYSACK | 外设 | 退出低功耗状态确认 |
CACTIVE | 外设 | 外设请求时钟有效 |
Clock
每个AXI interface都有一个时钟信号ACLK,所有的输入信号在ACLK的上升沿采样,所有的输出信号在ACLK的上升沿之后发生变化。
在master和slave interface上,输入与输出信号之间必须没有组合逻辑路径。
Reset
AXI协议使用低电平有效的复位信号ARESETn。复位信号可以被异步置位,但是复位的释放必须与ACLK的上升沿是同步的。复位时,接口要求如下:
在复位之后,master被允许驱动ARVALID, AWVALID, or WVALID 为高电平的最早的时刻是ARESETn为高电平之后的一个ACLK的上升沿,如下图所示。
握手机制
5个传输通道均使用VALID/READY信号对传输过程的地址、数据、控制信号进行握手。使用双向握手机制,传输仅仅发生在VALID、READY同时有效的时候。VALID和READY的先后关系具有三种情况:
此外,需要注意的是允许READY信号等待VALID信号再有效,即即使从机准备好,也可以不提供READY信号,等到主机发送VALID信号再提供READY信号。对应的VALID信号不允许等待READY信号,即不允许VALID等待READY信号拉高后再拉高,否则容易产生死锁现象。
下图是几种握手机制:
图2-1 VALID 先有效握手机制
图2-2 READY 先有效握手机制
图2-3 VALID和READY 同时有效握手机制
通道握手信号:每个通道有自己的xVALID/xREADY握手信号对。
AXI协议要求通道间满足如下关系:
为了防止死锁,必须遵守握手信号之间的依赖规则。
下面有几个图表明依赖关系,单箭头指向的信号能在箭头起点信号之前或之后变成有效;双箭头指向的信号必须在箭头起点信号有效之后变成有效。
读传输握手信号依赖关系如图3-1所示,从图中可以看出,在一个读传输中:
上面的图表示ARVALID与ARREADY并无指定的有效顺序,但RVALID需要等待ARVALID与AREADY均有效后才能变为有效,RVALID与RREADY之间也并无指定的有效顺序。也可以理解为读数据操作需要在给出读地址操作之后才能执行,但读数据通道与读地址通道中的握手信号无规定的先后顺序。
写传输握手信号依赖关系如图3-2所示,涉及到的信号有AWVALID, WVALID, BVALID, AWREADY, WREADY, BREADY。
图3-2,写传输握手示意图
图3-3, 写响应传输示意图
写传输过程也可以大致分为两个部分,一是写信息过程,一是写回应部分。在写回应BVALID有效前,必须要使得写地址通道与写数据通道的握手信号均有效,且写数据通道的WVALID信号必须为最后一个写入数据的有效信号。BREADY信号可在BVALID信号前后有效。而写地址通道与写数据通道的四个握手信号之间无必须要求的时间前后关系。
从上面这些可以看出,AXI4协议的信号驱动模式是有一定自由空间的,因此可以在协议给出的约束之下,结合自身系统进行一定程度的改动,达到更好的效果。
AXI协议是基于突发的。主机通过驱动控制信息和地址来开始每一次突发从第一个字节到从机。随着突发的进行,从机slave必须计算burst中传输的地址序列。
突发不能跨越4KB的地址边界。
Burst Length:
突发长度指定为:
下文中的AxLEN表示ARLEN或AWLEN。AXI4对INCR突发类型的突发长度支持扩展到1 ~ 256。支持所有其他突发类型。AXI4仍然是1到16次传输。
AXI4的突发长度定义为:
Burst_Length = AxLEN[7:0] + 1,以适应axi4中INCR突发类型的扩展突发长度。AXI有以下规则来管理突发的使用:
没有事务可以提前终止突发。然而,为了减少写突发中的数据传输数量
Master可以通过取消所有写strobe来禁用进一步写操作。在这种情况下,master必须完成burst中剩余的传输。在一个读突发中,主机可以丢弃读数据,但它必须完成突发中所有的传输。
注意:在访问对读敏感的设备(如FIFO)时,如果丢弃不需要的读数据,可能会导致数据丢失。当访问这样的设备时,主机必须使用与所需大小完全匹配的突发长度数据传输。
Burst Size:
每个数据传输的最大字节数(即脉冲)由以下参数指定:
在这个规范中,AxSIZE表示ARSIZE或AWSIZE。图3-4表示AxSIZE编码格式。
图3-4, AxSIZE编码格式
如果AXI总线比突发大小宽,AXI接口必须从传输地址确定哪个字节数据总线用于每次传输的通道。任何传输的大小都不能超过事务中任何一个代理的数据总线宽度。
Burst Type:
Burst 类型信号:
AxBURST 表示 ARBURST or AWBURST. 如图3-5 突发类型:
Burst Address:
本节提供了在突发中确定传输地址和字节通道的方法。涉及变量如表3-6如下:
write strobe:
当WSTRB[n:0]信号为HIGH时,指定数据总线中包含有效信息的字节通道。写数据总线每8位有一个写strobe,因此WSTRB[n]对应于WDATA[(8n)+7: (8n)]。
主机必须确保写strobe只有在包含有效数据的字节通道时才为HIGH。当WVALID为LOW时,写strobe可以取任何值,尽管协议这样说,但是要么被压低,要么被保持在先前的价值。
Narrow transfers:
当主机产生一个比它的数据总线窄的传输时,地址和控制信息就确定了
传输使用哪个字节通道:
下面给出两个字节通道使用的例子。灰色的单元格表示字节不传输。
图A3-7:
图3-8:
AXI协议为读和写事务提供响应信号:
响应信号:
响应:
对于写事务,对于整个突发而不是突发中的每个数据传输,都有一个响应信号。
在读事务中,从机可以对不同的传输发出不同的响应信号。例如,在一次16次读传输中,slave可能会对其中15次传输返回一个OKAY响应,对其中一次传输返回一个SLVERR响应。
该协议规定,即使报告了错误,也必须执行所需的数据传输数量。例如,如果从一个slave请求读8次数据传输,但该slave有一个错误条件,该slave必须执行8次数据传输,每一次都有一个错误响应。如果从站给出一个单次脉冲,剩余的脉冲不会被取消错误的回应。
OKAY, 正常访问成功
OKAY响应代表下面任意一种:
OKAY是大多数事务的响应。
EXOKAY, 独占访问成功
SLVERR,从机错误
SLVERR响应表示一次不成功的传输。
为了简化系统监控和调试,建议错误响应仅用于错误条件,而不是用于正常的、预期的事件。从错误条件的例子如下:
DECERR解码错误
DECERR响应表示互连不能成功解码从机访问。
如果互连不能成功解码从机访问,它必须返回DECERR响应。建议互连将访问路由到一个默认从站,并且默认从站返回DECERR响应。
AXI协议要求事务的所有数据传输都已完成,即使出现了错误条件。任何给出DECERR响应的组件都必须满足这个要求。
AXI从机分为两种:
AxCACHE用于指定传输特性,传输特性用于标定传输如何在系统中进行和系统级缓存如何处理传输。
存储器特性包括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):读写操作前是否检查缓存以优化传输
通过ARCACHE和AWCACHE的不同定义不同的存储器类型
内存类型的从机:
支持AXI4总线的从机大致可以分为两种类型,一种是内存类型的从机(memory slave),一种是外设类型的从机(peripheral slave)。但是说到底,这两种类型的从机就是一个地址空间下的寄存器阵列,本质上没有区别。区别只在于内存类型的从机工作的内容就是将写入的数据存储,再按照地址索引读出,而外设类型的从机寄存器与外设本身的动作有关。
仿真波形:
写地址通道:
写数据和写响应通道:
读地址和读数据通道:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。