1、1 AXI IntroductionICD/SID Bob Qin(覃海洋) 2015/12/312Topic 1 What is the AXI?3AXI介绍AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA3.0 (AHB是在2.0中提出)协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线.4AXI特点1.它的地址/控制和数据相位是Sperated2.支持Unaligned的数据传输3.同时在Burst传输中,只需要首地址4.单向通道体系结构提高传输效率4.同时分离的读、写数据通道5.并支持outstanding
2、传输访问和Out of order访问Topic 2What constitutes the AXI ?56AXI通道组成部分 Read address channel 添加描述 Write address channel Read data channel Write data channel Write response channel每一个AXI传输通道都是单方向的Read transaction structure72 ChannelsWrite transaction structure83 ChannelsHandshake mechanism 英文叙述并强调传输地址信息和数据都是
3、在VALID和READY同时为高时有效910AXI信号(1)信号源描述ACLKClock source全局时钟信号ARESETnReset source全局复位信号,低电平有效Global Signal:AXI信号(2)11Write address channel : 信号源描述AWID3:0主机写地址ID,这个信号是写地址信号组的ID tag。AWADDR31:0主机写地址。AWLEN3:0主机突发式写的长度。此长度决定突发式写所传输的数据的个数。AWSIZE2:0主机突发式写的大小。AWBURST1:0 主机突发式写的类型。AWLOCK1:0主机锁类型。AWCACHE3:0主机Cache
4、类型。这信号指明事务的bufferable、cacheable、write-through、write-back、allocate attributes信息。AWPROT2:0主机保护类型。AWVALID主机写地址有效。1 = 地址和控制信息有效0 = 地址和控制信息无效这个信号会一直保持,直到AWREADY变为高。AWREADY设备写地址准备好。这个信号用来指明设备已经准备好接受地址和控制信息了。1 = 设备准备好0 = 设备没准备好AXI信号(3)12Write data channel :信号源描述WID3:0主机写ID tag,WID的值必须与AWID的值匹配WDATA31:0主机写的
5、数据。WSTRB3:0主机写阀门。WSTRBn标示的区间为WDATA(8*n)+7:(8*n) WLAST主机写的最后一个数据。WVALID主机写有效1 = 写数据和阀门有效0 = 写数据和阀门无效WREADY设备写就绪。指明设备已经准备好接受数据了1 = 设备就绪0 = 设备未就绪AXI信号(4)13Write response channel :信号源描述BID3:0设备响应ID , 这个数值必须与AWID的数值匹配。BRESP1:0设备写响应。这个信号指明写事务的状态。可能有的响应:OKAY、EXOKAY、SLVERR、DECERR。BVALID设备写响应有效。1 = 写响应有效0 =
6、写响应无效BREADY主机接受响应就绪。该信号表示主机已经能够接受响应信息。1 = 主机就绪0 = 主机未就绪AXI信号(5)14Read address channel :信号源描述ARID3:0主机读地址ID。ARADDR31:0主机读地址。ARLEN3:0 主机突发式读长度。ARSIZE2:0主机突发式读大小。ARBURST1:0主机突发式读类型。ARLOCK1:0主机锁类型。ARCACHE3:0主机Cache类型。ARPROT2:0主机保护类型。ARVALID主机读地址有效。信号一直保持,直到ARREADY为高。1 = 地址和控制信息有效0 = 地址和控制信息无效ARREADY设备读地
7、址就绪。指明设备已经准备好接受数据了。1 = 设备就绪0 = 设备未就绪AXI信号(6)15Read data channel :信号源描述RID3:0设备读ID tag。RID的数值必须与ARID的数值匹配。RDATA31:0设备读数据。RRESP1:0设备读响应。这个信号指明读传输的状态:OKAY、EXOKAY、SLVERR、DECERR。RLAST设备读事务传送的最后一个数据。RVALID设备读数据有效。1 = 读数据有效。0 = 读数据无效。 RREADY主机读数据就绪。1 = 主机就绪0 = 主机未就绪AXI信号(7)16Low power interface:信号源描述CSYSRE
8、QCLOCK controller系统低功耗请求。此信号来自系统时钟控制器,使外围设备进入低功耗状态。CSYSACK外围设备低功耗请求应答。CACTIVE外围设备Clock active 1 = 外围设备时钟请求0 = 外围设备时钟无请求Topic 3 How can you make a transfer on AXI? 1718Basic AXI transferRead burst:19Basic AXI transferOverlapping read burst:20Basic AXI transferWrite burst:21Basic AXI transferAXI协议支持乱序
9、传输。他给每一个通过接口的事务一个IDtag。协议要求相同ID tag的事务必须有序完成,而不同ID tag可以乱序完成Topic 4Something about handshake mechanism, VALID and READY are important.22VALID先变高READY后变高在箭头处信息传输发生。23READY先变高VALID后变高同样在箭头处信息传输发生。24VALID和READY信号同时变高在这种情况下,信息传输立马发生,如图箭头处指明信息传输发生2526Relationship among channelsRead transaction:1、设备可以在ARV
10、ALID出现的时候在给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。2、但是设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。27Relationship among channelsWrite transaction:1、主机必须不能够等待设备先给出AWREADY或WREADY信号信号后再给出信号AWVALID或WVLAID。2、设备可以等待信号AWVALID或WVALID信号有效或者两个都有效之后再给出AWREADY信号。3、设备可以等待AWVALID或WVALID信号有效或者两个信号都有效之后再给出WREADY信
11、号。Attention:地址、读、写和写响应通道之间的关系是灵活的。例如,写数据可以出现在接口上早于与其相关联的写地址。也有可能写数据与写地址在一个周期中出现。 两种关系必须被保持:(1)读数据必须总是跟在与其数据相关联的地址之后。(2)写响应必须总是跟在与其相关联的写事务的最后出现。2829Topic 5Something about burst transaction.30Attention:1、突发式读写的地址必须以4KB对齐。2、信号AWLEN或信号ARLEN指定每一次突发式读写所传输的数据的个数。3、 ARSIZE信号或AWSIZE信号指定每一个时钟节拍所传输的数据的最大位数;需要注
12、意的是任何传输的SIZE都不能超过数据总线的宽度。 4、 AXI协议定义了三种突发式读写的类型:固定式的突发读写、增值式突发读写、包装式突发读写。用信号ARBURST或AWBURST来选择突发式读写的类型31Burst 方式方式1、固定式突发读写是指地址是固定的,每一次传输的地址都不变。这样的突发式读写是重复的对一个相同的位置进行存取。例如FIFO。2、增值式突发读写是指每一次读写的地址都比上一次的地址增加一个固定的值。包装式突发读写跟增值式突发读写类似。包装式突发读写的地址是包数据的低地址当到达一个包边界。3、包装式突发读写有两个限制:1起始地址必须以传输的size对齐。2突发式读写的长度必
13、须是2、4、8或者1632地址计算公式地址计算公式Start_Address 主机发送的起始地址Number_Bytes 每一次数据传输所能传输的数据byte的最大数量Data_Bus_Bytes 数据总线上面byte lanes的数量Aligned_Address 对齐版本的起始地址Burst_Length 一次突发式读写所传输的数据的个数Address_N 每一次突发式读写所传输的地址数量,范围是2-16Wrap_Boundary 包装式突发读写的最低地址Lower_Byte_Lane 传输的最低地址的byte laneUpper_Byte_Lane 传输的最高地址的byte laneIN
14、T(x) 对x进行向下取整下面是计算公式:Start_Address = ADDRNumber_Bytes = 2SIZEBurst_Length = LEN + 1Aligned_Address = (INT(Start_Address / Number_Bytes) ) x Number_BytesAddress_1 = Start_AddressAddress_N = Aligned_Address + (N 1) x Number_BytesWrap_Boundary = (INT(Start_Address / (Number_Bytes x Burst_Length)x (Numb
15、er_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_BytesUpper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) -(INT(Start_Address / Data_Bus_
16、Bytes) x Data_Bus_Bytes除了第一次读写之后的读写:Lower_Byte_Lane = Address_N (INT(Address_N / Data_Bus_Bytes)x Data_Bus_BytesUpper_Byte_Lane = Lower_Byte_Lane + Number_Bytes 1DATA(8 x Upper_Byte_Lane) + 7 : (8 x Lower_Byte_Lane)。Topic 6Exclusive transaction and Locked transaction and so on33ARCACHE3:0和AWCACHE3:0
17、在一些情况下,信号AWACAHE可以用来确定哪个部件来提供写响应。如果写事务被指定为bufferable ,那么他接受来自桥或者系统级的cache提供的写响应。如果事务被指定为non-bufferable,那么写响应必须有最终目的源提供。34AWPROT和ARPROT 正常存取或者特权存取, ARPROT0 和 AWPROT0 安全性存取或者没有安全性存取, ARPROT1 和 AWPROT1 指令存取或者数据存取 ARPROT2 和 AWPROT235ARLOCK1:0和信号AWLOCK1:0361、我们通过信号ARLOCK1:0或AWLOCK1:0来选择独占式存取,用信号RRESP1:0或
18、BRESP1:0来指明独占式存取的成功与否。2、主机在请求独占式存取时,设备会返回两个响应分别是EXOKAY和OKAY。EXOKAY是指设备支持独占式存取,而OKAY是指设备不支持独占式存取。、3、如果一个设备不支持独占式存取,可以忽略信号ARLOCK1:0和AWLOCK1:0。他必须提供OKAY响应对正常式存取和独占式存取。如果一个设备要支持独占式存取则必须有硬件监视器。4、通过信号ARLOCK1:0或信号AWLOCK1:0对事务加锁,需要确定只允许主机存取设备区域直到一个未加锁的事务从同一个主机完成。此处推荐锁存取只用来支持legacy devices。5、推荐遵循下面两天建议,但是不强制
19、:(1)保持所有锁事务序列都在相同的4KB地址区域内。(2)限制用琐事务序列对两个事务加锁。37RRESP1:0和BRESP1:0 responseAXI协议对读事务和写事务都有响应。对于读事务,读响应与读数据一起发送给主机,而写事务将写响应通过写响应通道传送。AXI协议的响应类型有OKAY、EXOKAY、SLVERR、DECERR。通过信号RRESP1:0和BRESP1:0来编码响应信号,具体如下图:协议规定请求的需要传输的数据数量必须被执行,即使有错误报告。在一次突发式读写的剩余数据不会被取消传输,即使有单个错误报告。AXI协议的四种响应类型:正常存取成功、独占式存取、设备错误、译码错误。
20、AXI协议要求,在一个传输事务中的所有数据必须传输完成,即使有错误状态发生。38Topic 7How to make a out-of-order transaction?39out-of-order transaction(1)本章描述AXI协议用事务ID tags来处理多地址和乱序传输。1、下面介绍5中事务IDs:AWID 这个ID tag是写地址群组信号。WID 这个是写ID tag在写事务中,与写数据在一起,主机传送一个WID去匹配与地址相一致的AWID。BID 这个ID tag是写响应事务中。设备会传送BID去匹配与AWID和WID相一致的事务。ARID 这个ID tag是读地址群组
21、信号。RID 这个ID tag是在读事务中。设备传送RID去匹配与ARID相一致的事务。2、主机可以使用一个事务的ARID或者AWID段提供的附加信息排序主机的需要。事务序列规则如下:(1)从不同主机传输的事务没有先后顺序限制。他们可以以任意顺序完成。(2)从同一个主机传输的不同ID事务,也没有先后顺序限制。他们可以以任意顺序完成。40out-of-order transaction(2)(3)相同数值的AWID写事务数据序列必须按照顺序依次写入主机发送的地址内。(4)相同数值的ARID读事务数据序列必须遵循下面的顺序:a.当从相同设备读相同的ARID时,设备必须确保读数据按照相同的地址顺序接
22、受。b.当从不同的设备读相同的ARID时,接口处必须确保读数据按照主机发送的相同的地址顺序。(5)在相同的AWID和ARID的读事务和写事务之间没有先后顺序限制。如果主机要求有顺序限制,那么必须确保第一次事务完全完成后才开始执行第二个事务。3、当一个主机接口与interconnect相连时,interconnect会在信号ARID、AWID、WID段添加一位,每一个主机端口都是独一无二的。这样做有两个影响:(1) 主机不需要去知道其他主机的ID数值,因为interconnect是ID值是唯一的,当将主机number添加到段中。(2) 在设备接口处的ID段的宽度要比主机接口处的ID段宽。对于读数
23、据,interconnect附加一位到RID段中,用来判断哪个主机端口读取数据。Interconnect会移除RID段中的这一位在将RID的值送往正确的主机端口之前。41Topic 8Entering the power-down model42低功耗模式低功耗时钟控制接口包括下面两个信号:来自外围设备的信号,用于指明什么时候时钟使能能或者禁能。两个握手信号用于系统时钟控制器请求退出或者进入低功耗状态。时钟控制接口的一个主要信号时CACTIVE,外围设备用这个信号来指明请求时钟使能。外围设备置CACTIVE有效去请求时钟,系统时钟控制器必须马上使能时钟。如果外围设备将CACTIVE置为无效,则
24、系统时钟控制器将自己决定是否使能或者禁能外围设备时钟。AXI协议提供双线 request/acknowledge 握手来支持请求:CSYSREQ 当外围设备请求进入低功耗状态时,系统时钟控制器将CSYSREQ置低,平时CSYSREQ都是置高的。CSYSACK 外围设备用CSYSACK信号作为进入低功耗状态和离开低功耗状态的应答信号。时序图43系统时钟控制器在T1时刻发出请求,外围设备在T2时刻给予应答,此时进入低功耗状态。在T3时刻,CSYSREQ变高,请求离开低功耗状态,在T4时刻得到应答,此时离开低功耗状态进入正常模式。44接受or not外围设备可以选择接受请求也可以选择不接受请求。主要
25、通过信号CACTIVE来决定。接受请求的情况:不接受请求的情况:45Attention: 既可以通过系统也可以通过外围设备来退出低功耗状态。只要置信号CACTIVE和CSYSREQ这两个信号中的一个为高就可以退出低功耗模式。 而系统可以通过置CSYSREQ为高来退出低功耗模式。46My Questions(1)1.谁去区分属于同一个ID的传输及排序? 2.多个主机呢,或者多个从机?Arbiter和Decoder呢?3.Why bursting transfer can not across the 1k boundary?4.非对其传输时是否有数据会丢失?见后图My Questions(2)47