资源描述
AXI 总线协议资料整理
第一局部:
1、AXI 简介:AXI〔Advanced eXtensible Interface〕是一种总线协议,该协议是ARM 公司提出的 AMBA〔Advanced Microcontroller Bus Architecture〕3.0 协议中最重要的局部,是一种面对高性能、高带宽、低延迟的片内总线。它的地址/把握和数据相位是分别的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分别的读写数据通道、并支持显著传输访问和乱序访问,并更加简洁就行时序收敛。AXI 是 AMBA 中一个的高性能协议。AXI 技术丰富了现有的 AMBA 标准内容,满足超高性能和简洁的片上系统〔SoC〕设计的需求。
2、 AXI 特点: 单向通道体系构造。信息流只以单方向传输,简化时钟域间的桥接,削减门数量。当信号经过简洁的片上系统时,削减延时。
支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐力气, 可在更短的时间内完成任务,在满足高性能要求的同时,又削减了功耗。
独立的地址和数据通道。地址和数据通道分开,能对每一个通道进展单独优化,可以依据需要把握时序通道,将时钟频率提到最高,并将延时降到最低。其次局部:
本局部对 AXI1.0 协议的各章进展整理。
第一章
本章主要介绍 AXI 协议和 AXI 协议定义的根底事务。1、 AXI 总线共有 5 个通道分别是 read address channel
、write address channel 、read data channel 、write data channel、write response channel。每一个 AXI 传输通道都是单方向的。
2、 每一个事务都有地址和把握信息在地址通道〔address channel〕中,用来描述被传输数据的性质。
3、 读事务的构造图如下:
4、 写事务的构造图如下:
5、 这 5 条独立的通道都包含一个信息信号和一个双路的 VALD、READY 握手机制。
6、 信息源通过 VALID 信号来指示通道中的数据和把握信息什么时候有效。目地源用 READY 信号来表示何时能够接收数据。读数据和写数据通道都包括一个LAST 信号,用来指明一个事物传输的最终一个数据。
7、 读和写事务都有他们自己的地址通道,这地址通道携带着传输事务所必需的地址和信息。
8、 读数据通道传送着从设备到主机的读数据和读响应信息。读响应信息指明读事务的完成状态。
9、 写数据通路传送着主机向设备的写数据。每八个数据都会有一个byte lane , 用来指明数据总线上面的哪些 byte 有效。写响应通道供给了设备响应写事务的一种方式。这完成信号每一次突发式读写会产生一个。
10、 主机和设备的接口和互联图如下:
11、 传输地址信息和数据都是在 VALID 和 READY 同时为高时有效。
12、 突发式读的时序图如下:
当地址消灭在地址总线后,传输的数据将消灭在读数据通道上。设备保持 VALID 为低直到读数据有效。为了说明一次突发式读写的完成,设备用RLAST 信号来表示最终一个被传输的数据。
13、 重叠突发式读时序图如下:
设备会在第一次突发式读完成后处理其次次突发式读数据。也就意味着,主机一开头传送了两个地址给设备。设备在完全处理完第一个地址的数据之后才开头处理其次个地址的数据。
14、 突发式写时序图如下:
这一过程的开头时,主机发送地址和把握信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最终一个数据时,WLAST 信号就变为高。当设备接收完全部数据之后他将一个写响应发送回主机来说明写事务完成。15、 AXI 协议支持乱序传输。他给每一个通过接口的事务一个IDtag。协议要求一样 ID tag 的事务必需有序完成,而不同 ID tag 可以乱序完成。
其次章
本章主要介绍一些信号描述,其中包括全局信号、写地址通道信号、写数据通道信号、写响应通道信号、读地址通道信号、读数据通道信号、低功耗接口信号。本章的全部表都是以 32 位的数据总线、4 位的写数据闸门、4 位的 ID 段。1、全局信号
信号ACLK ARESETn
源
Clock source Reset source
描述
全局时钟信号
全局复位信号,低电平有效
2、写地址通道信号
信号 源
AWID[3:0] 主机AWADDR[31:0] 主机AWLEN[3:0] 主机
描述
写地址 ID,这个信号是写地址信号组的 ID tag。写地址。
突发式写的长度。此长度打算突发式写所传输的数据的个数。
AWSIZE[2:0] 主机 突发式写的大小。
AWBURST[1:0] 主机AWLOCK[1:0] 主机AWCACHE[3:0] 主机
突发式写的类型。锁类型。
Cache 类型。这信号指明事务的 bufferable、cacheable、write-through、write-back、allocate attributes 信息。
AWPROT[2:0] AWVALID
主机 保护类型。 主机 写地址有效。
1 = 地址和把握信息有效
0 = 地址和把握信息无效
这个信号会始终保持,直到 AWREADY 变为高。
AWREADY 设备 写地址预备好。这个信号用来指明设备已经预备好承受
地址和把握信息了。
1 = 设备预备好
0 = 设备没预备好
3、写数据通道信号
信号
源
描述
WID[3:0]
主机
写 ID tag,WID 的值必需与 AWID 的值匹配
WDATA[31:0]
主机
写的数据。
WSTRB[3:0]
主机
写阀门。WSTRB[n]标示的区间为 WDATA[(8*n)+7:(8*n)]
WLAST WVALID
主机 写的最终一个数据。主机 写有效
1 = 写数据和阀门有效
0 = 写数据和阀门无效
WREADY 设备 写就绪。指明设备已经预备好承受数据了
1 = 设备就绪
0 = 设备未就绪
4、写响应通道信号
信号BID[3:0] BRESP[1:0]
源 描述
设备 响应 ID , 这个数值必需与 AWID 的数值匹配。
设备 写响应。这个信号指明写事务的状态。可能有的响应:
OKAY、EXOKAY、SLVERR、DECERR。
BVALID 设备 写响应有效。
1 = 写响应有效
0 = 写响应无效
BREADY 主机 承受响应就绪。该信号表示主机已经能够承受响应信息。
1 = 主机就绪
0 = 主机未就绪
5、读地址通道信号
信号
源
描述
ARID[3:0]
ARADDR[31:0] ARLEN[3:0] ARSIZE[2:0] ARBURST[1:0] ARLOCK[1:0] ARCACHE[3:0] ARPROT[2:0]
ARVALID
主机
主机
读地址 ID。
读地址。
主机
突发式读长度。
主机
突发式读大小。
主机
突发式读类型。
主机
锁类型。
主机
主机
Cache 类型。
保护类型。
主机
ARREADY
设备
读地址有效。信号始终保持,直到 ARREADY 为高。
1 = 地址和把握信息有效
0 = 地址和把握信息无效
读地址就绪。指明设备已经预备好承受数据了。
1 = 设备就绪
0 = 设备未就绪
信号
源
描述
RID[3:0]
RDATA[31:0] RRESP[1:0]
设备
设备
读 ID tag。RID 的数值必需与 ARID 的数值匹配。
读数据。
设备
RLAST
设备
读响应。这个信号指明读传输的状态:OKAY、
EXOKAY、SLVERR、DECERR。
读事务传送的最终一个数据。
RVALID
设备
读数据有效。
1 = 读数据有效。
0 = 读数据无效。
6、读数据通道信号
RREADY
主机
读数据就绪。
1 = 主机就绪
0 = 主机未就绪
7、低功耗接口信号
信号 源 描述
CSYSREQ CLOCK controller
CSYSACK 外围设备
CACTIVE 外围设备
系统低功耗恳求。此信号来自系统时钟把握器,使外围设备进入低功耗状态。
低功耗恳求应答。
Clock active
1 = 外围设备时钟恳求
0 = 外围设备时钟无恳求
第三章
本章介绍主机/设备之间的握手过程以及 READY 和 VALD 握手信号的关系以及默认值。
1、全部 5 个通道使用一样的 VALID/READY 握手机制传输数据及把握信息。传输源产生 VLAID 信号来指明何时数据或把握信息有效。而目地源产生 READY 信号来指明已经预备好承受数据或把握信息。传输发生在 VALID 和 READY 信号同时为高的时候。VALID 和 READY 信号的消灭有三种关系。
(1) VALID 先变高 READY 后变高。时序图如下:
在箭头处信息传输发生。
(2) READY 先变高 VALID 后变高。时序图如下:
同样在箭头处信息传输发生。
(3) VALID 和 READY 信号同时变高。时序图如下:
在这种状况下,信息传输立马发生,如图箭头处指明信息传输发生。
2、通道之间的关系
地址、读、写和写响应通道之间的关系是灵敏的。
例如,写数据可以消灭在接口上早于与其相关联的写地址。也有可能写数据与写地址在一个周期中消灭。
两种关系必需被保持:
(1) 读数据必需总是跟在与其数据相关联的地址之后。
(2) 写响应必需总是跟在与其相关联的写事务的最终消灭。
3、通道握手信号之间的依靠性读事务握手依靠关系如图:
(1) 设备可以在 ARVALID 消灭的时候在给出 ARREADY 信号,也可以先给出ARREADY 信号,再等待 ARVALID 信号。
(2) 但是设备必需等待 ARVALID 和 ARREADY 信号都有效才能给出 RVALID
信号,开头数据传输。
写事务握手依靠关系如图:
(1) 主机必需不能够等待设备先给出AWREADY或WREADY 信号信号后再给出信号 AWVALID 或 WVLAID。
(2) 设备可以等待信号AWVALID 或WVALID 信号有效或者两个都有效之后再给出 AWREADY 信号。
(3) 设备可以等待AWVALID 或WVALID 信号有效或者两个信号都有效之后再给出 WREADY 信号。
第四章
本章主要介绍 AXI 突发式读写的类型和在一次突发式读写事务内如何计算地址和 byte lanes。
1、 突发式读写的地址必需以 4KB 对齐。
2、 信号 AWLEN 或信号 ARLEN 指定每一次突发式读写所传输的数据的个数。具体信息如以以下图:
3、 ARSIZE 信号或 AWSIZE 信号指定每一个时钟节拍所传输的数据的最大位数。
具体信息如以以下图:
需要留意的是任何传输的 SIZE 都不能超过数据总线的宽度。
4、 AXI 协议定义了三种突发式读写的类型:固定式的突发读写、增值式突发读写、包装式突发读写。用信号 ARBURST 或 AWBURST 来选择突发式读写的类型。具体信息如以以下图:
(1) 固定式突发读写是指地址是固定的,每一次传输的地址都不变。这样的突发式读写是重复的对一个一样的位置进展存取。例如 FIFO。
(2) 增值式突发读写是指每一次读写的地址都比上一次的地址增加一个固定的值。
(3) 包装式突发读写跟增值式突发读写类似。包装式突发读写的地址是包数据
的低地址当到达一个包边界。包装式突发读写有两个限制:
◇1 起始地址必需以传输的 size 对齐。
◇2 突发式读写的长度必需是 2、4、8 或者 16。 5、关于一些地址的计算公式。
Start_Address 主机发送的起始地址
Number_Bytes 每一次数据传输所能传输的数据 byte 的最大数量Data_Bus_Bytes 数据总线上面 byte lanes 的数量
Aligned_Address 对齐版本的起始地址
Burst_Length 一次突发式读写所传输的数据的个数
Address_N 每一次突发式读写所传输的地址数量,范围是 2-16 Wrap_Boundary 包装式突发读写的最低地址
Lower_Byte_Lane 传输的最低地址的 byte lane Upper_Byte_Lane 传输的最高地址的 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 = (INT(Start_Address / (Number_Bytes x Burst_Length))) x (Number_Bytes x Burst_Length)
假设有 Address_N = Wrap_Boundary + (Number_Bytes x Burst_Length),则后面的
公式成立 Address_N = Wrap_Boundary。第一次突发式读写:
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[(8 x Upper_Byte_Lane) + 7 : (8 x Lower_Byte_Lane)]。
第五章
本章描述了 AXI 协议支持的系统级的 Cache 和保护单元。
1、ARCACHE[3:0]和 AWCACHE[3:0]的编码如以以下图:
在一些状况下,信号 AWACAHE可以用来确定哪个部件来供给写响应。假设写事务被指定为 bufferable ,那么他承受来自桥或者系统级的 cache 供给的写响
应。假设事务被指定为 non-bufferable,那么写响应必需有最终目的源供给。2、AWPROT 或者 ARPROT 信号供给三种级别的存取保护:
(1) 正常存取或者特权存取, ARPROT[0] 和 AWPROT[0]
(2) 安全性存取或者没有安全性存取, ARPROT[1] 和 AWPROT[1]
(3) 指令存取或者数据存取 ARPROT[2] 和 AWPROT[2]
信号 ARPROT[2:0] 和 信号 AWPROT[2:0]的编码如以以下图:
第六章
本章描述了 AXI 协议工具的独占式存取和锁存取机制。
1、当对自动存取时能之后,可以通过信号 ARLOCK[1:0]或信号 AWLOCK[1:0]
来配置独占式存取和锁存取。编码如以以下图:
我们通过信号 ARLOCK[1:0]或 AWLOCK[1:0]来选择独占式存取,用信号RRESP[1:0]或 BRESP[1:0]来指明独占式存取的成功与否。
2、主机在恳求独占式存取时,设备会返回两个响应分别是EXOKAY 和 OKAY。EXOKAY 是指设备支持独占式存取,而 OKAY 是指设备不支持独占式存取。、3、假设一个设备不支持独占式存取,可以无视信号 ARLOCK[1:0]和AWLOCK[1:0]。他必需供给 OKAY 响应对正常式存取和独占式存取。假设一个设备要支持独占式存取则必需有硬件监视器。
4、通过信号 ARLOCK[1:0]或信号 AWLOCK[1:0]对事务加锁,需要确定只允许主机存取设备区域直到一个未加锁的事务从同一个主机完成。此处推举锁存取只用来支持 legacy devices。
5、推举遵循下面两天建议,但是不强制:
(1) 保持全部锁事务序列都在一样的 4KB 地址区域内。
(2) 限制用琐事务序列对两个事务加锁。
第七章
本章描述了 AXI 读写事务的四个设备响应。
1、AXI 协议对读事务和写事务都有响应。对于读事务,读响应与读数据一起发送给主机,而写事务将写响应通过写响应通道传送。AXI 协议的响应类型有OKAY、EXOKAY、SLVERR、DECERR。
2、通过信号 RRESP[1:0]和 BRESP[1:0]来编码响应信号,具体如以以下图:
协议规定恳求的需要传输的数据数量必需被执行,即使有错误报告。在一次突发式读写的剩余数据不会被取消传输,即使有单个错误报告。
3、AXI 协议的四种响应类型:正常存取成功、独占式存取、设备错误、译码错误。AXI 协议要求,在一个传输事务中的全部数据必需传输完成,即使有错误状态发生。
第八章
本章描述 AXI 协议用事务 ID tags 来处理多地址和乱序传输。1、下面介绍 5 中事务 IDs:
(1) AWID 这个 ID tag 是写地址群组信号。
(2) WID 这个是写 ID tag 在写事务中,与写数据在一起,主机传送一个WID 去匹配与地址相全都的 AWID。
(3) BID 这个 ID tag 是写响应事务中。设备会传送 BID 去匹配与 AWID
和 WID 相全都的事务。
(4) ARID 这个 ID tag 是读地址群组信号。
(5) RID 这个 ID tag 是在读事务中。设备传送 RID 去匹配与 ARID 相全都的事务。
2、主机可以使用一个事务的 ARID 或者 AWID 段供给的附加信息排序主机的需要。事务序列规章如下:
(1) 从不同主机传输的事务没有先后挨次限制。他们可以以任意挨次完成。
(2) 从同一个主机传输的不同 ID 事务,也没有先后挨次限制。他们可以以任
意挨次完成。
(3) 一样数值的 AWID 写事务数据序列必需依据挨次依次写入主机发送的地址内。
(4) 一样数值的 ARID 读事务数据序列必需遵循下面的挨次:
◇1 当从一样设备读一样的 ARID 时,设备必需确保读数据依据一样的地址挨次承受。
◇2 当从不同的设备读一样的 ARID 时,接口处必需确保读数据依据主机发送的一样的地址挨次。
(5) 在一样的 AWID 和 ARID 的读事务和写事务之间没有先后挨次限制。假设主机要求有挨次限制,那么必需确保第一次事务完全完成后才开头执行其次个事务。
3、当一个主机接口与interconnect 相连时,interconnect 会在信号 ARID、AWID、WID 段添加一位,每一个主机端口都是独一无二的。
这样做有两个影响:
(1) 主机不需要去知道其他主机的ID 数值,由于 interconnect 是ID 值是唯一的, 当将主机 number 添加到段中。
(2) 在设备接口处的 ID 段的宽度要比主机接口处的 ID 段宽。
对于读数据,interconnect 附加一位到 RID 段中,用来推断哪个主机端口读取数据。Interconnect 会移除 RID 段中的这一位在将 RID 的值送往正确的主机端口之前。
第九章
本章描述了 AXI 读写数据总线传输的不同大小和接口如何用字节不变
endian 去握手混合 endian 传输。
1、Narrow 传输,当主机产生的数据宽度小于数据总线宽度时,地址和把握信息打算哪一个 byte lanes 为有效的数据。下面是两个应用 byte lanes 的例子:
Example 1:
Example 2:
2、下面是一个数据不变性存取需求的数据构造的例子。他包含头信息,例如source、destination identifiers 这些信息是承受 little-endian 格式,但是 payload 是big-endian 字节流,具体状况如以以下图:
数据不变性确保在数据构造中 little-endian 存取头信息的局部不会破坏其他big-endian 数据。
第十章
本章描述 AXI 协议不对齐握手传输。
1、AXI 协议允许主机使用低阶地址行去标示一个不对齐的起始地址在突发读写中。低阶地址行的信息必需包含 byte lane strobes 信息。
2、下面是几个例子来说明数据以对齐或者不对齐的地址为起始地址,分别在 32
位和 64 位数据总线上面传输的状况。其中暗色的框表示没有传输的数据。
第十一章
本章主要描述 AXI 时钟和复位信号的时序。1、在复位期间,以下接口必需遵循:
(1) 主机接口必需将 ARVALID、AWVALID、WVALID 信号置低。
(2) 设备接口必需将 RVALID、BVALID 信号置低。
(3) 全部其它信号可以为任意值。
2、主机接口必需开头将 ARVALID、AWVLAID 或 WVALID 置高仅仅在ARESETn 信号变高后的 ACK 的第一个上升沿。具体状况如以以下图:
第十二章
本章主要描述 AXI 协议在进入和离开低功耗状态期间的时钟把握接口。1、低功耗时钟把握接口包括下面两个信号:
(1) 来自外围设备的信号,用于指明什么时候时钟使能能或者禁能。
(2) 两个握手信号用于系统时钟把握器恳求退出或者进入低功耗状态。
2、时钟把握接口的一个主要信号时 CACTIVE,外围设备用这个信号来指明恳求时钟使能。外围设备置CACTIVE 有效去恳求时钟,系统时钟把握器必需马上使能时钟。假设外围设备将CACTIVE 置为无效,则系统时钟把握器将自己打算是否使能或者禁能外围设备时钟。
3、AXI 协议供给双线 request/acknowledge 握手来支持恳求:
(1) CSYSREQ 当外围设备恳求进入低功耗状态时,系统时钟把握器将
CSYSREQ 置低,寻常CSYSREQ 都是置高的。
(2) CSYSACK 外围设备用CSYSACK 信号作为进入低功耗状态和离开低功耗状态的应答信号。
下面是 CSYSREQ 和 CSYSACK 信号之间的时序图:
系统时钟把握器在 T1 时刻发出恳求,外围设备在 T2 时刻赐予应答,此时进入低功耗状态。在T3 时刻,CSYSREQ 变高,恳求离开低功耗状态,在T4 时刻得到应答,此时离开低功耗状态进入正常模式。
4、外围设备可以选择承受恳求也可以选择不承受恳求。主要通过信号 CACTIVE
来打算。
承受恳求的状况:
不承受恳求的状况:
5、既可以通过系统也可以通过外围设备来退出低功耗状态。只要置信号CACTIVE 和 CSYSREQ 这两个信号中的一个为高就可以退出低功耗模式。而系统可以通过置 CSYSREQ 为高来退出低功耗模式。
6、时钟把握框图如下:
展开阅读全文