AMBA3.0 AXI总线入门

在介绍AXI 总线前,我们先说下总线、接口和协议在计算机硬件中的具体定义

  1. 总线(Bus
    • 在计算机体系结构中,总线指代连接多个设备的物理介质,它们连接不同的硬件组件,允许它们之间传输数据和信号。总线分为数据总线(传输数据)、地址总线(传输内存地址)、控制总线(传输控制信号)等,如以太网总线。
  2. 接口(Interface
    • 在计算机硬件中,接口是硬件组件之间的连接点,允许它们交换数据和信号。如USB接口允许外部设备与计算机连接。
  3. 协议(Protocol
    • 协议是一组规则和标准,用于定义不同设备或系统之间如何通信。协议规定了数据如何被格式化、传输和解析。在计算机网络中,协议定义了数据包的格式、错误检测和纠正机制、数据传输的顺序等。如TCP/IP协议是互联网通信的基础。

AXI协议概述

AXI4总线协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。AXI协议定位于高性能、高频率的系统级设计,非常适合于高速亚深微米集成电路的互联,能够满足超高性能和复杂的片上系统(SoC)设计的需求。AXI4总线协议规定的数据传输方式是猝发式的。它的地址/控制和数据相位是分离的,支持不对齐的数据传输。在突发传输中,使用首字节选通方式,只需要首地址,在独立的读写数据通道,采用独立的地址、控制和数据周期进行数据传输,支持非对齐方式的数据传输,能够发出多个未解析的地址,从而完成无序的数据传输交易,并更加容易并行时序收敛。

AXI 技术丰富了现有的AMBA 标准内容,常用的AXI总线有:AXI4、 AXI_Lite、AXI_Stream。

AXI4:主要面向高性能地址映射通信的需求,允许最大256轮的数据突发传输;

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

AXI4-Stream:面向高速流数据传输,去掉了地址项,允许无限制的数据突发传输规模。

AXI4总线分为主、从两端,两者间可以连续的进行通信。点到点的总线结构是AXI总线的核心特性。下图为AXI总线连接基本示意图:

 

除此之外,AXI总线特性如下:

  • 地址/控制操作与数据操作相位分离。
  • Byte Strobe信号支持非对齐传输。
  • 每次突发传输只需要发送传输的首地址。
  • 分离的读、写通道支持低成本DMA。
  • 支持Outstanding地址发送功能。
  • 支持乱序传输。
  • 方便集成寄存器Stage以满足时序要求。

 AXI协议构架

    • AXI的基本传输模式为突发传输。
    • 五个数据通道(Channel),相当于独立的五条总线。
    • 每条通道都具有固定的方向性。
    • 通道以异步方式进行传输,包括了独立的双向握手信号(Valid和Ready)。
    • 信源通过Valid信号指示数据或控制信息在该通道有效,信宿通过Ready信号指示该数据已经被获取。
    • 读操作包括两个通道-AR通道和R通道。
    • 写操作包括三个通道-AW通道、W通道和B通道。

AXI总线各通道示意图如下:

 

    • 每次传输的地址及控制信息通过地址通道(AR、AW)传输,用以指示该次传输的数据的属性。
    • Master通过写数据通道(W)将数据传输给Slave,Slave通过读数据通道(R)将数据传输给Master。
    • 写操作中,AXI提供一个额外的响应通道,该通道和写数据通道方向相反,Slave通过该通道通知Master该次写操作是否正确完成。
    • 读、写数据通道(R、W)通过Last信号指示当前传输中的最后一个有效数据。
    • 读写操作拥有独立的地址通道,用以传输每次传输的地址和控制信号,通道特性包括:1-16的定长Burst传输;8-1024 bits的传输位宽;卷绕、递增或FIFO传输模式;原子操作(包括排他性传输或Lock传输);系统级Cache和Buffer控制;安全及特权模式控制。
    • 读数据通道用以传输读取的数据以及读应答信号给Master,通道特性包括:8/16/32/64/128/256/512/1024的可配置数据位宽;读应答信号指示每拍数据传输完成状况。
    • 写数据通道用以传输写数据给Slave,通道特性包括: 8/16/32/64/128/256/512/1024的可配置数据位宽;Strobe信号指示数据通道中有效Byte位。
    • 写应答通道提供给Slave一个对写传输进行应答的通道,通道特性包括:所有写传输都用该通道传递写完成信息;该通道的应答信息是基于每次Burst进行的而不是每拍数据传输进行。

AXI协议中各通道信号

AXI总线信号按功能通道可划分为:Globe Signals、AW Signals、AR Signals、W Signals、R Signals、B Signals、Miscellaneous Signals。各部分所包含的具体信号如下列表所示:

表1 AXI总线信号

Globe Signals:

Signal

Source

ACLK

System

ARESETn

System

AW Signals:

Signal

Source

AWID[31:0]

Master

AWADDR[63:0]

Master

AWLEN[3:0]

Master

AWSIZE[2:0]

Master

AWBURST[1:0]

Master

AWLOCK

Master

AWCACHE[3:0]

Master

AWPROT

Master

AWVALID

Master

AWREADY

Slave

AR Signals:

Signal

Source

ARID[31:0]

Master

ARADDR[63:0]

Master

ARLEN[3:0]

Master

ARSIZE[2:0]

Master

ARBURST[1:0]

Master

ARLOCK

Master

ARCACHE[3:0]

Master

ARPROT

Master

ARVALID

Master

ARREADY

Slave

W Signals:

Signal

Source

WID[31:0]

Master

WDATA[1023:0]

Master

WSTRB[127:0]

Master

WLAST

Master

WVALID

Master

WREADY

Slave

R Signals:

Signal

Source

RID[31:0]

Slave

RDATA[63:0]

Slave

RRESP[1:0]

Slave

RLAST

Slave

RVALID

Slave

RREADY

Master

B Signals:

Signal

Source

BID[31:0]

Slave

BRESP[1:0]

Slave

BVALID

Slave

BREADY

Slave

Miscellaneous Signals:

Signal

Source

CSYSREQ

System

CSYSACK

Slave/Master

CACTIVE

Slave/Master

通道握手及其各通道之间的相互关系

AXI中利用通道握手机制来完成总线的使用,握手通道特性如下:

  • 信源通过置位Valid信号指示其发出的信息有效,信宿则通过置位Ready信号指示其可以接收信源发出的数据。
    • 一次正确传输只在Valid和Ready都有效的时钟上升沿发生。
    • AXI协议的通道是具有方向性。每一条通道Valid信号由信源控制,Ready信号由信宿控制,且信宿只控制Ready信号。
    • Valid信号和Ready信号默认状态配置为低电平或高电平均为合法。
    • 五条通道的握手模式完全相同,使用信号Valid与Ready的握手完成信息的交互。这种双向的控制机制可以使Master和Slave都能够控制传输速率。
    • 对于每一个AXI接口,Ready信号由当前Slave产生,与下一级的Slave无关;Valid信号由当前Master产生,与上一级Master无关。

AXI总线中存在五条通道,各通道之间的信息是各自独立的,但是各通道之间依然遵循一定的依赖关系,其中必须遵循的有两条:

1、每次读操作,读数据通道必须在相应的读地址通道之后激活;

2、每次写应答通道必须在写数据通道的最后一个数据之后激活。

读地址通道和读数据通道的Valid和Ready信号先后顺序没有要求。ARM推荐将Ready信号先于Valid信号置位(即Ready信号默认值为高电平)。如下图所示的AXI读操作中各相关通道信号之间的关系(单箭头表示没有先后顺序要求,双箭头表示必须遵循的先后顺序):

除以上所说,还有几方面需要注意:

  • 通道中的Ready和Valid信号是基于当前通道的,和下一级或上一级通道无关。
  • 一次读或写操作的应答信息是基于最初的信源和最后的信宿的(也可能Cache或Buffer),该信息可能跨越多级的通道。
  • 读操作和写操作在AXI协议上的Semaphore操作上有相关。

Burst Feature、Atomic Feature、Ordering(流水线操作)

Burst Feature

AXI是基于Burst传输的协议(AXI不支持不定长Burst),且Master与Slave都不可以中断Burst传输,其传输的属性及首地址都通过地址通道发送,其中Burst操作不可以跨越4KB边界(协议中并没有给出怎样处理超过4KB边界操作的方法,如果使用拆分,则可能对Interconnect时序造成影响,为避免此情况,最好由Master保证这一边界界限。)

AXI基于Burst传输的基本读写时序Read Burst如下:

 AXI基于Burst传输的基本读写时序Write Burst如下:

Burst传输长度由ARLEN或AWLEN控制,其长度为AR(W)LEN+1,Burst传输位宽通过AWSIZE或ARSIZE控制,最大位宽1024bits。

Burst传输模式包括FIX、INCR或WRAP,其中WRAP模式时Burst长度必须为2、4、8、或16,Burst传输模式编码如下图所示:

Burst操作通过读数据通道和写应答通道来实现操作的Response,其中读数据通道的Response对应于读操作的每一个数,写应答通道的Response对应于一次写Burst。应答Response的类型如下,AXI读写应答信号编码:

Atomic Feature

Burst传输通过AWLOCK或ARLOCK信号传输原子操作,支持的原子操作包括排他式(Exclusive)传输及Lock传输,原子操作控制信号编码:

排他式(Exclusive)传输允许Semaphore操作在不锁定总线的情况下完成,此过程包括Master对某个地址的一次读和一次写,如果在Master的读操作和写操作之间没有其他Master访问该地址空间,则操作正确完成。排他式(Exclusive)传输的一个优势在于——进行Semaphore操作的同时不对总线延迟和总线带宽带来任何影响。

需要注意的是,有排他式传输进行时,如果Slave不支持排他式传输或者传输被其他Master插入,则Slave返回OKAY信号,而不是EXOKAY;有排他式传输操作时,Slave需要一个Monitor记录读操作的ID及地址,该Monitor在新一次排他式读操作或其他地址的排他式读操作发送时被更新,排他式操作正确完成时被复位。除此之外,排他式传输在诸多方面还有一些限制:

  1. 读、写操作的长度和位宽必须相同;
  2. 读、写地址必须相同且对齐;
  3. ARID和AWID必须相同;
  4. 读、写控制信号必须相同;
  5. 操作的Byte总宽度必须为2的指数倍;
  6. 最大Byte宽度为128 bytes。
  7. AR(W)CACHE信号必须符合原子操作的规范。

Lock传输同样允许Semaphore操作锁定Slave,操作由Lock操作开始,由Unlock操作结束,在此过程中,Interconnect禁止其他Master访问Slave直到本次传输结束,也正因为此,Lock传输对Interconnect的性能有较大影响,Lock传输只推荐应用在支持Legacy Devices方面。在Lock传输过程中,Master必须遵循以下几方面要素:

1)、Lock操作发起之前没有其他等待应答的Outstanding操作;

2)、发出最后的Unlock操作前的Lock操作都必须完成;

3)、最后的Unlock操作完成前不能有下一次操作发出。

