全文 - AMBA AXI C 协议 v2.0 规范

AMBA AXI 协议

版本:2.0

规范(Specification)

版权所有 © 2003-2010 ARM。保留所有权利。

ARM IHI 0022C(ID030610)


发布信息

下表列出了本书的变更历史。

变更历史

日期 版本 保密性 变更
2003年6月16日 A 非保密 首次发布
2004年3月19日 B 非保密 V1.0 首次发布
2010年3月3日 C 非保密 V2.0 首次发布

专有声明

标有 ® 或 ™ 的词语和徽标是 ARM 在欧盟和其他国家/地区的注册商标或商标,除非本专有声明另有说明。本文档中提及的其他品牌和产品名称可能是其各自所有者的商标。

未经版权持有人事先书面许可,不得以任何形式改编或复制本文档中包含的信息或所描述产品的全部或任何部分。

本文档中描述的产品的具体参数及其使用方式由 ARM 善意提供。但是,所有明示或暗示的保证,包括但不限于对适销性或适用于特定用途的暗示保证,均被排除。

本文档仅用于协助读者使用该产品。对于因使用本文档中的任何信息或此类信息中的任何错误或遗漏而引起的任何损失或损害,或因不正确使用该产品而导致的任何损失或损害,ARM 概不负责。

当使用术语"ARM"时,其含义是"ARM 或其任何适当的子公司"。


ARM AMBA 规范许可协议

本终端用户许可协议("许可")是您(单一自然人或单一法律实体)与 ARM Limited("ARM")之间就使用随本许可提供的相关 AMBA 规范而达成的法律协议。ARM 仅在您接受本许可所有条款的条件下才愿意将相关 AMBA 规范许可给您。通过点击"我同意"或以其他方式使用或复制相关 AMBA 规范,即表示您同意受本许可所有条款的约束。如果您不同意本许可条款,ARM 不愿将相关 AMBA 规范许可给您,您不得使用或复制相关 AMBA 规范,并应立即将相关 AMBA 规范退还 ARM。

"被许可方"指您和您的子公司。

"子公司"指如果您是单一实体,指其多数表决权股份现在或将来由您直接或间接拥有或控制的任何公司。一个公司仅在存在此类控制期间才是子公司。

  1. 在符合第 2、3 和 4 条规定的前提下,ARM 特此授予被许可方永久、非排他、不可转让、免版税、全球范围的许可,以:

    • (i) 使用和复制相关 AMBA 规范,以开发和让他人开发符合相关 AMBA 规范的产品;
    • (ii) 制造和让他人制造以下产品:(a) 由被许可方或被许可方根据第 1(i) 条授予的许可创造的产品;或 (b) 包含由第三方根据 ARM 在该第三方 ARM AMBA 规范许可协议第 1(i) 条中授予的许可所创造的产品;以及
    • (iii) 要约销售、销售、供应或以其他方式分销由 (a) 被许可方或被许可方根据第 1(i) 条授予的许可创造的产品,或 (b) 由被许可方或被许可方根据第 1(ii) 条授予的许可制造的产品。
  2. 被许可方特此同意,第 1 条授予的许可须遵守以下限制:

    • (i) 如果在第 1(i) 条下创造的产品是包含 CPU 的集成电路,则:(a) 该 CPU 只能在 ARM 许可下制造;或 (b) 该 CPU 实质上不符合且不作为符合 ARM 不时许可的 ARM 指令集的产品进行市场推广;
    • (ii) 第 1(iii) 条授予的许可不得延伸至产品本身不符合相关 AMBA 规范任何部分的任何部分或功能;
    • (iii) 被许可方无权再许可本协议下授予被许可方的权利。
  3. 除根据第 1 条明确许可外,被许可方不会获得任何 ARM 技术或其中包含的任何知识产权的任何权利、所有权或权益。在任何情况下,根据第 1 条授予的许可均不得被解释为以明示或暗示、禁止反言或其他方式授予被许可方使用任何 ARM 技术的许可,但相关 AMBA 规范除外。

  4. 相关 AMBA 规范按"原样"提供,无任何明示、暗示或法定的保证,包括但不限于对满意质量、适销性、非侵权或适用于特定用途的任何保证。

  5. 根据第 1 条的规定,不会以明示、暗示或其他方式授予被许可方在与相关 AMBA 规范或基于该规范的任何产品相关的使用 ARM 商号或 AMBA 商标的权利。第 1 条的任何规定均不得解释为授权被许可方代表 ARM 就相关 AMBA 规范作出任何陈述。

  6. 本许可在被许可方或 ARM 终止前保持有效。如果被许可方违反本许可的任何条款和条件,ARM 可在向被许可方发出书面通知后立即终止本许可,而不影响 ARM 的任何其他权利。被许可方可随时终止本许可。在被许可方或 ARM 终止本许可后,被许可方应停止使用相关 AMBA 规范,并销毁其拥有的所有相关 AMBA 规范副本以及所有文档和相关材料。在本许可到期或终止后,第 6 和 7 条的规定仍然有效。

  7. 本协议的有效性、解释和执行应受英国法律管辖。

ARM 合同参考:LEC-PRE-00490-V4.0 ARM AMBA 规范许可


保密状态

本文档为非保密文档。根据 ARM 与 ARM 向其交付本文档的各方之间签订的协议条款,使用、复制和披露本文档的权利可能受到许可限制。

无限制访问是 ARM 的内部分类。

产品状态

本文档中的信息为最终信息,即针对已开发的产品。

网址

http://www.arm.com


目录

第1章 引言

  • 1.1 关于 AXI 协议
  • 1.2 架构
  • 1.3 基本事务
  • 1.4 附加特性

第2章 信号描述

  • 2.1 全局信号
  • 2.2 写地址通道信号
  • 2.3 写数据通道信号
  • 2.4 写响应通道信号
  • 2.5 读地址通道信号
  • 2.6 读数据通道信号
  • 2.7 低功耗接口信号

第3章 通道握手

  • 3.1 握手过程
  • 3.2 通道之间的关系
  • 3.3 通道握手信号之间的依赖关系

第4章 寻址选项

  • 4.1 关于寻址选项
  • 4.2 突发长度
  • 4.3 突发大小
  • 4.4 突发类型
  • 4.5 突发地址

第5章 附加控制信息

  • 5.1 缓存支持
  • 5.2 保护单元支持

第6章 原子访问

  • 6.1 关于原子访问
  • 6.2 独占访问
  • 6.3 锁定访问

第7章 响应信号

  • 7.1 关于响应信号
  • 7.2 响应类型

第8章 排序模型

  • 8.1 关于排序模型
  • 8.2 传输 ID 字段
  • 8.3 读排序
  • 8.4 正常写排序
  • 8.5 写数据交错
  • 8.6 读写交互
  • 8.7 互连对 ID 字段的使用
  • 8.8 建议的 ID 字段宽度

第9章 数据总线

  • 9.1 关于数据总线
  • 9.2 写选通
  • 9.3 窄传输
  • 9.4 字节不变性

第10章 非对齐传输

  • 10.1 关于非对齐传输
  • 10.2 示例

第11章 时钟和复位

  • 11.1 时钟和复位要求

第12章 低功耗接口

  • 12.1 关于低功耗接口
  • 12.2 低功耗时钟控制

第13章 AXI4

  • 13.1 突发支持
  • 13.2 服务质量信号
  • 13.3 多区域接口
  • 13.4 写响应依赖关系
  • 13.5 AWCACHE 和 ARCACHE 属性
  • 13.6 不可修改事务的排序要求
  • 13.7 更新读取分配和写入分配的含义
  • 13.8 存储器类型
  • 13.9 不匹配的属性
  • 13.10 事务缓冲
  • 13.11 设备存储器类型的使用
  • 13.12 遗留考虑
  • 13.13 排序模型
  • 13.14 用户信号
  • 13.15 锁定事务
  • 13.16 写交错
  • 13.17 互操作性和默认信号

第14章 AXI4-Lite

  • 14.1 引言
  • 14.2 AXI4-Lite 的定义
  • 14.3 互操作性
  • 14.4 定义的转换机制
  • 14.5 转换、保护和检测

附录A 修订记录


表格清单

表号 标题
表2-1 全局信号
表2-2 写地址通道信号
表2-3 写数据通道信号
表2-4 写响应通道信号
表2-5 读地址通道信号
表2-6 读数据通道信号
表2-7 低功耗接口信号
表4-1 突发长度编码
表4-2 突发大小编码
表4-3 突发类型编码
表5-1 缓存编码
表5-2 保护编码
表6-1 原子访问编码
表7-1 RRESP[1:0] 和 BRESP[1:0] 编码
表13-1 固定为不可修改的参数
表13-2 AWCACHE 位分配
表13-3 ARCACHE 位分配
表13-4 存储器类型编码
表13-5 排序要求摘要
表13-6 原子访问编码
表13-7 写通道信号和默认信号值
表13-8 读通道信号和默认信号值
表14-1 AXI4-Lite 接口信号
表14-2 完整 AXI 和 AXI4-Lite 的互操作性
表A-1 版本 B
表A-2 版本 B 和版本 C 之间的差异

插图清单

图号 标题
图1-1 时序图约定键
图1-2 读通道架构
图1-3 写通道架构
图1-4 接口和互连
图1-5 读突发
图1-6 重叠读突发
图1-7 写突发
图3-1 VALID 先于 READY 握手
图3-2 READY 先于 VALID 握手
图3-3 VALID 与 READY 握手
图3-4 读事务握手依赖关系
图3-5 写事务握手依赖关系
图9-1 字节通道映射
图9-2 8位传输的窄传输示例
图9-3 32位传输的窄传输示例
图9-4 混合字节序数据结构示例
图10-1 32位总线上的对齐和非对齐字传输
图10-2 64位总线上的对齐和非对齐字传输
图10-3 64位总线上的对齐回环字传输
图11-1 退出复位
图12-1 CSYSREQ 和 CSYSACK 握手
图12-2 接受低功耗请求
图12-3 拒绝低功耗请求
图12-4 低功耗时钟控制序列
图13-1 从设备写响应依赖关系
图13-2 具有不同单副本原子组示例的系统

前言

本前言介绍 AMBA 4 高级可扩展接口(AXI4)协议规范。它包含以下各节:

  • 关于本书
  • 反馈

关于本书

目标读者

本书适用于 AMBA AXI 协议规范,面向希望熟悉高级微控制器总线架构(AMBA)并设计兼容 AMBA AXI 协议的系统和模块的硬件和软件工程师。

本书的使用

本书按以下各章组织:

第1章 引言

阅读本章以了解 AXI 协议的架构和协议定义的基本事务。

第2章 信号描述

阅读本章以了解 AXI 全局信号、写地址通道、写数据通道、写响应通道、读地址通道、读数据通道以及低功耗接口信号的定义。

第3章 通道握手

阅读本章以了解 AXI 通道握手过程。

第4章 寻址选项

阅读本章以了解 AXI 突发类型以及如何计算突发内传输的地址和字节通道。

第5章 附加控制信息

阅读本章以了解如何使用 AXI 协议支持系统级缓存和保护单元。

第6章 原子访问

阅读本章以了解如何执行独占访问和锁定访问。

第7章 响应信号

阅读本章以了解 AXI 从设备的四种事务响应。

第8章 排序模型

阅读本章以了解 AXI 协议如何使用事务 ID 标签来支持乱序事务处理。

第9章 数据总线

阅读本章以了解如何在 AXI 读和写数据总线上进行不同大小的事务,以及如何使用字节不变字节序来处理混合字节序数据。

第10章 非对齐传输

阅读本章以了解 AXI 协议如何处理非对齐传输。

第11章 时钟和复位

阅读本章以了解 AXI 时钟和复位信号的时序。

第12章 低功耗接口

阅读本章以了解如何使用 AXI 时钟控制接口进入和退出低功耗状态。

第13章 AXI4

阅读本章以了解 AXI3 和 AXI4 版本 AXI 协议之间的技术变更。

第14章 AXI4-Lite

阅读本章以了解 AXI4-Lite 接口,这是一种更简单的控制寄存器样式接口,用于不需要完整 AXI4 功能的情况。

附录A 修订记录

阅读本章以了解本书各发布版本之间的技术变更。


约定

本书使用的约定在以下各节中描述:

  • 印刷排版
  • 时序图
  • 信号

印刷排版约定

样式 含义
斜体 强调重要注意事项,引入特殊术语,表示内部交叉引用和引用。
粗体 突出界面元素,如菜单名称。表示信号名称。也用于描述性列表中的术语。
等宽字体 表示可以在键盘上输入的文本,如命令、文件和程序名称以及源代码。
等宽带下划线 表示命令或选项的允许缩写。您可以输入带下划线的文本代替完整的命令或选项名称。
等宽斜体 表示等宽文本的参数,其中参数将被特定值替换。
等宽粗体 表示在示例代码之外使用的语言关键字。
< 和 > 在代码或代码片段中,括起汇编语法中的可替换术语。例如:MRC p15, 0 , , , <Opcode_2>

时序图

名为"时序图约定键"的图表解释了时序图中使用的各个组成部分。当发生变化时,会有清晰的标签。您不得假设时序图中未明确显示的任何时序信息。

阴影总线和信号区域是未定义的,因此总线或信号可以在该时间的阴影区域内假设任何值。实际电平不重要,不影响正常操作。

时序图有时将单位信号显示为同时为 HIGH 和 LOW,它们看起来与"时序图约定键"中显示的总线变化类似。如果时序图以这种方式显示单位信号,则其值不影响随附的描述。

信号

信号约定如下:

信号电平

断言信号的电平取决于信号是有效 HIGH 还是有效 LOW。断言意味着:

  • 对于有效 HIGH 信号为 HIGH
  • 对于有效 LOW 信号为 LOW。

小写字母 n

在信号名称的开头或末尾表示有效 LOW 信号。


其他阅读材料

本节列出了 ARM 和第三方出版物。请参阅信息中心 http://infocenter.arm.com 以获取 ARM 文档。

ARM 出版物

本书包含特定于此产品的信息。有关其他相关信息,请参阅以下文档:

  • AMBA 4 AXI4-Stream 协议规范 版本 1.0(ARM IHI 0051)
  • ARM 架构参考手册 ARMv7-A 和 ARMv7-R 版(ARM DDI 0406)

反馈

ARM 欢迎对本协议及其文档提出反馈。

关于本协议的反馈

如果您对本协议有任何意见或建议,请联系您的供应商并提供:

  • 名称
  • 修订版或版本
  • 尽可能提供详细信息的解释。如适用,请包括症状和诊断程序。

关于内容的反馈

如果您对内容有意见,请发送电子邮件至 errata@arm.com。请提供:

  • 标题:AMBA AXI 协议规范
  • 编号:ARM IHI 0022C
  • 您评论所适用的页码
  • 对您的评论的简明解释。

ARM 也欢迎对增补和改进提出一般性建议。


第1章 引言

本章描述 AXI 协议的架构和协议定义的基本事务。它包含以下各节:

  • 1.1 关于 AXI 协议
  • 1.2 架构
  • 1.3 基本事务
  • 1.4 附加特性

1.1 关于 AXI 协议

1.1.1 AXI 修订版本

AMBA AXI 协议面向高性能、高频率系统设计,包含许多使其适用于高速亚微米互连的特性。

最新一代 AMBA 接口的目标是:

  • 适用于高带宽和低延迟设计
  • 无需使用复杂桥接器即可实现高频率操作
  • 满足各种组件的接口要求
  • 适用于具有高初始访问延迟的存储器控制器
  • 在互连架构的实现中提供灵活性
  • 与现有 AHB 和 APB 接口向后兼容。

AXI 协议的主要特点是:

  • 独立的地址/控制和数据阶段
  • 使用字节选通支持非对齐数据传输
  • 基于突发的传输,仅发出起始地址
  • 独立的读和写数据通道,以实现低成本直接存储器访问(DMA)
  • 能够发出多个未完成的地址
  • 乱序事务完成
  • 易于添加寄存器级以实现时序收敛。

除了数据传输协议外,AXI 协议还包括涵盖低功耗操作信号的可选扩展。

