赞
踩
目录
AXI4 是第四代AMBA协议重要的一部分,AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream。AXI4.0-lite是AXI的简化版本,ACE4.0 是AXI缓存一致性扩展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA进行以数据为主导的大量数据的传输应用。
AXI架构分为5个独立的传输通道,读地址通道、读数据通道、写地址通道、写数据通道、写响应通道。基于VALID/READY的握手机制数据传输协议,传输源端使用VALID表明地址/控制信号、数据是有效的,目的端使用READY表明自己能够接受信息。数据总线可为(8/16/32/64/128/256/512/1024bit),最大为单次传输一个字节的数据。
握手过程
5个传输通道均使用VALID/READY信号对传输过程的地址、数据、控制信号进行握手。使用双向握手机制,传输仅仅发生在VALID、READY同时有效的时候。下图是几种握手机制:
VALID before READY
READY before VALID
VALID with READY
通道顺序
AXI协议要求通道间满足如下关系:
-写响应必须跟随最后一次burst的的写传输
-读数据必须跟随数据对应的地址
-通道握手信号需要确认一些依赖关系
通道握手信号的依赖关系
为防止死锁,通道握手信号需要遵循一定的依赖关系。
1、VALID信号不能依赖READY信号。
2、AXI接口可以等到检测到VALID才断言对应的READY,也可以检测到VALID之前就断言READY。
具体依赖关系见AMBA协议介绍(3)——AXI协议
信号名 | 源 | 描述 |
ACLK | 时钟源 | 全局时钟信号 |
ARESETn | 复位源 | 全局复位信号,低有效 |
信号名 | 源 | 描述 |
AWID | 主机 | 写地址ID,用来标志一组写信号 |
AWADDR | 主机 | 写地址,给出一次写突发传输的写地址 |
AWLEN | 主机 | 突发长度,给出突发传输的次数 |
AWSIZE | 主机 | 突发大小,给出每次突发传输的字节数 |
AWBURST | 主机 | 突发类型 |
AWLOCK | 主机 | 总线锁信号,可提供操作的原子性 |
AWCACHE | 主机 | 内存类型,表明一次传输是怎样通过系统的 |
AWPROT | 主机 | 保护类型,表明一次传输的特权级及安全等级 |
AWQOS | 主机 | 质量服务QoS |
AWREGION | 主机 | 区域标志,能实现单一物理接口对应的多个逻辑接口 |
AWUSER | 主机 | 用户自定义信号 |
AWVALID | 主机 | 有效信号,表明此通道的地址控制信号有效 |
AWREADY | 从机 | 表明“从”可以接收地址和对应的控制信号 |
信号名 | 源 | 描述 |
WID | 主机 | 一次写传输的ID tag |
WDATA | 主机 | 写数据 |
WSTRB | 主机 | 写数据有效的字节线,用来表明哪8bits数据是有效的 |
WLAST | 主机 | 表明此次传输是最后一个突发传输 |
WUSER | 主机 | 用户自定义信号 |
WVALID | 主机 | 写有效,表明此次写有效 |
WREADY | 从机 | 表明从机可以接收写数据 |
信号名 | 源 | 描述 |
BID | 从机 | 写响应ID tag |
BRESP | 从机 | 写响应,表明写传输的状态 |
BUSER | 从机 | 用户自定义 |
BVALID | 从机 | 写响应有效 |
BREADY | 主机 | 表明主机能够接收写响应 |
信号名 | 源 | 描述 |
ARID | 主机 | 读地址ID,用来标志一组写信号 |
ARADDR | 主机 | 读地址,给出一次写突发传输的读地址 |
ARLEN | 主机 | 突发长度,给出突发传输的次数 |
ARSIZE | 主机 | 突发大小,给出每次突发传输的字节数 |
ARBURST | 主机 | 突发类型 |
ARLOCK | 主机 | 总线锁信号,可提供操作的原子性 |
ARCACHE | 主机 | 内存类型,表明一次传输是怎样通过系统的 |
ARPROT | 主机 | 保护类型,表明一次传输的特权级及安全等级 |
ARQOS | 主机 | 质量服务QoS |
ARREGION | 主机 | 区域标志,能实现单一物理接口对应的多个逻辑接口 |
ARUSER | 主机 | 用户自定义信号 |
ARVALID | 主机 | 有效信号,表明此通道的地址控制信号有效 |
ARREADY | 从机 | 表明“从”可以接收地址和对应的控制信号 |
信号名 | 源 | 描述 |
RID | 从机 | 读ID tag |
RDATA | 从机 | 读数据 |
RRESP | 从机 | 读响应,表明读传输的状态 |
RLAST | 从机 | 表明读突发的最后一次传输 |
RUSER | 从机 | 用户自定义 |
RVALID | 从机 | 表明此通道信号有效 |
RREADY | 主机 | 表明主机能够接收读数据和响应信息 |
信号名 | 源 | 描述 |
CSYSREQ | 时钟控制器 | 系统退出低功耗请求,此信号从“时钟控制器”到“外设” |
CSYSACK | 外设 | 退出低功耗状态确认 |
CACTIVE | 外设 | 外设请求时钟有效 |
每个数据通道有独立的xVALID/xREADY握手信号对。
VALID与READY信号作为一对握手信号,为防止死锁,进行读操作时,必须等读地址通道握手完成,读数据通道才可进行下一步操作。进行写操作时,写地址通道与写数据通道互相独立,但同样必须等最后一组数据写完成写响应通道握手完成。
AXI协议是基于burst的,主机只给出突发传输的第一个字节的地址,从机必须计算突发传输后续的地址。突发传输不能跨4KB边界(防止突发跨越两个从机的边界,也限制了从机所需支持的地址自增数)。
AxSIZE[2:0] bytes in transfer
‘b000 1
‘b001 2
‘b010 4
‘b011 8
‘b100 16
‘b101 32
‘b110 64
‘b111 128
突发类型
FIXED:突发传输过程中地址固定,用于FIFO访问
INCR:增量突发,传输过程中,地址递增。增加量取决AxSIZE的值。
WRAP:回环突发,和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是2,4,8,16次传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐。回环边界等于(AxSIZE*AxLEN)。
AxBURST[1:0] burst type
‘b00 FIXED
‘b01 INCR
‘b10 WRAP
‘b11 Reserved
Start_Address=AxADDR
Number_Bytes=2^AxSIZE
Burst_Length=AxLEN+1
Aligned_Addr=(INT(Start_Address/Number_Bytes))xNumber_Bytes。//INT表示向下取整。
对于INCR突发和WRAP突发但没有到达回环边界,地址由下述方程决定:
Address_N=Aligned_Address+(N-1)xNumber_Bytes
WRAP突发,突发边界:
Wrap_Boundary=(INT(Start_Address/(Number_Bytes x Burst_Length)))x(Number_Bytes x Burst_Length)
读写响应结构
读传输的响应信息是附加在读数据通道上的,写传输的响应在写响应通道。
RRESP[1:0],读传输
BRESP[1:0],写传输
OKAY(‘b00):正常访问成功
EXOKAY(‘b01):Exclusive 访问成功
SLVERR(‘b10):从机错误。表明访问已经成功到了从机,但从机希望返回一个错误的情况给主机。
DECERR(‘b11):译码错误。一般由互联组件给出,表明没有对应的从机地址。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。