AXI总线整理总结

AXI总线

 

一、Definition

嵌入式系统是当今计算机工业发展的一个热点,随着超大规模集成电路的迅速发展,半导体工业进入深亚微米时代,器件特征尺寸越来越小,芯片规模越来越大,可以在单芯片上集成上百万到数亿只晶体管。如此密集的集成度使我们现在能够在一小块芯片上把以前由CPU和若干I/O接口等数块芯片实现的功能集成起来,由单片集成电路构成功能强大的、完整的系统,这就是我们通常所说的片上系统SoC(System on Chip)。由于功能完整,SoC逐渐成为嵌入式系统发展的主流[1]。

SoC片上总线尚处于发展阶段,不像微机总线那样成熟,目前还没有统一的标准,因此各大厂商和组织纷纷推出自己的标准,以便在未来的SoC片上总线标准中占有一席之地[2]。ARM公司就在1995年推出了自己的总线——AMBA(Advanced Microcontroller Bus Architecture)。它独立于处理器和制造工艺技术,增强了各种应用中的外设和系统宏单元的可重用性,非常适合于现代大规模集成电路设计自动化的要求。AMBA3.0中新增加了一种总线——AXI(Advanced eXtensible Interface)。它是一种面向高性能、高带宽、低延迟的片内总线,它的总线结构如Figure 1所示。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问和乱序访问,并更加容易就行时序收敛。AXI 是AMBA 中一个新的高性能协议。AXI 技术丰富了现有的AMBA 标准内容,满足超高性能和复杂的SoC设计的需求。

AXI总线整理总结_第1张图片

Figure 1 AMBA总线结构示意图

AXI 能够使SoC 以更小的面积、更低的功耗,获得更加优异的性能。AXI 获得如此优异性能的一个主要原因,就是它的单向通道体系结构。单向通道体系结构使得片上的信息流只以单方向传输,减少了延时。除了降低延时,AXI总线还定义了在进出低功耗节电模式前后的握手协议。规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有IP在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。AXI的特点如下:

  1. 单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。
  2. 支持多项数据交换。通过并行执行猝发操作,极大地提高了数据吞吐能力,可在更短的时间内完成任务,在满足高性能要求的同时,又减少了功耗。
  3. 独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提到最高,并将延时降到最低。
  4. 增强的灵活性。AXI技术拥有对称的主从接口,无论在点对点或在多层系统中,都能十分方便地使用AXI技术。

 

二、Principle

1、AXI总线事务级描述

AXI总线主要是指AXI的总线协议,它具有5个通道,分别是read address channel 、 write address channel 、 read data channel 、 write data channel、 write response channel,每一个通道都是单向的。地址通道携带控制消息用于描述被传输的数据属性,数据传输使用写通道来实现“主”到“从”的传输,“从”使用写响应通道来完成一次写传输;读通道用来实现数据从“从”到“主”的传输。具体的定义如Tabel 1所示。

Table 1 AXI总线五通道组成表

通道名称

通道功能

数据流向

read address

读地址通道

主机->从机

read data

读数据通道(包括数据通道和读响应通道)

从机->主机

write address

写地址通道

主机->从机

write data

写数据通道(包括数据通道和每8bit一个byte的写数据有效信号)

主机->从机

write response

写响应通道

从机->主机

通过这五个通道进行操作来实现AXI协议定义的基础事件,每一个事务都有地址和控制信息在地址通道中,用来描述被传输数据的性质。这5条独立的通道都包含一个信息信号和一个双路的VALD、READY握手机制。信息源通过VALID信号来指示通道中的数据和控制信息什么时候有效。目地源用READY信号来表示何时能够接收数据。读数据和写数据通道都包括一个LAST信号,用来指明一个事物传输的最后一个数据。读和写事务都有他们自己的地址通道,这地址通道携带着传输事务所必须的地址和信息。读数据通道传送着从设备到主机的读数据和读响应信息。读响应信息指明读事务的完成状态。写数据通路传送着主机向设备的写数据。每八个数据都会有一个byte lane ,用来指明数据总线上面的哪些byte有效。写响应通道提供了设备响应写事务的一种方式。这完成信号每一次突发式读写会产生一个。具体的读写事务如Figure 2和Figure 3所示。