4)、Lock操作中ID号必须相同。Slave需要保证Lock操作符合Cacheable、Bufferable操作规范。

在进行Lock操作时,ARM推荐:

1)、不跨越4KB边界;

2)、一次Lock操作只包含两次传输。

Ordering(流水线操作):

在诸如AHB总线等多数协议里面,数据的传送是以Ordering的形式进行的,即数据的传送与对应地址是按照主设备发送顺序进行的,当前操作完成后才能进行下一次操作。较之这些协议,AXI协议增加了一些新的内容,支持Out-of-Order传输以及多地址Outstanding操作(即当前传输未完成时可发起下一次或下几次的传输),这些协议特性决定了其有利于系统性能的提高,特别是对存储器的访问。需要注意的是,简单的Master、Slave在大多数条件下,Out-of-Order、Outstanding操作并没有太多需求,此时可以按顺序传送数据。

对于Master、Slave而言,AXI协议中都存在Outstanding的深度(大于等于1),表示能够同时支持多少个Active操作。理论上,AXI协议支持无限深度的Outstanding结构,通常深度为2或3时有较好的效率。当Master不支持Outstanding时(即Outstanding的深度为1),只有在当前操作完成时才能够接收下一次数据(置位下一次AW(R)READY)。在AXI协议中,支持Outstanding则意味着可能支持Out-of-Order传输,但并不一定支持;相反,如果支持Out-of-Order则意味着一定支持Outstanding操作,且Out-of-Order深度小于或等于Outstanding的深度。AXI协议中的Out-of-Order存在三种情况:读数据乱序、写数据间插、读和写操作交互。

