AMBA-AXI4

目录

1.AXI 协议概述

1.1 AXI协议特性

1.2 AXI协议的关键特性

2.AXI 架构概述

2.1 AXI协议的5个独立通道

2.2 传输特性

2.3 写数据示例

2.4 通道定义

2.5 接口与互连

3.信道数据传输

3.1 AXI握手原理

读写握手规则

3.2 数据写入(单个、多个)

单个数据写入

多个数据写入

3.3 数据读取(单个、多个)

单个数据读取

多个数据读取

3.4 读事务与写事务的区别

活动事务


1.AXI 协议概述

        AXI(高级可扩展接口)协议是一种广泛应用于高性能、低延迟的通信协议,常用于复杂的片上系统(SoC)设计中。AXI协议支持高性能、高频率的系统设计,主要用于管理器(Manager)和从属设备(Subordinate)之间的通信(例如,处理器和外设或内存之间的通信)。

        AXI4.0-lite主要用于内核和外设寄存器之间的通信。
        AXI4.0-full主要用于往DDR或者OCM中写入大量数据时使用。
        AXI_stream主要用于往FIFO等没有地址的数据缓冲区传送大量数据时使用。

具有各种处理器和功能块的 SoC 的示例:

        上图显示了使用 AXI 的所有连接,可以看到 AXI3 和 AXI4 在同一个 SoC 中使用,这是常见的做法,在这种情况下,互连执行不同 AXI 接口之间的协议转换。

1.1 AXI协议特性

特性描述
高带宽与低延迟AXI协议设计用于高带宽和低延迟的应用,适合实时应用和内存密集型操作。
高频率操作支持高频率操作,无需复杂的桥接器,简化设计并减少延迟。
接口兼容性适用于各种设备的接口需求,包括高性能和低功耗设备。
适用于内存控制器特别适合用于具有高初始访问延迟的内存控制器,如DRAM控制器。
灵活的互联架构允许设计灵活的互联架构,适应不同的系统需求。
向后兼容性向后兼容旧的AMBA接口(如AHB和APB),便于与传统系统集成。

1.2 AXI协议的关键特性

特性描述
地址/控制和数据阶段分离将地址/控制阶段和数据阶段分开,提高数据事务管理效率,减少潜在冲突。
支持非对齐数据传输通过字节使能(Byte Strobes)支持非对齐数据传输,能高效处理数据未对齐的情况。
基于突发(Burst)事务使用突发事务,只发出起始地址,系统自动处理剩余传输,减少重复的地址信号传输,提高效率。
分离的读写数据通道独立的读写数据通道,支持直接内存访问(DMA)
支持多地址发出允许同时发出多个地址,提升总线利用率。
支持乱序事务完成支持乱序事务完成,事务可以按任意顺序完成,提供灵活性和效率。
易于增加寄存器阶段以实现时序收敛允许通过增加寄存器阶段来优化时序,帮助设计收敛,确保系统稳定性。

AXI协议特别适用于高性能和低延迟的系统设计,具有良好的扩展性和兼容性。

2.AXI 架构概述

        AXI协议定义了5个独立的通道,每个通道用于不同的数据传输和控制信息传递。这些通道分别用于写请求、写数据、写响应、读请求和读数据

2.1 AXI协议的5个独立通道

通道信号名称的前缀作用
写请求通道AW传递控制信息,描述待传输数据的性质。
写数据通道W从管理器(Manager)向从属设备(Subordinate)传输数据。
写响应通道B从属设备信号表示写操作完成,告知管理器(Manager)。
读请求通道AR传递读请求,包括地址信息。
读数据通道R从属设备向管理器返回数据。

AXI协议中的数据传输由请求通道(Request Channel)和数据通道(Data Channel)组成:

  1. 请求通道:携带控制信息,描述数据传输的性质。请求通道用于定义事务的基本结构,如地址、类型(读或写)和其它控制信息。

  2. 数据通道:用于实际的数据传输,分为写数据通道和读数据通道:

    • 写数据通道(W):用于将数据从管理器传输到从属设备。在写事务中,从属设备使用写响应通道(B)向管理器指示数据传输是否完成。
    • 读数据通道(R):用于将数据从从属设备传输到管理器。

