原创 【博客大赛】FPGA学习经验总结之一:AXI4协议

2016-2-15 08:46 4783 16 19 分类: FPGA/CPLD

AXI4协议总结

AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。

参考文献:AMBA_AXI_v2_0_protocol_spec(.pdf)

一、特点

单向通道体系结构:信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。

支持多项数据交换:通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。

独立的地址和数据通道地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。

二、AXI4 的变种

AXI4:是面向地址映射的接口,允许最大256轮的数据突发传输;

AXI4-lite: 是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元;

AXI4-Steam: 去掉了地址项,允许无限制的数据突发传输规模;

三、接口信号描述

要了解总线协议原理及其如何工作,首先需要对接口信号有一个大概的了解,在这里,接口信号分为7个部分,后面将一一列出。然后,分析总线的工作模式(最快捷的方式就是利用读写操作的时序图

5个通道信号

write address channel signals  写地址通道

write data channel signals   写数据通道

write response channel signals写响应通道

Read address channel signals  读地址通道

read data channel signals  读数据通道

额外通道信号介绍

Global signals   全局信号

Low-power interface signals   低功耗接口信号

每一个AXI传输通道都是单方向的

注意:Global signals

信号

描述

ACLK

时钟源

全局时钟信号。所有的信号在全局时钟的上升沿采样。

ARESETn

复位源

全局复位信号。该信号低有效。

1、write address channel

信号

描述

AWID[3:0]

写地址ID。这个信号用于写地址信号组的标记。

AWADDR[31:0]

写地址。写地址信号给出写突发事务的第一个传输地址。相关的控制信号线用于确定突发中剩余传输的地址。

AWLEN[3:0]

突发长度。给出突发中准确的传输个数。该信号给出了和地址相关的数据传输数量。

AWSIZE[2:0]

突发大小。这个信号确定突发中每个传输的大小。字节通道选通用来说明需要更新的字节通道。

AWBURST[1:0]

突发类型。该信息和大小信息一起,表示在每次突发的传输中,地址是如何被计算的。

AWLOCK[1:0]

锁类型。这个信号提供了关于传输原子特性的额外信息。

AWCACHE[3:0]

缓存类型。这个信号表示可缓冲、可缓存、写通过、写回和分配事务属性。

AWPROT[2:0]

保护类型。这个信号表示事务的普通、特权、或安全保护级,以及事务是数据访问还是指令访问。

AWVALID

写地址有效。这个信号表示写地址有效和控制信息是可用的:1=地址和控制信息有效;0=地址和控制信息无效。该信号一直保持有效,直到响应信号AWREADY为高。

AWREADY

写地址准备就绪。这个信号表示从设备准备接受地址和相关的控制信号:1=从设备准备就绪;0=从设备没准备就绪。

2、write data channel

信号

描述

WID[3:0]

写ID号。这个信号表示写数据传输的ID号。WID值必须与AWID值匹配。

WDATA[31:0]

写数据。写数据总线可以是8,16,32,64,128,256,512或者1024位宽度

WSTRB[3:0]

写选通。用于表示更新存储器的字节选通。对于数据总线的每8位有一个写选通。

WLAST

写最后一个。表示写突发中的最后一个传输。

WVALID

写有效。这个信号表示有效的写数据和选通是可用的。

WREADY

写准备。这个信号表示从设备能接受写数据。

3、write response channel

信号

描述

BID[3:0]

响应ID。写响应识别标记。BID值必须匹配写事务的AWID值。

BRESP[1:0]

写响应。这个信号表示写事务的状态。可允许的响应是OKAY,EXOKAY,SLVERR和DECERR。

BVALID

写响应有效。这个信号表示有效写响应是可用的。

BREADY

响应准备。这个信号表示主设备可以接受响应信息。

4、Read address channel

信号

描述

ARID[3:0]

读地址ID。这个信号用于读地址信号组的标记。

ARADDR[31:0]

读地址。读地址信号给出读突发事务的第一个传输地址。相关的控制信号线用于确定突发中剩余传输的地址。

ARLEN[3:0]

突发长度。给出突发中准确的传输个数。该信号给出了和地址相关的数据传输数量。

ARSIZE[2:0]

突发大小。这个信号确定突发中每个传输的大小。字节通道选通用来说明需要更新的字节通道。

ARBURST[1:0]

突发类型。该信息和大小信息一起,表示在每次突发的传输中,地址是如何被计算的。

ARLOCK[1:0]

锁类型。这个信号提供了关于传输原子特性的额外信息。

ARCACHE[3:0]

缓存类型。这个信号表示可缓冲、可缓存、写通过、写回和分配事务属性。

ARPROT[2:0]

保护类型。这个信号表示事务的普通、特权、或安全保护级,以及事务是数据访问还是指令访问。

ARVALID

读地址有效。这个信号表示读地址有效和控制信息是可用的:1=地址和控制信息有效;0=地址和控制信息无效。该信号一直保持有效,直到响应信号ARREADY为高。

ARREADY

读地址准备就绪。这个信号表示从设备准备接受地址和相关的控制信号:1=从设备准备就绪;0=从设备没准备就绪。

5、read data channel

信号

描述

RID[3:0]

读ID号。这个信号表示读数据组的ID号。由从设备产生RID,RID必须和读事务中的ARID值匹配。

RDATA[31:0]

读数据。读数据总线可以是8,16,32,64,128,256,512或者1024位宽度

RRESP{1:0]

读响应。这个信号表示读事务的状态。可允许的响应是OKAY,EXOKAY,SLVERR和DECERR。

RLAST

读最后一个。表示读突发中的最后一个传输。

RVALID

读有效。这个信号表示所要求的读数据是可用的,能完成读传输。

RREADY

读准备。这个信号表示主设备能接受读数据和响应信息。

6、Low-power interface signals

信号

描述

CSYSREQ

时钟控制器

系统低功耗请求。这个信号来自系统时钟控制器使外设进入低功耗状态。

CSYSACK

外设

低功耗请求响应信号。这个信号来自系统低功耗请求外设的响应信号

CACTIVE

外设

时钟激活。该信号表示外设是否要用它的时钟信号:1=需要;0=不需要

四、握手机制

    所有五个通道使用相同的 VALID/READY 握手来传输数据和控制信息。这种双向的流控制机制使得主设备和从设备都可以控制数据和控制信息的传输。源设备产生VALID 信号(VALID被拉高)标志着当前的数据和控制信息有效。目的设备产生READY 信号(READY被拉高)标志着可以接收主设备发来的数据和控制信息。只有当VALID 和READY 同时为高时,才能进行传输。

VALID和READY信号的先后顺序有一下三种形式:

20160202215313168001.jpg

3.1  VALID早于READY信号

20160202215317887002.jpg

3.2  READY信号早于VALID信号

20160202215322750003.jpg

 3.3 VALID信号与READY信号同时

五、基本事务

1、突发式读(read burst)事务时序图

20160202215327257004.jpg

注:一些信号被忽略(如ARID、ARLEN等)

顺序为:主设备与从设备进行读地址通道握手,并传输地址内容(即ARVALID和ARREADY握手成功后,地址ARADDR被从设备接收)。然后进行读数据通道握手,并传输所读内容(即RVALID和RREADY握手成功后,数据RDATA被主设备读取)。时钟上升沿有效。

2、重叠突发式(overlapping read burst)读时序图

20160202215332852005.jpg

表示在从设备接收到第一个地址后,主设备继续驱动第二个地址。这就使得从设备在发送第一个读数据后马上进行第二个读数据操作的发送。

3、突发式写(write burst)时序图

20160202215337856006.jpg

顺序为:主设备与从设备进行写地址通道握手,并传输地址内容(即AWVALID和AWREADY握手成功后,地址AWADDR被从设备接收)。然后进行写数据通道握手,并传输所写内容(即WVALID和WREADY握手成功后,数据WDATA被从设备读取)。最后进行写回应通道握手,并传输写回应数据(即BVALID和BREADY握手成功后,响应数据BRESP被主设备读取)。时钟上升沿有效。

 

 

 

 

 

 

 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1816300 2016-2-15 09:57

由于AXI4-S和AXI4-Lite单通道体系结构和并行猝发方式,它们可以被用于高速应用领域的用户接口端(User Interface)。例如FPGA的PCIE和SRIO,还有万兆以太网的IP核都是用它们作为用户接口。

用户1816300 2016-2-15 09:40

感谢博友的评论,你的评论对我帮助很大。刚开始学习AXI4协议的时候,感觉挺难,内容很多。但是学到后面发现,其实了解了“接口信号”和“时序图”基本就能使用这个总线协议了。其中最最重要的就是时序图,在编写代码时的依据就是时序图,可能我对AXI4的时序图流程描述不是很详细,我会进一步改进的。 首先对你提出的"valid拉高的时间点"进行解释:主要有两种方式:1)valid先于ready拉高:valid先拉高,然后等待ready信号高电平,在ready信号拉高一个或者几个时钟周期以后,valid拉低。2)valid后于ready拉高:ready先拉高,监测到ready高电平后,valid才会拉高。 然后对你提出的“数据变化”作出解释:数据或者地址在valid拉高的同时,数据或者地址 被驱动到相应信号线上。