AXI 协议多年来一直是行业标准,AMBA AXI 协议规范版本 1.0 描述了 AXI 接口。

本修订版,即文档版本 2.0,包含有关原始 AXI 协议规范(现称为 AXI3)的所有信息,以及两个新章节,详细描述 AXI4 和 AXI4-Lite。

AXI4

对 AXI3 的 AXI4 更新包括以下内容:

  • 支持最长 256 拍的突发长度
  • 服务质量(QoS)信号
  • 支持多区域接口
  • 更新的写响应要求
  • 更新的 AWCACHE 和 ARCACHE 信号细节
  • 关于排序要求的附加信息
  • 可选用户信号的细节
  • 移除锁定事务
  • 移除写交错。

AXI4 还包括有关默认信号使用的信息,并讨论了组件的互操作性。

AXI4-Lite

AXI4-Lite 是 AXI4 协议的一个子集,旨在与组件中的控制寄存器样式接口进行通信,并允许构建更简单的组件接口。

AXI4-Lite 接口的主要特点是:

  • 所有事务的突发长度为 1
  • 所有数据访问的大小与数据总线宽度相同
  • 支持 32 位或 64 位数据总线宽度
  • 所有访问等同于 AWCACHE 或 ARCACHE 等于 b0000
  • 不支持独占访问。

1.2 架构

AXI 协议是基于突发的。每个事务在地址通道上都有地址和控制信息,描述要传输的数据的性质。数据在主设备和从设备之间通过写数据通道传输到从设备,或通过读数据通道传输到主设备。在写事务中,所有数据都从主设备流向从设备,AXI 协议有一个额外的写响应通道,允许从设备向主设备发出写事务完成的信号。

AXI 协议支持:

  • 在实际数据传输之前发出地址信息
  • 支持多个未完成的事务
  • 支持事务的乱序完成。

图1-1展示了读事务如何使用读地址和读数据通道。

图1-2展示了写事务如何使用写地址、写数据和写响应通道。

1.2.1 通道定义

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

信息源使用 VALID 信号来指示通道上何时有有效数据或控制信息可用。目的地使用 READY 信号来指示其何时可以接受数据。读数据通道和写数据通道还包括一个 LAST 信号,用于指示事务内最后一个数据项的传输何时进行。

读和写地址通道

读和写事务各有自己的地址通道。适当的地址通道承载事务所需的所有地址和控制信息。AXI 协议支持以下机制:

  • 可变长度突发,每次突发 1 到 16 次数据传输
  • 传输大小为 8-1024 位的突发
  • 回环、递增和非递增突发
  • 使用独占或锁定访问的原子操作
  • 系统级缓存和缓冲控制
  • 安全和特权访问。
读数据通道

读数据通道将读数据和任何读响应信息从从设备传回主设备。读数据通道包括:

  • 数据总线,可以是 8、16、32、64、128、256、512 或 1024 位宽
  • 指示读事务完成状态的读响应。
写数据通道

写数据通道将写数据从主设备传送到从设备,包括:

  • 数据总线,可以是 8、16、32、64、128、256、512 或 1024 位宽
  • 每八个数据位对应一个字节选通,指示数据总线的哪些字节有效。

写数据通道信息始终被视为缓冲的,因此主设备可以在没有从设备确认先前写事务的情况下执行写事务。

写响应通道

写响应通道为从设备提供一种响应写事务的方式。所有写事务都使用完成信号。

完成信号对每个突发发生一次,而不是对突发内的每个单独数据传输发生。

1.2.2 接口和互连

一个典型的系统由多个主设备和从设备通过某种形式的互连连接在一起组成,如图1-4所示。

AXI 协议为描述接口提供了单一接口定义:

  • 主设备与互连之间
  • 从设备与互连之间
  • 主设备与从设备之间。

该接口定义支持各种不同的互连实现。设备之间的互连等同于另一个设备,具有对称的主设备和从设备端口,可以连接真实的主设备和从设备。

大多数系统使用三种互连方法之一:

  • 共享地址和数据总线
  • 共享地址总线和多个数据总线
  • 多层,具有多个地址和数据总线。

在大多数系统中,地址通道带宽要求明显低于数据通道带宽要求。此类系统可以通过使用共享地址总线和多个数据总线来实现并行数据传输,从而在系统性能和互连复杂性之间取得良好的平衡。

每个 AXI 通道仅在一个方向上传输信息,并且各个通道之间不需要固定关系。这一点很重要,因为它允许在任何通道中插入寄存器片,代价是额外的延迟周期。这使得延迟周期和最高工作频率之间可以进行权衡。

在几乎任何互连中的任何点都可以使用寄存器片。在处理器和高性能存储器之间使用直接快速连接可能是有利的,但使用简单的寄存器片来隔离通向性能要求较低的外设的较长路径。

1.2.3 寄存器片

每个独立的 AXI 通道仅在一个方向上传输信息,并且各个通道之间不需要固定关系。这一点很重要,因为它允许在任何通道中插入寄存器片,代价是额外的延迟周期。这使得延迟周期和最高工作频率之间可以进行权衡。

寄存器片是一种插入在通道中任意两个相邻组件之间的寄存器级联。它可用于将长的组合路径分解为多个较短的段,从而提高系统的最大工作频率,但代价是增加一个延迟周期。


1.3 基本事务

本节给出了基本 AXI 协议事务的示例。每个示例都展示了 VALID 和 READY 握手机制。当 VALID 和 READY 信号都为 HIGH 时,地址信息或数据的传输发生。示例包括:

  • 读突发示例
  • 重叠读突发示例
  • 写突发示例

本节还描述了事务排序。

1.3.1 读突发示例

图1-5展示了四次传输的读突发。在此示例中,主设备驱动地址,从设备在一个周期后接受。

注意:主设备还驱动一组控制信号,显示突发的长度和类型,但为清晰起见,图中省略了这些信号。

地址出现在地址总线上后,数据传输在读数据通道上进行。从设备保持 VALID 信号为 LOW,直到读数据可用。对于突发的最后一次数据传输,从设备断言 RLAST 信号以指示正在传输最后一个数据项。

1.3.2 重叠读突发示例

图1-6展示了主设备如何在从设备接受第一个地址后驱动另一个突发地址。这使从设备能够开始并行处理第二个突发的数据,同时完成第一个突发。

1.3.3 写突发示例

图1-7展示了一个写事务。当主设备在写地址通道上发送地址和控制信息时,过程开始。然后主设备通过写数据通道发送每个写数据项。当主设备发送最后一个数据项时,WLAST 信号变为 HIGH。当从设备接受了所有数据项后,它向主设备驱动一个写响应,指示写事务完成。

1.3.4 事务排序

AXI 协议支持乱序事务完成。它为通过接口的每个事务提供一个 ID 标签。协议要求具有相同 ID 标签的事务必须按顺序完成,但具有不同 ID 标签的事务可以乱序完成。

乱序事务可以通过两种方式提高系统性能:

  • 互连可以使具有快速响应从设备的事务在具有较慢从设备的较早事务之前完成。
  • 复杂从设备可以乱序返回读数据。例如,由于较晚访问的数据项可能在较早访问的数据项可用之前就从内部缓冲区中获得。

如果主设备要求事务按照发出的相同顺序完成,则它们必须都具有相同的 ID 标签。但是,如果主设备不需要按顺序完成事务,它可以为事务提供不同的 ID 标签,使它们能够以任何顺序完成。

在多主设备系统中,互连负责将附加信息附加到 ID 标签上,以确保来自所有主设备的 ID 标签是唯一的。ID 标签类似于主设备编号,但扩展了每个主设备可以通过提供 ID 标签来指示虚拟主设备编号,从而在同一端口内实现多个虚拟主设备。

尽管复杂设备可以利用乱序功能,但简单设备不需要使用它。简单主设备可以为每个事务发出相同的 ID 标签,简单从设备可以按顺序响应每个事务,而不管 ID 标签如何。


1.4 附加特性

AXI 协议还支持以下附加特性:

突发类型

AXI 协议支持三种不同的突发类型,适用于:

  • 正常存储器访问
  • 回环缓存行突发
  • 将数据流式传输到外设 FIFO 位置。

参见第4章 寻址选项。

系统缓存支持

AXI 协议的缓存支持信号使主设备能够向系统级缓存提供事务的可缓冲、可缓存和分配属性。

参见第5-2页的缓存支持。

保护单元支持

为了使特权和安全访问都能实现,AXI 协议提供三级保护单元支持。

参见第5-4页的保护单元支持。

原子操作

AXI 协议定义了独占访问和锁定访问的机制。

参见第6章 原子访问。

错误支持

AXI 协议为地址解码错误和从设备生成的错误提供错误支持。

参见第7章 响应信号。

非对齐地址

为了提高突发内初始访问的性能,AXI 协议支持非对齐突发起始地址。

参见第10章 非对齐传输。


第2章 信号描述

本章定义 AXI 信号。尽管总线宽度和事务 ID 宽度是实现特定的,但本章中的表格显示 32 位数据总线、4 位写数据选通和 4 位 ID 字段。本章包含以下各节:

  • 2.1 全局信号
  • 2.2 写地址通道信号
  • 2.3 写数据通道信号
  • 2.4 写响应通道信号
  • 2.5 读地址通道信号
  • 2.6 读数据通道信号
  • 2.7 低功耗接口信号

2.1 全局信号

表2-1列出了 AXI 全局信号。

信号 描述
ACLK 时钟源 全局时钟信号。所有信号都在全局时钟的上升沿采样。
ARESETn 复位源 全局复位信号。该信号为低电平有效。

2.2 写地址通道信号

表2-2列出了 AXI 写地址通道信号。

信号 描述
AWID[3:0] 主设备 写地址 ID。该信号是写地址组信号的标识标签。
AWADDR[31:0] 主设备 写地址。写地址总线给出写突发事务中第一次传输的地址。关联的控制信号用于确定突发中剩余传输的地址。
AWLEN[3:0] 主设备 突发长度。突发长度给出突发中的精确传输次数。此信息确定与地址关联的数据传输次数。参见第4-3页的表4-1。
AWSIZE[2:0] 主设备 突发大小。该信号指示突发中每次传输的大小。字节通道选通精确指示要更新的字节通道。参见第4-4页的表4-2。
AWBURST[1:0] 主设备 突发类型。突发类型与大小信息相结合,详细说明突发内每次传输的地址计算方式。参见第4-5页的表4-3。
AWLOCK[1:0] 主设备 锁定类型。该信号提供有关传输原子特性的附加信息。参见第6-2页的表6-1。
AWCACHE[3:0] 主设备 缓存类型。该信号指示事务的可缓冲、可缓存、直写、回写和分配属性。参见第5-3页的表5-1。
AWPROT[2:0] 主设备 保护类型。该信号指示事务的正常、特权或安全保护级别,以及事务是数据访问还是指令访问。参见第5-4页的保护单元支持。
AWVALID 主设备 写地址有效。该信号指示有效的写地址和控制信息可用:1 = 地址和控制信息可用;0 = 地址和控制信息不可用。地址和控制信息保持稳定,直到地址确认信号 AWREADY 变为 HIGH。
AWREADY 从设备 写地址就绪。该信号指示从设备已准备好接受地址和关联的控制信号:1 = 从设备就绪;0 = 从设备未就绪。

2.3 写数据通道信号

表2-3列出了 AXI 写数据通道信号。

信号 描述
WID[3:0] 主设备 写 ID 标签。该信号是写数据传输的 ID 标签。WID 值必须与写事务的 AWID 值匹配。
WDATA[31:0] 主设备 写数据。写数据总线可以是 8、16、32、64、128、256、512 或 1024 位宽。
WSTRB[3:0] 主设备 写选通。该信号指示要更新存储器中的哪些字节通道。写数据总线的每八个位对应一个写选通。因此,WSTRB[n] 对应于 WDATA[(8 × n) + 7:(8 × n)]。
WLAST 主设备 写最后。该信号指示写突发中的最后一次传输。
WVALID 主设备 写有效。该信号指示有效的写数据和选通可用:1 = 写数据和选通可用;0 = 写数据和选通不可用。
WREADY 从设备 写就绪。该信号指示从设备可以接受写数据:1 = 从设备就绪;0 = 从设备未就绪。

2.4 写响应通道信号

表2-4列出了 AXI 写响应通道信号。

信号 描述
BID[3:0] 从设备 响应 ID。写响应的标识标签。BID 值必须与从设备正在响应的写事务的 AWID 值匹配。
BRESP[1:0] 从设备 写响应。该信号指示写事务的状态。允许的响应为 OKAY、EXOKAY、SLVERR 和 DECERR。
BVALID 从设备 写响应有效。该信号指示有效的写响应可用:1 = 写响应可用;0 = 写响应不可用。
BREADY 主设备 响应就绪。该信号指示主设备可以接受响应信息。1 = 主设备就绪;0 = 主设备未就绪。

2.5 读地址通道信号

表2-5列出了 AXI 读地址通道信号。

信号 描述
ARID[3:0] 主设备 读地址 ID。该信号是读地址组信号的标识标签。
ARADDR[31:0] 主设备 读地址。读地址总线给出读突发事务的初始地址。仅提供突发的起始地址,与地址一起发出的控制信号详细说明了突发中剩余传输的地址计算方式。
ARLEN[3:0] 主设备 突发长度。突发长度给出突发中的精确传输次数。此信息确定与地址关联的数据传输次数。参见第4-3页的表4-1。
ARSIZE[2:0] 主设备 突发大小。该信号指示突发中每次传输的大小。参见第4-4页的表4-2。
ARBURST[1:0] 主设备 突发类型。突发类型与大小信息相结合,详细说明突发内每次传输的地址计算方式。参见第4-5页的表4-3。
ARLOCK[1:0] 主设备 锁定类型。该信号提供有关传输原子特性的附加信息。参见第6-2页的表6-1。
ARCACHE[3:0] 主设备 缓存类型。该信号提供有关传输可缓存特性的附加信息。参见第5-3页的表5-1。
ARPROT[2:0] 主设备 保护类型。该信号为事务提供保护单元信息。参见第5-4页的保护单元支持。
ARVALID 主设备 读地址有效。该信号在 HIGH 时指示读地址和控制信息有效,并将保持稳定,直到地址确认信号 ARREADY 为高。1 = 地址和控制信息有效;0 = 地址和控制信息无效。
ARREADY 从设备 读地址就绪。该信号指示从设备已准备好接受地址和关联的控制信号:1 = 从设备就绪;0 = 从设备未就绪。

2.6 读数据通道信号

表2-6列出了 AXI 读数据通道信号。

信号 描述
RID[3:0] 从设备 读 ID 标签。该信号是读数据组信号的 ID 标签。RID 值由从设备生成,必须与它正在响应的读事务的 ARID 值匹配。
RDATA[31:0] 从设备 读数据。读数据总线可以是 8、16、32、64、128、256、512 或 1024 位宽。
RRESP[1:0] 从设备 读响应。该信号指示读传输的状态。允许的响应为 OKAY、EXOKAY、SLVERR 和 DECERR。
RLAST 从设备 读最后。该信号指示读突发中的最后一次传输。
RVALID 从设备 读有效。该信号指示所需的读数据可用,且读传输可以完成:1 = 读数据可用;0 = 读数据不可用。
RREADY 主设备 读就绪。该信号指示主设备可以接受读数据和响应信息:1 = 主设备就绪;0 = 主设备未就绪。

2.7 低功耗接口信号

表2-7列出了可选低功耗接口的信号。

信号 描述
CSYSREQ 时钟控制器 系统低功耗请求。该信号是系统时钟控制器请求外设进入低功耗状态。
CSYSACK 外设 低功耗请求确认。该信号是外设对系统低功耗请求的确认。
CACTIVE 外设 时钟激活。该信号指示外设需要其时钟信号:1 = 需要外设时钟;0 = 不需要外设时钟。

第3章 通道握手

本章描述主设备/从设备握手过程,并概述 READY 和 VALID 握手信号之间的关系和默认值。它包含以下各节:

  • 3.1 握手过程
  • 3.2 通道之间的关系
  • 3.3 通道握手信号之间的依赖关系