2.2 传输特性

  • 地址优先:AXI允许地址信息可以先于实际数据传输。这意味着,管理器可以提前向从属设备提供地址信息,而数据传输可以在稍后进行,从而提高系统的灵活性和效率。

  • 支持多个待处理事务:AXI协议支持多个事务同时进行,即使它们尚未完成。这对于需要高并发和高吞吐量的系统非常重要。

  • 支持乱序完成:AXI协议允许事务的乱序完成。这意味着事务不必按照发起的顺序完成,系统可以根据各个事务的准备情况来完成它们。这种机制提高了系统的灵活性和效率,尤其在处理多个并发事务时。

2.3 写数据示例

在一个写事务中,AXI协议使用以下三个通道:

  1. 写请求通道(AW):发送写请求并传递地址、控制信息等。
  2. 写数据通道(W):传输写数据,从管理器到从属设备。
  3. 写响应通道(B):从属设备发送响应信号,告知管理器写操作是否成功完成。

 图A1.1展示了写事务如何使用写请求、写数据和写响应通道。

 图A1.2展示了读事务如何使用读请求和读数据通道。

2.4 通道定义

        每个独立的通道由一组信息信号以及 VALIDREADY 信号组成,这些信号提供了一个双向握手机制

  • 信息源使用 VALID 信号来表示何时有效的地址、数据或控制信息可用。
  • 目标使用 READY 信号来表示何时可以接收信息。

        读数据通道和写数据通道都包括一个 LAST 信号,用于指示事务中最后一个数据项的传输。

AXI协议数据传输相关信号

信号来源介绍
ACLKSystem时钟信号
ARESETnSystem复位信号
写地址通道:载事务所需的所有地址和控制信息。
AWIDMaster写地址ID
AWADDRMaster写地址,突发首地址
AWLEN[7:0]Master写突发次数
AWSIZE[2:0]Master写突发单次字节数(0~7分别表示8bits, 16bits, 32bits, 64bits, 128bits, 256bits, 512bits, 1024bits)
AWBURST[1:0]Master写突发类型
AWVALIDMaster写突发有效信号
AWREADYSlave从机是否准备好
写数据通道
WIDMaster写数据ID
WDATAMaster写数据(可以是 8、16、32、64、128、256、512 或 1024 位宽)
WSTRBMaster写数据有效的字节,掩码作用
WLASTMaster表示写的最后一个数据
WVALIDMaster写数据有效
WREADYSlave从机是否准备好
写响应通道
BIDSlave写响应ID
BVALIDSlave写响应有效
BRESPSlave写响应,表明写事务的状态(OKAY, EXOKAY, SLVERR, DECERR)
BREADYMaster主机是否准备接收写响应
读地址通道:载事务所需的所有地址和控制信息。
ARIDMaster读地址ID
ARADDRMaster读地址,突发首地址
ARLEN[7:0]Master读突发次数
ARSIZE[2:0]Master读突发单次字节数(0~7分别表示8bits, 16bits, 32bits, 64bits, 128bits, 256bits, 512bits, 1024bits)
ARBURST[1:0]Master读突发类型
ARVALIDMaster读突发有效信号
ARREADYSlave从机是否准备好
读数据通道
RIDMaster读地址ID
RDATAMaster读数据(可以是 8、16、32、64、128、256、512 或 1024 位宽)
RRESPMaster读响应
RLASTSlave表示读的最后一个数据
RVALIDSlave读数据有效
RREADYMaster主机是否准备接收读数据