sunyzz 2016-2-13 19:59

我觉得基本上是在翻译amba总线协议,如果能加入自己对总线的理解这样可能会更好,譬如有些信号如valid拉高的时间点,拉高以后数据如何变化等等;现在的总线乍一看基本上都很相似,但是又有很大的不同,axi总线算非常高级的一类总线了,充分发挥了多和cpu的特性,一般而言,单核的根本不需要axi总线。
相关推荐阅读
用户1816300 2016-02-03 09:06
【博客大赛】建立第一个工程--启航篇(基于Vivado2014.1)
第一个工程的建立 我的环境:Window 7旗舰版 64位,Vivado 2014.1        目前,ISE开发环境已经停止了版本的更新,Vivado将在未来成为Xilinx开发的主...
用户1816300 2016-02-03 09:06
【博客大赛】vavido2014.1和Modelsim10.1c联合仿真
Vivado和ModelSim联合仿真 以前在使用Xilinx芯片时,用的开发环境都是ISE,最近做项目需要用到ZYNQ,就开始学习Vivado开发环境了,没办法,搞技术就得不断学习。Viva...
用户1816300 2016-02-03 09:04
【博客大赛】FPGA学习经验总结之二:AXI4-Stream协议
AXI4-Stream协议总结 AXI4-Stream去掉了地址项,允许无限制的数据突发传输规模; 一、接口信号描述 信号 ...
用户1816300 2015-12-16 11:02
(多图) 基于Virtex-6 FPGA的三种串行通信协议测试及对比
在高性能雷达信号处理机研制中,高速串行总线正逐步取代并行总线。业界广泛使用的Xilinx公司Virtex-6系列FPGA支持多种高速串行通信协议,本文针对其中较为常用的Aurora 8B/10B和PC...
用户1816300 2015-12-09 22:31
走自己的路,不断前行
      一直以来,在大学学习单片机和ARM相关技术,然后到硕士阶段进行FPGA的研究学习,有不懂的地方都会上网查找解决问题的方法,并得到很多人的无私帮助,我一直心存感激。怀着滴水之恩当涌泉相报...
EE直播间
更多
我要评论
3
16
关闭 站长推荐上一条 /3 下一条