AXI通过ID号进行Ordering控制,在AXI协议里总共定义了5个ID,分别为:AWID、ARID、WID、RID、BID,它们的作用分别为:

Master的ID号与Slave的ID号位宽不同,Interconnect会根据Master数目对Slave增宽ID号。ARM推荐Master的ID位宽为4bits,Slave的ID位宽为8bits,即Interconnect增加的位宽为4bits。

我们可以通过对各个ID及其相关协议信号的控制来完成协议里面规定的Outstanding、Out-of-Order的操作。在读写操作中,Interconnect记录的时Master的ID号(同时记录隐藏的Slave ID),同一个ID号的传输必须以Master的方式进行,不同ID号的传输允许乱序。

在读操作中,数据乱序是指不同的ID号的读传输请求允许读数据以乱序返回,乱序包括传输的乱序与读数据的间插,读数据排序遵循以下规则:

  • 对同一个ID号的读传输的排序,由Interconnect进行保证。Interconnect将同一ID的Active传输记录在Table中,只允许Slave返回最靠前的传输,Stall靠后的传输。
  • Interconnect的读地址通道Table是基于ID记录的。
  • 当然,Interconnect的Table大小是有限的,因此Interconnect可能无法保证Master的全部Outstanding深度。

    在写操作中ID,因为AXI协议的不完备,比如:读写可能死锁,支持写间插的Master可能死锁等,写数据的乱序需要某些特定的规则来保证。写数据乱序包括传输乱序和写数据的间插,写数据排序遵循以下规则:

  • 写操作时,AXI协议不支持传输乱序,即对一个Slave,写数据的首数据顺序必须和写地址的顺序保持一致,无论ID号怎样。
  • 对于支持Outstanding但是不支持写间插(Interleave)的Slave,必须预先通知Master和Interconnect,由Master和Interconnect来保证无论传输ID号是否相同,Slave收到的写数据顺序和其收到的写地址的顺序必须相同。Master必须保证即使其ID号不同,发出的写数据也是顺序的;而Interconnect则必须附加逻辑Table进行判定。
  • Interconnect的写地址通道Table是基于Slave记录的。
  • 对于支持写间插的Slave,Interconnect必须知道其间插深度,然后在深度限制下允许写入Slave的数据被间插,该间插可能是Master本身就发出的间插数据,也可能是多个写Master相应速率不同进行的间插。写间插可以提高系统性能,减少总线的Stall。