备注说明:

  1. 握手信号:所有通道都有一个VALID和READY信号,形成双向握手机制,确保数据传输有效且同步。
  2. BRESP信号:用于表示写事务的响应状态。常见响应:
    • OKAY:操作成功。
    • EXOKAY:扩展成功,表示操作完成并且附加条件满足。
    • SLVERR:从设备错误,表示发生了从设备错误。
    • DECERR:解码错误,表示地址无法解析或其他解码问题。

        写数据通道:

        写数据通道承载从管理器到从属设备的写数据,并包括:字节线时钟信号:每 8 位数据对应一个字节线时钟信号,指示哪些字节的数据有效。

        写数据通道的信息始终被视为缓冲的,这样管理器可以执行写事务,而无需从属设备确认之前的写事务。

        写响应通道:

        从属设备使用写响应通道来响应写事务。所有写事务都需要在写响应通道上进行完成信号的传输。如图 A1.1 所示,完成信号仅针对完整事务发出,而不是每个数据传输。

2.5 接口与互连

一个典型的系统由多个管理器(Manager)和从属设备(Subordinate)组成,这些设备通过某种形式的互连连接在一起,如图A1.3所示。

3.信道数据传输

3.1 AXI握手原理

        AXI4 协议定义了五个不同的信道,所有这些信道都共享相同的握手机制,基于 VALIDREADY 信号,这种握手机制不是异步的,它要求在时钟的上升沿完成握手。

  • VALID 信号由源端传输到目的端,表示信息有效并已准备好。
  • READY 信号由目的端传输到源端,表示目的端已经准备好接受信息。

        源端和目的端的角色根据所使用的通道而定。对于 Read Address 信道,Manager 是源端,而对于 Read Data 信道,Manager 是目的端。

  • 源端 使用 VALID 信号来表示信息何时有效。当源端传输有效信息时,VALID 信号会被激活并保持高电平,直到目的端接受该信息为止。一直保持激活的信号称为粘滞信号(sticky signal)。
  • 目的端 使用 READY 信号来表示它何时能够接受信息,READY 信号从目的端传回源端。

传输与事务的区别,AXI 协议区分了传输事务

  • 传输(Transfer):是单一的信息交换,涉及一个 VALID 和 READY 的握手。
  • 事务(Transaction)是一个完整的传输序列,包含一个地址传输、一个或多个数据传输,对于写事务,还包括一个响应传输。

通道握手示例

示例 1

此示例的事件序列如下:

  • 在时钟周期 2,VALID 信号被激活,表示信息通道上的数据有效。
  • 在时钟周期 3,READY 信号被激活。
  • 握手在时钟周期 4 的上升沿完成,因为此时 VALIDREADY 信号都已激活。

示例 2

此示例的事件序列如下:

  • 在时钟周期 1,READY 信号被激活。
  • 在时钟周期 3,VALID 信号才被激活。
  • 握手在时钟周期 4 的上升沿完成,因为此时 VALIDREADY 信号都已激活。

示例 3

此示例的事件序列如下:

  • 在时钟周期 3,VALIDREADY 信号都被激活。
  • 握手在时钟周期 4 的上升沿完成,因为此时 VALIDREADY 信号都已激活。

在这三个示例中,信息在 VALIDREADY 信号在时钟上升沿激活时通过信道传递。

读写握手规则

读和写的握手必须遵守以下规则:

  • 源端 在断言 VALID 信号之前,不能等待 READY 信号被激活。
  • 目的端 可以等待 VALID 信号被激活后再激活 READY 信号。

这些规则意味着 READY 信号可以在 VALID 信号之前、之后,或与 VALID 信号同时激活。

3.2 数据写入(单个、多个)

单个数据写入

