AMBA AXI 协议

1.1 AXI 协议简介

AMBA AXI 协议以高性能,高频系统设计为目标,提供了很多适合高速亚微型系统 互连的特征。 最新的 AMBA 接口的目标是:

  • 适合高带宽、低延迟的设计
  • 不使用复杂桥的情况下能够进行高频的操作
  • 适应多部件的接口要求
  • 适合高初始访问延迟的访问控制器
  • 为互联结构实现提供灵活性
  • 后向兼容现存的 AHB 和 APB 接口

AXI 协议的关键特征有:

  • 分离的地址/控制和数据通道
  • 采用字节选通的方式支持不对齐数据的传输
  • 基于 burst 交易的数据传输,主机只需提供首地址
  • 分离的读写数据通道,能支持低功耗的 DMA
  • 支持 outstanding 交易
  • 支持乱序交易
  • 易于通过添加寄存器达到时序收敛

除了数据传输协议,AXI 协议还提供可选扩展支持低功耗操作。

1.2 通道结构

AXI 协议是基于 burst 的,每个交易都包括一些地址和控制信息描述了需要传输的 数据的特征,这些地址和控制信息被放在地址通道上。数据在主设备和从设备之间传输, 主设备通过写数据通道写数据到从设备,通过读数据通道从从设备读取数据。写交易中, 所有数据流从主设备流向从设备,AXI 协议提供一个额外的写响应通道,用于从设备通 知主设备写交易完成。

AXI 协议可以实现:

  • 在实际的数据传输之前发出地址信息
  • 支持多个 outstanding 交易
  • 支持乱序交易

图 1-1 所示为一次读交易是如何使用读地址和读数据通道的。

 图 1-2 所示为一次写交易是如何使用写地址、写数据和写响应通道的。

五个独立的通道都包含一组标记信息的信号,并且使用双向的 VALID 和 READY 信号实现握手机制。

源设备使用 VALID 信号标志通道上的数据合法和控制信息可用,目的设备使用 READY 信号标志可以接收数据。读数据和写数据通道都包含一个 LAST 信号标志一次 交易中最后一个数据传输。

  • 读地址和写地址通道

       读交易和写交易都有各自的地址通道,地址通道包含了所有一次交易的所需地 址和控制信             息。AXI 协议支持以下机制:

  1. 可变长度 burst,每个 burst 的长度可以为 1-16 拍
  2. 每拍数据宽度支持 8-1024bits
  3. 地址卷回、地址递增和地址固定的 burst
  4. 通过独占交易和锁定交易实现原子操作 
  5. 系统级的缓存和缓冲控制
  6. 安全访问和特权访问
  • 读数据通道

       读数据通道用于传输从从设备返回给主设备的读数据和读响应信息。读数据通 道包含:

  1. 数据总线,宽度可以为 8,16,32,64,128,256,512 或 1024bits
  2. 读响应标志了读交易完成的信息
  • 写数据通道

       写数据通道负责从主设备向从设备传输写数据,其包含:

  1. 数据总线,宽度可以为 8,16,32,64,128,256,512 或 1024bits
  2. 每 8 个 bit 一个字节选通位,标志总线上的哪个字节可用

写数据通道的信息通常要加缓冲器,以使主设备可以在没有得到从设备先前写交易 确认的情况下继续进行新的写交易。

  • 写响应通道

写响应通道为从设备返回写交易响应的通道。所有的写交易结束都返回完成信 号。

不是每个beat返回一个完成信号,而是每个burst完成后一起返回一个完成信号。

1.3 基本交易

本部分给出基于 AXI 协议的基本交易的示例。每个示例都使用了 VALID 和 READY 握手机制。地址信息及数据的传输都是在 VALID 和 READY 信号同时为高的时候传输。 示例下面几部分介绍:

  • 1.3.1 读 burst 示例
  • 1.3.2 连续的读 burst 示例
  • 1.3.3 写 burst 示例

本部分也介绍了交易顺序。

1.3.1 读 burst 示例

图1-4 为一个 4 拍的读 burst 交易的时序图。在这个例子中,主设备发送地址,一 个周期后从设备接收。

主设备在发送地址的同时也发送了一些控制信息标志了 burst 的程度和类型,为了 保持图的清晰性,在此省略这些信号。

地址总线上出现地址之后,在读数据通道上发生数据的传输。从设备一直保持VALID 信号为低,直到读数据准备好。从设备发送 RLAST 信号标志此次 burst 交易中 最后一个数据的传输。

 1.3.2 连续读 burst 示例