3.1 握手过程

所有五个通道都使用相同的 VALID/READY 握手来传输数据和控制信息。这种双向流控制机制使主设备和从设备都能控制数据和控制信息的移动速率。源生成 VALID 信号以指示数据或控制信息何时可用。目的地生成 READY 信号以指示其接受数据或控制信息。仅当 VALID 和 READY 信号都为 HIGH 时,传输才会发生。

主设备和从设备接口上的输入和输出信号之间不得存在组合路径。

3.1.1 写地址通道

主设备只有在驱动有效地址和控制信息时才能断言 AWVALID 信号。它必须保持断言状态,直到从设备接受地址和控制信息并断言关联的 AWREADY 信号。

AWREADY 的默认值可以是 HIGH 或 LOW。建议的默认值为 HIGH,但如果 AWREADY 为 HIGH,则从设备必须能够接受呈现给它的任何有效地址。

AWREADY 的默认值为 LOW 是可能的,但不推荐,因为它意味着传输至少需要两个周期,一个周期断言 AWVALID,另一个周期断言 AWREADY。

3.1.2 写数据通道

在写突发期间,主设备只有在驱动有效写数据时才能断言 WVALID 信号。WVALID 必须保持断言状态,直到从设备接受写数据并断言 WREADY 信号。

仅当从设备始终可以在单个周期内接受写数据时,WREADY 的默认值才可为 HIGH。

主设备在突发中的最后一次写传输时必须断言 WLAST 信号。

当 WVALID 为 LOW 时,WSTRB[3:0] 信号可以取任何值,但建议将它们驱动为 LOW 或保持其先前值。

3.1.3 写响应通道

从设备只有在驱动有效写响应时才能断言 BVALID 信号。BVALID 必须保持断言状态,直到主设备接受写响应并断言 BREADY。

仅当主设备始终可以在单个周期内接受写响应时,BREADY 的默认值才可为 HIGH。

3.1.4 读地址通道

主设备只有在驱动有效地址和控制信息时才能断言 ARVALID 信号。它必须保持断言状态,直到从设备接受地址和控制信息并断言关联的 ARREADY 信号。

ARREADY 的默认值可以是 HIGH 或 LOW。建议的默认值为 HIGH,但如果 ARREADY 为 HIGH,则从设备必须能够接受呈现给它的任何有效地址。

ARREADY 的默认值为 LOW 是可能的,但不推荐,因为它意味着传输至少需要两个周期,一个周期断言 ARVALID,另一个周期断言 ARREADY。

3.1.5 读数据通道

从设备只有在驱动有效读数据时才能断言 RVALID 信号。RVALID 必须保持断言状态,直到主设备接受数据并断言 RREADY 信号。即使从设备只有一个读数据源,它也必须在响应数据请求时才断言 RVALID 信号。

主设备接口使用 RREADY 信号来指示它接受数据。仅当主设备能够立即接受读数据(每当执行读事务时)时,RREADY 的默认值才可为 HIGH。

从设备在驱动读突发中的最后一次读传输时必须断言 RLAST 信号。


3.2 通道之间的关系

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

例如,写数据可以在与其相关的写地址之前出现在接口上。当写地址通道包含比写数据通道更多的寄存器级时,就会发生这种情况。写数据也可能与地址出现在同一周期。

当互连必须确定目标地址空间或从设备空间时,它必须重新对齐地址和写数据。这是为了确保写数据仅对其目标的从设备有效。

必须保持的两个关系是:

  • 读数据必须始终跟随其数据所关联的地址
  • 写响应必须始终跟随写事务中的最后一次写传输。

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

为防止死锁情况,必须遵守握手信号之间存在的依赖关系。

在任何事务中:

  • AXI 组件的 VALID 信号不得依赖于事务中另一组件的 READY 信号
  • READY 信号可以等待 VALID 信号的断言。

注意:虽然等待 VALID 被断言后再断言 READY 是可以接受的,但默认在 VALID 断言之前断言 READY 也是可以接受的,这可以产生更高效的设计。

读事务握手依赖关系

在读事务中:

  • 从设备可以等待 ARVALID 被断言后才断言 ARREADY
  • 从设备必须等待 ARVALID 和 ARREADY 都被断言后,才开始通过断言 RVALID 返回读数据。
写事务握手依赖关系

在写事务中:

  • 主设备不得等待从设备断言 AWREADY 或 WREADY 后才断言 AWVALID 或 WVALID
  • 从设备可以等待 AWVALID 或 WVALID,或两者都等待,然后才断言 AWREADY
  • 从设备可以等待 AWVALID 或 WVALID,或两者都等待,然后才断言 WREADY
  • 从设备必须等待 WVALID、WREADY 和 WLAST 都被断言后才能断言 BVALID。

重要:在写事务期间,主设备不得等待 AWREADY 被断言后才驱动 WVALID。如果从设备反过来等待 WVALID 后才断言 AWREADY,这可能会导致死锁条件。


第4章 寻址选项

本章描述 AXI 突发类型以及如何计算突发内传输的地址和字节通道。它包含以下各节:

  • 4.1 关于寻址选项
  • 4.2 突发长度
  • 4.3 突发大小
  • 4.4 突发类型
  • 4.5 突发地址

4.1 关于寻址选项

AXI 协议是基于突发的,主设备通过驱动传输控制信息和传输中第一个字节的地址来开始每次突发。随着突发事务的进行,计算突发中后续传输的地址是从设备的责任。

突发不得跨越 4KB 边界,以防止它们跨越从设备之间的边界,并限制从设备内所需的地址增量器的大小。


4.2 突发长度

AWLEN 或 ARLEN 信号指定每次突发中发生的数据传输次数。如表4-1所示,每次突发可以是 1-16 次传输长。

ARLEN[3:0] / AWLEN[3:0] 数据传输次数
b0000 1
b0001 2
b0010 3
... ...
b1101 14
b1110 15
b1111 16

对于回环突发,突发长度必须是 2、4、8 或 16 次传输。

每个事务必须具有 ARLEN 或 AWLEN 指定的传输次数。任何组件都不得提前终止突发以减少数据传输次数。在写突发期间,主设备可以通过取消断言所有写选通来禁用进一步写入,但必须完成突发中剩余的传输。在读突发期间,主设备可以丢弃进一步的读数据,但必须完成突发中剩余的传输。

注意:丢弃不需要的读数据可能会导致访问读敏感设备(如 FIFO)时丢失数据。主设备不得使用比所需更长的突发长度访问此类设备。


4.3 突发大小

表4-2显示了 ARSIZE 或 AWSIZE 信号如何指定突发内每次节拍或数据传输中要传输的最大数据字节数。

ARSIZE[2:0] / AWSIZE[2:0] 传输字节数
b000 1
b001 2
b010 4
b011 8
b100 16
b101 32
b110 64
b111 128

AXI 根据传输地址确定数据总线的哪些字节通道用于每次传输。

对于传输大小窄于数据总线的递增或回环突发,数据传输在突发的每个节拍上使用不同的字节通道。固定突发的地址保持不变,每次传输使用相同的字节通道。

任何传输的大小不得超过事务中组件的数据总线宽度。


4.4 突发类型

AXI 协议定义了三种突发类型:

  • 固定突发(Fixed burst)
  • 递增突发(Incrementing burst)
  • 回环突发(Wrapping burst)

表4-3显示了 ARBURST 或 AWBURST 信号如何选择突发类型。

ARBURST[1:0] / AWBURST[1:0] 突发类型 描述 访问
b00 FIXED 固定地址突发 FIFO 类型
b01 INCR 递增地址突发 正常顺序存储器
b10 WRAP 在回环边界回绕到较低地址的递增地址突发 缓存行
b11 - 保留 -

4.4.1 固定突发

在固定突发中,地址对于突发中的每次传输都保持不变。这种突发类型用于重复访问同一位置,例如在加载或清空外设 FIFO 时。

4.4.2 递增突发

在递增突发中,突发中每次传输的地址都是前一次传输地址的增量。增量值取决于传输的大小。例如,在大小为四字节的突发中,每次传输的地址是前一地址加四。

4.4.3 回环突发

回环突发类似于递增突发,突发中每次传输的地址都是前一次传输地址的增量。但是,在回环突发中,当到达回环边界时,地址会回绕到较低的地址。回环边界是突发中每次传输的大小乘以突发中的总传输次数。

两个限制适用于回环突发:

  • 起始地址必须与传输大小对齐
  • 突发长度必须为 2、4、8 或 16。

4.5 突发地址

本节提供了一些用于确定突发内传输的地址和字节通道的简单公式。公式使用以下变量:

变量 描述
Start_Address 主设备发出的起始地址
Number_Bytes 每次数据传输中的最大字节数
Data_Bus_Bytes 数据总线中的字节通道数
Aligned_Address 起始地址的对齐版本
Burst_Length 突发内的数据传输总数
Address_N 突发内第 N 次传输的地址。N 是从 2-16 的整数
Wrap_Boundary 回环突发中的最低地址
Lower_Byte_Lane 传输的最低寻址字节的字节通道
Upper_Byte_Lane 传输的最高寻址字节的字节通道
INT(x) x 的向下取整整数值

使用以下公式确定突发内传输的地址:

  • Start_Address = ADDR
  • Number_Bytes = 2^SIZE
  • Burst_Length = LEN + 1
  • Aligned_Address = (INT(Start_Address / Number_Bytes)) × Number_Bytes

使用此公式确定突发中第一次传输的地址:

  • Address_1 = Start_Address

使用此公式确定突发中第一次传输之后的任何传输的地址:

  • Address_N = Aligned_Address + (N -- 1) × Number_Bytes

对于回环突发,Wrap_Boundary 变量用于考虑回环边界:

  • Wrap_Boundary = (INT(Start_Address / (Number_Bytes × Burst_Length))) × (Number_Bytes × Burst_Length)

如果 Address_N = Wrap_Boundary + (Number_Bytes × Burst_Length),则使用此公式:

  • Address_N = Wrap_Boundary

在回环边界之后,使用此公式:

  • Address_N = Start_Address + ((N -- 1) × Number_Bytes) - (Number_Bytes × Burst_Length)

使用以下公式确定突发中第一次传输使用的字节通道:

  • Lower_Byte_Lane = Start_Address - (INT(Start_Address / Data_Bus_Bytes)) × Data_Bus_Bytes
  • Upper_Byte_Lane = Aligned_Address + (Number_Bytes - 1) - (INT(Start_Address / Data_Bus_Bytes)) × Data_Bus_Bytes

使用以下公式确定突发中第一次传输之后的所有传输使用的字节通道:

  • Lower_Byte_Lane = Address_N -- (INT(Address_N / Data_Bus_Bytes)) × Data_Bus_Bytes
  • Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes -- 1

数据在以下位置传输:

  • DATA[(8 × Upper_Byte_Lane) + 7 : (8 × Lower_Byte_Lane)]

第5章 附加控制信息

本章描述 AXI 协议对系统级缓存和保护单元的支持。它包含以下各节:

  • 5.1 缓存支持
  • 5.2 保护单元支持

5.1 缓存支持

通过使用缓存信息信号 ARCACHE 和 AWCACHE 提供对系统级缓存和其他性能增强组件的支持。这些信号提供有关如何处理事务的附加信息。

ARCACHE[3:0] 或 AWCACHE[3:0] 信号通过提供事务的可缓冲、可缓存和分配属性来支持系统级缓存:

可缓冲(B)位,ARCACHE[0] 和 AWCACHE[0]

当此位为 HIGH 时,意味着互连或任何组件可以将事务延迟到达其最终目的地任意多个周期。这通常仅与写操作相关。

可缓存(C)位,ARCACHE[1] 和 AWCACHE[1]

当此位为 HIGH 时,意味着最终目的地的事务不必与原始事务的特征匹配。

对于写操作,这意味着可以将多个不同的写操作合并在一起。

对于读操作,这意味着可以预取某个位置,或者可以为多个读事务仅获取一次。

要确定是否应缓存事务,应将此位与读分配(RA)和写分配(WA)位一起使用。

读分配(RA)位,ARCACHE[2] 和 AWCACHE[2]

当 RA 位为 HIGH 时,意味着如果传输是读操作且在缓存中未命中,则应分配它。

如果 C 位为 LOW,则 RA 位不得为 HIGH。

写分配(WA)位,ARCACHE[3] 和 AWCACHE[3]

当 WA 位为 HIGH 时,意味着如果传输是写操作且在缓存中未命中,则应分配它。

如果 C 位为 LOW,则 WA 位不得为 HIGH。

表5-1显示了 ARCACHE[3:0] 和 AWCACHE[3:0] 信号的编码。

AWCACHE[3:0] / ARCACHE[3:0] WA RA C B 事务属性
0000 0 0 0 0 不可缓存且不可缓冲
0001 0 0 0 1 仅可缓冲
0010 0 0 1 0 可缓存,但不分配
0011 0 0 1 1 可缓存且可缓冲,但不分配
0100 0 1 0 0 保留
0101 0 1 0 1 保留
0110 0 1 1 0 可缓存直写,仅读分配
0111 0 1 1 1 可缓存回写,仅读分配
1000 1 0 0 0 保留
1001 1 0 0 1 保留
1010 1 0 1 0 可缓存直写,仅写分配
1011 1 0 1 1 可缓存回写,仅写分配
1100 1 1 0 0 保留
1101 1 1 0 1 保留
1110 1 1 1 0 可缓存直写,读和写都分配
1111 1 1 1 1 可缓存回写,读和写都分配

在写事务的情况下,AWCACHE 信号可用于确定哪个组件提供写响应。如果写事务被指示为可缓冲的,则桥接器或系统级缓存提供写响应是可以接受的。但是,如果事务被指示为不可缓冲的,则写响应必须从事务的最终目的地提供。

AXI 协议不决定缓冲或缓存数据到达其目的地的机制。例如,系统级缓存可能具有管理清理、刷新和使缓存条目失效的控制器。另一个例子是包含写缓冲区的桥接器,如果它接收到具有匹配事务 ID 的非缓冲写操作,它可能具有排空缓冲区的控制逻辑。


5.2 保护单元支持

为了支持复杂的系统设计,通常需要互连和系统中的其他设备提供对非法事务的保护。AWPROT 或 ARPROT 信号提供三个级别的访问保护:

正常或特权,ARPROT[0] 和 AWPROT[0]

  • LOW 表示正常访问
  • HIGH 表示特权访问。

这被一些主设备用来指示其处理模式。特权处理模式通常在系统内具有更高级别的访问权限。

安全或非安全,ARPROT[1] 和 AWPROT[1]

  • LOW 表示安全访问
  • HIGH 表示非安全访问。

这在需要对处理模式进行更大程度区分的系统中使用。

注意:此位配置为当它为 HIGH 时,事务被视为非安全的;当为 LOW 时,事务被视为安全的。

指令或数据,ARPROT[2] 和 AWPROT[2]

  • LOW 表示数据访问
  • HIGH 表示指令访问。

此位指示事务是指令访问还是数据访问。

注意:此指示作为提示提供,并非在所有情况下都准确。例如,当事务包含指令和数据项的混合时。建议默认情况下,除非明确知道是指令访问,否则访问应标记为数据访问。

表5-2总结了 ARPROT[2:0] 和 AWPROT[2:0] 信号的编码。

ARPROT[2:0] / AWPROT[2:0] [0] [1] [2]
保护级别 1 = 特权访问 1 = 非安全访问 1 = 指令访问
0 = 正常访问 0 = 安全访问 0 = 数据访问

第6章 原子访问

本章描述 AXI 协议如何实现独占访问和锁定访问机制。它包含以下各节:

  • 6.1 关于原子访问
  • 6.2 独占访问
  • 6.3 锁定访问

6.1 关于原子访问

为了实现原子访问原语,ARLOCK[1:0] 或 AWLOCK[1:0] 信号提供独占访问和锁定访问。表6-1显示了 ARLOCK[1:0] 和 AWLOCK[1:0] 信号的编码。

ARLOCK[1:0] / AWLOCK[1:0] 访问类型
b00 正常访问
b01 独占访问
b10 锁定访问
b11 保留