大多数Slave不支持写间插,即间插深度为1。但是为防止系统死锁,Slave最好拥有大于1的间插深度,因为Slave是不可能为了改变数据顺序而Stall接口的。

附加控制信号

Burst传输通过AWCACHE或ARCACHE信号传输系统Cache/Buffer信息,包括传输是否为Bufferable、Cacheable、Read Allocate或Write Allocate。

AR(W)CACHE[3:0]有效位(高电平)及对应属性如下表:

表2 AR(W)CACHE[3:0]有效位及对应属性

AR(W)CACHE[3:0]有效位

对应属性

AR(W)CACHE[0]

Bufferable

AR(W)CACHE[1]

Cacheable

AR(W)CACHE[2]

Read Allocate

AR(W)CACHE[3]

Write Allocate

Burst传输通过AWPROT或ARPROT信号传输系统Secure/Privileged信息,AW(R)PROT[0]指示传输是否为Privileged, AW(R)PROT[1]指示传输是否为Secure,AW(R)PROT[2]指示传输是否为指令操作。

非对齐操作、低功耗接口

AXI支持两种非对齐操作:一是写Strobe方式,另一种是地址非对称方式。Strobe信号指示写数据中有效的Byte位置,置1表示该位写数据有效。地址非对称方式遵循协议规定:比如,一个32位数据(4Byte),如果开始地址位为0x1002则表示是非对齐方式。(Typically, each data transfer is aligned to the size of the transfer.)

