详解并掌握AXI4总线协议(一)、AXI4-FULL接口介绍

系列文章目录

文章目录

  • 系列文章目录
  • 一、AXI介绍
  • 二、AXI4、AXI-Lite、AXI4-Stream区别
  • 三、AXI4读写架构
    • [3.1 通道定义](#3.1 通道定义)
    • [3.2 读突发时序](#3.2 读突发时序)
    • [3.3 写突发时序](#3.3 写突发时序)
  • [四、AXI4-FULL 总线信号介绍](#四、AXI4-FULL 总线信号介绍)
    • 4.1全局信号
    • [4.2 写地址通道信号](#4.2 写地址通道信号)
    • [4.3 写数据通道信号](#4.3 写数据通道信号)
    • [4.4 写响应通道信号](#4.4 写响应通道信号)
    • [4.5 读地址通道信号](#4.5 读地址通道信号)
    • [4.6 读数据通道信号](#4.6 读数据通道信号)
  • 五、单个信号的使用要求
    • [5.1 时钟信号](#5.1 时钟信号)
    • [5.2 复位信号](#5.2 复位信号)
  • 六、握手机制
    • [6.1 通道握手](#6.1 通道握手)
    • [6.2 写地址通道握手](#6.2 写地址通道握手)
    • [6.3 写数据通道握手](#6.3 写数据通道握手)
    • [6.4 写响应通道握手](#6.4 写响应通道握手)
    • [6.5 读地址通道握手](#6.5 读地址通道握手)
    • [6.6 读数据通道握手](#6.6 读数据通道握手)
  • 七、通道之间握手信号的依赖关系
    • [7.1 读传输握手信号依赖关系](#7.1 读传输握手信号依赖关系)
    • [7.2 写传输握手信号依赖关系](#7.2 写传输握手信号依赖关系)
    • [7.3 写响应握手信号依赖关系](#7.3 写响应握手信号依赖关系)
  • 八、传输结构
    • [8.1 地址结构](#8.1 地址结构)
    • [8.2 突发长度](#8.2 突发长度)
    • [8.3 突发大小](#8.3 突发大小)
    • [8.4 突发类型](#8.4 突发类型)
    • [8.5 突发传输地址](#8.5 突发传输地址)
  • 参考

一、AXI介绍

早期的SoC 片上总线还不成熟,那时候还没有统一的标准。ARM 公司就在 1995 年推出了自己的总线------AMBA(Advanced Microcontroller Bus Architecture,高级微处理器总线架构),用于连接处理器、内存、外设和其他系统组件。AMBA总线标准包括多个子协议,其中最常见的是AHB(Advanced High-performance Bus)和APB(Advanced Peripheral Bus)。

  • AHB主要用于高性能、高带宽的系统内部连接。
  • APB则用于连接低带宽、低功耗的外设。

AMBA总线标准被广泛应用于ARM架构的SoC设计中,为不同的系统组件提供了一致的连接和通信接口,从而简化了SoC的设计和集成过程。在AMBA3.0 版本中新增加了一种新的高性能协议总线------AXI(Advanced eXtensible Interface,高级扩展接口),AXI接口的特点和优势包括:

  1. 高性能:AXI接口支持并行传输和乱序传输,能够实现高效的数据传输和处理,满足高性能系统SoC的需求。

  2. 高带宽:AXI接口支持多通道和突发传输,可以实现高带宽的数据传输,适用于需要大量数据交换的应用场景。

  3. 可扩展性:AXI协议支持多种传输类型和多种传输宽度,能够适应不同的系统需求,具有较强的可扩展性。

  4. 流控制:AXI接口支持流控制机制,能够有效管理数据流,提高系统的稳定性和可靠性。

  5. 灵活性:AXI接口设计灵活,可以与不同类型的处理器、内存、外设和其他组件进行连接,适用于各种不同的SoC设计。

  6. 标准化:AXI接口已经成为了许多SoC设计中的标准接口,被广泛应用于各种处理器架构和应用场景中,具有较高的通用性和可靠性。

总的来说,AXI接口具有高性能、高带宽、可扩展性、流控制、灵活性和标准化等优势,适用于复杂SoC中各种组件之间的高速数据传输需求。目前Xilinx的7系列FPGA中用的是AMBA 4.0版本中的AXI协议,AMBA3.0和AMBA4.0协议分别包括如下:

二、AXI4、AXI-Lite、AXI4-Stream区别

AXI4、AXI-Lite和AXI4-Stream是AMBA(Advanced Microcontroller Bus Architecture)协议中AXI协议里的不同子协议,用于连接处理器、内存、外设和其他系统组件。它们之间的区别在于其应用场景和特点:

  • AXI4:AXI4是一种高性能、高带宽的总线协议,主要面向高性能地址映射通信的需求,是面向地址映射的接口。支持乱序传输、数据通道和地址通道分离、突发传输等特性,允许最大256 的数据突发长度传输;

  • AXI-Lite: AXI-Lite是一种轻量级的总线协议,适用于连接低带宽、低复杂度的外设,如配置寄存器、控制寄存器等。与AXI4相比,AXI-Lite在功能上更简化,只支持简单的读写操作,适用于对性能要求不高的外设连接,占用很少的逻辑单元。

  • AXI4-Stream: AXI4-Stream是一种流式接口协议,面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。用于在SoC中传输连续的数据流,如音频数据、视频数据等。 与AXI4相比,AXI4-Stream更专注于数据流传输,不支持地址通道和突发传输,适用于流式数据传输的场景。

总的来说,AXI4、AXI-Lite和AXI4-Stream是针对不同应用场景和需求设计的AMBA协议子集,分别适用于高性能高带宽的系统内部连接、低带宽外设连接和流式数据传输。在SoC设计中,根据具体的组件和连接需求,可以选择合适的协议来实现连接和数据传输。

三、AXI4读写架构

AXI协议是基于突发传输的,并定义了以下5个独立的传输通道:

  • 写地址通道
  • 写数据通道
  • 写响应通道
  • 读地址通道
  • 读数据通道

3.1 通道定义

  1. AXI协议中的每个独立通道由一组信息信号和VALIDREADY信号组成,这些信号提供了双向握手机制。
  2. 信息源使用VALID 信号来表示通道上何时提供了有效地址、数据或控制信息。目的地使用READY信号来表示何时可以接受信息。读数据通道和写数据通道都包括LAST信号,以指示事务中的最后一个数据项的传输。
  3. 读和写地址通道:读和写事务都有自己的地址通道,适当的地址通道携带事务所需的所有地址和控制信息。
  4. 读数据通道:读数据通道从从设备向主设备传输读数据和读响应信息,包括
  • 数据总线,可以是8、16、32、64、128、256、512或1024位宽。
  • 读响应信号,指示读事务的完成状态
  1. 写数据通道:写数据通道从主设备向从设备传输写数据,包括:
  • 数据总线,可以是8、16、32、64、128、256、512或1024位宽
  • 每8位数据位的字节通道使能信号,指示哪些字节的数据是有效的。
  1. 写响应通道:从设备使用写响应通道对写事务做出响应。所有写事务都需要在写响应通道上完成信号。

这5个通道的传输结构图如下所示:


地址通道携带控制信息,描述要传输的数据的性质。数据在主设备和从设备之间使用以下任一方式传输:

  1. 数据传输使用写通道来实现 master 到 slave 的传输,slave使用写响应通道来完成一次写传输

  2. 读通道用来实现数据从 slave 到 master 的传输

3.2 读突发时序

主机在T0时刻输出地址信号以及将ARVALID信号拉高直到T2时刻握手成功。后面主机拉高RREADY信号直到从机发出读数据以及RVALID信号进行握手成功,当从机发出RLAST信号后,表示本次突发读数据已经完成。

3.3 写突发时序

主机在T0时刻输出地址信号以及将AWVALID信号拉高直到T2时刻握手成功。后面主机将要写入的数据以及WVALID信号送到总线上,直到直到与从机握手成功。在主机发送最后一个写数据的同时拉高WLAST信号等待与从机握手成功。一次突发写完成后,主机等待与从机发出的写响应信号握手成功。

四、AXI4-FULL 总线信号介绍

4.1全局信号

|---------|-----|--------------|
| 信号名称 | 方向 | 描述 |
| ACLK | 时钟源 | 全局时钟信号 |
| ARESETn | 复位源 | 全局复位信号,低电平有效 |

4.2 写地址通道信号

|----------|------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 信号名称 | 方向 | 描述 |
| AWID | 主to从 | 写地址ID,该信号是写地址信号组的识别标记 |
| AWADDR | 主to从 | 写地址,写地址给出了突发事务中第一个传输的地址 |
| AWLEN | 主to从 | AWLEN[7:0]决定写传输的突发长度。AXI3 只支持 1~16 次的突发传输(Burst_length=AxLEN[3:0]+1),AXI4 扩展突发长度支持 INCR 突发类型为 1~256 次传输。burst 传输具有如下规则: 1、wraping burst ,burst 长度必须是 2,4,8,16。 2、burst 不能跨 4KB 边界。 3、不支持提前终止 burst 传输 |
| AWSIZE | 主to从 | 写突发大小,给出每次突发传输的字节数支持 1、2、4、8、16、32、64、128 |
| AWBURST | 主to从 | 突发类型: 2'b00 FIXED:突发传输过程中地址固定,用于 FIFO 访问 2'b01 INCR :增量突发,传输过程中,地址递增。增加量取决 AxSIZE 的值。 2'b10 WRAP:回环突发,和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是 2,4,8,16 次 传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐。回环边界等于(AxSIZE*AxLEN) 2'b11 Reserved |
| AWLOCK | 主to从 | 总线锁信号,可提供操作的原子性 |
| AWCACHE | 主to从 | 内存类型。该信号指示事务在系统中的传输方式 |
| AWPROT | 主to从 | 保护类型,表明一次传输的特权级及安全等级 |
| AWQOS | 主to从 | 服务质量,QoS,为每个写事务发送的QoS标识符。仅在AXI4中实现 |
| AWREGION | 主to从 | 区域标志,能实现单一物理接口对应的多个逻辑接口 |
| AWUSER | 主to从 | 用户自定义信号 |
| AWVALID | 主to从 | 写地址有效。此信号表示通道正在发出有效的写地址和控制信息 |
| AWREADY | 从to主 | 写地址就绪。此信号表示从设备准备好接受地址和相关的控制信号 |

4.3 写数据通道信号

|--------|------|-------------------------------------------------------------------------------------------------|
| 信号名称 | 方向 | 描述 |
| WID | 主to从 | 写数据ID标签,这个信号是写数据传输的ID标签。仅在AXI3中支持 |
| WDATA | 主to从 | 写数据 |
| WSTRB | 主to从 | 写选通,该信号指示哪些字节通道保存有效数据。写数据总线的每8位有一个写选通位,WVALID 为低时,WSTRB 可以为任意值,WVALID 为高时,WSTRB 为高的字节线必须指示有效的数据 |
| WLAST | 主to从 | 表明此次传输是最后一个突发传输 |
| WUSER | 主to从 | 用户自定义信号,在写数据通道中的可选用户定义信号。仅在AXI4中支持 |
| WVALID | 主to从 | 写有效,表明此次写有效 |
| WREADY | 从to主 | 表明从机可以接收写数据 |

4.4 写响应通道信号

|--------|------|------------------------------------|
| BID | 从to主 | 响应ID标记,该信号是写响应的ID标记 |
| BRESP | 从to主 | 写响应,表明写传输的状态 |
| BUSER | 从to主 | 用户自定义信号,写入响应通道中的可选用户定义信号。仅在AXI4中支持 |
| BVALID | 从to主 | 写响应有效,此信号表示通道正在发出有效的写响应 |
| BREADY | 主to从 | 表明主机能够接收写响应 |

4.5 读地址通道信号

|----------|------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 信号名称 | 方向 | 描述 |
| ARID | 主to从 | 读地址ID,该信号是读地址信号组的识别标记 |
| ARADDR | 主to从 | 读地址,读地址给出了突发事务中第一个传输的地址 |
| ARLEN | 主to从 | ARLEN[7:0]决定读传输的突发长度。AXI3 只支持 1~16 次的突发传输(Burst_length=AxLEN[3:0]+1),AXI4 扩展突发长度支持 INCR 突发类型为 1~256 次传输。burst 传输具有如下规则: 1、wraping burst ,burst 长度必须是 2,4,8,16。 2、burst 不能跨 4KB 边界。 3、不支持提前终止 burst 传输 |
| ARSIZE | 主to从 | 读突发大小,给出每次突发传输的字节数支持 1、2、4、8、16、32、64、128 |
| ARBURST | 主to从 | 突发类型: 2'b00 FIXED:突发传输过程中地址固定,用于 FIFO 访问 2'b01 INCR :增量突发,传输过程中,地址递增。增加量取决 AxSIZE 的值。 2'b10 WRAP:回环突发,和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是 2,4,8,16 次 传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐。回环边界等于(AxSIZE*AxLEN) 2'b11 Reserved |
| ARLOCK | 主to从 | 总线锁信号,可提供操作的原子性 |
| ARCACHE | 主to从 | 内存类型。该信号指示事务在系统中的传输方式 |
| ARPROT | 主to从 | 保护类型,表明一次传输的特权级及安全等级 |
| ARQOS | 主to从 | 服务质量,QoS,为每个写事务发送的QoS标识符。仅在AXI4中实现 |
| ARREGION | 主to从 | 区域标志,能实现单一物理接口对应的多个逻辑接口 |
| ARUSER | 主to从 | 用户自定义信号 |
| ARVALID | 主to从 | 读地址有效。此信号表示通道正在发出有效的读地址和控制信息 |
| ARREADY | 从to主 | 读地址就绪。此信号表示从设备准备好接受地址和相关的控制信号 |

4.6 读数据通道信号

|--------|------|------------------------------------|
| 信号名称 | 方向 | 描述 |
| RID | 从to主 | 读数据ID标签,这个信号是读数据传输的ID标签。仅在AXI3中支持 |
| RDATA | 从to主 | 读数据 |
| RRESP | 从to主 | 读响应,表明读传输的状态 |
| RLAST | 从to主 | 表明此次传输是最后一个突发传输 |
| RUSER | 从to主 | 用户自定义信号,在读数据通道中的可选用户定义信号。仅在AXI4中支持 |
| RVALID | 从to主 | 读有效,此信号表示通道正在发出所需的读数据 |
| RREADY | 主to从 | 表明主机可以接收读数据 |

五、单个信号的使用要求

5.1 时钟信号

  1. 每个AXI元件使用单个时钟信号ACLK。
  2. 所有输入信号在ACLK的上升沿采样。
  3. 所有输出信号变化必须发生在ACLK上升沿之后。
  4. 在主机和从机接口上,输入和输出信号之间不能有组合路径。

5.2 复位信号

AXI 协议使用一个单一的低电平有效的复位信号 ARESETn。复位信号可以异步断言,但去断言必须与 ACLK 的上升沿同步。在复位期间,以下接口要求适用:

  • 主接口必须将 ARVALID、AWVALID 和 WVALID 驱动为低电平。
  • 从接口必须将 RVALID 和 BVALID 驱动为低电平。
  • 所有其他信号可以驱动为任何值。

在复位结束后,允许主机最早可以在 ARESETn 高电平后的下一个 ACLK 上升沿开始驱动 ARVALID、AWVALID 或 WVALID 为高电平,如下图所示:

六、握手机制

所有五个事务通道使用相同的 VALID/READY 握手过程来传输地址、数据和控制信息。源设备使用 VALID 信号来指示何时提供了地址、数据或控制信息;目的设备使用 READY 信号来指示它可以接收信息。仅当 VALID 和 READY 信号都为高电平时,才发生传输。

在主机和从机接口上,输入和输出信号之间不能有组合路径,VALID 和 READY 信号的出现有三种位置关系。

  1. VALID 先变高 READY 后变高,时序图如下:

信源在T1之后提供地址、数据或控制信息,并断言VALID信号。 目的地在T2之后断言READY信号,并且源必须保持其信息稳定,直到在T3发生传输。

在断言VALID之前,不允许源等待READY被断言 。 一旦VALID被断言,它必须保持断言,直到握手发生。

(PS:这句话的意思是:READY 信号可能先到达。但是主机断言VALID信号时,不能依赖 READY 信号先到达的情况。不能将 READY 信号断言作为断言 VALID 的条件。换句话说就是,主机断言VALID信号是一个主动的过程,不依赖从机;但是从机的READY信号可以依赖主机的VALID信号。如果主机断言VALID需要依赖从机的READY信号,那么就可能造成死锁)

  1. READY 先变高 VALID 后变高,时序图如下:

目的地在T1之后,地址、数据或控制信息有效之前断言READY,表明它可以接受该信息。源在T2之后发出信息并断言VALID,传输发生在T3时刻。

允许目的地在断言相应的READY之前等待VALID被断言。 如果READY被断言,则允许在VALID被断言之前取消READY断言。

  1. VALID 和 READY 信号同时变高,时序图如下:

在T1之后,源和目的地都指示它们可以传输地址、数据或控制信息。在这种情况下,传输发生在T2。

6.1 通道握手

每个通道都有自己的VALID/READY握手信号对,如下表所示:

|-------|------------------|
| 通道名称 | 握手信号对 |
| 写地址通道 | AWVALID, AWREADY |
| 写数据通道 | WVALID, WREADY |
| 写响应通道 | BVALID, BREADY |
| 读地址通道 | ARVALID, ARREADY |
| 读数据通道 | RVALID, RREADY |

6.2 写地址通道握手

主设备只能在驱动有效地址和控制信息时断言 AWVALID 信号。当断言时,AWVALID 必须保持断言状态,直到从设备在时钟上升沿后断言 AWREADY。

AWREADY 的默认状态可以是高或低。本规范推荐默认状态为高。当 AWREADY 为高时,从设备必须能够接受任何有效的地址。本规范不推荐 AWREADY 默认状态为低,因为它迫使传输至少需要两个周期,一个用于断言 AWVALID,另一个用于断言 AWREADY

6.3 写数据通道握手

在写突发传输期间,主设备只能在驱动有效写数据时断言 WVALID 信号。当断言时,WVALID 必须保持断言状态,直到从设备在时钟上升沿后断言 WREADY。

WREADY 的默认状态可以是高,但前提是从设备始终可以在一个周期内接受写数据。主设备在驱动突发传输中的最后一个写传输时,必须断言 WLAST 信号。

6.4 写响应通道握手

从设备只能在驱动有效写响应时断言 BVALID 信号。当断言时,BVALID 必须保持断言状态,直到主设备在时钟上升沿后断言 BREADY。

BREADY 的默认状态可以是高,但前提是主设备始终可以在一个周期内接受写响应。

6.5 读地址通道握手

主设备只能在驱动有效地址和控制信息时断言 ARVALID 信号。当断言时,ARVALID 必须保持断言状态,直到从设备断言 ARREADY 信号。

AWREADY 的默认状态可以是高或低。本规范推荐默认状态为高。如果 ARREADY 为高,则从设备必须能够接受任何有效的地址。本规范不推荐 ARREADY 默认值设为低,因为这会迫使传输至少需要两个周期,一个用于断言 ARVALID,另一个用于断言ARREADY。

6.6 读数据通道握手

从设备只能在驱动有效读数据时断言 RVALID 信号。当断言时,RVALID 必须保持断言状态,直到主设备在时钟上升沿后断言 RREADY。即使从设备只有一个读数据源,它也必须仅在响应请求数据时断言 RVALID 信号。

主设备使用 RREADY 信号来表示它接受数据。RREADY 的默认状态可以是高,但前提是主设备能够在任何时候立即接受读数据,无论何时开始读事务。从设备在驱动突发传输中的最后一个读传输时,必须断言 RLAST 信号。

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

为了防止死锁情况,必须遵守握手信号之间存在的相关性规则如以下几张依赖关系图所示:

(ps:单箭头 指向的是可以在箭头开始处的信号之前或之后 断言的信号)

(ps:双箭头 指向的是必须仅在箭头开始处的信号断言之后才断言的信号)

7.1 读传输握手信号依赖关系

  • 主机在断言 ARVALID 之前,不得等待从机断言 ARREADY
  • 从机可以在断言 ARREADY 之前等待 ARREADY被断言
  • 从机可以在ARVALID被断言之前断言ARREADY
  • 从机必须在 ARVALID 和 ARREADY 都被断言之后,才能断言 RVALID 以表示有效数据可用
  • 从机不能在断言RVALID之前等待主设备断言RREADY
  • 主机可以在 RVALID 被断言之前等待 RREADY
  • 主机可以在 RVALID 被断言之前断言 RREADY

7.2 写传输握手信号依赖关系

  • 主机在断言 AWVALID 或 WVALID 之前,不必等待从机断言 AWREADY 或 WREADY
  • 从机在断言AWREADY之前,可以等待AWVALID或WVALID,或者同时等待这两个
  • 从机可以在AWVALID或WVALID或两者都被断言之前断言AWREADY
  • 从机在断言WREADY之前,可以等待AWVALID或WVALID,或者同时等待这两个
  • 从机可以在AWVALID或WVALID或两者被断言之前断言WREADY
  • 从机在断言BVALID之前, 从机必须等待WVALID和WREADY都被断言。在断言BVALID之前,从设备还必须等待WLAST被断言,因为写响应BRESP必须仅在写事务的最后一次数据传输之后被发信号通知
  • 从机在断言BVALID之前,从机不能等待主机断言BREADY
  • 主机可以在断言BREADY之前等待BVALID
  • 主机可以在从机断言BVALID之前断言BREADY

7.3 写响应握手信号依赖关系

  • 主机不能在断言AWVALID或WVALID之前等待从设备断言AWREADY或WREADY
  • 从机在断言AWREADY之前,从设备可以等待AWVALID或WVALID,或者同时等待这两个
  • 从机可以在AWVALID或WVALID或两者都被断言之前断言AWREADY
  • 从机在断言WREADY之前,从机可以等待AWVALID或WVALID,或者同时等待两者
  • 从机可以在AWVALID或WVALID或两者都被断言之前断言WREADY
  • 从机在断言BVALID之前,从机必须等待AWVALID、AWREADY、WVALID和WREADY被断言;在断言BVALID之前,从机还必须等待WLAST被断言,因为写响应BRESP必须仅在写事务的最后一次数据传输之后被发信号通知
  • 从机在断言BVALID之前,从机不能等待主设备断言BREADY
  • 主机可以在断言BREADY之前等待BVALID
  • 主机可以在断言BVALID之前断言BREADY。

八、传输结构

8.1 地址结构

AXI协议是基于突发传输的。主机通过将控制信息和事务的第一个字节的地址发送给从机来开始每一次突发。当突发进行时,从机必须计算突发中后续传输的地址。每一次突发传输,地址偏移量不能跨越4KB地址边界,这样能防止一次突发跨越了两个从机地址。

4k边界是指低12bit全为0的地址,如32'h00001000,32'h00002000,32'h00003000等这些特殊的地址均为4k边界;在整个传输系统中,定义一个page大小为4KBytes,每一个从机的地址都是4k对齐的,意思是每一个从机地址容量都是若干个page组成。如果一次burst传输访问大于4k,则可能会造成地址从slave1增加了slave2上,slave2又不响应,导致传输无法完成。

举例:如果本次传输数据位宽为256bit,突发长度80,则每次突发的地址增量为256*80/8=2560字节

第一次传输地址从0到2559,则第二次传输地址从2560到5119 。则第二次传输超过了4K边界(因为0-4095为一个4K空间,4095为4K边界),因此会导致传输失败。那么如何避免突发跨越4K边界呢? 有以下两种情况:

  1. 如果每次突发长度固定,且每次突发传输的地址偏移量能够被4096整除,那么就不会发生突发跨越4k边界。例如:数据位宽64bit,突发长度为64,那么每次突发传输的地址偏移量为64*64/8=512能够被4096整除。
  2. 如果每次突发长度不固定,不能保证每次突发传输的地址偏移量能够被4096整除,那么每次突发传输就重新分配一个4K地址空间。例如:
  • 第一次传输数据位宽128bit,突发长度为160,那么第一次突发传输的地址偏移量为128*160/8=2560,地址从0到2559。
  • 第二次传输的数据位宽64bit,突发长度200,那么第二次传输的地址偏移量为64*200/8=1600,地址将会从2560到4159超过了4K边界。为了保证第二次传输成功,起始地址就可以给4096,那么结束地址就是4096+1600-1=5695,这样就没有跨越4k边界。

8.2 突发长度

写突发长度由AWLEN[7:0]指定;读突发长度由ARLEN[7:0]指定(在本规范中,AxLEN表示ARLEN或AWLEN)。AXI3支持1到16个传输的所有突发类型的突发长度;AXI4的INCR突发类型的突发长度支持扩展到1到256次传输,AXI4中对所有其他突发类型的支持仍为1到16次传输。

AXI4的突发长度定义为Burst_Length = AxLEN[7:0] + 1,适应AXI4中INCR突发类型的扩展突发长度。AXI有以下规则管理突发的使用:

  • 对于包装突发,突发长度必须为2、4、8或16
  • 一次突发不得跨越4KB地址边界
  • 不支持突发的提前终止

所有的组件都不能提前终止一次 突发 传输。也就是说,不管怎样,都必须完成一次突发 传输。

8.3 突发大小

写突发大小由AWSIZE[2:0]指定,代表单个数据包含多少字节;读突发大小由ARSIZE[2:0]指定(在本规范中,AxSIZE表示ARSIZE或AWSIZE)

|---------------|-------|
| AxSIZE[2:0] | 传输字节数 |
| 3'b000 | 1 |
| 3'b001 | 2 |
| 3'b010 | 4 |
| 3'b011 | 8 |
| 3'b100 | 16 |
| 3'b101 | 32 |
| 3'b110 | 64 |
| 3'b111 | 128 |

8.4 突发类型

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

写突发类型由ARBURST[1:0]指定;读突发类型由AWBURST[1:0]指定(在本规范中,AxBURST表示 ARBURST或AWBURST)

|----------------|----------|
| AxBURST[1:0] | 突发类型 |
| 2'b00 | FIXED |
| 2'b01 | INCR |
| 2'b10 | WRAP |
| 2'b11 | Reserved |

  • FIXED:在FIXED突发中,突发中每个传输的地址都是相同的。
  • INCR:在INCR突发中,突发中每个传输的地址是前一个传输地址的增量。增量值取决于传输的大小。例如,如果突发大小为四个字节,则每个传输的地址是前一个地址加四。这种突发类型用于访问普通顺序内存。
  • WRAP:回环突发,和增量突发类似,但会在特定高地址的边界处回到低地址处。回环突发的长度只能是 2,4,8,16
    次传输,传输首地址和每次传输的大小对齐。最低的地址整个传输的数据大小对齐。回环边界等于(AxSIZE*AxLEN)。

8.5 突发传输地址

  • Start_Address:主机发出的起始地址AxADDR
  • Number_Bytes:每次数据传输的最大字节数 = 2 ^ AxSIZE
  • Data_Bus_Bytes:数据总线中的字节通道数
  • Aligned_Address:起始地址的对齐版本 = (INT(Start_Address / Number_Bytes) ) × Number_Bytes  //INT 表示向下取整
  • Burst_Length:一次突发的数据传输的总数 = AxLEN + 1

参考


《IHI0022E_amba_axi_and_ace_protocol_spec》

相关推荐
fei_sun3 小时前
【Verilog】第一章作业
fpga开发·verilog
深圳市雷龙发展有限公司longsto4 小时前
基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面
fpga开发
9527华安8 小时前
FPGA实现PCIE3.0视频采集转10G万兆UDP网络输出,基于XDMA+GTH架构,提供工程源码和技术支持
网络·fpga开发·udp·音视频·xdma·pcie3.0·万兆网
able陈8 小时前
为什么verilog中递归函数需要定义为automatic?
fpga开发
fei_sun9 小时前
【Verilog】第二章作业
fpga开发·verilog
碎碎思10 小时前
如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目
fpga开发·接口隔离原则
江山如画,佳人北望12 小时前
fpga-状态机的设计及应用
fpga开发
晓晓暮雨潇潇13 小时前
Xilinx IP核(3)XADC IP核
fpga开发·vivado·xadc·ip核
CWNULT13 小时前
AMD(Xilinx) FPGA配置Flash大小选择
fpga开发
碎碎思1 天前
很能体现FPGA硬件思维的一道面试题
fpga开发