图 1-5 为主设备在从设备接收第一个 burst 交易的地址后发送另一个 burst 交易的地 址的时序图。这样可以保证一个从设备在完成第一个 burst 交易的同时可以开始处理第 二个 burst 交易的数据。

 1.3.3 写 burst 示例

图1-6 为一次写交易的时序图。当主设备发送地址和控制信息到写地址通道之后, 交易过程开始。然后主设备通过写数据通道发送每一个写数据,当为最后一个需要发送 的数据时,主设备将 WLAST 信号置高。当从设备接收完所有的数据时,从设备返回给 主设备一个写响应标志本次写交易的结束。

 1.3.4 交易顺序

AXI 协议支持交易乱序完成。它给通过 AXI 总线发送的交易分配一个 ID 标签。协 议要求相同 ID 的交易按顺序完成,而对不同 ID 的交易没有顺序限制,可以乱序完成。

乱序交易可以在两个方面提高系统系能:

  • 互连设备可以使快速响应的从设备交易完成早于较慢速度的从设备
  • 复杂的从设备可以乱序返回读数据。例如,较晚访问的数据可能因为来自内部 缓冲器而比先前访问的数据更早获得。

如果以个主设备要求交易完成的顺序要按照发送的顺序,则那些交易要使用相同的 ID 标签。但是若主设备不要求按顺序完成交易,则可以为不同的交易分配不同的 ID, 可以按任何顺序完成交易。

在一个多主设备的系统中,互连设备负责给 ID 添加额外信息保证从所有主设备而 来的 ID 标签是唯一的。ID 就像一个主设备号码,但通过扩展可以使得每个主设备可以 通过提供 ID,访问同一个接口,就像是好多虚拟的主设备一样。

虽然复杂的装置可以利用乱序,但是简单的装置不要求使用。简单的主设备可以为 每个交易分配相同的 ID,简单的从设备可以按序响应交易,不用管 ID。

3.1 握手过程

所有五个通道使用相同的 VALID/READY 握手来传输数据和控制信息。这中双向的 流控制机制可以使得主设备和从设备都可以控制数据和控制信息的传输速率。源设备产 生 VALID 信号标志数据和控制信息有效。目的设备产生 READY 信号标志可以接收数 据和控制信息。只有当 VALID 和 READY 同时为高时,传输进行。

不管主设备接口还是从设备接口,在输入和输出信号之间不允许有组合路径。

图 3-1 到图 3-3 为握手时序图。图 3-1 中,源设备发出数据和控制信息同时将 VALID 信号拉高,数据和控制信息一直稳定,直到目的设备可以接收数据和控制信息将 READY 信号拉高时。箭头指示了传输开始的时刻。

 图 3-2 中,目的设备将 READY 信号拉高早于数据和控制信号有效。这表示目的设 备可以在 VALID 信号有效后的一个周期内接收数据和控制信息。箭头指示了传输开始 的时刻。

 图 3-3 中,源设备和目的设备恰好在同一个周期内可以进行数据和控制信息的传输。 这种情况下,传输会立即进行。箭头指示了传输开始的时刻。

 3.1.1 写地址通道

主设备只有当它发送合法的地址和控制信息的情况下将 AWVALID 信号置为有效, 并且必须保持有效直到从设备接收了地址和控制信息并且返回 AWREADY 信号。

AWREADY 的默认值可以为高,也可以为低。推荐设置为高,尽管这样从设备必须 能在任何合法地址发来的时候予以接收。

AWREADY 的默认值可以为低,但不推荐,因为这样传输至少花费两个周期,一个置AWVALID,一个置高 AWREADY。

3.1.2 写数据通道

在一个写 burst 交易中,主设备只有当发送合法地址的时候将 WVALID 信号置为有 效,并且必须保持有效知道从设备接收了写数据并且返回 WREADY 信号。

只有从设备总能在一个周期内接收写数据,WREADY 的默认值可以设置为高。

主设备必须发送 WLAST 信号标志一次写 burst 交易中最后一拍数据传输。

当 WVALID 为低时,WSTRB[3:0]信号可以为任何值,但推荐这个信号置为低或保 持原值。

3.1.3 写响应通道

当写响应有效时,从设备将 BVALID 信号置为有效,并且保持有效直到主设备接收 响应并且返回 BREADY 信号。

只有主设备总能在一个周期内接收写响应,BREADY 的默认值可以设置为高。

3.1.4 读地址通道

主设备只有当它发送合法的地址和控制信息的情况下将 ARVALID 信号置为有效, 并且必须保持有效直到从设备接收了地址和控制信息并且返回 ARREADY 信号。

