• AXI协议详解(1)-协议简介


    协议简介

    0 绪论

    AXI——Advanced Xtensible Interface(高级可扩展接口)是为了满足高性能系统设计而定义的一套独立通道协议,在AMBA3.0中提出,AMBA4.0将其修改升级为AXI4.0,目前已经到达AMBA5.0版本。

    AMBA4.0包括AXI4.0、AXI4.0-Lite、ACE4.0、AXI4.0-stream四个版本。AXI4.0-Lite是AXI的简化版本,ACE4.0是AXI缓存一致性扩展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要是用在FPGA进行以数据为主导的大量数据的传输应用。

    5.0目前未接触,暂不讨论。

    本文参考的官方文档链接如下所示:

    https://developer.arm.com/documentation/ihi0022/c/

    1 简介

    1.1 关于AXI协议

    AMBA AXI协议的目标是高性能、高频的系统设计,包括许多特性,使其适合高速亚微米互联。

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

    • 适合高带宽低延时设计
    • 无需复杂的桥就能实现高频操作
    • 能满足大部分器件的接口要求
    • 适合高初始延时的存储控制器
    • 提供互联架构的灵活性与独立性
    • 向下兼容已有的AHB和APB接口

    关键特点:

    • 分离的地址/控制、数据传输通道
    • 使用字节选通来支持非对齐的数据传输
    • 使用基于burst的传输,只需传输首地址
    • 分离的读、写数据通道,以实现低功耗DMA (直接内存访问)
    • 支持多种寻址方式
    • 支持乱序传输
    • 允许容易的添加寄存器级来进行时序收敛

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

    1.1.1 AXI版本修订

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

    这次修订,即文档的2.0版本,包含了关于原来的AXI协议规范(现在称为AXI3)的所有信息,以及两个新的章节,详细介绍了AXI4和AXI4-lite。

    AXI4

    AXI4比AXI3更新了以下内容:

    • 支持长达256拍的burst长度
    • 服务质量(QoS)信号
    • 支持多区域接口
    • 更新了写响应请求
    • 更新了AWCACHE和ARCACHE的信号细节
    • 关于Ordering要求的额外信息
    • 移除lock传输操作
    • 移除写间插操作

    AXI4还包括了使用默认信号的信息,并讨论模块之间互操作性。

    AXI4-Lite

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

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

    • 所有传输的突发长度为1
    • 所有数据访问位宽与数据总线的宽度相同
    • 支持32位或64位的数据总线宽度
    • 所有访问都相当于AWCACHE或者ARCACHE等于b0000
    • 不支持排他性访问

    1.2 AXI架构

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

    AXI 协议支持:

    • 在实际数据传输之前发布的地址信息
    • 支持多个未完成的交易
    • 支持无序完成事务

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

    image-20221016161247558

    Figure1-1 Channel architecture of reads

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

    image-20221016161226528

    Figure1-2 Channel architecture of writes
    1.2.1 通道定义

    五个独立通道中的每一个都包含一组信息信号,并使用双向 VALIDREADY 握手机制。
    信息源使用 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-3所示。

    image-20221016161313315

    Figure1-3 Interface and interconnect

    AXI 协议提供了用于描述接口的单一接口定义:

    • 在主设备和互连之间
    • 从设备和互连之间
    • 在主从设备之间

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

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

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

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

    1.2.3 寄存器切片

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

    还可以在给定互连内的几乎任何点使用寄存器片。 在处理器和高性能存储器之间使用直接、快速的连接可能是有利的,但使用简单的寄存器片将更长的路径隔离到对性能不太重要的外围设备。

    1.3 基本事务

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

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

    本节还描述了传输顺序。

    1.3.1 读burst示例

    图1-4显示了4次传输的读burst。在这个例子中,主设备驱动地址,一个周期后从服设备接受它。
    注意:
    主设备还驱动一组显示脉冲串长度和类型的控制信号,但为清楚起见,图中省略了这些信号。
    地址出现在地址总线上后,数据传输发生在读数据通道上。 从机将 VALID 信号保持为低电平,直到读取数据可用。 对于突发的最后数据传输,从器件置位 RLAST 信号以表明正在传输最后一个数据项。

    image-20221024233417575

    Figure1-4 Read burst
    1.3.2 重叠读burst示例

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

    image-20221024233732450

    Figure1-5 Overlapping read bursts
    1.3.3 写burst示例

    图 1-6 显示了一个写事务。 当主机在写地址通道上发送地址和控制信息时,该过程开始。 然后主设备通过写数据通道发送每一项写数据。 当主机发送最后一个数据项时,WLAST 信号变为高电平。 当从设备接受了所有数据项后,它将写响应驱动回主设备以表示写事务已完成。

    image-20221024233857784

    Figure1-6 Write burst
    1.3.4 事务排序

    AXI 协议支持无序事务完成。 它为界面上的每笔事务都提供了一个 ID 标签。 该协议要求具有相同 ID 标签的事务按顺序完成,但具有不同 ID 标签的事务可以乱序完成。

    无序事务可以通过两种方式提高系统性能:
    • 互连可以使与快速响应从属的事务在与较慢从属的较早事务之前完成。(个人理解:慢点事务原本在前,但是太慢了会影响后续事务的传输,因此互连无序事务可以避免这种堵塞)
    • 复杂从设备可以无序返回读取数据。 例如,在用于较早访问的数据可用之前,可以从内部缓冲区获得用于稍后访问的数据项。

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

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

    虽然复杂的设备可以使用乱序设施,但简单的设备不需要使用它。 简单的master可以使用相同的 ID 标签发出每笔交易,而简单的slave可以按顺序响应每笔交易,而不管 ID 标签如何。

    1.4 附加特性

    AXI协议也提供以下附加属性:
    突发类型:
    AXI 协议支持三种不同的突发类型,适用于:

    • 正常的内存访问
    • 环绕缓存线突发
    • 将数据流式传输到外设 FIFO 位置

    参见第4章寻址选项。
    系统缓存支持:
    AXI 协议的缓存支持信号使主设备能够向系统级缓存提供事务的可缓冲、可缓存和分配属性。
    请参阅第 5-2 页的缓存支持。
    保护单元支持:
    为了同时启用特权访问和安全访问,AXI 协议提供了三个级别的保护单元支持。
    请参阅第 5-5 页的保护单元支持。
    原子操作:
    AXI协议定义了独占访问和锁定访问的机制。
    错误支持:
    AXI协议为地址解码错误和Slave产生的错误提供错误支持。
    参见第7章响应信号。
    地址对齐:
    为了提高突发内的初始访问性能,AXI协议支持非对齐的突发起始地址。
    见第10章非对齐传输。

  • 相关阅读:
    条件渲染(v-if、v-show)、列表渲染(v-for)、列表中key的原理和作用、列表过滤(filter)、列表排序(sort)
    Selenium基础 — Selenium中的expected_conditions模块(二)
    Encountered 7 file(s) that should have been pointers, but weren‘t
    计算机毕业设计Java资源循环利用(源码+系统+mysql数据库+lw文档)
    《C++ Primer》第6章 函数(二)
    iOS_OC API 指定可空性
    【C++学习笔记】1.4 函数重载
    外贸出口化妆品BCOP认证解析及适用范围
    部署基于efk+logstash+kafka构建日志收集平台并对nginx日志进行分析【待执行】
    [附源码]Python计算机毕业设计Django旅游度假村管理系统
  • 原文地址:https://blog.csdn.net/zj907638274/article/details/127505317