6.2 独占访问

独占访问机制使得可以实现信号量类型操作,而不需要总线在操作的整个持续时间内保持锁定到特定主设备。独占访问的优势在于,信号量类型操作既不会影响关键总线访问延迟,也不会影响最大可实现带宽。

ARLOCK[1:0] 或 AWLOCK[1:0] 信号选择独占访问,RRESP[1:0] 或 BRESP[1:0] 信号(参见第7-2页的表7-1)指示独占访问的成功或失败。

从设备必须有额外的逻辑来支持独占访问。AXI 协议提供了一个故障安全机制,用于指示主设备何时尝试对不支持独占访问的从设备进行独占访问。

6.2.1 独占访问过程

独占访问的基本过程是:

  1. 主设备从某个地址位置执行独占读操作。
  2. 稍后,主设备尝试通过向同一地址位置执行独占写操作来完成独占操作。
  3. 主设备的独占写访问被标记为:
    • 如果在读和写访问之间没有其他主设备写入该位置,则成功。
    • 如果在读和写访问之间有另一个主设备写入该位置,则失败。在这种情况下,地址位置不会更新。

注意:主设备可能不会完成独占操作的写部分。独占访问监控硬件每个事务 ID 只能监控一个地址。因此,如果主设备不完成独占操作的写部分,后续的独占读将更改被监控独占性的地址。

6.2.2 从主设备角度看独占访问

主设备通过执行独占读来开始独占操作。这通常会从从设备返回 EXOKAY 响应,指示从设备已记录要监控的地址。

注意:如果主设备尝试从不支持独占访问的从设备进行独占读,从设备会返回 OKAY 响应而不是 EXOKAY 响应。主设备可以将其视为指示不支持独占访问的错误条件。建议主设备不要执行此独占操作的写部分。

在独占读之后的某个时间,主设备尝试对同一位置进行独占写。如果自独占读以来该位置没有改变,则独占写操作成功。从设备返回 EXOKAY 响应,独占写更新存储器位置。

如果自独占读以来地址位置已更改,则独占写尝试失败,从设备返回 OKAY 响应而不是 EXOKAY 响应。独占写尝试不会更新存储器位置。

主设备可能不会完成独占操作的写部分。如果发生这种情况,从设备会继续监控该地址的独占性,直到另一次独占读启动新的独占访问。

主设备不得在读部分完成之前开始独占访问的写部分。

6.2.3 从从设备角度看独占访问

不支持独占访问的从设备可以忽略 ARLOCK[1:0] 和 AWLOCK[1:0] 信号。它必须为正常访问和独占访问都提供 OKAY 响应。

支持独占访问的从设备必须有监控硬件。建议这样的从设备为每个可以访问它的支持独占的主设备 ID 配备一个监控单元。单端口从设备可以在从设备外部设置标准独占访问监控器,但多端口从设备可能需要内部监控。

独占访问监控器记录任何独占读操作的地址和 ARID 值。然后它监控该位置,直到对该位置发生写操作,或者直到另一次具有相同 ARID 值的独占读将监控器重置到不同地址。

当具有给定 AWID 值的独占写发生时,监控器检查该地址是否正在被监控独占性。如果是,则意味着没有写操作发生在该位置,独占写继续进行,完成独占访问。从设备向主设备返回 EXOKAY 响应。

如果在独占写时该地址不再被监控,这意味着以下情况之一:

  • 自独占读以来该位置已更新
  • 监控器已重置到另一个位置。

在这两种情况下,独占写都不得更新地址位置,从设备必须返回 OKAY 响应而不是 EXOKAY 响应。

6.2.4 独占访问限制

以下限制适用于独占访问:

  • 给定 ID 的独占写的大小和长度必须与具有相同 ID 的前面独占读的大小和长度相同。
  • 独占访问的地址必须与事务中的总字节数对齐。
  • 独占读和独占写的地址必须相同。
  • 独占访问读部分的 ARID 字段必须与写部分的 AWID 匹配。
  • 独占访问读和写部分的控制信号必须相同。
  • 独占访问突发中要传输的字节数必须是 2 的幂,即 1、2、4、8、16、32、64 或 128 字节。
  • 独占突发中可以传输的最大字节数为 128。
  • ARCACHE[3:0] 或 AWCACHE[3:0] 信号的值必须保证正在监控独占访问的从设备看到该事务。例如,被从设备监控的独占访问不得具有指示事务可缓存的 ARCACHE[3:0] 或 AWCACHE[3:0] 值。

不遵守这些限制会导致不可预测的行为。

独占操作期间要监控的最小字节数由事务的长度和大小定义。监控更大的字节数(最多 128,这是独占访问的最大值)是可以接受的。但是,这可能会导致独占访问实际上成功但被指示为失败的情况,因为相邻字节被更新。

6.2.5 不支持独占访问的从设备

响应信号 BRESP[1:0] 和 RRESP[1:0] 包括正常访问成功的 OKAY 响应和独占访问成功的 EXOKAY 响应。这意味着不支持独占访问的从设备可以提供 OKAY 响应来指示独占访问的失败。

注意:对不支持独占访问的从设备进行独占写总是会更新存储器位置。

对支持独占访问的从设备进行独占写仅在独占写成功时才更新存储器位置。


6.3 锁定访问

当事务的 ARLOCK[1:0] 或 AWLOCK[1:0] 信号显示它是锁定传输时,互连必须确保只有该主设备被允许访问从设备区域,直到来自同一主设备的未锁定传输完成。互连内的仲裁器用于强制执行此限制。

当主设备开始一系列读或写事务的锁定序列时,它必须确保没有其他未完成的事务等待完成。

任何将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为指示锁定序列的事务都会强制互连锁定后续事务。因此,锁定序列必须始终以最终事务完成,该事务没有将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为指示锁定访问。这个最终事务包含在锁定序列中,并有效地解除锁定。

在完成锁定序列时,主设备必须确保在发出最终解锁事务之前,所有先前的锁定事务都已完成。然后,它必须确保最终解锁事务已完全完成,然后才能开始任何进一步的事务。

主设备必须确保锁定序列中的所有事务具有相同的 ARID 或 AWID 值。

注意:锁定访问要求互连在锁定序列进行期间阻止任何其他事务发生,因此可能对互连性能产生影响。建议锁定访问仅用于支持传统设备。

以下限制是建议性的但不是强制性的:

  • 将所有锁定事务序列保持在同一 4KB 地址区域内
  • 将锁定事务序列限制为两个事务。

第7章 响应信号

本章描述 AXI 读和写事务中的四种从设备响应。它包含以下各节:

  • 7.1 关于响应信号
  • 7.2 响应类型

7.1 关于响应信号

AXI 协议允许对读和写事务进行响应信号传输。对于读事务,从设备的响应信息与读数据本身一起传递;但对于写操作,响应信息通过写响应通道传递。

AXI 协议响应包括:

  • OKAY
  • EXOKAY
  • SLVERR
  • DECERR

表7-1显示了 RRESP[1:0] 和 BRESP[1:0] 信号的编码。

RRESP[1:0] / BRESP[1:0] 响应 含义
b00 OKAY 正常访问正常,指示正常访问是否成功。也可指示独占访问失败。
b01 EXOKAY 独占访问正常,指示独占访问的读或写部分已成功。
b10 SLVERR 从设备错误,用于访问已成功到达从设备,但从设备希望向发起主设备返回错误条件的情况。
b11 DECERR 解码错误,通常由互连组件生成,以指示事务地址处没有从设备。

对于写事务,整个突发只给出一个响应,而不是突发内的每个数据传输。

在读事务中,从设备可以对突发内的不同传输给出不同的响应。例如,在 16 次读传输的突发中,从设备可能对其中 15 次传输返回 OKAY 响应,对一次传输返回 SLVERR 响应。

协议规定,即使报告了错误,也必须执行所需数量的数据传输。例如,如果从设备有错误条件,则从主设备请求 8 次传输的读操作,从设备必须执行 8 次数据传输,每次都有错误响应。如果从设备给出单个错误响应,突发中剩余的部分不会取消。

此协议对可以发出多个未完成地址且还必须支持精确错误信号的主设备施加限制。此类主设备必须能够处理早期传输的错误响应,而后续传输已经在进行中。


7.2 响应类型

本节描述四种 AXI 协议响应类型:

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

7.2.1 正常访问成功

OKAY 响应指示:

  • 正常访问的成功
  • 独占访问的失败
  • 对不支持独占访问的从设备的独占访问。

OKAY 是大多数事务的响应。

7.2.2 独占访问

EXOKAY 响应指示独占访问的成功。第6章原子访问描述了此响应。

7.2.3 从设备错误

SLVERR 响应指示事务不成功。从设备错误条件的示例包括:

  • FIFO/缓冲区溢出或欠流条件
  • 尝试了不支持的传输大小
  • 尝试对只读位置进行写访问
  • 从设备中的超时条件
  • 尝试访问不存在寄存器的地址
  • 尝试访问已禁用或断电的功能。

为了简化系统监控和调试,建议错误响应仅用于错误条件,而不用于信号正常、预期的事件。

7.2.4 解码错误

在没有完全解码地址映射的系统中,可能存在没有从设备响应事务的地址。在此类系统中,互连必须提供适当的错误响应来标记访问为非法,并防止系统因尝试访问不存在的从设备而锁定。

当互连无法成功解码从设备访问时,它会有效地将访问路由到默认从设备,默认从设备返回 DECERR 响应。

一个实现选项是让默认从设备也记录解码错误的详细信息,以便稍后确定错误是如何发生的。这样,默认从设备可以显著简化调试过程。

AXI 协议要求完成事务的所有数据传输,即使发生错误条件。因此,给出 DECERR 响应的任何组件都必须满足此要求。


第8章 排序模型

本章描述 AXI 协议如何使用事务 ID 标签来实现多个未完成地址的发出和乱序事务处理。它包含以下各节:

  • 8.1 关于排序模型
  • 8.2 传输 ID 字段
  • 8.3 读排序
  • 8.4 正常写排序
  • 8.5 写数据交错
  • 8.6 读写交互
  • 8.7 互连对 ID 字段的使用
  • 8.8 建议的 ID 字段宽度

8.1 关于排序模型

AXI 协议支持乱序事务完成和多个未完成地址的发出。这些特性支持高性能互连的实现,最大限度地提高数据吞吐量和系统效率。

ID 信号通过使每个端口充当多个有序端口来支持乱序事务。具有给定 ID 的所有事务必须有序,但对具有不同 ID 的事务的排序没有限制。五个事务 ID 是:

ID 描述
AWID 写地址组信号的 ID 标签
WID 写事务的写 ID 标签。主设备随写数据传输一个 WID,以匹配相应地址的 AWID
BID 写响应的 ID 标签。从设备传输一个 BID 以匹配它所响应的事务的 AWID 和 WID
ARID 读地址组信号的 ID 标签
RID 读事务的读 ID 标签。从设备传输一个 RID 以匹配它所响应的事务的 ARID

注意:从设备和主设备不需要使用这些高级特性。简单主设备和简单从设备可以按发出顺序一次处理一个事务。

发出多个未完成地址的能力意味着主设备可以在等待较早事务完成之前发出事务地址。此特性可以提高系统性能,因为它支持事务的并行处理。

乱序完成事务的能力意味着对较快存储器区域的事务可以在等待对较慢存储器区域的较早事务之前完成。此特性还可以提高系统性能,因为它减少了事务延迟的影响。

注意:事务的重新排序始终是相对于其他事务而言的。没有突发内数据传输重新排序的功能。定义突发的地址和控制信号控制突发内传输的顺序。


8.2 传输 ID 字段

AXI 协议提供一个 ID 字段,使主设备能够发出多个独立的事务,每个事务必须按顺序返回。

主设备可以使用事务的 ARID 或 AWID 字段来提供有关主设备排序要求的附加信息。管理事务排序的规则如下:

  • 来自不同主设备的事务没有排序限制。它们可以按任何顺序完成。
  • 来自同一主设备但具有不同 ID 值的事务没有排序限制。它们可以按任何顺序完成。
  • 具有相同 AWID 值的一系列写事务的数据必须按照主设备发出地址的相同顺序完成。
  • 具有相同 ARID 值的一系列读事务的数据必须按顺序返回:
    • 当具有相同 ARID 的读操作来自同一从设备时,从设备必须确保读数据按照接收到地址的相同顺序返回。
    • 当具有相同 ARID 的读操作来自不同从设备时,互连必须确保读数据按照主设备发出地址的相同顺序返回。
  • 具有相同 AWID 和 ARID 的读和写事务之间没有排序限制。如果主设备需要排序限制,则必须确保第一个事务完全完成后才发出第二个事务。

8.3 读排序

在主设备接口上,具有相同 ARID 值的读事务的读数据必须按照主设备发出地址的相同顺序到达。来自具有不同 ARID 值的读事务的数据可以按任何顺序返回,并且也可以接受交错具有不同 ARID 字段的读事务的读数据。

从设备必须按照接收到地址的相同顺序返回具有相同 ARID 值的一系列读事务的读数据。在具有不同 ARID 值的一系列读事务中,从设备可以按照与事务到达顺序不同的顺序返回读数据。

从设备必须确保任何返回的读数据的 RID 值与它正在响应的地址的 ARID 值匹配。

互连必须确保来自不同从设备且具有相同 ARID 值的一系列读事务按顺序完成。

读数据重排序深度是从设备中待处理可以重排序的地址数量。按顺序处理所有事务的从设备的读数据重排序深度为一。读数据重排序深度是由从设备设计者指定的静态值。


8.4 正常写排序

如果从设备不支持写数据交错(参见第8-6页的写数据交错),主设备必须按照发出事务地址的相同顺序发出写事务的数据。

大多数从设备设计不支持写数据交错,因此这些类型的从设备设计必须按照接收到地址的相同顺序接收写数据。如果互连将来自不同主设备的写事务组合到一个从设备,它必须确保按地址顺序组合写数据。

这些限制即使写事务具有不同的 AWID 值也适用。


8.5 写数据交错

写数据交错使从设备接口能够接受具有不同 AWID 值的交错写数据。从设备声明一个写数据交错深度,指示接口是否可以从具有不同 AWID 值的源接受交错写数据。写数据交错深度是静态配置的。默认情况下,任何接口的写数据交错深度为一。

注意:不允许交错具有相同 AWID 的不同事务的写数据。

写数据交错深度是当前在从设备接口中待处理可以提供写数据的不同地址的数量。例如,写数据交错深度为 2 且具有四个不同地址(都具有不同的 AWID 值)待处理的从设备可以接受前两个待处理地址中任一地址的数据。

从设备接收每个事务的第一个数据项的顺序必须与它接收到事务地址的顺序相同。

写数据交错可以在互连将多个写数据流组合到同一从设备时防止停顿。互连可以将来自慢速源的一个写数据流和来自快速源的另一个写数据流组合。通过交错两个写数据流,互连可以提高系统性能。

注意:如果两个具有不同 AWID 值的写事务访问相同或重叠的地址位置,则处理顺序未定义。更高级别的协议必须确保事务处理的正确顺序。

只能生成具有一个 AWID 值的写数据的主设备接口按照发出地址的相同顺序生成所有写数据。但是,如果从设备接口的写数据交错深度大于一,则主设备接口可以交错具有不同 WID 值的写数据。

对于可以在内部控制写数据生成的大多数主设备,不需要写数据交错。这样的主设备可以按照生成地址的相同顺序生成写数据。但是,从多个不同速度的源传递写数据的主设备接口可以交错源,以最大限度地利用互连。

为避免死锁情况,只有当从设备接口能够连续接受交错写数据时,其写交错深度才大于一。从设备接口不得为了试图改变写数据的顺序而停顿写数据的接受。


8.6 读写交互

读和写事务之间没有排序限制,允许它们按任何顺序完成。

如果主设备需要读和写事务之间的给定关系,则它必须确保较早的事务完成后才发出较晚的事务。对于读操作,当最后一个读数据返回主设备时,可以认为较早的事务已完成。对于写操作,只有当收到写响应时,事务才能被视为完成;当所有写数据都发送完时,就认为写事务完成是不可接受的。