ARREADY 的默认值可以为高,也可以为低。推荐设置为高,尽管这样从设备必须 能在任何合法地址发来的时候予以接收。

ARREADY 的默认值可以为低,但不推荐,因为这样传输至少花费两个周期,一个 置高ARVALID,一个置高 ARREADY。

3.1.5 读数据通道

在一次读交易中,只有当从设备数据有效时,从设备将 RVALID 信号置为有效,并 且一直保持有效直到主设备接收数据并且返回 RREADY 信号。即使一个从设备只有一 个读数据,它也必须响应对此数据的访问,将 RVALID 信号置为有效。

主设备使用 RREADY 信号标志可以接收数据。RREADY 的默认值可以设置为高, 但是只有在主设备无论何时进行读交易时都可以立即接收数据的情况下。

从设备必须发送 RLAST 信号标志一次读 burst 交易中最后一拍数据的传输。

3.2 通道之间的关系

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

例如,写数据可以在相关的写地址之前出现在总线接口上。当写地址通道包含较多 的寄存器级数多于写地址通道时,会出现这种情况。写数据也可以与相关的写地址同时 有效。

当必须确定目的地址空间或者从设备空间时,互连设备必须重新对齐地址和写数 据。为了确保写数据只相对于其要写入的从设备是有效的,这样做是必要的。

两种关系必须满足:

  • 读数据必须在其相关的地址之后
  • 写响应必须在其相关写交易最后一拍数据写完之后

3.3 通道握手信号的依赖关系

为了防止发生死锁,必须重视握手信号之间的依赖关系。 任何交易中:

  • 一个 AXI 模块的 VALID 信号不能依赖于另一个模块的 READY 信号
  • READY 信号可以等 VALID 信号

可以在发送 VALID 信号之后发送 READY,也可以在发送 VALID 信号之前将 READY 信号置为默认值,这样做可以得到更高效的设计。.

图 3-4 和图 3-5 为各握手信号之间的依赖关系图。一个箭头表示箭头两端的信号先 后没有规定。双箭头表示箭头指向的信号只能在箭头前的信号之后。

图 3-4 为一次读交易中:

  • 从设备可以在 ARVALID 之后发送 ARREADY
  • 从设备在置 RVALID 信号有效返回读数据之前必须等待 ARVALID 和 ARREADY 信号有效之后。

 图 3-5 为一次写交易中:

  • 主设备发送 AWVALID 和 WVALID 信号前不等从设备发送 AWREADY 和 WREADY
  • 从设备可以在发送 AWREADY 信号之前等 AWVALID 或者 WVALID,或两者 一起
  • 从设备可以在发送 WREADY 信号之前等 AWVALID 或者 WVALID,或两者一 起
  • 从设备发送 BVALID 之前必须等待 WVALID 和 WREADY 信号之后

 注意在一次写交易中,主设备在发送 WVALID 之前不要等 AWREADY 有效,这一 点是很重要的。如果主设备等 AWREADY 信号有效之后在发送 WVALID 信号,并且从 设备恰好是接收到 WVALID 信号之后才发送 AWREADY,则这样就会造成死锁状况。

4.1 关于寻址选择

AXI 总线协议是基于 burst 的,并且主设备通过发送一次传输中第一个字节的地址 和控制信息开始一次 burst 交易。Burst 交易进行过程中,从设备负责计算 burst 中所有 数据的地址。

Burst 不能超过 4KB 的范围,防止在从设备之间超过范围,也限制从设备内地址增 量的大小。

4.2 burst 长度

AWLEN 和 ARLEN 信号标志了一个 burst 中有多少拍的数据。如表 4-1 所示,每个 burst 长度可以为 1-16 拍。

 对于地址卷回的 burst,其长度必须为 2,4,8,16 拍。

每个交易必须制定 ARLEN 和 AWLEN 信号指示其中有多少拍数据。没有部件可以 终止一个 burst 交易来减少其长度。在一次写交易中,主设备可以通过禁止所有的字节 选通位来终止进一步的写操作,但是也必须完成剩下的数据传输。一次读交易中,主设 备可以抛弃读到的数据,但是也必须完成剩下数据的传输。

注意当访问一个读敏感设备例如 FIFO 时,抛弃不需要的读数据会导致丢失数据。 主设备永远不要以长于要求长度的 burst 来访问这种设备。

4.3 burst 大小

表 4-2 为 burst 大小译码表,ARSIZE 和 AWSIZE 信号标志了在一次交易一拍数据 中最大的字节数。

 AXI 通过每拍的地址确定数据总线中使用那个字节通道。

