AXI总线协议资料整理第一部分:1、AXI简介:AXI(AdvancedeXtensibleInterface)是一种总线协议,该协议是ARM公司提出的AMBA(AdvancedMicrocontrollerBusArchitecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。AXI是AMBA中一个新的高性能协议。AXI技术丰富了现有的AMBA标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。2、AXI特点:单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。第二部分:本部分对AXI1.0协议的各章进行整理。第一章本章主要介绍AXI协议和AXI协议定义的基础事务。1、AXI总线共有5个通道分别是readaddresschannel、writeaddresschannel、readdatachannel、writedatachannel、writeresponsechannel。每一个AXI传输通道都是单方向的。2、每一个事务都有地址和控制信息在地址通道(addresschannel)中,用来描述被传输数据的性质。3、读事务的结构图如下:4、写事务的结构图如下:5、这5条独立的通道都包含一个信息信号和一个双路的VALD、READY握手机制。6、信息源通过VALID信号来指示通道中的数据和控制信息什么时候有效。目地源用READY信号来表示何时能够接收数据。读数据和写数据通道都包括一个LAST信号,用来指明一个事物传输的最后一个数据。7、读和写事务都有他们自己的地址通道,这地址通道携带着传输事务所必须的地址和信息。8、读数据通道传送着从设备到主机的读数据和读响应信息。读响应信息指明读事务的完成状态。9、写数据通路传送着主机向设备的写数据。每八个数据都会有一个bytelane,用来指明数据总线上面的哪些byte有效。写响应通道提供了设备响应写事务的一种方式。这完成信号每一次突发式读写会产生一个。10、主机和设备的接口和互联图如下:11、传输地址信息和数据都是在VALID和READY同时为高时有效。12、突发式读的时序图如下:当地址出现在地址总线后,传输的数据将出现在读数据通道上。设备保持VALID为低直到读数据有效。为了表明一次突发式读写的完成,设备用RLAST信号来表示最后一个被传输的数据。13、重叠突发式读时序图如下:设备会在第一次突发式读完成后处理第二次突发式读数据。也就意味着,主机一开始传送了两个地址给设备。设备在完全处理完第一个地址的数据之后才开始处理第二个地址的数据。14、突发式写时序图如下:这一过程的开始时,主机发送地址和控制信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最后一个数据时,WLAST信号就变为高。当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成。15、AXI协议支持乱序传输。他给每一个通过接口的事务一个IDtag。协议要求相同IDtag的事务必须有序完成,而不同IDtag可以乱序完成。第二章本章主要介绍一些信号描述,其中包括全局信号、写地址通道信号、写数据通道信号、写响应通道信号、读地址通道信号、读数据通道信号、低功耗接口信号。本章的所有表都是以32位的数据总线、4位的写数据闸门、4位的ID段。1、全局信号信号源描述ACLKClocksource全局时钟信号ARESETnResetsource全局复位信号,低电平有效2、写地址通道信号信号源描述AWID[3:0]主机写地址ID,这个信号是写地址信号组的IDtag。AWADDR[31:0]主机写地址。AWLEN[3:0]主机突发式写的长度。此长度决定突发式写所传输的数据的个数。AWSIZE[2:0]主机突发式写的大小。AWBURST[1:0]主机突发式写的类型。AWLOCK[1:0]主机锁类型。AWCACHE[3:0]主机Cache类型。这信号指明事务的bufferable、cacheable、write-through、write-back、allocateattributes信息。AWPROT[2:0]主机保护类型。AWVALID主机写地址有效。1=地址和控制信息有效0=地址和控制信息无效这个信号会一直保持,直到AWREADY变为高。AWREADY设备写地址准备好。这个信号用来指明设备已经准备好接受地址和控制信息了。1=设备准备好0=设备没准备好3、写数据通道信号信号源描述WID[3:0]主机写IDtag,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]设备响应ID,这个数值必须与AWID的数值匹配。BRESP[1:0]设备写响应。这个信号指明写事务的状态。可能有的响应:OKAY、EXOKAY、SLVERR、DECERR。BVALID设备写响应有效。1=写响应有效0=写响应无效BREADY主机接受响应就绪。该信号表示主机已经能够接受响应信息。1=主机就绪0=主机未就绪5、读地址通道信号信号源描述ARID[3:0]主机读地址ID。ARADDR[31:0]主机读地址。ARLEN[3:0]主机突发式读长度。ARSIZE[2:0]主机突发式读大小。ARBURST[1:0]主机突发式读类型。ARLOCK[1:0]主机锁类型。ARCACHE[3:0]主机Cache类型。ARPROT[2:0]主机保护类型。ARVALID主机读地址有效。信号一直保持,直到ARREADY为高。1=地址和控制信息有效0=地址和控制信息无效ARREADY设备读地址就绪。指明设备已经准备好接受数据了。1=设备就绪0=设备未就绪6、读数据通道信号信号源描述RID[3:0]设备读IDtag。RID的数值必须与ARID的数值匹配。RDATA[31:0]设备读数据。RRESP[1:0]设备读响应。这个信号指明读传输的状态:OKAY、EXOKAY、SLVERR、DECERR。RLAST设备读事务传送的最后一个数据。RVALID设备读数据有效。1=读数据有效。0=读数据无效。RREADY主机读数据就绪。1=主机就绪0=主机未就绪7、低功耗接口信号信号源描述CSYSREQCLOCKcontroller系统低功耗请求。此信号来自系统时钟控制器,使外围设备进入低功耗状态。CSYSACK外围设备低功耗请求应答。CACTIVE外围设备Clockactive1=外围设备时钟请求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突发式读写的类型和在一次突发式读写事务内如何计算地址和bytelanes。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数据总线上面bytelanes的数量Aligned_Address对齐版本的起始地址Burst_Length一次突发式读写所传输的数据的个数Address_N每一次突发式读写所传输的地址数量,范围是2-16Wrap_Boundary包装式突发读写的最低地址Lower_Byte_Lane传输的最低地址的bytelaneUpper_Byte_Lane传输的最高地址的bytelaneINT(x)对x进行向下取整下面是计算公式:Start_Address=ADDRNumber_Bytes=2SIZEBurst_Length=LEN+1Aligned_Address=(INT(Start_Address/Number_Bytes))xNumber_BytesAddress_1=Start_AddressAddress_N=Aligned_Address+(N–1)xNumber_BytesWrap_Boundary=(INT(Start_Address/(Number_BytesxBurst_Length)))x(Number_BytesxBurst_Length)如果有Address_N=Wrap_Boundary+(Number_BytesxBurst_Length),则后面的公式成立Address_N=Wrap_Boundary。第一次突发式读写:Lower_Byte_Lane=Start_Address-(INT(