对于外设占用的地址区域,这通常意味着在需要排序限制时,在读写事务之间切换时要等待较早的事务完成。

对于存储器区域,主设备可以实现对未完成事务的地址检查,以确定新事务是否可能到达相同或重叠的地址区域。如果事务不重叠,则新事务可以在不等待较早事务完成的情况下开始。


8.7 互连对 ID 字段的使用

当主设备接口连接到互连时,互连会将附加位附加到 ARID、AWID 和 WID 字段,这些位对该主设备端口是唯一的。这有两个效果:

  • 主设备不需要知道其他主设备使用什么 ID 值,因为当互连将主设备号附加到字段时,ID 值变得唯一
  • 从设备接口处的 ID 字段宽度比主设备接口处的 ID 字段宽。

对于读数据,互连使用 RID 字段的附加位来确定读数据要发往哪个主设备端口。互连在将 RID 值传递到正确的主设备端口之前,会移除 RID 字段的这些位。


8.8 建议的 ID 字段宽度

为了利用 AXI 乱序事务能力,请使用以下建议:

  • 在主设备组件中实现最多四位的事务 ID
  • 在互连中实现最多四位附加的事务 ID 用于主设备端口号
  • 在从设备组件中实现八位 ID 支持。

注意:对于仅支持单个有序接口的主设备,将 ID 输出连接到恒定值(如 0)是可以接受的。

对于不使用排序信息且简单地按顺序处理所有事务的从设备,可以使用标准的现成模块将 ID 功能添加到从设备,从而可以在没有 ID 信号的情况下设计从设备的基本功能。


第9章 数据总线

本章描述 AXI 读和写数据总线上不同大小的传输,以及接口如何使用字节不变字节序来处理混合字节序传输。它包含以下各节:

  • 9.1 关于数据总线
  • 9.2 写选通
  • 9.3 窄传输
  • 9.4 字节不变性

9.1 关于数据总线

AXI 协议有两个独立的数据总线,一个用于读数据,一个用于写数据。因为这些数据总线有自己独立的握手信号,所以两个总线上的数据传输可以同时发生。

主设备生成的每次传输的宽度必须等于或窄于传输的数据总线宽度。


9.2 写选通

写选通信号 WSTRB 使写数据总线上的稀疏数据传输成为可能。每个写选通信号对应于写数据总线的一个字节。当断言时,写选通指示数据总线的相应字节通道包含要更新到存储器中的有效信息。

写数据总线的每八个位对应一个写选通,因此 WSTRB[n] 对应于 WDATA[(8 × n) + 7: (8 × n)]。

主设备必须确保写选通仅对事务的控制信息确定可能包含有效数据的字节通道进行断言。


9.3 窄传输

当主设备生成的传输窄于其数据总线时,地址和控制信息确定传输使用哪些字节通道。在递增或回环突发中,不同的字节通道在突发的每个节拍上传输数据。在固定突发中,地址保持不变,可以使用的字节通道也保持不变。

在示例中:

  • 突发有五次传输
  • 起始地址为 0
  • 每次传输为八位
  • 传输在 32 位总线上。

另示例中:

  • 突发有三次传输
  • 起始地址为 4
  • 每次传输为 32 位
  • 传输在 64 位总线上。

9.4 字节不变性

为了访问驻留在同一存储空间中的混合字节序数据结构,AXI 协议使用字节不变字节序方案。

字节不变字节序意味着对给定地址的字节传输将数据的八位传递到相同的数据总线线上,到达相同的地址位置。

只有一个传输宽度的组件必须将其字节通道连接到数据总线的适当字节通道。支持多种传输宽度的组件可能需要更复杂的接口来转换非自然字节不变的接口。

大多数小字节序组件可以直接连接到字节不变接口。仅支持大字节序传输的组件需要字节不变操作的转换功能。

字节不变性确保对小字节序头信息各部分的访问不会损坏结构内的其他大字节序数据。


第10章 非对齐传输

本章描述 AXI 协议如何处理非对齐传输。它包含以下各节:

  • 10.1 关于非对齐传输
  • 10.2 示例

10.1 关于非对齐传输

AXI 协议使用基于突发的寻址,这意味着每个事务由多次数据传输组成。通常,每次数据传输都与传输的大小对齐。例如,32 位宽的传输通常与四字节边界对齐。但是,有时希望在未对齐的地址开始突发。

对于任何由大于一字节的数据传输组成的突发,可能要访问的第一个字节可能与自然数据宽度边界不对齐。例如,从字节地址 0x1002 开始的 32 位(四字节)数据包与 32 位边界不对齐。

AXI 协议使主设备能够使用低位地址线来信号突发的非对齐起始地址。低位地址线上的信息必须与字节通道选通中包含的信息一致。

注意:AXI 协议不要求从设备基于主设备的任何对齐信息采取特殊操作。

主设备也可以简单地提供对齐地址,并在写事务中依靠字节通道选通来提供有关数据使用哪些字节通道的信息。


10.2 示例

图示展示了对齐和非对齐传输的示例。每行代表一次传输。阴影单元格表示根据地址和控制信息不传输的字节。



第11章 时钟和复位

本章描述 AXI 时钟和复位信号的时序。它包含以下各节:

  • 11.1 时钟和复位要求

11.1 时钟和复位要求

本节给出实现 ACLK 和 ARESETn 信号的要求。

时钟

每个 AXI 组件使用单个时钟信号 ACLK。所有输入信号都在 ACLK 的上升沿采样。所有输出信号变化必须在 ACLK 的上升沿之后发生。

主设备和从设备接口上的输入和输出信号之间不得存在组合路径。

复位

AXI 协议包括一个低电平有效的复位信号 ARESETn。复位信号可以异步断言,但取消断言必须在 ACLK 上升沿之后同步进行。

复位期间适用以下接口要求:

  • 主设备接口必须将 ARVALID、AWVALID 和 WVALID 驱动为 LOW
  • 从设备接口必须将 RVALID 和 BVALID 驱动为 LOW

所有其他信号可以驱动为任何值。

主设备接口必须仅在 ARESETn 为 HIGH 后的 ACLK 上升沿开始将 ARVALID、AWVALID 或 WVALID 驱动为 HIGH。


第12章 低功耗接口

本章描述进入和退出低功耗状态期间 AXI 协议时钟控制接口。它包含以下各节:

  • 12.1 关于低功耗接口
  • 12.2 低功耗时钟控制

12.1 关于低功耗接口

低功耗接口是数据传输协议的可选扩展,针对两类不同的外设:

  • 需要断电序列的外设,只有在进入低功耗状态后才能关闭其时钟。这些外设需要系统时钟控制器的指示来确定何时启动断电序列。
  • 没有断电序列的外设,可以独立指示何时可以关闭其时钟。

12.2 低功耗时钟控制

低功耗时钟控制接口包括以下信号:

  • 来自外设的信号,指示何时可以启用或禁用时钟
  • 用于系统时钟控制器请求退出或进入低功耗状态的两个握手信号。

时钟控制接口中的主要信号是 CACTIVE。外设使用此信号来指示何时需要启用其时钟。外设断言 CACTIVE 以指示它需要时钟,系统时钟控制器必须立即启用时钟。

外设取消断言 CACTIVE 以指示它不需要时钟。然后系统时钟控制器可以确定是启用还是禁用外设时钟。

可以随时启用或禁用时钟的外设可以永久将 CACTIVE 驱动为 LOW。必须始终启用时钟的外设必须永久将 CACTIVE 驱动为 HIGH。

对于没有断电或上电序列的某些外设,这种到系统时钟控制器的简单接口就足够了。

对于具有断电或上电序列的更复杂的外设,仅在系统时钟控制器请求后才进入低功耗状态。AXI 协议提供了一个双线请求/确认握手来支持此请求:

CSYSREQ:请求外设进入低功耗状态,系统时钟控制器将 CSYSREQ 信号驱动为 LOW。在正常操作期间,CSYSREQ 为 HIGH。

CSYSACK:外设使用 CSYSACK 信号来确认低功耗状态请求和退出低功耗状态。

CSYSREQ 和 CSYSACK 之间的关系是 AXI 协议的要求。


外设可以接受或拒绝系统时钟控制器的低功耗请求。当外设通过取消断言 CSYSACK 确认请求时,CACTIVE 信号的电平指示请求的接受或拒绝。

12.2.1 接受低功耗请求

图示展示了外设接受系统低功耗请求时的事件顺序。

在图示中,序列在 T1 开始,系统时钟控制器取消断言 CSYSREQ 以请求外设进入低功耗状态。外设识别请求后,它可以执行其断电功能并取消断言 CACTIVE。然后外设在 T3 取消断言 CSYSACK 以完成进入低功耗状态。

在 T4,系统时钟控制器通过断言 CSYSREQ 开始低功耗状态退出序列。然后外设在 T5 断言 CACTIVE,并在 T6 通过断言 CSYSACK 完成退出序列。

12.2.2 拒绝低功耗请求

图示展示了外设拒绝系统低功耗请求时的事件顺序。

在图示中,外设通过在确认低功耗请求时保持 CACTIVE HIGH 来拒绝低功耗请求。在那之后,系统时钟控制器必须通过断言 CSYSREQ 来完成低功耗请求握手,然后才能启动另一个请求。

12.2.3 退出低功耗状态

系统时钟控制器或外设都可以请求退出低功耗状态并恢复时钟。根据定义,在低功耗状态期间,CACTIVE 和 CSYSREQ 都为 LOW,将其中任何一个信号驱动为 HIGH 都会启动退出序列。

系统时钟控制器可以通过启用时钟并将 CSYSREQ 驱动为 HIGH 来启动退出低功耗状态。然后外设可以执行上电序列,将 CACTIVE 驱动为 HIGH。然后通过将 CSYSACK 驱动为 HIGH 来完成退出。

外设可以通过将 CACTIVE 驱动为 HIGH 来启动退出低功耗状态。然后系统时钟控制器必须立即恢复时钟。它还必须将 CSYSREQ 驱动为 HIGH 以继续握手序列。然后外设通过将 CSYSACK 驱动为 HIGH 来完成序列,同时退出低功耗状态。外设可以根据需要将 CSYSACK 保持 LOW 多个周期以完成退出序列。

12.2.4 时钟控制序列总结

图示展示了进入和退出低功耗状态的典型流程。

12.2.5 在低功耗域中组合外设

系统时钟控制器可以在同一低功耗时钟域中组合多个不同的外设。然后,如果遵守以下规则,可以将该时钟域视为单个外设:

  • 时钟域 CACTIVE 信号是时钟域内所有 CACTIVE 信号的逻辑或。这意味着只有当所有外设指示可以禁用时钟时,系统时钟控制器才能禁用时钟。
  • 系统时钟控制器可以使用路由到时钟域内所有外设的单个 CSYSREQ 信号。
  • 时钟域 CSYSACK 信号生成如下:
    • CSYSACK 的下降沿发生在所有外设的最后一个下降沿发生时
    • CSYSACK 的上升沿发生在所有外设的最后一个上升沿发生时。

第13章 AXI4

本章定义对 AXI 协议的 AXI4 更新。AXI 版本 1.0 协议现称为 AXI3 协议。本章面向已经熟悉使用 AXI3 协议实现系统且不需要前几章给出的深入介绍的工程师和系统设计师。它包含以下各节:

  • 13.1 突发支持
  • 13.2 服务质量信号
  • 13.3 多区域接口
  • 13.4 写响应依赖关系
  • 13.5 AWCACHE 和 ARCACHE 属性
  • 13.6 不可修改事务的排序要求
  • 13.7 更新读取分配和写入分配的含义
  • 13.8 存储器类型
  • 13.9 不匹配的属性
  • 13.10 事务缓冲
  • 13.11 设备存储器类型的使用
  • 13.12 遗留考虑
  • 13.13 排序模型
  • 13.14 用户信号
  • 13.15 锁定事务
  • 13.16 写交错
  • 13.17 互操作性和默认信号

13.1 突发支持

本节描述 AXI4 协议提供的更长突发支持、使用限制以及确保与现有设计向后兼容的遗留考虑。

13.1.1 更长突发支持

AXI3 规范允许突发长度为最多 16 拍。AXI4 协议通过扩展 AWLEN 和 ARLEN 支持更长的突发。这些信号给出突发中的精确传输次数,并确定与地址关联的数据传输次数。

8 位 AWLEN[7:0] 和 ARLEN[7:0] 信号支持最多 256 拍的突发。

突发长度定义为:

  • Burst_Length = AxLEN[7:0] + 1

13.1.2 使用限制

如 AXI3 协议所定义:

  • 不支持突发提前终止。
  • 突发不得跨越 4KB 字节边界。这确保突发仅针对单个从设备。

此外,对于 AXI4 协议的更长突发支持:

  • 超过 16 拍的突发仅支持 INCR 突发类型。WRAP 和 FIXED 突发类型仍限制为最大突发长度 16 拍。
  • 独占访问不允许使用大于 16 的突发长度。

突发的详细协议保持不变。参见第4章寻址选项。

突发长度大于 16 的事务可以转换为多个较小的突发,即使事务属性指示该事务是不可修改的(由 AWCACHE[1] 或 ARCACHE[1] 被取消断言为 LOW 所示)。在这种情况下,生成的突发必须保留与原始事务相同的事务特征。唯一的例外是 AWLEN 或 ARLEN 指示的突发长度减少,并且生成突发的地址被适当调整。

注意:将更长突发分解为多个较短突发的能力是 AXI3 兼容性所需要的,也可能需要减少更长突发对可以为系统提供的 QoS 保证的影响。

13.1.3 遗留考虑

为了向后兼容,AXI3 主设备可以连接到接受更长突发长度的 AXI4 从设备,无需转换。

生成更长突发的 AXI4 主设备需要转换包装器才能连接到 AXI3 从设备。此包装器必须将更长的突发转换为一系列 AXI3 突发,通常为长度 16。


13.2 服务质量信号

本节描述 AXI4 协议中额外信号的使用,以支持服务质量(QoS)。

13.2.1 额外接口信号

AXI4 接口功能扩展为支持两个 4 位 QoS 标识符:

信号 描述
AWQOS 为每次写事务在写地址通道上发送的 4 位 QoS 标识符
ARQOS 为每次读事务在读地址通道上发送的 4 位 QoS 标识符

协议未指定 QoS 标识符的确切用途。AWQOS 和 ARQOS 标识符的首选用途是作为关联写或读事务的优先级指示符。较高的值表示较高优先级的事务。

默认值 b0000 表示接口未积极参与 QoS 方案。

注意:可以接受对 QoS 标识符的额外解释。

13.2.2 主设备考虑

主设备可以生成自己的 AWQOS 和 ARQOS 值,如果它能够生成多个流量流,则可以为不同的流选择不同的 QoS 值。

任何系统中的 QoS 支持都需要对正在使用的 QoS 方案有系统级的理解,以及所有参与组件之间的协作。因此,建议主设备组件使用某种形式的可编程方案,以允许控制任何给定场景的确切 QoS 值。

如果主设备组件不支持可编程方案,它可以使用代表其生成事务相对优先级的 QoS 值。然后,如果合适,可以将这些值映射到替代的系统级 QoS 值。

对于无法生成自己的 AWQOS 和 ARQOS 值的主设备,它必须使用默认值。

注意:预计许多互连实现将支持可编程寄存器的概念,允许为主设备分配 QoS 值,并用于替代主设备提供的 QoS 值(实际值或默认值)。

13.2.3 系统考虑

AXI4 定义了一个接口规范,可用于任何兼容的系统级 QoS 方法。

QoS 的默认系统级实现是,任何有多个事务要处理的组件都会选择 QoS 值较高的事务优先处理。此操作仅在没有其他要求按特定顺序处理事务的约束时发生。

注意:标准 AXI 排序规则优先于 QoS 目的的排序。

可以实现与所述方案兼容的更复杂的 QoS 方案。


13.3 多区域接口

本节描述 AXI4 协议提供的对多区域接口的可选支持。

13.3.1 额外接口信号

为了支持区域解码,AXI4 接口功能扩展为支持两个 4 位区域标识符:

信号 描述
AWREGION 为每次写事务在写地址通道上发送的区域标识符
ARREGION 为每次读事务在读地址通道上发送的区域标识符

4 位区域标识符允许唯一标识最多十六个不同的区域。

区域标识符提供高位地址位的解码。区域标识符必须在 4KB 地址空间内保持不变。

区域标识符允许从设备的单个物理接口用于驻留在系统地址映射中不同位置的多个逻辑接口。使用区域标识符意味着从设备不必支持不同逻辑接口之间的地址解码。

通常,AWREGION 和 ARREGION 由互连在执行单个从设备的地址解码功能时生成,该从设备在系统地址映射中定义了多个地址解码区域。如果从设备在系统地址映射中只有一个地址解码定义,则互连必须使用 AWREGION 和 ARREGION 的默认值。

区域标识符存在多种使用模型,包括但不限于以下:

  • 外设的主数据路径和控制寄存器可以驻留在地址映射中的不同位置,并通过单个接口访问,而不需要从设备执行地址解码。
  • 从设备可以在不同的存储器区域中表现出不同的行为。例如,从设备可能在一个区域中有读和写访问,但在另一个区域中只有只读访问。

从设备负责确保在任何区域之间保持正确的协议和事务的正确排序。从设备必须确保对具有相同 AXI ID 的不同区域的两个事务的响应以正确的顺序提供。

从设备还有责任确保对 AWREGION 和 ARREGION 的任何值都遵循正确的协议。如果从设备实现的区域少于十六个,则从设备负责确保在访问不支持区域期间遵循正确的协议。如何实现这一点取决于实现。例如,从设备可以通过以下方式确保这一点:

  • 为访问任何不支持区域的事务提供错误响应
  • 将支持区域映射到不支持区域,以确保在所有情况下都提供符合协议的响应。

AWREGION 和 ARREGION 信号仅提供现有地址空间的地址解码,可供从设备用于消除地址解码功能的需要。这些信号不会创建新的独立地址空间,地址和区域信号必须保持一致。AWREGION 和 ARREGION 只能存在于地址解码功能下游的接口上。


13.4 写响应依赖关系

本节描述 AXI4 协议依赖关系,确定从设备何时可以向主设备发出写响应。

13.4.1 额外依赖关系

AXI3 协议要求所有事务的写响应不得在最后一次数据传输被接受后的时钟周期之前给出。

此外,AXI4 协议要求所有事务的写响应不得在地址接受后的时钟周期之前给出。

此额外依赖关系反映了 AXI3 中的预期用途,因为预计没有任何组件会在接受地址之前接受所有写数据并提供写响应。

注意:通过发出写响应,从设备承担了将写事务与所有后续事务进行危险检查的责任。

图示显示了所有必需的依赖关系。单头箭头头部的信号可以依赖于箭头尾部信号被断言之前或之后。双头箭头头部的信号必须仅在箭头尾部信号被断言之后才能断言。

图示显示:

  • 主设备不得等待从设备断言 AWREADY 或 WREADY 后才断言 AWVALID 或 WVALID
  • 从设备可以等待 AWVALID 或 WVALID,或两者都等待,然后才断言 AWREADY
  • 从设备可以等待 AWVALID 或 WVALID,或两者都等待,然后才断言 WREADY
  • 从设备必须等待 AWVALID 和 AWREADY 都被断言后才能断言 BVALID
  • 从设备必须等待 WVALID、WREADY 和 WLAST 都被断言后才能断言 BVALID
  • 从设备不得等待主设备断言 BREADY 后才断言 BVALID
  • 主设备可以等待 BVALID 后才断言 BREADY。

13.4.2 遗留考虑

额外的新地址依赖关系意味着在接受地址之前接受所有写数据并提供写响应的 AXI3 从设备不符合 AXI4。将 AXI3 传统从设备转换为 AXI4 需要添加一个包装器,确保在从设备接受适当地址之前不提供返回的写响应。

注意:建议任何新的 AXI3 从设备设计都应具有这种额外的本机依赖关系。

任何 AXI3 主设备已经与 AXI4 写响应要求兼容。


13.5 AWCACHE 和 ARCACHE 属性

本节描述 AWCACHE 和 ARCACHE 信号,用于指示事务需要如何通过系统进行,以及任何系统级缓存应如何处理事务。

AXI4 对存储器属性信号所做的更改包括:

  • 将 AWCACHE[1] 和 ARCACHE[1] 重命名为 Modifiable
  • 不可修改事务的排序要求
  • 更新读取分配和写入分配的含义
  • 更新存储器类型的名称。

注意:AXI 协议支持排序模型,排序主题在本节中讨论。有关排序的更详细讨论,参见第13-23页的排序模型。

13.5.1 AWCACHE[1] 和 ARCACHE[1] - Modifiable

AWCACHE[1] 和 ARCACHE[1] 以前命名为可缓存位,现重命名为可修改位。当断言为 HIGH 时,这些位指示可以修改事务的特征。当取消断言为 LOW 时,指示事务是不可修改的。以下各节描述了不可修改和可修改事务的限制。

不可修改事务

不可修改事务不得拆分为多个事务或与另一个事务合并。

如果事务被标记为不可修改,则表13-1中列出的参数不得更改。

参数 受影响的信号
传输地址 AWADDR、ARADDR 以及 AWREGION、ARREGION
突发大小 AWSIZE、ARSIZE
突发长度 AWLEN、ARLEN
突发类型 AWBURST、ARBURST
锁定类型 AWLOCK、ARLOCK
保护类型 AWPROT、ARPROT

缓存类型 AWCACHE 和 ARCACHE 只能修改以将事务从可缓冲转换为不可缓冲。不允许其他转换。

事务 ID 和 QoS 值可以修改。

突发长度大于 16 的不可修改事务可以分解为多个事务。每个生成的事务必须满足上述要求,但突发长度减少且生成突发的地址被适当调整。

注意:有些情况下无法达到不可修改事务的要求。当缩小到窄于事务大小(AWSIZE 或 ARSIZE)所需的总线宽度时,必须修改事务。

执行此类操作的组件可以可选地包含指示已发生修改的机制。这可以协助软件调试。

可修改事务

可修改事务可以通过多种方式操作:

  • 一个事务可以拆分为多个事务
  • 多个事务可以合并为一个事务
  • 读事务可以获取更多数据
  • 写事务可以访问比所需更大的地址范围,使用选通来确保仅更新适当的位置
  • 每个生成事务的传输地址(AWADDR 或 ARADDR)、突发大小(AWSIZE 或 ARSIZE)、突发长度(AWLEN 或 ARLEN)和突发类型(AWBURST 或 ARBURST)可以修改。

以下不得更改:

  • 锁定类型:AWLOCK 或 ARLOCK
  • 保护类型:AWPROT 或 ARPROT。

缓存类型 AWCACHE 或 ARCACHE 可以修改,但任何修改必须确保其他组件对事务的可见性不会降低,无论是通过阻止事务传播到所需点,还是通过改变需要在缓存中查找事务的需求。对缓存类型属性的任何修改对于同一地址范围的所有事务必须一致。

事务 ID 和 QoS 值可以修改。

不允许任何可能导致访问与原始事务不同的 4KB 地址空间的事务修改。此外,不允许任何导致对同一单副本原子大小区域的单次访问作为多次访问执行的事务修改。


13.6 不可修改事务的排序要求

AXI4 要求,使用相同 AXI ID 发往同一从设备且为不可修改(AWCACHE[1] 或 ARCACHE[1] 取消断言为 LOW)的任何不可修改事务之间保持排序。这确保主设备发出事务的顺序与从设备接收到事务的顺序相同。如果事务发往同一从设备,则无论事务的地址如何,都必须保持排序。

只有在另一个方向的事务收到响应后发出一个方向的事务时,才能保证独立读和写通道之间的排序。如果一个方向的事务在收到另一个方向的响应之前发出,则事务之间不存在排序。

无法对不同从设备的事务的相对排序做出任何保证。因为不同物理从设备之间的地址映射边界是实现定义的边界,如果不知道从设备之间的边界,则同一路径上具有相同 AXI ID 的所有不可修改事务必须保持有序。

此排序要求适用于所有不可修改事务,包括不可缓冲和可缓冲事务之间。当从中间点给出事务响应时,给出响应的组件负责确保正确的排序。

有关排序模型的更多信息,参见第13-23页的排序模型。


13.7 更新读取分配和写入分配的含义

读取分配和写入分配位的含义已更新,使一个位指示是否为事务进行分配,另一个位指示是否由于另一个事务而进行分配。

对于读事务,写入分配位被重新定义以指示:

  • 该位置可能由于写事务而预先分配在缓存中(如 AXI3 定义)
  • 该位置可能由于另一个主设备的操作而预先分配在缓存中(额外的 AXI4 定义)。

对于写事务,读取分配位被重新定义以指示:

  • 该位置可能由于读事务而预先分配在缓存中(如 AXI3 定义)
  • 该位置可能由于另一个主设备的操作而预先分配在缓存中(额外的 AXI4 定义)。

这些更改意味着:

  • 如果 AWCACHE[3:2] 或 ARCACHE[3:2] 的值不是 b00,则必须在缓存中查找事务
  • 如果 AWCACHE[3:2] 或 ARCACHE[3:2] 的值是 b00,则不需要在缓存中查找事务。

注意:AWCACHE 和 ARCACHE 定义的变化意味着这些信号对于同一位置的读和写事务可能不同。

AWCACHE 信号的 AXI4 位分配在表13-2中描述。

信号 AXI4 定义 描述
AWCACHE[3] Allocate 当断言为 HIGH 时,必须在缓存中查找事务,因为它可能已被预先分配。如果 AWCACHE[2] 被断言为 HIGH,也必须在缓存中查找事务。当取消断言为 LOW 时,如果 AWCACHE[2] 也取消断言为 LOW,则事务不需要在缓存中查找,事务必须传播到最终目的地。
AWCACHE[2] Other Allocate 当断言为 HIGH 时,建议将此事务分配在缓存中以提高性能。当断言为 HIGH 时,必须在缓存中查找事务,因为它可能已被另一个事务(读事务或来自另一个主设备的事务)预先分配在缓存中。如果 AWCACHE[3] 被断言为 HIGH,也必须在缓存中查找事务。当取消断言为 LOW 时,如果 AWCACHE[3] 也取消断言为 LOW,则事务不需要在缓存中查找,事务必须传播到最终目的地。
AWCACHE[1] Modifiable 当断言为 HIGH 时,可以修改事务的特征,并且可以合并写操作。当取消断言为 LOW 时,不得修改事务的特征。
AWCACHE[0] Bufferable 当取消断言为 LOW 时,如果 AWCACHE[3:2] 都为取消断言 LOW,写响应必须来自最终目的地。当断言为 HIGH 时,如果 AWCACHE[3:2] 都为取消断言 LOW,写响应可以来自中间点,但写事务需要在最终目的地及时可见。当取消断言为 LOW 时,如果 AWCACHE[3:2] 中任一被断言为 HIGH,写响应可以来自中间点,但写事务需要在最终目的地及时可见。当断言为 HIGH 时,如果 AWCACHE[3:2] 中任一被断言为 HIGH,写响应可以来自中间点。写事务不需要在最终目的地可见。

ARCACHE 信号的 AXI4 位分配在表13-3中描述。

信号 AXI4 定义 描述
ARCACHE[3] Other Allocate 当断言为 HIGH 时,必须在缓存中查找事务,因为它可能已被另一个事务(写事务或来自另一个主设备的事务)分配在缓存中。如果 ARCACHE[2] 被断言为 HIGH,也必须在缓存中查找事务。当取消断言为 LOW 时,如果 ARCACHE[2] 也取消断言为 LOW,则事务不需要在缓存中查找。
ARCACHE[2] Allocate 当断言为 HIGH 时,必须在缓存中查找事务,因为它可能已被分配。如果 ARCACHE[3] 被断言为 HIGH,也必须在缓存中查找事务。当取消断言为 LOW 时,如果 ARCACHE[3] 也取消断言为 LOW,则事务不需要在缓存中查找。当断言为 HIGH 时,建议将此事务分配在缓存中以提高性能。
ARCACHE[1] Modifiable 当断言为 HIGH 时,可以修改事务的特征,并且可以获取比所需更多的读数据。当取消断言为 LOW 时,不得修改事务的特征。
ARCACHE[0] Bufferable 当 ARCACHE[3:1] = b000 时,此位无效。当 ARCACHE[3:1] = b001 时,如果此位取消断言为 LOW,读数据必须从最终目的地获取。如果此位断言为 HIGH,读数据可以从最终目的地或从正在向最终目的地推进的写操作中获取。当 ARCACHE[3] 断言为 HIGH 或 ARCACHE[2] 断言为 HIGH 时,此位可用于区分直写和回写存储器类型。

13.8 存储器类型

AXI4 协议为 AWCACHE 和 ARCACHE 存储器类型引入了新的描述性名称。表13-4列出了存储器类型和关联的 AWCACHE 和 ARCACHE 编码。

注意:同一存储器类型在读通道和写通道上可以有不同的编码。这样做是为了确保与 AXI3 AWCACHE 和 ARCACHE 定义的向后兼容。

在 AXI4 中,特定存储器类型可以使用多个 AWCACHE 和 ARCACHE 值。在表13-4中,首选 AXI4 值排在第一位,合法的 AXI3 值在括号中给出。

ARCACHE[3:0] AWCACHE[3:0] 存储器类型
0000 0000 设备不可缓冲
0001 0001 设备可缓冲
0010 0010 正常不可缓存不可缓冲
0011 0011 正常不可缓存可缓冲
1010 0110 直写不分配
1110 (0110) 0110 直写读分配
1010 1110 (1010) 直写写分配
1110 1110 直写读写分配
1011 0111 回写不分配
1111 (0111) 0111 回写读分配
1011 1111 (1011) 回写写分配
1111 1111 回写读写分配

表13-4中未列出的所有值都是保留的。

13.8.1 存储器类型要求

本节描述每种存储器类型的所需行为。

设备不可缓冲

设备不可缓冲存储器类型的所需行为是:

  • 写响应必须从最终目的地获取
  • 读数据必须从最终目的地获取
  • 事务特征不得修改
  • 不得预取读。不得合并写
  • 来自同一 ID 到同一从设备的所有不可修改读和写事务(AWCACHE[1] = 0 或 ARCACHE[1] = 0)必须保持有序。
设备可缓冲

设备可缓冲存储器类型的所需行为是:

  • 写响应可以从中间点获取
  • 写事务必须在最终目的地及时可见
  • 读数据必须从最终目的地获取
  • 事务特征不得修改
  • 不得预取读。不得合并写
  • 来自同一 ID 到同一从设备的所有不可修改读和写事务(AWCACHE[1] = 0 或 ARCACHE[1] = 0)必须保持有序。

注意:两种设备存储器类型都被定义为不可修改。在本协议规范中,术语设备存储器和不可修改存储器可以互换使用。

对于读事务,设备不可缓冲和设备可缓冲存储器类型的所需行为没有区别。

对于所有设备事务,要求使用相同 ID 到同一从设备的事务保持有序,无论事务地址如何。此排序要求适用于所有不可修改事务。即使一个事务是设备不可缓冲存储器类型,另一个是设备可缓冲存储器类型,具有相同 ID 的两个事务也必须保持有序。

参见第13-10页的不可修改事务的排序要求。

正常不可缓存不可缓冲

正常不可缓存不可缓冲存储器类型的所需行为是:

  • 写响应必须从最终目的地获取
  • 读数据必须从最终目的地获取
  • 事务特征可以修改
  • 写可以合并
  • 来自同一 ID 到重叠地址的读和写事务必须保持有序。
正常不可缓存可缓冲

正常不可缓存可缓冲存储器类型的所需行为是:

  • 写响应可以从中间点获取
  • 写事务必须在最终目的地及时可见
  • 没有提供机制来确定写事务何时在最终目的地可见
  • 读数据必须从最终目的地或从正在向最终目的地推进的写事务获取
  • 如果读数据从写事务获取,则必须从最新版本的写获取数据,且数据不得缓存以服务后续读操作
  • 事务特征可以修改
  • 写可以合并
  • 来自同一 ID 到重叠地址的读和写事务必须保持有序。