对于地址递增和地址卷回而且每拍数据宽度窄于数据总线的 burst 传输,每次数据 传输都在总线的不同的字节通道上。地址固定的 burst 交易由于地址固定不变,每拍数 据传输都使用相同的字节通道。

任何数据传输的宽度都不能超过交易中部件数据总线的宽度。

4.4 burst 类型

AXI 协议定义了三种 burst 类型:

  • 地址固定的 burst
  • 地址递增的 burst
  • 地址卷回的 burst

表 4-3 为 ARBURST or AWBURST 的译码表

 4.4.1 地址固定的 burst

一次地址固定的 burst 交易中,burst 中每拍数据的地址保持不变。这种 burst 类型适 用于对同一位置进行重复访问的操作,如装载和清空 FIFO。

4.4.2 地址递增的 burst

一次地址递增的交易中,一次 burst 交易中每拍的地址是以前数据拍的地址基础上 加增量。

增量的大小由每拍数据的大小决定。

例如,一次 burst 交易中每拍包含四个字 节,则其地址为先前地址加四。

4.4.3 地址卷回的 burst

地址卷回的交易与地址递增的交易类似,每拍数据的地址都是先前地址加一个增 量。但在地址卷回的交易中,当地址到达一个边界,地址会卷回到一个较小的地址。

边 界为 burst 中每拍数据的大小乘以 burst 中数据拍的个数。

对于地址卷回的 burst 有两个限制:

  • 开始的地址必须与数据拍的大小对齐
  • Burst 的长度必须为 2,4,8 或 16

7.1 响应信号简介

AXI 协议对读交易和交易都有响应信号。

对于读交易,从设备的响应信息通过读数 据一起返回,而写交易的响应信息通过写响应通道返回。

AXI 协议的相应包括:

  • OKAY
  • EXOKAY
  • SLVERR
  • DECERR

表 7-1 为 RRESP 和 BRESP 的译码表

 对于一次写交易,不是每拍数据传输完毕都有一个响应,而是对整个 burst 只有一 个响应。

一次读交易中,从设备可以对一个 burst 中不同的数据拍返回不同的响应。例如, 在一个 16 拍的 burst 中,从设备可能会对其中的 15 个数据拍返回 OKAY 响应,而对其 中的一个数据拍返回 SLVERR 响应。

协议规定要求的数据拍都必须被执行完毕,甚至在出现错误的情况下也不能终止。 例如,一次 8 拍的读 burst 传输中从设备发生了错误,这时从设备也必须完成 8 个数据 拍的传输,每个数据拍返回一个错误响应。从设备返回一个错误响应,一个 burst 中剩 余的数据拍并不会被取消。

本协议限制支持乱序交易的主设备必须同时支持精确地错误报告功能。这样的主设 备必须能够在较后的数据传输正在进行的情况下,处理较先的数据拍的错误响应。

7.2 响应类型

本部分介绍四种 AXI 协议的响应类型:

  • 正常访问成功
  • 独占访问
  • 从设备错误
  • 译码错误

7.2.1 正常访问成功

OKAY 响应表示:

  • 一次正常访问的成功
  • 一次独占访问的失败
  • 对不支持独占访问的设备进行了独占访问操作

OKAY 是大多数交易的响应信号。

7.2.2 独占访问

EXOKAY 响应表示一次独占访问的成功。

7.2.3 从设备错误

SLVERR 响应表示一次不成功的交易。从设备出错的情况有:

  • FIFO/buffer 上溢出和下溢出
  • 不支持的数据拍大小
  • 对只读的地址执行写操作
  • 从设备访问超时
  • 试图访问没有可用寄存器的地址
  • 试图访问不使能或断电的设备

为了简化系统监视和调试,推荐错误响应只用于错误的情况而不要用于正常的和可 预测的事物。

7.2.4 译码错误

在一个没有进行全译码地址变换的系统中,可能出现某写地址没有从设备,因此无 法响应对此地址的交易。这种系统中,互连设备必须提供一个合适的错误响应来标记此 访问非法并且阻止系统因为访问了一个不存在的从设备而锁住。

当互联设备不能成功对一个从设备访问解码时,它可以有效地将访问转向一个默认 的从设备,并且默认设备返回 DECERR 响应。

一种实现的选择是使默认的从设备也记录下解码错误的细节,以确定错误是如何发 生的。用这种方法,默认的从设备可以很显著的简化调试过程。

AXI 协议要求一次交易中所有的数据拍都必须完成,即使发生错误也不能停止。所 以每个能返回 DECERR 的部件也要求都必须能满足这个要求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值