单个数据写入涉及以下通道:写地址(AW)、写数据(W)、写响应(B

a、首先,写地址(AW)通道进行握手,如下图所示,这个握手过程是管理器将写地址传递给从属设备的过程。握手的事件顺序如下:

  1. 管理器在第2个时钟周期将地址放置到 AWADDR 上,并激活 AWVALID
  2. 从属设备在第3个时钟周期断言 AWREADY,表示它能够接收地址值。
  3. 握手在第4个时钟周期的上升沿完成。

b、在完成第一次握手后,管理器通过写数据(W)通道将数据传输给从属设备。

  1. 从属设备在第n个时钟周期等待数据,并将 WREADY 设置为高电平。
  2. 管理器在第n+2个时钟周期将数据放置到 WDATA 总线上,并激活 WVALID
  3. 握手在第n+3个时钟周期的上升沿完成。

c、最后,从属设备使用写响应(B)通道来确认写事务完成,一旦所有 WDATA 数据被接收,事务就完成了。写响应的事件顺序如下:

  1. 管理器激活 BREADY 信号。
  2. 从属设备驱动 BRESP 信号,以指示写事务的成功或失败,并激活 BVALID 信号。
多个数据写入

        AXI 是一个基于突发的协议,这意味着在单个事务中可以传输多个数据。我们可以通过 AW 通道传输一个地址,以传输多个数据,同时还包含突发宽度和长度信息。

以下图示展示了多个数据传输的示例:

在这种情况下,AW 通道表示三次传输的序列,而在 W 通道上,我们看到三次数据传输。

  • 管理器 WLAST 置高,表示最终的 WDATA这意味着从属设备可以通过计算数据传输的次数或直接监控 WLAST 来判断最后一项数据。
  • 一旦所有的 WDATA 数据传输都完成,从属设备会在 B 通道上给出一个单一的 BRESP 值。一个 BRESP 覆盖整个突发传输。如果从属设备认为某些数据传输中出现错误,它必须等到整个突发完成后,才会通知管理器发生了错误。

3.3 数据读取(单个、多个)

单个数据读取

        读取单个数据涉及以下通道:读地址(AR)、读数据(R

读地址(AR)通道上的握手过程顺序如下:

  1. 管理器在第2个时钟周期通过 ARADDR 向从属设备传送读地址,并断言 ARVALID
  2. 从属设备在第3个时钟周期断言 ARREADY,表示它已准备好接收地址值。
  3. 握手在第4个时钟周期的上升沿完成。

接下来,在 R 通道上,从属设备将数据传输给管理器,数据传输的握手过程如下:

  1. 管理器在第n个时钟周期通过激活 RREADY 表示它准备好接收数据。
  2. 从属设备在第n+2个时钟周期获取数据并将其放置在 RDATA 上。因为这是单次数据事务,从属设备还会将 RLAST 信号置高。同时,从属设备使用 RRRESP 来指示读事务的成功或失败,并激活 RVALID
  3. 由于 RREADY 已经由管理器激活,握手在第n+3个时钟周期的上升沿完成。
多个数据读取

        AXI 协议还允许在同一事务中进行多数据传输的读突发。这类似于在写事务:多个数据项 中描述的写突发。

以下图示展示了一个突发读传输的示例:

        在此示例中,在 AR 通道上传输一个地址来传输多个数据项,并附带了突发宽度和长度信息。这里,AR 通道表示一个三次传输的序列,因此在 R 通道上,我们看到从属设备向管理器传送三次数据传输。

        在 R 通道上,从属设备将数据传输给管理器。在这个例子中,管理器通过将 RREADY 设置为高电平来表示它正在等待数据。从属设备则对每次传输驱动有效的 RDATA,并断言 RVALID

3.4 读事务与写事务的区别

        一个区别在于,对于读事务,每次传输都会有一个 RRRESP 响应。这是因为在写事务中,从属设备必须通过 B 通道作为单独的传输发送响应,而在读事务中,从属设备使用相同的通道将数据返回给管理器,并指示读操作的状态。

        如果事务中的任何传输发生错误,必须完成整个事务的指示长度。没有所谓的提前结束突发的机制。

活动事务

        活动事务,也称为未完成事务,是指尚未完全完成的数据传输事务。活动读事务是指已经传输了读地址,但当前时刻最后一个读数据尚未传输的事务。

        对于读事务,数据必须在地址之后传输,因此可以简单地通过地址的传输作为事务开始的参考点。如下图所示:

        对于写事务,数据可以在地址之后传输,但也允许先传输写数据。以下图所示为活动写事务的两种情况:

  1. 写地址已传输,但写响应尚未传输:

  2. 先行写数据已传输,但写响应尚未传输:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值