低功耗接口位AXI扩展协议,支持Master或Slave模块以握手的方式和时钟控制模块交互,达到控制时钟模块时钟降低功耗的目的。接口时序如下图所示:

AXI Bridge

在具体的项目开发中总会遇到不同总线之间转接的问题,比如AXI2AHB、AXI2APB等,典型的AXI总线接口应用如下图:

林林总总的总线转接大致可以分为三个方面:

1、高性能总线到低性能总线的桥,包括AXI2AHB、AXI2APB、AXI2Magenta等。

2、低性能总线到高性能总线的桥,包括AHB2AXI、APB2AXI、Magenta2AXI等。

3、同等性能总线的桥,包括AXI2OCP、OCP2AXI等。

高性能到低性能总线的桥设计最为复杂,而对双方的性能都会有影响,比如:AXI2AHB只支持深度为1的Outstanding,除此还有:

    1. AHB的读或写操作(NONSEQ)都是在AVALID有效后延迟一定周期产生。
    2. 对于AXI Master的WVALID和RREADY信号延迟,可通过在Burst中插入BUSY处理。
    3. 附加一定逻辑支持排他式(Exclusive)操作。
    4. WRAP2和FIFO的Burst拆成Single处理。

低性能到高性能总线桥以及同等性能总线的桥设计较为简单,对双方面的影响较小。

AXI vs AHB

随着SoC设计复杂性的增加和CPU处理能力的提升,总线结构会成为系统性能的瓶颈。在多处理器SoC设计中,这种瓶颈现象更加明显。

随着下一代高性能SoC设计的需要,比如多处理器核、多重存储器结构、DMA控制器等,AMBA需要新一代灵活性更强的总线结构,这就是AMBA 3.0 AXI总线。

表3 AXI与AHB的性能对比

总线名称

AMBA 3 AXI

AMBA 2 AHB

数据线宽度(位)

8,16,32,64,128,256,512,1024

32, 64, 128, 256

地址线宽度(位)

32

32

体系结构

多主/从设备

握手机制

多主/从设备

仲裁机制

数据线协议

支持多级流水/分裂传输

支持猝发传输

支持乱序访问

字节/半字/字

支持一级流水/分裂传输

支持猝发传输

字节/半字/字

数据对齐方式

大端/小端对齐

支持非对齐操作

大端/小端对齐

不支持非对齐操作

时序

同步

同步

互接

多路

多路

支持互接

不支持三态总线

不支持三态总线

AXI能够使SoC以更小的面积、更低的功耗,获得更加优异的性能。AXI获得如此优异性能的一个主要原因,就是它的单向通道体系结构。单向通道体系结构使得片上的信息流只以单方向传输,减少了延时。

AXI总线是一种多通道传输总线,将地址、读数据、写数据、握手信号在不同的通道中发送,不同的访问之间顺序可以打乱,用BUSID来表示各个访问的归属。主设备在没有得到返回数据的情况下可发出多个读写操作。读回的数据顺序可以被打乱,同时还支持非对齐数据访问。

AXI总线还定义了在进出低功耗节电模式前后的握手协议。规定如何通知进入低功耗模式,何时关断时钟,何时开启时钟,如何退出低功耗模式。这使得所有IP在进行功耗控制的设计时,有据可依,容易集成在统一的系统中。

新的高性能AXI协议技术性能新的特点主要包括:

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

接下来一个章节将会继续基于FPGA 进行AXI 接口开发。

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值