注意:对于正常不可缓存可缓冲读,从仍在向最终目的地推进的写事务获取数据是可以接受的。这与读和写事务同时传播到最终目的地是无法区分的。

直写不分配

直写不分配存储器类型的所需行为是:

  • 写响应可以从中间点获取
  • 写事务必须在最终目的地及时可见
  • 没有提供机制来确定写事务何时在最终目的地可见
  • 读数据可以从中间缓存副本获取
  • 事务特征可以修改
  • 可以预取读
  • 写可以合并
  • 读和写事务都需要缓存查找
  • 来自同一 ID 到重叠地址的读和写事务必须保持有序
  • 出于性能原因,不建议分配读或写事务,但不禁止。
直写读分配

直写读分配存储器类型的所需行为与直写不分配相同,除了分配提示:

  • 出于性能原因,建议分配读事务
  • 出于性能原因,不建议分配写事务。

但是,对所有事务的分配既不是必需的也不是被禁止的。

直写写分配

直写写分配存储器类型的所需行为与直写不分配相同,除了分配提示:

  • 出于性能原因,不建议分配读事务
  • 出于性能原因,建议分配写事务。

但是,对所有事务的分配既不是必需的也不是被禁止的。

直写读写分配

直写读写分配存储器类型的所需行为与直写不分配相同,除了分配提示:

  • 出于性能原因,建议分配读和写事务。

但是,分配不是必需的。

回写不分配

回写不分配存储器类型的所需行为是:

  • 写响应可以从中间点获取
  • 写事务不需要在最终目的地可见
  • 读数据可以从中间缓存副本获取
  • 事务特征可以修改
  • 可以预取读
  • 写可以合并
  • 读和写事务都需要缓存查找
  • 来自同一 ID 到重叠地址的读和写事务必须保持有序
  • 出于性能原因,不建议分配读或写事务,但不禁止。
回写读分配

回写读分配存储器类型的所需行为与回写不分配相同,除了分配提示:

  • 出于性能原因,建议分配读事务
  • 出于性能原因,不建议分配写事务。

但是,对所有事务的分配既不是必需的也不是被禁止的。

回写写分配

回写写分配存储器类型的所需行为与回写不分配相同,除了分配提示:

  • 出于性能原因,不建议分配读事务
  • 出于性能原因,建议分配写事务。

但是,对所有事务的分配既不是必需的也不是被禁止的。

回写读写分配

回写读写分配存储器类型的所需行为与回写不分配相同,除了分配提示:

  • 出于性能原因,建议分配读和写事务。

但是,分配不是必需的。


13.9 不匹配的属性

多个访问同一存储区域的代理使用不匹配的存储器属性是可以接受的。但是,为了功能正确性,必须遵守以下规则:

  • 访问同一存储区域的所有主设备必须就该存储区域是否可在给定层次结构级别缓存达成一致。要应用的规则是:
    • 地址区域不可缓存:所有主设备必须对 ARCACHE[3:2] 都为 LOW 或 AWCACHE[3:2] 都为 LOW 的事务使用事务。
    • 地址区域可缓存:所有主设备必须对 ARCACHE[3:2] 中任一 HIGH 或 AWCACHE[3:2] 中任一 HIGH 的事务使用事务。
  • 分配提示可以因主设备而异。
  • 如果地址区域是正常不可缓存存储器类型,任何主设备使用设备存储器类型的事务访问它是可以接受的。
  • 如果地址区域被定义为可缓冲存储器类型,任何主设备使用不允许可缓冲行为的事务(即需要从最终目的地获取响应的事务)访问它是可以接受的。

13.9.1 更改存储器属性

将用于特定存储区域的属性从一种类型更改为另一种不兼容的类型是可以接受的。例如,属性可以从直写可缓存更改为正常不可缓存,并使用适当的过程来执行更改。

通常,这将涉及所有主设备停止访问该区域,然后单个代理执行任何必需的缓存维护操作,然后所有主设备都可以使用新属性重新访问存储区域。


13.10 事务缓冲

某些存储器类型不需要事务响应来自最终目的地,但它们确实要求事务在最终目的地及时可见。表现出此行为的存储器类型有:设备可缓冲、正常不可缓存可缓冲和直写。

所有三种存储器类型都要求写事务在最终目的地及时可见,但读操作的行为不同:

  • 对于设备可缓冲存储器,读数据必须从最终目的地获取
  • 对于正常不可缓存可缓冲存储器,读数据必须从最终目的地或从正在向最终目的地推进的写事务获取
  • 对于直写存储器,读数据可以从中间缓存副本获取。

协议没有给出事务必须在最终目的地变得可见的绝对时间。仅要求在足够空闲的系统中,事务在没有需要任何显式操作的情况下向最终目的地推进。

对于正常不可缓存可缓冲存储器,任何能够为事务提供响应同时确保事务在最终目的地及时可见的中间缓冲区,也必须随着时间的推移确保读事务传播到缓冲区下游。这意味着在转发到读事务的情况下,不允许无限期地发生转发。以类似于写操作随时间从缓冲区排出的方式,用于转发的任何数据不允许无限期地持久存在。用于确定可用于转发的数据可以持久存在多长时间的精确机制未定义。但是,重要的是这种机制不允许读取数据的行为重置时间段。主设备对同一位置的持续轮询将阻止持有值的超时,从而阻止更新下游值的可见性。

任何能够持有和合并写事务的中间缓冲区还必须确保事务不会无限期地保留在缓冲区中。例如,合并写事务的行为不应重置确定写操作何时排出的机制。否则,持续写入某个位置可能阻止持有写操作的超时,并阻止写操作的下游可见性。


13.11 设备存储器类型的使用

规范允许组合使用设备非缓冲和设备缓冲存储器类型来强制事务到达其最终目的地。

标记为设备缓冲的事务需要在最终目的地及时到达,但没有向发出主设备指示事务何时对所有其他主设备可见。

如果设备缓冲事务或事务流之后跟着使用相同 AXI ID 的设备非缓冲事务,它将强制所有设备缓冲事务在给出设备非缓冲事务响应之前到达最终目的地。

设备非缓冲事务只能保证使用相同 ID 的、到同一从设备的事务的设备缓冲事务完成。单个从设备占用的最小地址空间为 4KB。


13.12 遗留考虑

AXI4 提供了对 AWCACHE 和 ARCACHE 存储器属性预期用途的额外说明。

特别是,AXI4 增加了一个额外要求,即使用相同 ID 到同一从设备的所有设备类型事务都彼此排序。这不是 AXI3 的明确要求。任何依赖此行为的 AXI4 组件都不能连接到不表现出此行为的 AXI3 互连。

在大多数现有系统设计中,预计 AXI3 互连将实现 AXI4 中为 AWCACHE 和 ARCACHE 指定的要求。

建议任何新的 AXI3 设计遵循 AXI4 建议。

对于 AWCACHE 和 ARCACHE 位名称和存储器类型名称,要求 AXI4 仅使用新术语。AXI3 组件可以使用 AXI3 或 AXI4 名称。


13.13 排序模型

本节描述 AXI4 协议支持的排序模型。

13.13.1 排序模型的定义

AXI 协议支持基于 AXI ID 事务标识符使用的排序模型。

原则是对于具有相同 ID 的事务:

  • 到外设设备的事务(由设备存储器类型指示)必须按照它们发出的相同顺序到达外设,无论事务的地址如何
  • 到相同或重叠地址的存储器的事务必须按照它们发出的相同顺序到达存储器。

AXI 排序模型还要求同一方向上具有相同 ID 的所有事务必须按顺序提供其响应。

为了支持独立读和写地址通道的使用,要求如果两个具有相同 ID 但方向不同的事务之间需要排序关系,则必须在发出后续事务之前收到前面事务的响应。

如果一个方向的事务在收到相反方向的前面事务的响应之前发出,则它们之间不存在排序保证。

13.13.2 主设备排序

发出同一方向(读或写)且具有相同 ID 的多个事务的主设备对这些事务的排序有以下保证:

  • 主设备上所有事务的响应顺序必须与发出顺序相同。
  • 对于设备存储器,到达从设备的顺序必须与发出顺序相同。
  • 对于正常存储器,到达相同或重叠地址的事务的顺序必须与发出顺序相同。

注意:对相同或重叠地址的事务定义为两个事务访问同一单副本原子地址范围内的字节。参见第13-26页的单副本原子大小。

如果主设备需要读和写事务之间的排序,它必须确保在发出下一个事务之前收到前面事务的响应。

互连排序

为了满足排序模型的要求,互连必须确保:

  • 使用相同 ID 到设备同一方向的事务顺序被保留。
  • 使用相同 ID 到重叠地址的事务顺序被保留。
  • 具有相同 ID 的写响应顺序被保留。
  • 具有相同 ID 的读数据响应顺序被保留。
  • 与事务关联的 AXI ID 值的任何操作必须确保前面的项目化保证保持不变。
  • 在事务到达最终目的地之前给出事务响应的任何组件必须确保前面的项目化保证在下游得到维护。参见第13-25页的响应在最终目的地之前。
从设备排序

对于从设备,必须确保以下事项:

  • 任何已给出响应的写事务必须被任何后续的写或读事务观察到,无论事务 ID 如何。
  • 任何到设备存储器的写事务必须被任何后续到设备存储器的具有相同 ID 的写操作观察到,即使尚未给出响应。
  • 任何到正常存储器的写事务必须被任何后续到重叠地址的具有相同 ID 的写操作观察到,即使尚未给出响应。
  • 必须按照事务到达的相同顺序给出多个具有相同 ID 的写事务的响应。
  • 可以按任何顺序给出具有不同 ID 的多个写事务的响应。
  • 任何已给出响应的读事务必须被任何后续的写或读事务观察到,无论事务 ID 如何。
  • 任何到设备存储器的读事务必须被任何后续到设备存储器的具有相同 ID 的读操作观察到,即使尚未给出响应。
  • 必须按照事务到达的相同顺序给出多个具有相同 ID 的读事务的响应。
  • 可以按任何顺序给出具有不同 ID 的多个读事务的响应。

13.13.3 响应在最终目的地之前

在事务到达最终目的地之前提供事务响应的任何缓冲区或中间组件必须承担确保事务对所有上游主设备的后续事务可见的责任。

基本要求是:

  • 对于所有存储器类型,任何后续到重叠地址的事务必须观察到被给出响应的较早事务。
  • 此外,对于设备存储器类型,任何具有相同 ID 的、到同一从设备的后续事务必须相对于较早事务保持有序。

仅当 AWCACHE 和 ARCACHE 属性指示允许时,才能向事务提供中间响应。

注意:要求设备存储器类型提供的排序保证是正常存储器提供的保证的超集。这确保标记为正常的任何事务都可以安全地转换为设备,同时保留相同的保证。为了满足此要求,设备存储器对重叠地址的行为必须与正常存储器相同,与 ID 值无关。

表13-5总结了所有存储器类型、事务 ID 和重叠地址组合的排序要求。

13.13.4 单副本原子大小

术语单副本原子大小定义事务以原子方式更新的最小字节数。大于单副本原子大小的事务必须至少以单副本原子大小的块更新存储器。数据更新的确切时刻不重要,必须确保的是主设备永远不能观察到数据的部分更新形式。例如,在许多系统中,某些数据结构(如链表)由 32 位原子元素组成。这要求整个 32 位值必须同时更新。另一个主设备观察到 16 位的部分更新,在某个时间点,然后在稍后的时间点观察到另外 16 位,是不可接受的。

对于更复杂的系统,需要使用更大的原子元素,特别是 64 位原子元素。这允许主设备使用基于这些更大原子元素的数据结构进行通信。

系统中支持的原子元素的大小很重要,因为给定通信中涉及的所有组件都必须支持所需的原子元素大小。如果两个主设备通过互连和单个从设备进行通信,则涉及的所有组件都必须确保所需大小的事务被视为原子性的。

AXI4 协议不要求特定的单副本原子大小,系统可以设计为实现不同的单副本原子大小。不同的组件组在它们之间的通信中具有不同的单副本原子大小也是允许的。

在 AXI4 中,术语单副本原子组用于描述系统中能够以所需原子性进行通信的组件组。例如,图示显示了一个系统,其中处理器、DSP、互连和片外 DRAM 都在能够保证 64 位单副本原子通信的组件组中,而 DMA 控制器、外设和片上 SRAM 存储器在 32 位单副本原子组中。

事务的原子性保证永远不会大于事务起始地址的对齐。例如,64 位单副本原子组中未与 8 字节边界对齐的突发没有任何 64 位单副本原子保证。

与事务关联的字节选通不影响单副本原子大小。


13.14 用户信号

13.14.1 信号命名

本节定义一组可以伴随每个 AXI4 通道的用户信号。

通常,不建议使用用户信号,因为它们的功能在 AXI4 协议中未定义,如果两个组件以不兼容的方式使用相同的用户信号,可能会导致互操作性问题。

为每个 AXI4 通道定义的用户信号名称是:

信号 描述
AWUSER 写地址通道用户信号
ARUSER 读地址通道用户信号
WUSER 写数据通道用户信号
RUSER 读数据通道用户信号
BUSER 写响应通道用户信号

13.14.2 使用考虑

在实现用户信号的地方,不需要在所有通道上都支持用户信号。

不希望在通用主设备和从设备组件接口上支持用户信号。

建议互连组件包含对用户信号的支持,以允许它们在主设备和从设备组件之间传递。用户信号的宽度是实现定义的,对于每个通道可以不同。


13.15 锁定事务

本节描述 AXI4 中锁定事务支持的移除。

受影响的 AXI4 信号是 AWLOCK 和 ARLOCK。

13.15.1 AWLOCK 和 ARLOCK 更改

AXI4 取消了对锁定事务的支持,仅使用 1 位锁定信号。

ARLOCK / AWLOCK 访问类型
b0 正常访问
b1 独占访问

锁定事务已在 AXI4 中移除,因为:

  • 大多数组件不需要锁定事务
  • 锁定事务的实现对接连复杂性有重大影响
  • 锁定事务的实现对进行 QoS 保证的能力有重大影响。

13.15.2 遗留考虑

在 AXI4 环境中,AXI3 锁定事务的任何转换如下进行:

  • AWLOCK[1:0] = b10 将转换为正常写事务,AWLOCK = b0
  • ARLOCK[1:0] = b10 将转换为正常读事务,ARLOCK = b0。

建议执行此类转换的任何组件(通常是互连)包含可选机制来检测和标记已发生此类转换。

如果任何组件无法在此转换执行时正确操作,则不能用于 AXI4 环境。

注意:对于许多使用锁定事务的遗留组件(如执行 SWP 指令的处理器),可能需要软件更改以防止使用任何强制锁定事务的指令。


13.16 写交错

本节描述 AXI4 中写交错支持的移除。

在 AXI4 中,事务的所有写数据必须在写数据通道上以连续传输提供。

受影响的 AXI4 信号是 WID。

13.16.1 WID 的移除

写交错的移除使 WID 信号传达的信息变得冗余。所有写数据必须与关联的写地址顺序相同。任何需要已弃用 WID 信息的组件可以从写地址通道信号 AWID 获取此信息。

在 AXI4 中,WID 信号被移除以减少接口的引脚数。

13.16.2 遗留考虑

大多数 AXI3 主设备不支持写交错,不需要更新以满足 AXI4 的无写交错要求。

任何确实支持写交错的 AXI3 主设备必须已经支持将写交错深度配置为值 1 的方法,以支持与写交错深度为 1 的任何从设备操作。任何此类 AXI3 主设备必须将其写交错深度配置为值 1 才能与 AXI4 兼容。

任何 AXI3 从设备都可以接受非交错写数据,因此对于 AXI3 从设备没有遗留考虑。

注意:对于需要 WID 信息的 AXI3 从设备,可以从 AWID 生成 WID 信号。


13.17 互操作性和默认信号

本节描述 AXI4 接口的互操作性。