AXI总线整理总结_第2张图片

Figure 2 读事务的结构图

AXI总线整理总结_第3张图片

Figure 3 写事务的结构图

2、AXI总线信号级描述

AXI总线和其他总线一样,具有很多的信号,其中包括全局信号、写地址通道信号、写数据通道信号、写响应通道信号、读地址通道信号、读数据通道信号、低功耗接口信号。本章的所有表都是以32位的数据总线、4位的写数据闸门、4位的ID段。

  1. 全局信号

信号

描述

ACLK

Clock source

全局时钟信号

ARESETn

Reset source

全局复位信号,低电平有效

  1. 写地址通道信号

    信号

描述

AWID[3:0]

主机

写地址ID,这个信号是写地址信号组的ID tag。

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、allocate attributes信息。

AWPROT[2:0]

主机

保护类型。

AWVALID

主机

写地址有效。

1 = 地址和控制信息有效

0 = 地址和控制信息无效

这个信号会一直保持,直到AWREADY变为高。

AWREADY

设备

写地址准备好。这个信号用来指明设备已经准备好接受地址和控制信息了。

1 = 设备准备好

0 =  设备没准备好

  1. 写数据通道信号

信号

描述

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 = 设备未就绪

  1. 写响应通道信号

信号

描述

BID[3:0]

设备

响应ID , 这个数值必须与AWID的数值匹配。

BRESP[1:0]

设备

写响应。这个信号指明写事务的状态。可能有的响应:OKAY、EXOKAY、SLVERR、DECERR。

BVALID

设备

写响应有效。

1 = 写响应有效

0 = 写响应无效

BREADY

主机

接受响应就绪。该信号表示主机已经能够接受响应信息。

1 = 主机就绪

0 = 主机未就绪

  1. 读地址通道信号

信号

描述

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 = 设备未就绪

  1. 读数据通道信号

信号

描述

RID[3:0]

设备

读ID tag。RID的数值必须与ARID的数值匹配。

RDATA[31:0]

设备

读数据。

RRESP[1:0]

设备

读响应。这个信号指明读传输的状态:OKAY、EXOKAY、SLVERR、DECERR。

RLAST

设备

读事务传送的最后一个数据。

RVALID

设备

读数据有效。

1 = 读数据有效。

0 = 读数据无效。

RREADY

主机

读数据就绪。

1 = 主机就绪

0 = 主机未就绪

  1. 低功耗接口信号

信号

描述

CSYSREQ

CLOCK controller

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

CSYSACK

外围设备

低功耗请求应答。

CACTIVE

外围设备

Clock active

1 = 外围设备时钟请求

0 = 外围设备时钟无请求

  1. 突发式读的时序图如下:

当地址出现在地址总线后,传输的数据将出现在读数据通道上。设备保持VALID为低直到读数据有效。为了表明一次突发式读写的完成,设备用RLAST信号来表示最后一个被传输的数据。

AXI总线整理总结_第4张图片

设备会在第一次突发式读完成后处理第二次突发式读数据。也就意味着,主机一开始传送了两个地址给设备。设备在完全处理完第一个地址的数据之后才开始处理第二个地址的数据。

AXI总线整理总结_第5张图片

  1. 突发式写时序图如下:

这一过程的开始时,主机发送地址和控制信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最后一个数据时,WLAST信号就变为高。当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成。

AXI总线整理总结_第6张图片

3、主机/设备之间的握手过程

全部5个通道使用相同的VALID/READY握手机制传输数据及控制信息。传输源产生VLAID信号来指明何时数据或控制信息有效。而目地源产生READY信号来指明已经准备好接受数据或控制信息。传输发生在VALID和READY信号同时为高的时候。VALID和READY信号的出现有三种关系。

