文章目录
- Chapter A1 Introduction(引言)
- Chapter A2 Signal Descriptions(信号描述)
- A2.1 Global signals(全局信号)
- A2.2 Write address channel signals(Write address通道信号)
- A2.3 Write data channel signals(Write data通道信号)
- A2.4 Write response channel signals(Write response通道信号)
- A2.5 Read address channel signals(Read address通道信号)
- A2.6 Read data channel signals(Read data通道信号)
- A2.7 Low-power interface signals(低功耗接口信号)
- Chapter A3 Single Interface Requirements(单一接口要求)
Chapter A1 Introduction(引言)
本章介绍AXI协议的架构以及本规范中使用的术语。它包含以下几节:
- About the AXI protocol on page A1-20
- AXI revisions on page A1-21
- AXI Architecture on page A1-22
- Terminology on page A1-25.
A1.1 About the AXI protocol(关于AXI协议)
AMBA AXI协议支持高性能、高频系统设计。
AXI协议:
- 适用于高带宽和低延迟设计
- 无需使用复杂桥接器即可实现高频操作
- 满足各类组件的接口要求
- 适用于初始访问延迟高的内存控制器
- 在互连架构的实现上提供灵活性
- 与现有的AHB和APB接口向后兼容。
AXI协议的关键特性如下:
- 地址/控制与数据阶段分离
- 使用字节选通,支持非对齐数据传输
- 采用仅发出起始地址的突发式事务
- 独立的读Write data通道,可实现低成本直接内存访问(Direct Memory Access,DMA)
- 支持发出多个未完成地址
- 支持乱序事务完成
- 便于添加寄存器级,以实现时序收敛。
AXI协议包含用于低功耗操作信令的可选扩展。
AXI协议包含AXI4-Lite规范,这是AXI4的一个子集,用于组件内与更简单的控制寄存器风格的接口进行通信。参见B1章“AMBA AXI4-Lite”。
A1.2 AXI revisions(AXI修订版本)
本文档的早期版本介绍了AMBA AXI协议规范的早期版本。具体而言,本文档的B版介绍的版本现称为AXI3。
C版增加了名为AXI4的协议扩展版本定义以及新接口AXI4-Lite,AXI4-Lite为无需AXI4全部功能的应用提供了更简单的控制寄存器接口。
D版整合了C版中分开阐述的AXI3和AXI4的定义。
——注——
本文档之前的一些版本在标题中包含一个版本号。该版本号并非指AXI协议的版本。
——————
A1.3 AXI Architecture(AXI架构)
AXI协议基于突发传输,并定义了以下独立的事务通道:
- 读地址(read address)
- Read数据(read data)
- 写地址(write address)
- 写数据(write data)
- Write响应(write response)
地址通道承载描述待传输数据特性的控制信息。数据在主设备和从设备之间传输采用以下方式之一:
- Write data通道,用于将数据从主设备传输到从设备。在Write事务中,从设备使用Write response通道向主设备发出传输完成的信号。
- Read data通道,用于将数据从从设备传输到主设备。
AXI协议:
- 允许地址信息在实际数据传输之前发出
- 支持多个未完成事务
- 支持事务乱序完成。
图A1-1展示了Read事务如何使用read address和Read data通道。
Figure A1-1 Channel architecture of reads
图A1-2展示了Write事务如何使用write address、write data和Write response通道。
Figure A1-2 Channel architecture of writes
A1.3.1 Channel definition(通道定义)
每个独立通道均由一组信息信号以及提供双向握手机制的VALID和READY信号组成。参见A3-37页的“Basic read and write transactions”。
信息源使用VALID信号来指示何时在通道上有有效的地址、数据或控制信息可用。目标使用READY信号来指示何时可以接受信息。Read data通道和Write data通道也都包含一个LAST信号,用于指示事务中最后一个数据项的传输
读和Write address通道
Read事务和Write事务各有其地址通道。相应的地址通道承载事务所需的所有地址和控制信息。
Read data通道
Read data通道将read data和read response信息从从设备传至主设备,且包括:
- 数据总线,宽度可为8、16、32、64、128、256、512或1024位
- 一个read response信号,指示Read事务的完成状态。
Write data通道
Write data通道将写数据从主设备传输到从设备,其包括:
- 数据总线,其宽度可以是8、16、32、64、128、256、512或1024位
- 每8个数据位对应一个字节通道选通信号,用于指示数据中的哪些字节有效。
Write data通道信息始终被视为已缓冲(buffered),这样主设备无需等待从设备对先前Write事务的确认就能执行Write事务。
Write response通道
从设备使用Write response通道对Write事务作出响应。所有Write事务都需要在Write response通道上发出完成信号。
如A1-22页图A1-2所示,仅针对完整事务发出完成信号,而非事务中的每次数据传输。
A1.3.2 Interface and interconnect(接口与互连)
如图A1-3所示,典型系统由多个主设备和从设备通过某种形式的互连连接在一起。
Figure A1-3 Interface and interconnect
AXI协议为以下接口提供单一接口定义:
- 主设备与互连之间
- 从设备与互连之间
- 主设备与从设备之间
该接口定义支持多种不同的互连实现方式。
——注——
设备间的互连等同于另一个具有对称主从端口的设备,真正的主从设备可连接到这些端口。
————
典型系统拓扑结构
大多数系统采用以下三种互连拓扑之一:
- 共享地址和数据总线
- 共享地址总线和多条数据总线
- 多层结构,含多条地址和数据总线。
在大多数系统中,地址通道带宽需求显著低于数据通道带宽需求。此类系统通过使用共享地址总线搭配多条数据总线来实现并行数据传输,可在系统性能与互连复杂性之间实现良好平衡。
A1.3.3 Register slices(寄存器切片)
每个AXI通道仅沿一个方向传输信息,且该架构不要求通道之间存在任何固定关系。这意味着几乎可在任何通道的任意点插入寄存器切片,代价是增加一个周期的延迟。
——注——
这使得以下成为可能:
- 在延迟周期与最高运行频率之间进行权衡
- 在处理器与高性能内存之间建立直接、快速的连接,但使用简单的寄存器切片来隔离通往对性能要求较低的外设的更长路径。
A1.4 Terminology(术语)
本节总结了本规范中使用的术语,这些术语在术语表或其他地方有定义。在适当的情况下,本节列出的术语链接到相应的术语表定义。
A1.4.1 AXI components and topology(AXI组件与拓扑结构)
以下术语描述AXI组件:
- 组件(Component)。
- 主组件(Master component)。
- 从组件(Slave component)。从组件包括内存从组件(Memory slave components)和外设从组件(Peripheral slave components)。
- 互连组件(Interconnect component)。
对于特定的AXI事务,“上游”和“下游”指的是AXI拓扑结构内AXI组件的相对位置。
A1.4.2 AXI transactions, and memory types(AXI事务及内存类型)
当AXI主设备发起针对AXI从设备的AXI操作时:
- AXI总线上所需操作的完整集合构成AXI事务。
- 任何所需的有效载荷数据作为AXI突发传输。
- 一次突发传输可包含多次数据传输,即AXI节拍。
A1.4.3 Caches and cache operation(缓存与缓存操作)
本规范未定义标准缓存术语,缓存相关术语在任何缓存参考资料中已有定义。不过,术语表中“Cache”和“Cache line”条目阐明了这些术语在本文档中的用法。
A1.4.4 Temporal description(时间描述)
AXI规范使用“及时”这一表述。
Chapter A2 Signal Descriptions(信号描述)
本章介绍AXI接口信号。协议的AXI3和AXI4实现大多需要这些信号,汇总信号的表格标明了例外情况。本章包含以下几节:
- Global signals on page A2-28
- Write address channel signals on page A2-29
- Write data channel signals on page A2-30
- Write response channel signals on page A2-31
- Read address channel signals on page A2-32
- Read data channel signals on page A2-33
- Low-power interface signals on page A2-34
后续章节将定义信号参数及用法。
A2.1 Global signals(全局信号)
表A2-1显示了全局AXI信号。这些信号被AXI3和AXI4协议使用。
Table A2-1 Global signals
Signal | Source | Description |
ACLK | Clock source | Global clock signal. See Clock on page A3-36. 全局时钟信号。见A3-36页的“Clock” |
ARESETn | Reset source | Global reset signal, active LOW. See Reset on page A3-36. 全局复位信号,低电平有效。见A3-36页的“Reset” |
所有信号均在全局时钟的上升沿采样。
A2.2 Write address channel signals(Write address通道信号)
表A2-2显示了AXIWrite address通道信号。除非描述中另有说明,否则一个信号被AXI3和AXI4使用。
Table A2-2 Write address channel signals
Signal | Source | Description |
---|---|---|
AWID | Master | Write address ID. This signal is the identification tag for the write address group of signals. See Transaction ID on page A5-77. 写地址ID。此信号是写地址信号组的识别标签。见A5-77页的“Transaction ID” |
AWADDR | Master | Write address. The write address gives the address of the first transfer in a write burst transaction. See Address structure on page A3-44. 写地址。写地址给出写突发事务中首次传输的地址。见A3-44页的“Address structure” |
AWLEN | Master | Burst length. The burst length gives the exact number of transfers in a burst. This information determines the number of data transfers associated with the address. This changes between AXI3 and AXI4. See Burst length on page A3-44. burst length。burst length给出一次突发传输的确切次数。此信息决定与该地址相关的数据传输次数。这在AXI3和AXI4之间有所不同。见A3-44页的“Burst length” |
AWSIZE | Master | Burst size. This signal indicates the size of each transfer in the burst. See Burst size on page A3-45. 突发大小。此信号指示突发中每次传输的大小。见A3-45页的“Burst size” |
AWBURST | Master | Burst type. The burst type and the size information, determine how the address for each transfer within the burst is calculated. See Burst type on page A3-45. 突发类型。突发类型和大小信息决定突发内每次传输的地址计算方式。见A3-45页的“Burst type” |
AWLOCK | Master | Lock type. Provides additional information about the atomic characteristics of the transfer. This changes between AXI3 and AXI4. See Locked accesses on page A7-95. 锁定类型。提供有关传输原子特性的更多信息。这在AXI3和AXI4之间有所不同。见A7-95页的“Locked accesses” |
AWCACHE | Master | Memory type. This signal indicates how transactions are required to progress through a system. See Memory types on page A4-65. 内存类型。此信号指示事务在系统中如何推进。见A4-65页的“Memory type” |
AWPROT | Master | Protection type. This signal indicates the privilege and security level of the transaction, and whether the transaction is a data access or an instruction access. See Access permissions on page A4-71. 保护类型。此信号表明事务的权限和安全级别,以及该事务是数据访问还是指令访问。见A4-71页的“Access permissions” |
AWQOS | Master | Quality of Service, QoS. The QoS identifier sent for each write transaction. Implemented only in AXI4. See QoS signaling on page A8-98. 服务质量(QoS)。为每次Write事务发送的QoS标识符。仅在AXI4中实现。见A8-98页的“QoS signaling” |
AWREGION | Master | Region identifier. Permits a single physical interface on a slave to be used for multiple logical interfaces. Implemented only in AXI4. See Multiple region signaling on page A8-99. 区域标识符。允许将从设备上的单个物理接口用于多个逻辑接口。仅在AXI4中实现。见A8-99页的“Multiple region signaling” |
AWUSER | Master | User signal. Optional User-defined signal in the write address channel. Supported only in AXI4. See User-defined signaling on page A8-100. User信号。Write address通道中可选的用户自定义信号。仅AXI4支持。见A8-100页的“User-defined signaling” |
AWVALID | Master | Write address valid. This signal indicates that the channel is signaling valid write address and control information. See Channel handshake signals on page A3-38. 写地址有效。此信号表明该通道正在发送有效的写地址和控制信息。见A3-38页的“Channel handshake” |
AWREADY | Slave | Write address ready. This signal indicates that the slave is READY to accept an address and associated control signals. See Channel handshake signals on page A3-38. 写地址就绪。此信号表明从设备已准备好接收地址及相关控制信号。见A3-38页的“Channel handshake signals” |
A2.3 Write data channel signals(Write data通道信号)
表A2-3显示了AXI写数据通道信号。除非描述中另有说明,否则一个信号被AXI3和AXI4使用。
Table A2-3 Write data channel signals
Signal | Source | Description |
---|---|---|
WID | Master | Write ID tag. This signal is the ID tag of the write data transfer. Supported only in AXI3. See Transaction ID on page A5-77. 写ID标签。此信号是写数据传输的ID标签。仅AXI3支持。见A5-77页的“Transaction ID” |
WDATA | Master | Write data. |
WSTRB | Master | Write strobes. This signal indicates which byte lanes hold valid data. There is one write strobe bit for each eight bits ofthe write data bus. See Write strobes on page A3-49. 写选通信号。此信号指示哪些字节通道包含有效数据。Write数据总线每8位对应一个写选通位。见A3-49页的“Write strobes” |
WLAST | Master | Write last. This signal indicates the last transfer in a write burst. See Write data channel on page A3-39. 写最后。此信号指示写突发中的最后一次传输。见A3-39页的“write data channel” |
WUSER | Master | User signal. Optional User-defined signal in the write data channel. Supported only in AXI4. See User-defined signaling on page A8-100. User信号。Write data通道中可选的用户自定义信号。仅AXI4支持。见A8-100页的“User-defined signaling” |
WVALID | Master | Write valid. This signal indicates that valid write data and strobes are available. See Channel handshake signals on page A3-38. 写有效。此信号表明有效的写数据和选通信号已就绪。见A3-38页的“Channel handshake signals” |
WREADY | Slave | Write READY. This signal indicates that the slave can accept the write data. See Channel handshake signals on page A3-38. 写就绪。此信号表明从设备可以接受写数据。见A3-38页的“Channel handshake signals” |
A2.4 Write response channel signals(Write response通道信号)
表A2-4显示了AXIWrite响应通道信号。除非描述中另有说明,否则一个信号被AXI3和AXI4使用。
Table A2-4 Write response channel signals
Signal | Source | Description |
---|---|---|
BID | Slave | Response ID tag. This signal is the ID tag of the write response. See Transaction ID on page A5-77. 响应ID标签。此信号是Write响应的ID标签。见A5-77页的“Transaction ID” |
BRESP | Slave | Write response. This signal indicates the status of the write transaction. See Read and write response structure on page A3-54. Write响应。此信号指示Write事务的状态。见A3-54页的“Read and write response structure” |
BUSER | Slave | User signal. Optional User-defined signal in the write response channel. Supported only in AXI4. See User-defined signaling on page A8-100. User信号。Write response通道中可选的用户自定义信号。仅AXI4支持。见A8-100页的“User-defined signaling” |
BVALID | Slave | Write response valid. This signal indicates that the channel is signaling a valid write response. See Channel handshake signals on page A3-38. Write响应有效。此信号表明该通道正在发送有效的Write响应。见A3-38页的“Channel handshake signals” |
BREADY | Master | Response READY. This signal indicates that the master can accept a write response. See Channel handshake signals on page A3-38. 响应就绪。此信号表明主设备可以接受Write响应。见A3-38页的“Channel handshake signals” |
A2.5 Read address channel signals(Read address通道信号)
表A2-5显示了AXIRead address通道信号。除非描述中另有说明,否则一个信号被AXI3和AXI4使用。
Table A2-5 Read address channel signals
Signal | Source | Description |
---|---|---|
ARID | Master | Read address ID. This signal is the identification tag for the read address group of signals. See Transaction ID on page A5-77. 读地址ID。此信号是读地址信号组的识别标签。见A5-77页的“Transaction ID” |
ARADDR | Master | Read address. The read address gives the address of the first transfer in a read burst transaction. See Address structure on page A3-44. 读地址。读地址给出读突发事务中首次传输的地址。见A3-44页的“Address structure” |
ARLEN | Master | Burst length. This signal indicates the exact number of transfers in a burst. This changes between AXI3 and AXI4. See Burst length on page A3-44. burst length。此信号表示突发中传输的确切次数。这在AXI3和AXI4之间有所不同。见A3-44页的“Burst length” |
ARSIZE | Master | Burst size. This signal indicates the size of each transfer in the burst. See Burst size on page A3-45. 突发大小。此信号指示突发中每次传输的数据量大小。见A3-45页的“Burst size” |
ARBURST | Master | Burst type. The burst type and the size information determine how the address for each transfer within the burst is calculated. See Burst type on page A3-45. 突发类型。突发类型和大小信息决定突发内每次传输地址的计算方式。见A3-45页的“Burst type” |
ARLOCK | Master | Lock type. This signal provides additional information about the atomic characteristics of the transfer. This changes between AXI3 and AXI4. See Locked accesses on page A7-95. 锁定类型。此信号提供有关传输原子特性的额外信息。这在AXI3和AXI4之间有所不同。见A7-95页的“Locked accesses” |
ARCACHE | Master | Memory type. This signal indicates how transactions are required to progress through a system. See Memory types on page A4-65. 内存类型。此信号表明事务在系统中需如何推进。见A4-65页的“Memory types” |
ARPROT | Master | Protection type. This signal indicates the privilege and security level of the transaction, and whether the transaction is a data access or an instruction access. See Access permissions on page A4-71. 保护类型。此信号指示事务的特权和安全级别,以及该事务是数据访问还是指令访问。见A4-71页的“Access permissions” |
ARQOS | Master | Quality of Service, QoS. QoS identifier sent for each read transaction. Implemented only in AXI4. See QoS signaling on page A8-98. 服务质量(QoS)。为每次Read事务发送的QoS标识符。仅在AXI4中实现。见A8-98页的“QoS signaling” |
ARREGION | Master | Region identifier. Permits a single physical interface on a slave to be used for multiple logical interfaces. Implemented only in AXI4. See Multiple region signaling on page A8-99. 区域标识符。允许将从设备上的单个物理接口用于多个逻辑接口。仅在AXI4中实现。见A8-99页的“Multiple region signaling” |
ARUSER | Master | User signal. Optional User-defined signal in the read address channel. Supported only in AXI4. See User-defined signaling on page A8-100. User信号。Read address通道中可选的用户自定义信号。仅AXI4支持。见A8-100页的“User-defined signaling” |
ARVALID | Master | Read address valid. This signal indicates that the channel is signaling valid read address and control information. See Channel handshake signals on page A3-38. 读地址有效。此信号表明该通道正在发送有效的读地址和控制信息。见A3-38页的“Channel handshake signals” |
ARREADY | Slave | Read address ready. This signal indicates that the slave is READY to accept an address and associated control signals. See Channel handshake signals on page A3-38. 读地址就绪。此信号表明从设备已准备好接受地址及相关控制信号。见A3-38页的“Channel handshake signals” |
A2.6 Read data channel signals(Read data通道信号)
表A2-6显示了AXIRead数据通道信号。除非描述中另有说明,否则一个信号被AXI3和AXI4使用。
Table A2-6 Read data channel signals
Signal | Source | Description |
---|---|---|
RID | Slave | Read ID tag. This signal is the identification tag for the read data group of signals generated by the slave. See Transaction ID on page A5-77. 读ID标签。此信号是从设备生成的Read数据信号组的识别标签。见A5-77页的“Transaction ID” |
RDATA | Slave | Read data. |
RRESP | Slave | Read response. This signal indicates the status of the read transfer. See Read and write response structure on page A3-54. Read响应。此信号指示读传输的状态。见A3-54页的“Read and write response structure” |
RLAST | Slave | Read last. This signal indicates the last transfer in a read burst. See Read data channel on page A3-39. 读最后。此信号指示读突发中的最后一次传输。见A3-39页的“Read data通道” |
RUSER | Slave | User signal. Optional User-defined signal in the read data channel. Supported only in AXI4. See User-defined signaling on page A8-100. User信号。Read data通道中可选的用户自定义信号。仅AXI4支持。见A8-100页的“用户自定义信令” |
RVALID | Slave | Read valid. This signal indicates that the channel is signaling the required read data. See Channel handshake signals on page A3-38. 读有效。此信号表明该通道正在传输所需的Read数据。见A3-38页的“Channel handshake signals” |
RREADY | Master | Read READY. This signal indicates that the master can accept the read data and response information. See Channel handshake signals on page A3-38. 读就绪。此信号表明主设备可以接收Read数据和响应信息。见A3-38页的“Channel handshake signals” |
A2.7 Low-power interface signals(低功耗接口信号)
表A2-7显示了可选低功耗接口的信号。这些信号被AXI3和AXI4协议使用。
Table A2-7 Low-power interface signals
Signal | Source | Description |
---|---|---|
CSYSREQ | Clock controller | System exit low-power state request. This signal is a request from the system clock controller for the peripheral to exit from a low-power state. See Power-down or power-up handshake on page A9-103. 系统退出低功耗状态请求。此信号是系统时钟控制器发出的请求,要求外设退出低功耗状态。见A9-103页的“Power-down or power-up handshake” |
CSYSACK | Peripheral device | Exit low-power state acknowledgement. This signal is the acknowledgement from a peripheral to a system exit low-power state request. See Power-down or power-up handshake on page A9-103. 退出低功耗状态确认。此信号是外设对系统退出低功耗状态请求的确认。见A9-103页的“Power-down or power-up handshake” |
CACTIVE | Peripheral device | Clock active. This signal indicates that the peripheral requires its clock signal. See Peripheral clock required on page A9-103. 时钟激活。此信号表明外设需要其时钟信号。见A9-103页的“Peripheral clock required” |
Chapter A3 Single Interface Requirements(单一接口要求)
本章描述单个主设备与从设备之间基本的AXI协议事务要求。它包含以下部分:
- Clock and reset on page A3-36
- Basic read and write transactions on page A3-37
- Relationships between the channels on page A3-40
- Transaction structure on page A3-44.
A3.1 Clock and reset(时钟与复位)
本节描述实现AXI全局时钟和复位信号ACLK与ARESETn的要求。
A3.1.1 Clock(时钟)
每个AXI组件使用单个时钟信号ACLK。所有输入信号在ACLK的上升沿采样。所有输出信号的变化必须在ACLK的上升沿之后发生。
在主从接口上,输入与输出信号之间不得存在组合路径。
A3.1.2 Reset(复位)
AXI协议使用单个低电平有效复位信号ARESETn。复位信号可异步置为有效,但撤销必须与ACLK的上升沿同步。
复位期间,适用以下接口要求:
- 主接口必须将ARVALID、AWVALID和WVALID驱动为低电平。
- 从接口必须将RVALID和BVALID驱动为低电平。
- 所有其他信号可驱动为任意值。
复位后,主设备最早可在ARESETn为高电平后的ACLK上升沿开始,将ARVALID、AWVALID或WVALID驱动为高电平。图A3-1展示了复位后ARVALID、AWVALID或WVALID最早可被驱动为高电平的时刻。
Figure A3-1 Exit from reset
A3.2 Basic read and write transactions(基本读写事务)
本节定义AXI协议事务的基本机制。基本机制如下:
- 握手过程
- A3-38页的通道信令要求
A3.2.1 Handshake process(握手过程)
所有五个事务通道都使用相同的VALID/READY握手过程来传输地址、数据和控制信息。这种双向流控制机制意味着主设备和从设备都能控制信息在主从之间传输的速率。源端生成VALID信号以表明地址、数据或控制信息何时可用。目的端生成READY信号以表明它能够接收该信息。仅当VALID和READY信号都为高电平时才进行传输。
在主接口和从接口上,输入信号与输出信号之间不得存在组合路径。
第A3-38页的图A3-2到图A3-4展示了握手过程的示例。
在图A3-2中,源端在T1之后给出地址、数据或控制信息并置VALID信号为有效。目的端在T2之后置READY信号为有效,并且源端必须保持其信息稳定,直到在T3传输发生,此时目的端置READY信号有效这一情况得到确认。
Figure A3-2 VALID before READY handshake
不允许源端等到READY信号有效后才置VALID信号有效。
一旦VALID信号置为有效,它必须保持有效,直到握手发生,即在VALID和READY都置为有效的时钟上升沿。
在图A3-3中,目的端在T1之后、地址、数据或控制信息有效之前置READY为有效,表明其可以接收信息。源端在T2之后给出信息并置VALID为有效,当该置有效被识别时,传输在T3发生。在这种情况下,传输在单个周期内发生。
Figure A3-3 READY before VALID handshake
允许目的端在置相应的READY信号有效之前等待VALID信号有效。如果READY信号已置有效,则允许在VALID信号有效之前撤销READY信号。
在图A3-4中,源端和目的端碰巧都在T1之后,表明它们可以传输地址、数据或控制信息。在这种情况下,当VALID和READY信号置为有效的情况都能被识别时,传输在时钟上升沿发生。这意味着传输在T2发生。
Figure A3-4 VALID with READY handshake
各个AXI协议通道的握手机制在“Channel signaling requirements”中描述。
A3.2.2 Channel signaling requirements(通道信令要求)
以下各节定义每个通道的握手信号和握手规则:
- Channel handshake signals
- Write address channel
- Write data channel on page A3-39
- Write response channel on page A3-39
- Read address channel on page A3-39
- Read data channel on page A3-39.
通道握手信号
每个通道都有自己的VALID/READY握手信号对。表A3-1展示了每个通道的信号。
Table A3-1 Transaction channel handshake pairs
Transaction channel | Handshake pair |
Write address channel | AWVALID, AWREADY |
Write data channel | WVALID, WREADY |
Write response channel | BVALID, BREADY |
Read address channel | ARVALID, ARREADY |
Read data channel | RVALID, RREADY |
Write address通道
主设备只有在驱动有效地址和控制信息时,才能置AWVALID信号有效。置有效后,AWVALID信号必须保持有效,直到从设备置AWREADY信号有效后的时钟上升沿。
AWREADY的默认状态可以为高电平或低电平。本规范建议默认状态为高电平。当AWREADY为高电平时,从设备必须能够接受提供给它的任何有效地址。
——注——
本规范不建议将AWREADY的默认状态设为低电平,因为这会迫使传输至少花费两个周期,一个周期用于置AWVALID有效,另一个周期用于置AWREADY有效。
————
Write data通道
在写突发传输期间,主设备仅在驱动有效写数据时才能置WVALID信号有效。置有效后,WVALID必须保持有效,直到从设备置WREADY有效后的时钟上升沿。
WREADY的默认状态可以是高电平,但前提是从设备总能在单个周期内接受写数据。主设备在突发传输中驱动最后一次写传输时,必须置WLAST信号有效。
Write response通道
从设备仅在驱动有效Write响应时,才能置BVALID信号有效。置有效后,BVALID必须保持有效,直到主设备置BREADY信号有效后的时钟上升沿。
BREADY的默认状态可以为高电平,但前提是主设备总能在单个周期内接受Write响应。
Read address通道
主设备仅在驱动有效地址和控制信息时才能置ARVALID信号有效。置有效后,ARVALID必须保持有效,直到从设备置ARREADY信号有效后的时钟上升沿。
ARREADY的默认状态可以是高电平或低电平。本规范建议默认状态为高电平。如果ARREADY为高电平,那么从设备必须能够接受提供给它的任何有效地址。
——注——
本规范不建议将ARREADY的默认值设为低电平,因为这会迫使传输至少需要两个周期,一个用于置ARVALID有效,另一个用于置ARREADY有效。
————
Read data通道
从设备仅在驱动有效Read数据时才能置RVALID信号有效。置有效后,RVALID必须保持有效,直到主设备置RREADY有效后的时钟上升沿。即使从设备只有一个Read数据源,也必须仅在响应数据请求时才置RVALID信号有效。
主接口使用RREADY信号表明其接受数据。RREADY的默认状态可以为高电平,但前提是主设备在启动Read事务时能立即接受Read数据。
从设备在突发传输中驱动最后一次读传输时,必须置RLAST信号有效。
A3.3 Relationships between the channels(各通道之间的关系)
AXI协议要求维持以下关系:
- Write响应必须始终跟随其所属Write事务中的最后一次写传输。
- Read数据必须始终跟随与该数据相关的地址。
- 通道握手必须符合“Dependencies between channel handshake signals”中定义的依赖关系。
否则,该协议未定义各通道之间的任何关系。
例如,这意味着写数据可能会在事务的写地址之前出现在接口处。如果Write address通道包含的寄存器级数比Write data通道多,就会出现这种情况。同样,写数据可能与地址在同一周期出现。
——注——
当需要互连来确定目的地址空间或从设备空间时,它必须重新对齐地址和写数据。这是为了确保仅向其目的地从设备发出写数据有效的信号。
————
A3.3.1 Dependencies between channel handshake signals(通道握手信号之间的依赖关系)
为避免出现死锁情况,必须遵守握手信号之间存在的依赖规则。如A3-38页“Channel signaling requirements”中总结的,在任何事务中:
- 发送信息的AXI接口的VALID信号,不得依赖接收该信息的AXI接口的READY信号。
- 正在接收信息的AXI接口可以等待,直到检测到VALID信号后,才置其相应的READY信号有效。
——注——
虽然在置READY有效之前等待VALID有效是可以接受的,但在检测到相应的VALID之前置READY有效也是可以接受的。这可以产生更高效的设计。
————
此外,不同通道上的握手信号之间存在依赖关系,并且AXI4定义了一个额外的Write响应依赖关系。以下各小节定义这些依赖关系:
- Read transaction dependencies on page A3-41
- Write transaction dependencies on page A3-41
- AXI4 write response dependency on page A3-42.
在依赖关系图中:
- 单头箭头指向的信号,可以在箭头起始处信号之前或之后置为有效。
- 双头箭头指向的信号,必须仅在箭头起始处信号置为有效后,才能置为有效。
Read事务依赖关系
图A3-5显示了Read事务握手信号的依赖关系,并且显示在Read事务中:
- 主设备在置ARVALID有效之前,不得等待从设备置ARREADY有效。
- 从设备可以在置ARREADY有效之前,等待ARVALID有效。
- 从设备可以在ARVALID置为有效之前置ARREADY有效。
- 从设备必须在ARVALID和ARREADY均置为有效后,才能置RVALID有效,以表明有有效数据可用。
- 从设备在置RVALID有效之前,不得等待主设备置RREADY有效。
- 主设备可以在置RREADY有效之前等待RVALID有效。
- 主设备可以在RVALID置为有效之前置RREADY有效。
Figure A3-5 Read transaction handshake dependencies
Write事务依赖关系
图A3-6显示了Write事务握手信号的依赖关系,并且显示在Write事务中:
- 主设备在置AWVALID或WVALID有效之前,不得等待从设备置AWREADY或WREADY有效。
- 从设备可以在置AWREADY有效之前等待AWVALID或WVALID或两者均有效。
- 从设备可以在AWVALID或WVALID或两者均置为有效之前置AWREADY有效。
- 从设备可以在置WREADY有效之前,等待AWVALID或WVALID或两者有效。
- 从设备可以在AWVALID或WVALID或两者置为有效之前,置WREADY有效。
- 从设备必须在WVALID和WREADY都置为有效后,才可以置BVALID有效。
从设备在置BVALID有效之前,还必须等待WLAST置为有效,因为Write响应BRESP必须仅在Write事务的最后一次数据传输之后发出信号。
- 从设备在置BVALID有效之前,不得等待主设备置BREADY有效。
- 主设备可以在置BREADY有效前等待BVALID有效。
- 主设备可以在BVALID置为有效之前置BREADY有效。
† 对WVALID置为有效的依赖关系,也要求WLAST置为有效。
Figure A3-6 Write transaction handshake dependencies
——警告——
必须遵守依赖规则以防止出现死锁情况。例如,主设备在驱动WVALID之前不得等待AWREADY有效。如果从设备在置AWREADY有效之前等待WVALID有效,则可能会出现死锁情况。
————
AXI4Write响应依赖关系
AXI4定义了一种额外的AXI4从设备Write响应依赖关系。
——注——
- 这种额外的依赖关系反映了AXI3中的预期用法,因为预计不会有任何组件在地址被接受之前就接受所有写数据并提供Write响应。
- 通过发出Write响应,从设备负责针对所有后续事务对Write事务进行冒险检查。
————
图A3-7展示了AXI4所需从设备Write响应握手的所有依赖关系。单箭头指向可在先前信号置为有效之前或之后置为有效的信号。双箭头指向仅在先前信号置为有效之后才可置为有效的信号。
图A3-7总结了AXI4从设备Write响应握手依赖关系。这些依赖关系为:
- 主设备在置AWVALID或WVALID有效前,不得等待从设备置AWREADY或WREADY有效。
- 从设备可以在置AWREADY有效前,等待AWVALID或WVALID或两者有效。
- 从设备可在AWVALID或WVALID或两者置为有效前,置AWREADY有效。
- 从设备可以在置WREADY有效之前等待AWVALID或WVALID或两者有效。
- 从设备可在AWVALID或WVALID或两者置为有效前,置WREADY有效。
- 从设备必须在AWVALID、AWREADY、WVALID和WREADY都置为有效后,才可以置BVALID有效。
从设备在置BVALID有效前还必须等待WLAST置为有效,因为Write响应BRESP必须仅在Write事务最后一次数据传输后发出信号。
- 从设备在置BVALID有效前,不得等待主设备置BREADY有效。
- 主设备可以在置BREADY有效前等待BVALID有效。
- 主设备可在BVALID置为有效前,置BREADY有效。
†对WVALID置为有效的依赖关系同样要求WLAST置为有效。
Figure A3-7 Slave write response handshake dependencies
A3.3.2 Legacy considerations(传统考量因素)
A3-42页“AXI4 write response dependency”中描述的额外依赖关系意味着,在接受地址之前就接受所有写数据并提供Write响应的AXI3从设备不符合AXI4规范。将AXI3传统从设备转换为AXI4,需要添加一个包装器,以确保在从设备接受相应地址之前不提供返回的Write响应。
——注——
本规范强烈建议任何新的AXI3从设备实现都包含此额外依赖关系。
————
任何AXI3主设备均符合AXI4Write响应要求。
A3.4 Transaction structure(事务结构)
本节描述事务的结构。以下各节定义地址、数据和响应结构:
- Address structure
- Pseudocode description of the transfers on page A3-48
- Data read and write structure on page A3-49
- Read and write response structure on page A3-54
有关本节所用术语的定义,见Glossary-301页的“Glossary”。
A3.4.1 Address structure(地址结构)
AXI协议基于突发传输。主设备通过将控制信息和事务中第一个字节的地址驱动给从设备来启动每个突发传输。随着突发传输的进行,从设备必须计算突发传输中后续传输的地址。
突发传输不得跨越4KB地址边界。
——注——
这可防止突发传输跨越两个从设备之间的边界。它还限制了从设备必须支持的地址增量数量。
————
burst length(Burst length)
burst length由以下指定:
- 读传输时由**ARLEN[7:0]**指定。
- 写传输时由**AWLEN[7:0]**指定。
在本规范中,AxLEN表示ARLEN或AWLEN。
对于所有突发类型,AXI3支持1到16次传输的burst length。
AXI4将INCR突发类型的burst length支持范围扩展至1到256次传输。AXI4中所有其他突发类型的支持范围仍为1到16次传输。
AXI3的burst length定义为:
Burst length=AxLEN[3:0]+1
AXI4的burst length定义为:
Burst length = AxLEN[7:0] + 1,以适应AXI4中INCR突发类型扩展后的burst length。
AXI有以下管理突发使用的规则:
- 对于wrapping突发,burst length必须为2、4、8或16
- 突发传输不得跨越4KB地址边界
- 不支持突发的提前终止。
任何组件都不能提前终止突发传输。不过,为减少写突发中的数据传输次数,主设备可通过撤销所有写选通信号来停止后续写入。在此情况下,主设备必须完成突发中的剩余传输。在读突发中,主设备可以丢弃读取的数据,但必须完成突发中的所有传输。
——注——
访问如FIFO这样的读敏感设备时,丢弃不需要的读取数据可能导致数据丢失。访问此类设备时,主设备必须使用与所需数据传输大小完全匹配的burst length。
————
关于Exclusive access restrictions(位于A7-93页)定义了影响独占访问期间突发传输的其他规则。
在AXI4中,INCR突发类型且长度大于16的事务可以转换为多个较小的突发,即使事务属性表明该事务不可修改。详见A4-60页AXI4 changes to memory attribute signaling的更改。在这种情况下,生成的突发必须保持与原始事务相同的事务特性,唯一的例外是:
- burst length缩短
- 生成的突发的地址进行了适当调整。
——注——
注意,为实现AXI3兼容性,需要具备将较长突发拆分为多个较短突发的能力,且这也可能是降低较长突发对服务质量保障影响所必需的。
突发大小(Burst size)
突发中每次数据传输(或节拍)中要传输的最大字节数由以下指定:
- ARSIZE[2:0],用于读传输
- AWSIZE[2:0],用于写传输。
在本规范中,AxSIZE表示ARSIZE或AWSIZE。
表A3-2显示了AxSIZE的编码方式。
Table A3-2 Burst size encoding
AxSIZE[2:0] | Bytes in transfer |
0b000 | 1 |
0b001 | 2 |
0b010 | 4 |
0b011 | 8 |
0b100 | 16 |
0b101 | 32 |
0b110 | 64 |
0b111 | 128 |
如果AXI总线宽度大于突发大小,AXI接口必须根据传输地址确定每次传输使用数据总线的哪些字节通道。见A3-49页的Data read and write structure。
任何传输的大小都不得超过事务中任何一个代理的数据总线宽度。
Burst type(突发类型)
AXI协议定义了三种突发类型:
FIXED | In a fixed burst, the address is the same for every transfer in the burst. This burst type is used for repeated accesses to the same location such as when loading or emptying a FIFO. 在固定突发中,突发内每次传输的地址相同。 这种突发类型用于对同一位置的重复访问,比如加载或清空FIFO时 |
INCR | Incrementing. In an incrementing burst, the address for each transfer in the burst is an increment of the address for the previous transfer. The increment value depends on the size of the transfer. For example, the address for each transfer in a burst with a size of four bytes is the previous address plus four. This burst type is used for accesses to normal sequential memory. 递增型。在incrementing突发中,突发内每次传输的地址是前一次传输地址的递增。递增的值取决于传输大小。例如,大小为4字节的突发中每次传输的地址是前一个地址加4。 这种突发类型用于访问普通顺序内存 |
WRAP | A wrapping burst is similar to an incrementing burst, except that the address wraps around to a lower address if an upper address limit is reached. The following restrictions apply to wrapping bursts:
The behavior of a wrapping burst is:
This burst type is used for cache line accesses. wrapping突发类似于incrementing突发,不同之处在于,如果达到地址上限,地址会回绕到较低地址。 以下限制适用于wrapping突发:
wrapping突发的行为如下:
这种突发类型用于高速缓存行访问 |
突发类型由以下指定:
- ARBURST[1:0],用于读传输
- AWBURST[1:0],用于写传输。
在本规范中,AxBURST表示ARBURST或AWBURST。
表A3-3显示了AxBURST信号的编码方式。
Table A3-3 Burst type encoding
AxBURST[1:0] | Burst type |
0b00 | FIXED |
0b01 | INCR |
0b10 | WRAP |
0b11 | Reserved |
突发地址(Burst address)
本节提供了确定突发内传输地址和字节通道的方法。这些公式使用以下变量:
Start_Address 主设备发出的起始地址。
Number_Bytes 每次数据传输中的最大字节数。
Data_Bus_Bytes 数据总线中的字节通道数。
Aligned_Address 起始地址的对齐版本。
Burst_Length 一次突发内数据传输的总数。
Address_N 突发中第N次传输的地址。突发中第一次传输的N为1。
Wrap_Boundary wrapping突发内的最低地址。
Lower_Byte_Lane 一次传输中最低地址字节所在的字节通道。
Upper_Byte_Lane 一次传输中最高地址字节所在的字节通道。
INT(x) x向下取整后的整数值。
这些公式用于确定突发内传输的地址:
- Start_Address = AxADDR
- Number_Bytes=2^AxSIZE
- Burst_Length = AxLEN + 1
- Aligned_Address = (INT(Start_Address / Number_Bytes) ) x Number_Bytes。
此公式确定突发中首次传输的地址:
- Address_1 = Start_Address。
对于INCR突发以及地址尚未回绕的WRAP突发,此公式确定突发中首次传输之后任何一次传输的地址:
- Address_N = Aligned_Address + (N – 1) × Number_Bytes。
对于WRAP突发,Wrap_Boundary变量定义wrapping boundary:
- Wrap_Boundary = (INT(Start_Address / (Number_Bytes × Burst_Length)))× (Number_Bytes × Burst_Length)。
对于WRAP突发,如果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))。
A3.4.2 Pseudocode description of the transfers(传输的伪代码描述)
// DataTransfer()
// ==============
DataTransfer(Start_Address, Number_Bytes, Burst_Length, Data_Bus_Bytes, Mode, IsWrite)
// Data_Bus_Bytes is the number of 8 - bit byte lanes in the bus
// Mode is the AXI transfer mode
// IsWrite is TRUE for a write, and FALSE for a read
assert Mode IN {FIXED, WRAP, INCR};
addr = Start_Address; // Variable for current address
Aligned_Address = (INT(addr / Number_Bytes) * Number_Bytes);
aligned = (Aligned_Address == addr); // Check whether addr is aligned to nbytes
dtsize = Number_Bytes * Burst_Length; // Maximum total data transaction size
if mode == WRAP then
Lower_Wrap_Boundary = (INT(addr / dtsize) * dtsize);
// addr must be aligned for a wrapping burst
Upper_Wrap_Boundary = Lower_Wrap_Boundary + dtsize;
for n = 1 to Burst_Length
Lower_Byte_Lane = addr - (INT(addr / Data_Bus_Bytes)) * Data_Bus_Bytes;
if aligned then
Upper_Byte_Lane = Lower_Byte_Lane + Number_Bytes - 1
else
Upper_Byte_Lane = Aligned_Address + Number_Bytes - 1 - (INT(addr / Data_Bus_Bytes)) * Data_Bus_Bytes;
// Peform data transfer
if IsWrite then
dwrite(addr, low_byte, high_byte)
else
dread(addr, low_byte, high_byte);
// Increment address if necessary
if mode != FIXED then
if aligned then
addr = addr + Number_Bytes;
if mode == WRAP then
// WRAP mode is always aligned
if addr >= Upper_Wrap_Boundary then addr = Lower_Wrap_Boundary;
else
addr = addr + Number_Bytes;
aligned = TRUE; // All transfers after the first are aligned
return;
A3.4.3 Data read and write structure(数据读写结构)
本节描述AXIread and write数据总线上不同大小的传输,以及接口如何执行混合字节序和非对齐传输。它包含以下部分:
- Write strobes
- Narrow transfers
- Byte invariance on page A3-50
- Unaligned transfers on page A3-51
Write strobes
**WSTRB[n:0]信号为高电平时,指定数据总线上包含有效信息的字节通道。Write数据总线每8位对应一个写选通信号,因此WSTRB[n]**对应于
WDATA[(8n)+7:(8n)]
主设备必须确保仅对包含有效数据的字节通道置高写选通信号。
当WVALID为低电平时,写选通信号可以取任意值,不过本规范建议将其驱动为低电平或保持先前的值。
Narrow transfers
当主设备发起的传输宽度小于其数据总线宽度时,地址和控制信息决定该传输使用哪些字节通道:
- 在incrementing或wrapping突发传输中,突发的每个节拍使用不同的字节通道
- 在固定突发传输中,每个节拍使用相同的字节通道。
图A3-8和图A3-9(位于第A3-50页)给出了两个字节通道使用的示例。阴影单元格表示未传输的字节。
在图A3-8中
- 该突发传输有五次数据传输
- 起始地址为0
- 每次传输为8位
- 这些传输在32位总线上进行
- 突发类型为INCR。
Figure A3-8 Narrow transfer example with 8-bit transfers
在图A3-9中
- 该突发传输有三次数据传输
- 起始地址是4
- 每次传输为32位
- 这些传输在64位总线上进行。
Figure A3-9 Narrow transfer example with 32-bit transfers
Byte invariance
为了在单一内存空间中访问混合字节序数据结构,AXI协议采用_byte-invariant endianness_方案。
Byte-invariant endianness意味着,对于数据结构中的任何多字节元素:
- 无论数据的字节序如何,该元素都使用相同的连续内存字节。
- 字节序决定这些字节在内存中的顺序,即决定内存中的第一个字节是该元素的最高有效字节(MSB)还是最低有效字节(LSB)。
- 无论字节所属的数据元素的字节序如何,对给定地址的任何字节传输都会将相同数据总线上的8位数据传递到相同的地址位置。
仅支持一种传输宽度的组件,其字节通道必须连接到数据总线的相应字节通道。支持多种传输宽度的组件,可能需要更复杂的接口,来转换原本不具备天然字节不变性的接口。
大多数小端组件可直接连接到字节不变接口。仅支持大端传输的组件则需要一个转换功能才能进行字节不变操作。
图A3-10及A3-51页的示例展示了一个32位数字0x0A0B0C0D,存储在寄存器和内存中。
图A3-10展示了一个大端序、字节不变的数据结构示例。在这个结构中:
- 数据的最高有效字节(MSB)即0x0A,存储在寄存器的MSB位置。
- 数据的MSB存储在地址最低的内存单元中。
- 其他数据字节按有效位降序排列。
Figure A3-10 Example big-endian byte invariant data structure
图A3-11展示了一个小端序、字节不变的数据结构示例。在这个结构中:
- 数据的最低有效字节(LSB)即0x0D,存储在寄存器的LSB位置。
- 数据的LSB存储在地址最低的内存位置。
- 其他数据字节按有效位升序排列。
Figure A3-11 Example little-endian byte invariant data structure
A3-50页图A3-10及图A3-11中的示例表明,字节不变性确保大端和小端结构可在单个内存空间中共存而不损坏数据。图A3-12展示了一个需要字节不变访问的数据结构示例。在此示例中,header字段采用小端序,payload采用大端序。
Figure A3-12 Example mixed-endian data structure
例如,在此结构中,“Data items”是一个两字节的小端元素,这意味着其最低地址为LSB。字节不变性的使用确保了对有效载荷的大端访问不会破坏小端元素。
Unaligned transfers
AXI支持非对齐传输。对于任何由宽度超过一个字节的数据传输组成的突发传输,首次访问的字节可能与自然地址边界未对齐。例如,起始字节地址为0x1002的32位数据包未对齐到自然的32位地址边界。
主设备可以:
- 使用低位地址线指示非对齐起始地址
- 提供对齐地址,并使用字节通道选通信号指示非对齐起始地址。
——注——
低位地址线上的信息必须与字节通道选通信号上的信息一致。从设备无需根据主设备提供的任何对齐信息采取特殊行动。
————
图A3-13展示了在32位总线上进行incrementing突发传输的示例,包括对齐和未对齐的32位传输。图中的每一行代表一次传输,阴影单元格表示未传输的字节。
Figure A3-13 Aligned and unaligned transfers on a 32-bit bus
图A3-14展示了在64位总线上进行递增突发传输的示例,包括对齐和未对齐的32位传输。图中的每一行代表一次传输,阴影单元格表示未传输的字节。
Figure A3-14 Aligned and unaligned transfers on a 64-bit bus
图A3-15展示了一个在64位总线上进行的wrapping突发传输的示例,其中包含对齐的32位传输。图中的每一行代表一次传输,阴影单元格表示未传输的字节。
Figure A3-15 Aligned wrapping transfers on a 64-bit bus
A3.4.4 Read and write response structure(读Write响应结构)
AXI协议为读写事务均提供响应信令:
- 对于Read事务,来自从设备的响应信息在Read data通道上发出信号。
- 对于Write事务,响应信息在Write response通道上发出信号。
响应通过以下方式发出信号:
- RRESP[1:0],用于读传输
- BRESP[1:0],用于写传输。
响应类型如下:
OKAY | Normal access success. Indicates that a normal access has been successful. Can also indicate an exclusive access has failed. See OKAY, normal access success. 正常访问成功。表明正常访问已成功。也可表明独占访问失败。参见“OKAY, normal access success” |
EXOKAY | Exclusive access okay. Indicates that either the read or write portion of an exclusive access has been successful. See EXOKAY, exclusive access success on page A3-55. 独占访问正常。表明独占访问的读或写部分已成功。见A3-55页“EXOKAY, exclusive access success” |
SLVERR | Slave error. Used when the access has reached the slave successfully, but the slave wishes to return an error condition to the originating master. See SLVERR, slave error on page A3-55. 从设备错误。当访问成功到达从设备,但从设备希望向发起的主设备返回错误情况时使用。见A3-55页“SLVERR, slave error” |
DECERR | Decode error. Generated, typically by an interconnect component, to indicate that there is no slave at the transaction address. See DECERR, decode error on page A3-55. 解码错误。通常由互连组件生成,用于表明事务地址处没有从设备。见A3-55页“DECERR, decode error” |
表A3-4显示了RRESP和BRESP信号的编码方式。
Table A3-4 RRESP and BRESP encoding
RRESP[1:0] | |
BRESP[1:0] | Response |
0b00 | OKAY |
0b01 | EXOKAY |
0b10 | SLVERR |
0b11 | DECERR |
对于Write事务,针对整个突发传输发出单个响应,而非针对突发传输内的每次数据传输。
在Read事务中,从设备可以针对突发传输中的不同传输发出不同的响应。例如,在16次读传输的突发传输中,从设备可能对其中15次传输返回OKAY响应,对其中一次传输返回SLVERR响应。
该协议规定,即使报告了错误,也必须执行所需数量的数据传输。例如,如果请求从从设备读取8次传输,但从设备存在错误情况,从设备必须执行8次数据传输,每次都给出错误响应。如果从设备给出单个错误响应,突发传输的其余部分不会取消。
OKAY, normal access success
OKAY响应表示以下任一情况:
- 正常访问成功
- 独占访问失败
- 对不支持独占访问的从设备进行独占访问。
OKAY是大多数事务的响应。
EXOKAY, exclusive access success
EXOKAY响应表明独占访问成功。见A7-92页“Exclusive accesses”。
SLVERR, slave error
SLVERR响应表明事务未成功。
为简化系统监控与调试,本规范建议错误响应仅用于错误情况,而非用于发出正常、预期事件的信号。从设备错误情况示例如下:
- FIFO或缓冲区上溢或下溢情况
- 尝试不支持的传输大小
- 尝试对只读位置进行写访问
- 从设备出现超时情况
- 尝试访问已禁用或断电的功能。
DECERR, decode error
DECERR响应表明互连无法成功解码对从设备的访问。
如果互连无法成功解码对从设备的访问,它必须返回DECERR响应。本规范建议互连将访问路由到默认从设备,且默认从设备返回DECERR响应。
AXI协议要求即使出现错误情况,事务的所有数据传输也必须完成。任何给出DECERR响应的组件都必须满足此要求。