并非每个组件都需要使用 AXI4 接口上可用的全套信号。为了简化不使用每个信号的组件的连接,定义了主要接口类别以及适用于每个类别的限制。

13.17.1 互操作性原则

一般来说,组件必须支持所有输入组合,但不必生成所有输出组合。例如,从设备必须支持所有不同长度的突发,但主设备只需要生成它使用的突发类型。此策略确保所有组件都能与其他所有组件一起工作。

信号可以从接口中省略的条件是:

  • 如果主设备或从设备的操作始终将输出信号驱动为与默认值相同,则可以省略输出信号。参见第13-32页的默认信号值。
  • 如果主设备或从设备不需要观察输入信号以实现正确的功能操作,则可以省略输入信号。

注意:互连组件也可以在适当时省略信号。例如,当信号仅由默认值驱动时,不需要在互连上传输默认值。可以在其目的地创建它。类似地,如果信号在任何目的地都不使用,则不需要在互连上传输它。

13.17.2 主要接口类别

主要接口类别在以下各节中描述。

读写接口

读写接口包括用于数据传输的五个 AXI4 通道:

  • AR - 读地址通道
  • R - 读数据通道
  • AW - 写地址通道
  • W - 写数据通道
  • B - 写响应通道
只读接口

只读接口仅支持读事务,包括两个 AXI4 读通道:

  • AR - 读地址通道
  • R - 读数据通道

注意:只读接口不支持独占访问。

只写接口

只写接口仅支持写事务,包括三个 AXI4 写通道:

  • AW - 写地址通道
  • W - 写数据通道
  • B - 写响应通道

注意:只写接口不支持独占访问。

13.17.3 存储器从设备和外设从设备

从设备可以分类为存储器从设备或外设从设备。

存储器从设备需要正确处理所有事务类型。

外设从设备预计具有通常在组件数据手册中描述的已定义访问方法。任何超出允许定义范围的访问都可能导致外设从设备故障。任何超出允许行为的访问预计都以符合协议的方式完成,以防止系统死锁,但不要求外设从设备继续正确操作。

因为外设从设备只需要对已定义的访问方法正确工作,所以外设从设备可能具有显着减少的接口信号集。

13.17.4 默认信号值

一般建议,为了最大限度地重用 IP,所有信号都包含在组件接口中。这是因为信号的存在降低了设计流程系统集成阶段出错的风险,并且还可以帮助一些不支持缺失信号默认值的有效设计流程。

表13-7列出了主设备和存储器从设备所需的和可选的写通道信号,以及省略可选信号时所需的默认信号值。

表13-8列出了主设备和存储器从设备所需的和可选的读通道信号,以及省略可选信号时所需的默认信号值。

可选信号定义为:

可选输出:如果组件所需的值与表13-7中的默认值不匹配,则组件必须具有输出信号。如果组件所需的值确实与表13-7中的默认值匹配,则不要求组件具有该信号。

可选输入:如果信号是可选输入,则如果组件不需要它进行正确操作,则可以省略该信号。


第14章 AXI4-Lite

本章定义 AXI4-Lite 接口。本章面向正在设计不需要 AXI4 完整功能的更简单的控制寄存器样式接口的工程师和系统设计师。它包含以下各节:

  • 14.1 引言
  • 14.2 AXI4-Lite 的定义
  • 14.3 互操作性
  • 14.4 定义的转换机制
  • 14.5 转换、保护和检测

14.1 引言

AXI4-Lite 接口是 AXI4 接口的一个子集,旨在与组件中的控制寄存器进行通信。

AXI4-Lite 的目标是允许构建更简单、更小且需要更少设计和验证工作的组件接口。

拥有完整 AXI4 接口的明确定义子集允许使用相同子集构建许多不同的组件,也允许使用单个通用转换组件在 AXI4 和 AXI4-Lite 接口之间进行转换。

以下各节描述了 AXI4-Lite 接口的要求。


14.2 AXI4-Lite 的定义

14.2.1 信号列表

本节定义 AXI4-Lite 接口的功能和信号要求。

AXI4-Lite 接口的关键特征是:

  • 所有事务的突发长度为 1
  • 所有数据访问的大小与数据总线宽度相同
  • 支持 32 位或 64 位数据总线宽度
  • 所有访问等同于 AWCACHE 或 ARCACHE 等于 b0000
  • 不支持独占访问。

表14-1列出了 AXI4-Lite 接口上存在的信号。

全局 写地址通道 写数据通道 写响应通道 读地址通道 读数据通道
ACLK AWVALID WVALID BVALID ARVALID RVALID
ARESETn AWREADY WREADY BREADY ARREADY RREADY
AWADDR WDATA BRESP ARADDR RDATA
AWPROT WSTRB ARPROT RRESP

14.2.2 不支持的信号

AXI4-Lite 接口不支持或不完全支持以下信号:

信号 说明
AWLEN, ARLEN 不支持。突发长度定义为长度 1,等同于 AWLEN 或 ARLEN 等于零。
AWSIZE, ARSIZE 不支持。所有访问被定义为与数据总线宽度相同的大小。注意:支持固定的 32 位或 64 位数据总线宽度。
AWBURST, ARBURST 不支持。突发类型没有意义,因为突发长度为 1,因此所有突发类型都相同。
AWLOCK, ARLOCK 不支持。所有访问被定义为正常访问,等同于 AWLOCK 或 ARLOCK 等于 b0。
AWCACHE, ARCACHE 不支持。所有访问被定义为等同于 AWCACHE 或 ARCACHE 等于 b0000。
WLAST, RLAST 不支持。所有突发被定义为长度 1,等同于 WLAST 和 RLAST 始终被断言。
RRESP, BRESP 不完全支持。RRESP 和 BRESP 响应通道上不支持 EXOKAY 响应。

14.2.3 可选信号

支持多个未完成事务,但从设备设计可以通过适当操作握手信号来限制这一点。

不支持 AXI ID。这定义了所有事务必须是有序的,所有访问必须使用单个固定 ID 值。

从设备可以可选地支持 AXI ID 信号,以允许从设备在完整 AXI 接口上使用而无需修改。参见第14-6页的互操作性。

不支持数据交错,因为突发长度定义为 1。

14.2.4 总线宽度

AXI4-Lite 具有固定的数据总线宽度,所有事务的宽度与数据总线相同。

支持两种数据总线宽度选项:32 位或 64 位。

预计:

  • 大多数组件使用 32 位接口
  • 只有需要 64 位原子访问的组件才可能使用 64 位接口。

可以设计 64 位组件,使其可以被 32 位主设备访问,但到组件的所有事务都必须被视为 64 位事务。

注意:通过在组件的寄存器映射中包含适合 32 位主设备访问的位置,可以实现这种互操作性。此类位置通常只使用数据总线的低 32 位。

14.2.5 写选通

接口支持写选通。这允许实现多大小寄存器,也允许实现可以使用字节和半字访问写入的存储器结构。

所有主设备接口和互连必须提供正确的写选通。

任何从设备组件可以选择是否利用写选通。允许的选项有:

  • 充分利用写选通
  • 忽略写选通,将所有写访问视为完整数据总线宽度
  • 检测不支持的写选通组合并提供错误响应。

任何提供类似存储器行为的从设备组件必须完全支持写选通。

如果正在从完整 AXI 转换为 AXI4-Lite,则可以在 AXI4-Lite 上生成所有写选通被取消断言的写事务。允许但不要求自动抑制此类事务。参见第14-9页的转换、保护和检测。


14.3 互操作性

本节描述 AXI 和 AXI4-Lite 主设备和从设备的互操作性。表14-2显示了可能的接口组合,并说明唯一需要特别考虑的情况是 AXI 主设备连接到 AXI4-Lite 从设备。

主设备 从设备 互操作性
AXI AXI 完全可操作
AXI4-Lite AXI4-Lite 完全可操作
AXI AXI4-Lite 需要 AXI ID 反射。可能需要转换。
AXI4-Lite AXI 完全可操作

14.3.1 AXI4-Lite 从设备的桥接要求

如表14-2所示,唯一需要特别考虑的互操作性场景是将 AXI4-Lite 从设备接口连接到完整 AXI 主设备接口。

需要 ID 反射,它获取与事务地址关联的 AXI ID,并在读数据或写响应旁边返回相同的 ID。这是必需的,因为主设备需要返回的 ID 来正确识别事务响应。

如果无法确保 AXI 主设备接口只生成 AXI4-Lite 子集内的事务,则需要某种形式的适配。参见第14-9页的转换、保护和检测。

14.3.2 AXI4-Lite 从设备的 ID 反射

AXI4-Lite 从设备可以设计为包含 ID 反射逻辑。这允许从设备在完整 AXI 接口上使用,无需桥接功能,在系统中保证从设备只能被属于 AXI4-Lite 子集的事务访问。

注意:建议 ID 反射逻辑使用 AWID 而不是 WID,以确保与 AXI3 和 AXI4 的兼容性。


14.4 定义的转换机制

本节描述将任何合法 AXI 事务转换为在 AXI4-Lite 上使用所需的过程。参见第14-9页的转换、保护和检测,以更详细地讨论可能使用的各种方法的优缺点。

14.4.1 转换规则

假设 AXI 数据宽度将等于或大于 AXI4-Lite 数据宽度。如果不是这种情况,则必须首先将 AXI 数据宽度转换为 AXI4-Lite 数据宽度。

从完整 AXI 接口转换的规则如下:

  • 如果事务的突发长度大于 1,则将突发拆分为多个突发长度为 1 的事务。创建的事务数量将取决于原始事务的突发长度。
  • 长度大于 1 的突发转换必须考虑突发类型,在为突发的后续节拍生成地址时。未对齐的起始地址必须递增并对齐,以用于 INCR 或 WRAP 突发的后续节拍。对于 FIXED 突发,所有节拍可以使用相同的地址。
  • 当长度大于 1 的写突发转换为多个写突发时,必须为每个生成的事务将响应组合在一起,以产生原始突发的单个响应。任何错误响应都被视为粘性的,即如果为任何生成的事务收到错误响应,则保留它,单个组合响应指示错误。如果同时收到 SLVERR 和 DECERR,则使用首先收到的响应作为组合响应。AXI4-Lite 上不允许 EXOKAY 响应,因此不需要考虑此选项。
  • 比目标 AXI4-Lite 接口宽的事务被拆分为与 AXI4-Lite 接口宽度相同的多个事务。对于具有未对齐起始地址的事务,突发的拆分发生在 AXI4-Lite 接口宽度对齐边界上。
  • 当宽事务转换为多个较窄事务时,必须为原始事务使用组合响应。任何错误响应都被视为粘性的。如果同时收到 SLVERR 和 DECERR,则使用首先收到的响应作为组合响应。AXI4-Lite 上不允许 EXOKAY 响应,因此不需要考虑此选项。
  • 比 AXI4-Lite 接口窄的事务直接传递,不进行转换。
  • 写选通直接传递,不进行转换。
  • 没有选通的写事务可以直接传递,不需要被抑制。
  • 所有事务的 AWLOCK 和 ARLOCK 信号被丢弃。对于一系列锁定事务,锁定的保证性质将丢失。但是,只有在下游仲裁点时,事务的锁定性质才会丢失。对于独占序列,AXI 的故障安全信号使得独占写必须始终失败。
  • AWCACHE 和 ARCACHE 信号被丢弃。所有事务都被视为不可修改和不可缓冲。这是可以接受的,因为将可修改访问视为不可修改、将可缓冲访问视为不可缓冲在功能上是正确的。
  • AWPROT 和 ARPROT 信号直接传递,不进行转换。
  • WLAST 和 RLAST 信号被丢弃。

14.5 转换、保护和检测

如果将 AXI4-Lite 从设备连接到 AXI4 主设备,如果无法确保主设备只发出 AXI4-Lite 子集内的事务,则需要某种形式的适配。

本节描述系统设计中可以采用以帮助组件互操作性和系统设计问题调试的三种技术。这些技术是:

转换:这要求将所有事务转换为与 AXI4-Lite 子集兼容的格式。

保护:这要求检测非合规事务,然后抑制事务并向生成事务的主设备返回错误响应。

检测:这要求观察 AXI4-Lite 子集之外的任何事务,并通知软件意外访问,同时仍允许访问继续进行。

14.5.1 转换和保护级别

可以实现几个不同级别的转换和保护:

完整转换:这转换所有形式的 AXI 事务,如第14-7页的定义转换机制中所述。

简单转换与保护:这传播只需要简单转换的事务,如丢弃 AWLOCK 和 ARLOCK 或 AWCACHE 和 ARCACHE,但抑制并错误报告需要更复杂任务(如突发长度或数据宽度转换)的事务。

完全保护:抑制并为每个不属于 AXI4-Lite 子集的事务生成错误。

14.5.2 实现考虑

抑制事务的保护机制必须提供符合协议的错误响应以防止死锁。例如,读突发事务需要对突发的每个节拍提供错误,以及正确断言的 RLAST 信号。

与转换一起使用的检测允许设计硬件,该硬件不会阻止意外访问发生,但确实提供了通知软件意外访问的机制,从而加快调试过程。

在复杂设计中,转换加检测方法的优势在于它允许支持不可预见的未来使用模型。例如,在设计时可能认为只有处理器对外设的控制寄存器进行编程,但实际上,外设可能需要由其他设备(如 DSP 或 DMA 控制器)编程,这些设备无法生成所需的精确 AXI4-Lite 访问。

不同方法的优缺点总结为:

  • 保护需要较低的门数。
  • 转换确保接口可以与意外访问一起操作。
  • 转换提高了软件从一个系统到另一个系统的可移植性。
  • 转换可能允许更有效地使用 AXI 基础设施。例如,到 FIFO 的写突发可以作为单个突发发出,而不需要作为一组单个事务发出。
  • 转换可能允许更有效地使用窄链路,其中地址和数据有效载荷信号共享。
  • 转换在可以放置在 AXI4-Lite 接口上的组件类型中提供了更大的灵活性。通过转换突发并允许稀疏选通,可以在 AXI4-Lite 上放置存储器,而存储器设备中不需要突发转换逻辑。这本质上是共享突发转换逻辑。

附录A 修订记录

本附录描述本书各发布版本之间的技术变更。

表A-1 版本B

变更 位置 影响
V1.0 首次发布 - -

表A-2 版本B和版本C之间的差异

变更 位置 影响
描述文档版本2.0章节布局的附加部分 第1-2页的AXI修订版本 所有修订版本
VALID和READY握手约束的附加细节 第3-2页的握手过程 所有修订版本
回环突发附加方程 第4-7页的突发地址 所有修订版本
描述AXI3协议AXI4更新的附加章节 第13章 AXI4 所有修订版本
描述AXI4协议AXI4-Lite子集的附加章节 第14章 AXI4-Lite 所有修订版本
描述文档各版本之间变更的附加附录 附录A 修订记录 所有修订版本

文档结束

版权所有 © 2003-2010 ARM。保留所有权利。

ARM IHI 0022C(ID030610)

相关推荐
Eloudy1 天前
U-Boot 最新版 RISC-V 64-bit 平台代码结构分析
arch
Eloudy3 个月前
CHI 开发备忘 12 记 -- CHI spec 12 链路层
人工智能·算法·arch·hpc
Eloudy3 个月前
CHI 开发备忘 08 记 -- CHI spec 08
人工智能·arch·hpc
Eloudy3 个月前
稀疏矩阵的 CSR 格式(Compressed Sparse Row)
人工智能·算法·arch·hpc
Eloudy3 个月前
CHI 开发备忘 06 记 -- CHI spec 06 独占访问
人工智能·arch·hpc
Eloudy3 个月前
直接法 读书笔记 07 第7章 减少填充的排序
人工智能·arch·hpc
Eloudy3 个月前
CHI 开发备忘 05 记 -- CHI spec 05 互连协议流程
人工智能·ai·arch·hpc
Eloudy3 个月前
CHI 开发备忘 03 记 -- CHI spec 03 网络层
人工智能·ai·arch·hpc
Eloudy3 个月前
CHI 开发备忘 02 记 -- CHI spec 02 事务
人工智能·ai·arch·hpc