AXI总线整理总结_第7张图片

在箭头处信息传输发生。

(2) READY先变高VALID后变高。时序图如下:

AXI总线整理总结_第8张图片

同样在箭头处信息传输发生。

(3) VALID和READY信号同时变高。时序图如下:

AXI总线整理总结_第9张图片

在这种情况下,信息传输立马发生,如图箭头处指明信息传输发生。

2、通道之间的关系

   地址、读、写和写响应通道之间的关系是灵活的。

   例如,写数据可以出现在接口上早于与其相关联的写地址。也有可能写数据与写地址在一个周期中出现。

   两种关系必须被保持:

  (1)读数据必须总是跟在与其数据相关联的地址之后。

  (2)写响应必须总是跟在与其相关联的写事务的最后出现。

3、通道握手信号之间的依赖性

   读事务握手依赖关系如图:

AXI总线整理总结_第10张图片

(1)设备可以在ARVALID出现的时候在给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。

(2)但是设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。

写事务握手依赖关系如图:

 AXI总线整理总结_第11张图片

(1)主机必须不能够等待设备先给出AWREADY或WREADY信号信号后再给出信号AWVALID或WVLAID。

(2)设备可以等待信号AWVALID或WVALID信号有效或者两个都有效之后再给出AWREADY信号。

(3)设备可以等待AWVALID或WVALID信号有效或者两个信号都有效之后再给出WREADY信号。

4、AXI协议时钟控制接口

1)低功耗时钟控制接口包括下面两个信号:

(1) 来自外围设备的信号,用于指明什么时候时钟使能能或者禁能。

(2) 两个握手信号用于系统时钟控制器请求退出或者进入低功耗状态。

2)时钟控制接口的一个主要信号时CACTIVE,外围设备用这个信号来指明请求时钟使能。外围设备置CACTIVE有效去请求时钟,系统时钟控制器必须马上使能时钟。如果外围设备将CACTIVE置为无效,则系统时钟控制器将自己决定是否使能或者禁能外围设备时钟。

3)AXI协议提供双线 request/acknowledge 握手来支持请求:

(1)CSYSREQ  当外围设备请求进入低功耗状态时,系统时钟控制器将CSYSREQ置低,平时CSYSREQ都是置高的。

(2)CSYSACK  外围设备用CSYSACK信号作为进入低功耗状态和离开低功耗状态的应答信号。

下面是CSYSREQ和CSYSACK信号之间的时序图:

AXI总线整理总结_第12张图片

系统时钟控制器在T1时刻发出请求,外围设备在T2时刻给予应答,此时进入低功耗状态。在T3时刻,CSYSREQ变高,请求离开低功耗状态,在T4时刻得到应答,此时离开低功耗状态进入正常模式。

4)外围设备可以选择接受请求也可以选择不接受请求。主要通过信号CACTIVE来决定。

、既可以通过系统也可以通过外围设备来退出低功耗状态。只要置信号CACTIVE和CSYSREQ这两个信号中的一个为高就可以退出低功耗模式。

而系统可以通过置CSYSREQ为高来退出低功耗模式。

5)时钟控制框图如下:

AXI总线整理总结_第13张图片

三、Roadmap of development

       由于AXI是ARM公司的总线协议,所以他的产生和发展大部分都是ARM公司完成的。大部分论文都是将AXI应用到不同方向或者应用到特定场景而进行了一些修改。我整理了一些时间节点,具体如下图所示。

AXI总线整理总结_第14张图片

 

四、Example

       作为AMBA总线的一部分,AXI总线理所当然的应用到了ARM的产品上。然而除了ARM的产品,比如ARM A7等产品,赛灵思公司(Xilinx)推出的行业第一个可扩展处理平台Zynq系列中也有AXI总线。

    ZYNQ拥有ARM+FPGA这个神奇的架构,其中ARM和FPGA直接的通信就是通过AXI进行的。

AXI总线整理总结_第15张图片

 

 

你可能感兴趣的:(学习)