【AMBA总线三部曲】AXI协议理解

摘录:AMBA  AXI and ACE Protocol Specification

说来惭愧,AXI总线我也没有完全搞明白,希望这篇文章可以时刻提醒我,不要忽视它。

但是看了这篇文章,让你通俗易懂。


目录

1 Introduction

1.1 AXI protocol 协议概述

  1.1.1 非对齐传输

1.1.1.1 突发长度

1.1.1.2非对齐传输

1.2 AXI Architecture

1.2.1 支持out-of-order

 1.2.1.1 Cachable和bufferable

1.2.2 Channel definition

1.2.3 AXI互联结构

1.2.4 寄存器切片

1.3 AXI术语

1.3.1 AXI组件与拓扑

1.3.2 AXI传输与存储器类型

2 AXI信号描述

2.1 Global signals

2.2 Write address channel signals

2.3 Write data channel signals

2.4 Write response channel signals

2.5 Read address channel signals

2.6 Read data channel signals

3 Single Interface Requirements

3.1 Global singal

3.1.1 时钟

3.1.2 复位

3.2 基本读写事务

3.2.1 握手过程

3.2.2 通道信号需求

3.3 通道间的关系

3.3.1 通道握手信号依赖关系

3.4 事务结构

3.4.1 地址结构

3.4.3 数据读写结构

3.4.3.1 非对齐传输:

3.4.4 数据读写响应结构

4 事务属性

4.1 事务类型和属性

4.2 AXI3存储器属性信号

4.3 AXI4对存储器属性信号的变更

4.3.1 AxCACHE[1], Modifiable

4.3.2 读分配与写分配的更新含义

4.4 Memory types

4.4.1 Memory type requirements

4.5 不同的存储器属性

4.5.1 改变存储器属性

4.6 Transaction buffering

4.7 访问权限

非特权与特权访问

安全与非安全访问

指令与数据

4.8 遗留问题

4.9  Usage examples

5 AXI事务标识符

5.1 AXI transaction identifiers

5.2 事务ID

6 AXI顺序模型

6.1 顺序模型的定义

6.2 Memory locations and Peripheral regions

6.3 Transactions and ordering

6.8 Ordered write observation

7 原子访问

7.1 单拷贝原子大小

7.1.1 多拷贝写原子性

7.2 独占访问

7.2.1 独占访问过程

7.2.4 独占访问限制

7.3 锁定访问

7.4 原子访问信号

7.4.1 遗留问题

8 AXI4附加信号

8.1 QoS信号

8.1.1 QoS接口信号

8.1.2 主设备问题

8.1.3 系统问题

8.2 多区域信号

8.2.1 附加接口信号

8.3 用户定义信号

8.3.1 信号命名

8.3.2 使用问题

9 默认信号和互操作性

9.1 互操作性原则

9.2 主要接口类别

9.2.1 读写接口

9.2.2 只读接口

9.2.3 只写接口

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

9.3 默认信号值

9.3.1 主设备地址

9.3.2 从设备地址

9.3.3 存储器从设备

9.3.4 写事务

9.3.5 读事务

9.3.6 响应信号

9.3.7 不安全和安全访问

10 AXI功能总结(补充)

10.1 channel definition 

10.2 AXI4-Lite

10.2.1 什么时候适用于AXI4-Lite

10.3 AXI突发读

10.4 AXI突发写

[Reference]


前言

接口类型Feature
AXI4(AXI4-Full)用于高性能的存储器映射需求,最大支持256 transfers
AXI4-Lite简化版的AXI4接口,用于低吞吐率存储器映射的通信
AXI4-Stream(ST)高速流数据通信,AXI4-ST不属于存储器映射,它的突发长度不受限制。

Tips

(存储器映射):主机在对从机进行读写操作时,指定一个目标地址,这个地址对应系统存储空间的地址,表示对该空间进行读写操作);


1 Introduction

1.1 AXI protocol 协议概述

The AMBA AXI protocol supports high-performance, high-frequency system designs for communication between master and slave components.

AXI高级可扩展接口,是ARM AMBA的一部分;

AMBA:高级微控制器总线架构;

1996年首次引入的一组微控制器总线;

开放的片内互联总线标准,能在多主机设计中实现多个控制器和外围设备之间的连接和管理。

The AXI protocol:

  • 适合高带宽低延迟的设计

    • 高宽带(Broadband)是指具有较高数据传输速率的网络连接。

    • 低延迟是指计算机系统或通信网络中的较短时间延迟。 它通常用于指网络数据包通过网络连接从发送计算机到接收计算机的往返所需的时间。

  • 不需要复杂的桥即可提供高频操作

  • 可以满足多种组件的接口需求

  • 适合高初始访问延迟的存储器控制器

  • 提供互联架构实现的灵活性

  • 向后兼容AHB与APB接口

同时,该协议还拥有以下特点

  • 分离的地址/控制和数据阶段(Separate address/control and data phases.)

  • 通过使用字节选通信号的方式支持非对齐数据传输(Support for unaligned data transfers, using byte strobes.)

既然这里提到了非对齐传输,那么就再多嘴一句,什么是非对齐传输。

1.1.1 非对齐传输

on-chip-bus(四)AXI总线:突发长度、突发大小以及非对齐传输的理解-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_43701504/article/details/122124121?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_ecpm_v1~rank_v31_ecpm-2-122124121-null-null.pc_agg_new_rank&utm_term=AXI%E7%9A%84%E5%AF%B9%E9%BD%90%E4%BC%A0%E8%BE%93&spm=1000.2123.3001.4430

1.1.1.1 突发长度

Burst length :指在一次突发传输中进行的数据传输次数,用AxLEN字段标识。由于标识值是从0开始得到,实际的突发长度=AxLEN+1.

突发大小(burst size):指突发传输中的每次数据传输的字节数,用AxSIZE字段表示。

突发大小=2^AxSIZE

1.1.1.2非对齐传输

对齐传输是指地址的[1:0]=0,所以从第三位开始,地址也就是4的倍数,0x00,0x04,0x08等,都是对齐的。

AHB总线只支持对齐传输,而AXI协议支持地址的非对齐传输。在AXI传输中,只需要在传输时给出首地址,其后的传输地址都是由首地址和突发大小,突发类型决定的。

在第一笔数据的传输时,如果首地址不是对齐的,那么主设备会在第一笔传输中对数据进行填充,直到首次传输填充至地址对齐。然后,再用WSTRB信号将填充的数据标记位无效。这样!之后的传输地址也就都是对齐的了。

举个例:

假设AxLEN=3, AxSIZE=2,首地址为0x01,如下图所示:

突发长度:=AxLEN+1=4;

突发大小:=2^2=4bytes=32bits.

图中传输的首地址是0x01,是非对齐的。AXI协议会对0x00地址进行填充,并且用WSTRB信号标记。这样传输的首地址就是0x00.随后三笔的传输自然也就对齐了!

需要注意的是,这笔突发传输的第一笔有效数据,在master端和slave端都是3bytes!因为第一byte的数据已经被标记无效了(图中灰色)!该地址的数据是被填充以满足传输地址对齐的需求!


  • 使用突发传输时只需要传输起始地址Uses burst-based transactions with only the start address issued.

  • 允许地址信息提前于实际数据传输发送

  • 分离的读写数据通道,这可以提供低损耗的DMA

  • 支持发出多个未完成的地址Support for issuing multiple outstanding addresses.

  • 支持乱序传输完成Support for out-of-order transaction completion.

  • 允许简单添加寄存器阶段以提供时序收敛

AXI协议同时包含了低功耗操作所需的信号扩展,也包含了AXI4-Lite协议,该协议是AXI4的子集,有着更简单的控制寄存器接口和组件。


1.2 AXI Architecture

AXI协议基于突发传输,定义了下列独立事务(一个事务可能包含多次传输)通道:

原文:The AXI protocol is burst-based and defines five independent transaction channels:

主机对从机的读操作:

  • Read address, which has signal names beginning with AR.读地址通道
  • Read data, which has signal names beginning with R.读数据通道

主机对从机的写操作:

  • Write address, which has signal names beginning with AW.写地址通道
  • Write data, which has signal names beginning with W.写数据通道
  • Write response, which has signal names beginning with B.写响应通道

An address channel carries control information that describes the nature of the data to be transferred. The data is transferred between master and slave using either:

地址通道携带描述被传输数据性质的控制信息,数据在主设备和从设备间通过以下方式传输:

写数据通道从主设备传输数据到从设备,在写传输时从设备使用写响应通道通知主设备传输完成。

【协议原文】A write data channel to transfer data from the master to the slave. In a write transaction, the slave uses the write response channel to signal the completion of the transfer to the master.

读数据通道从从设备>>>传输数据>>>主设备

A read data channel to transfer data from the slave to the master.

(上文中也提到了outstandingout-of-order,这里也做一下简单的解释说明)

The AXI protocol:

• Permits address information to be issued ahead of the actual data transfer.

• Supports multiple outstanding transactions. 

Supports out-of-order completion of transactions.

【中文翻译】

  1. 允许在实际数据传输之前发出地址信息。
  2. 支持多个未完成的事务。
  3. 支持乱序完成交易。

1.2.1 支持out-of-order

AXI 的乱序操作_axi 乱序-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/better_xiaoxuan/article/details/78836737?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171378797116800227443404%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171378797116800227443404&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-78836737-null-null.142%5Ev100%5Epc_search_result_base9&utm_term=AXI%20%20%E4%B9%B1%E5%BA%8F&spm=1018.2226.3001.4187

 1.2.1.1 Cachable和bufferable

一个master发出一个读写request,中间要经过很多个buffer,最终才能到memory,这些buffer的添加是为了outstanding,timing,performance等。

BUFFER有2中类型:FIFO,仅仅是保存发送request或者返回response给上一级。还有一种buffer,在接受了上一级的request之后立刻给上一级返回response.告诉上一级这个操作结束了!而实际上这个操作没有发到下一级buffer.更没有给memory.有人可能就问,write可以这样做,read 的时候则不行。其实read一样也有bufferable.如果此时的bufferable的write data channel 有此read需要的数据,就可以直接返回。而不去访问memory.如果没有把request发到下一级。

总之,所有的访问都要经过这些buffer。是否buffer在于何时由谁回response,在于是否要把request送到最终的memory.

Cacheable

interconnect其实只是一个路由的功能,内部有buffer,但没有cache.而是在这个访问从master发起request到送到最终的memory这个过程中,可能会经过一些cache.cacheable代表了是不是要去这个cache中查找自己需要的数据,要不要更新cache,你说的利用cache来提高性能。有些操作是要求绝对non-cacheable的。比如device内部寄存器的访问。这些都是MMR(memory mapped register存储器映射寄存器),只能用non-cacheable.

AXI五个channel所有的信号,可以是master-innection,也可以是interconnect-slave,也可以直接是master-slave.

outstanding 乱序和穿插

简单的说,如果没有outstanding,或者说outstanding 能力为1,AXI master行为如下:

读操作:读地址命令->等待读数据返回--> 等待读数据返回-->读地址命令--> 等待读数据返回...

写操作:写地址命令-->写数据-->等待写响应返回-->写地址命令-->写数据-->等待写响应返回...

如果outstanding 能力N>1的话,则:

读操作:可以连续发N个读地址命令,这期间如果读数据没有返回,则需要等待读数据返回。如果有读数据返回,则返回了几个,那么仍可以接着发几个。也就是说。在路上的读命令(或者是读数据)最多可以是N。多说一点,可以看出,如果数据返回的比较缓慢,那么IP需要等待,效率就会很低。为了提高效率,有必要提高outstanding能力。以弥补总线上的延时。但也不能无限制的发,会阻塞总线,把其他IP给堵住。

写操作:可以连续发出N组写地址(写数据)指令,这期间如果没有写响应返回。则必须等待写响应返回才能接着发写地址(写数据)命令。如果有写响应返回,则返回了几个,那么仍然可以发几组。也就是说,在路上的写响应最多可以是N。

out of order 和 interleave

乱序和间插是两个概念。简单说,乱序指的是burst这个粒度,而间插指的是beat这个粒度。

简单说,乱序是slave返回master请求的out of order特性。但这个slave可以是广义上的,一般总线会完成这个功能。而间插是指写数据,或是返回读数据。按找不同的ID交织出现。比如:ID0,ID1,ID0,ID1....乱序和间插都有深度,一般乱序深度比间插大得多!上面的例子就是间插深度为2的情况。

总结一下

Outstanding:master不比等待数据传输完成,即可开始下次地址操作,针对多个从设备多次访问;

Out-of_Order(乱序):不同ID的指令,可以乱序完成,针对多个从设备;

nterleaving(间插):乱序传输时不同ID之间的数据可以内插,但每个ID的数据要顺序传输,针对多个 从设备。

 (这里借用了落雨无风前辈的一幅图!)


1.2.2 Channel definition

Each of the five independent channels consists of a set of information signals and VALID and READY signals that provide a two-way handshake mechanism

每一个通道都拥有自己的VALID与READY信号用于实现握手,其中VALID信号表示通道的地址、数据或控制信息已经可用

The information source uses the VALID signal to show when valid address, data, or control information is available on the channel.

而READY信号则表示接收方已准备好接收信息,The destination uses the READY signal to show when it can accept the information.


其中,读数据和写数据通道还拥有LAST信号,该信号用于指示当前传输是否为当前事务中的最后一次传输。

Both the read data channel and the write data channel also include a LAST signal to indicate the transfer of the final data item in a transaction.

读地址与写地址通道

读事务与写事务都拥有其自己的地址通道,对应的地址通道会携带一次事务所需的全部地址和控制信息。

读数据通道

读数据通道携带从设备传送给主设备的数据和响应信息,该通道包括两部分:

  1. 位宽可为8、16、32、64、128、256、512、1024bit的数据总线。

  2. 表示读事务完成状态的读响应信号。

写数据通道

写数据通道携带主设备传送给从设备的数据,该通道包括两部分:

  1. 位宽可为8、16、32、64、128、256、512、1024bit的数据总线。

  2. 为每一个8bit数据准备的字节选通信号,用于指示数据的哪几个字节是有效的。A byte lane strobe signal for every eight data bits, indicating the bytes of the data that are valid.

Write data channel information is always treated as buffered, so that the master can perform write transactions without slave acknowledgement of previous write transactions.

翻译1:写数据通道总是被缓冲处理,因此主设备可以在未收到前一次写事务的从设备响应消息时再次执行写操作。

翻译2: 写数据通道信息总是作为缓冲处理,这样主设备就可以执行写事务,而不需要从设备确认先前的写事务。

写响应通道

A slave uses the write response channel to respond to write transactions. All write transactions require completion signaling on the write response channel.
 


1.2.3 AXI互联结构

A typical system consists of several master and slave devices that are connected together through some form of interconnect, as Figure A1-3 shows.

 Figure1.3 Interface and interconnect

AXI协议为以下接口提供了单一的接口定义:

  • 在主设备和互联器(Interconnect)之间

  • 在从设备和互联器之间

  • 在主设备和从设备之间

该接口定义支持不同的互联器实现,设备之间的互联器等效于另一个拥有对称主端口和从端口的设备,真正的主设备和从设备可以连接到对应的端口。

大多数的系统使用如下三种互联拓扑之一:

  • 共享的地址和数据总线

  • 共享的地址总线以及多条数据总线

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

在大多数的系统中,地址通道带宽需求远小于数据通道带宽需求。使用共享总线以及多条数据总线的拓扑结构实现并行数据传输时,可以在系统效率和互联复杂性间取得平衡。


1.2.4 寄存器切片

Each AXI channel transfers information in only one direction, and the architecture does not require any fixed relationship between the channels. These qualities mean that a register slice can be inserted at almost any point in any channel, at the cost of an additional cycle of latency.

【中文翻译】

每一个AXI通道都只能单向传输信息,并且架构并没有要求各个通道间具有固定的时序依赖要求。因此,寄存器切片可以插入到任何通道的任何位置,不过这会带来额外的延迟(Latency)。

OR(两种翻译,仁者见仁智者见智)

每个AXI通道只在一个方向上传输信息,并且该体系结构不需要通道之间有任何固定的关系。这些特性意味着寄存器片几乎可以在任何通道的任何点插入,代价是额外的延迟周期。

以下两点是可能的:

  • 在延迟和最大操作频率之间取得平衡。

  • 在处理器和高性能存储器之间实现直接而又快速的链接,但同时又使用寄存器切片隔离性能不敏感外设的长路径。


1.3 AXI术语

This section summarizes terms that are used in this specification, and are defined in the Glossary, or elsewhere. Where appropriate, terms that are listed in this section link to the corresponding glossary definition.

1.3.1 AXI组件与拓扑

下列术语描述了AXI组件:

  • 组件(Component)

  • 主组件(Master component)

  • 从组件(Slave component),从组件包含存储器子组件和外设子组件

  • 互联组件

对于特定的AXI传输,上游(Upstream)与下游(Downstream)指代AXI拓扑中AXI组件的相对位置。

1.3.2 AXI传输与存储器类型

当AXI主设备发起AXI操作时,对于AXI从设备:

  • AXI总线上所需的完整操作集形成AXI事务(Transaction)。

  • 任何传输的有效数据都作为一次AXI突发传输(Burst)。

  • 一次突发传输可以包含多次数据传输,一次数据传输称为一拍(Beat)。

关系:一个Burst指对一个地址上的数据进行拆分后多次传输,传输Burst的过程称为transaction,每次传输内容称为一个‘Beat’,传输Beat的过程称为transfer。


AXI总线协议 - Pent° - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/lizhiqing/p/12359222.html


2 AXI信号描述

2.1 Global signals

All signals are sampled on the rising edge of the global clock.

2.2 Write address channel signals

2.2.1.1 AWID:

指定某些特殊传输任务的顺序;Write address ID,用的比较少,(source指的是哪一端控制这个信号,AWREADY是由从机控制)

2.2.1.2 AWADDR:写地址,

the address of the first transfer in a write burst transaction.(经常用到)

2.2.1.3 AWLEN

Burst length, the burst length gives the exact number of transfer in a burst. (INCR , AWLEN=15, actually length 15+1 )(经常用到)

Length, the exact number of data transfers in a write transaction. This information 
determines the number of data transfers associated with the address.

长度,写事务中数据传输的确切数量。此信息确定与该地址相关的数据传输的数量。

A burst must not cross a 4KB address boundary.

A burst must not cross a 4KB address boundary.

A burst must not cross a 4KB address boundary.

2.2.1.4 AWSIZE: 单次数据量,

the number of bytes in each data transfer in a write transaction.(经常用到)

2.2.1.5 AWBURST:

Burst type.(经常用到)

FIXED, INCR, WRAP回环突发,

AXI4 extends burst length support for the INCR burst type to 1-256 transfers.

AXI4 extends burst length support for the INCR burst type to 1-256 transfers.

AXI4 extends burst length support for the INCR burst type to 1-256 transfers.

 

2.2.1.5 AWLOCK:

区分正常传输(0),还是独有传输(1);

AXI4 does not support locked transactions. However, an AXI3 implementation must support locked transactions.

2.2.1.6 AWCACHE:

总线存储类型,0010:non-cacheable ,non-bufferable

(没有很明白,希望有理解的前辈指导一下!)


2.2.1.6 AWPORT:

​​​​​​​ protection type. Protection attributes of a write transaction: privilege, security level, and access type. (经常用到)

AWQOS: Quality of service.

AWREGION: Region identifier.

AWUSER: user signal.

AWVALID: 握手机制,写地址有效 Channel handshake signals(经常用到)

Indicates that the write address channel signals are valid. 

AWREADY:从机有没有准备好接收主机的信息(经常用到)

只有AWVALID和AWREADY同时拉高,当前传输,主机才能发正确的把信息发到从机;


2.3 Write data channel signals

WID: 

WDATA: (经常用到)

WSTRB:哪个字节有效(经常用到)

The WSTRB[n:0] signals when HIGH, specify the byte lanes of the data bus that contain valid information. There is one write strobe for each 8 bits of the write data bus, therefore WSTRB[n] corresponds to WDATA[(8n)+7: (8n)].

n=0, WDATA[7:0]

n=1,WDATA[7+8:8]

...

WLAST:突发传输的最后一个数据(经常用到)

Indicates whether this is the last data transfer in a write transaction. 

WUSER:

WVALID:握手机制, this signal indicates that valid write data and strobes are available.(经常用到)

WREADY:(经常用到)

Indicates that a transfer on the write data channel can be accepted. 


2.4 Write response channel signals

BID:

BRESP: write response. (经常用到)


SLVERR:从机错误,从机已经接收到了数据,但出现错误;

DECERR:解码错误,互联模块无法成功译码从机

BUSER:

BVALID: 握手机制(经常用到)

BREADY:(经常用到)

BVALID和BREADY同时拉高的时候,表明数据是有效的。

2.5 Read address channel signals

ARID:

ARADDR: 主机发送到从机(经常用到)

ARLEN:for read transfers. (经常用到)

ARSIZE:Size, the number of bytes in each data transfer in a read transaction. (经常用到)

ARBURST:Burst type, indicates how address changes between each transfer in a read transaction. (经常用到)

ARPORT:Protection attributes of a read transaction: privilege, security level, and access type. (经常用到)

ARVALID: Indicates that the read address channel signals are valid. (经常用到)

ARREADY:Indicates that a transfer on the read address channel can be accepted.(经常用到) 


2.6 Read data channel signals

RDATA:(经常用到)

RRESP: For read transactions, the response information from the slave is signaled on the read data channel.(经常用到)

RLAST:The slave must assert the RLAST signal when it is driving the final read transfer in the burst.(经常用到)

RVALID:经常用到

RREADY:经常用到

=========================================================================

3 Single Interface Requirements

这一部分描述了单个主设备和单个从设备之间的基本AXI协议事务需求。

3.1 Global singal

3.1.1 时钟

每个AXI组件都需要一个时钟信号ACLK,全部的信号都在ACLK的上升沿被采样,一切输出信号都必须在ACLK的上升沿之后发生改变。

在主从接口之间的输入输出信号间不能有组合路径。

3.1.2 复位

AXI协议使用低有效复位信号ARESETn,该信号是可以异步拉低,但必须在ACLK的上升沿同步释放。

在复位期间,下列信号需要遵循特定的要求!!!

  • 主接口必须拉低ARVALID、AWVALID与WVALID信号。

  • 从接口必须拉低RVALID与BVALID信号。

  • 其它信号则可以为任意值。

在ARESETn被释放后的下一个时钟上升沿,主设备可以拉高ARVALID、AWVALID与WVALID信号,如下图所示:

The earliest point after reset that a master is permitted to begin driving ARVALID, AWVALID, or WVALID HIGH is at a rising ACLK edge after ARESETn is HIGH. Figure A3-1 shows the earliest point after reset that ARVALID, AWVALID, or WVALID, can be driven HIGH.

 Figure 3.1 Exit from reset


3.2 基本读写事务

3.2.1 握手过程

【英文原文】

All five transaction channles use the same VALID/READY handshake process to transfer address, and control information. this two-way flow control mechanism means both the master and slave can control the rate at the which the information moves between master and slave. the source generates the VALID signal to inicate when the address,  data or control information is available. the destination generates the READY signal to indicate that it can accept the information. Transfer occurs only when both the VALID and READY signals are HIGH.

【中文翻译】翻译1

所有五个事务通道都使用VALID/READY作为握手信号,传输地址、数据和控制信息,使用这种握手方式,主从双方都可以对传输速度进行控制。源端产生VALID信号意味着其地址、数据或控制信息有效,目的端产生READY信号意味着它可以接收信息,只有当双方的VALID与READY信号都为高时传输才会开始。

【握手机制】翻译2

所有的5个通道都是通过相同的VALID/READY握手处理来传输地址,数据和控制信息;

双向握手的机制意为着主机和从机之间传输数据时,都可以控制传输的速率;

只有当valid和ready同时 high, 传输才会发生。

在主从接口之间的输入输出信号间不能有组合路径。

The source presents information after T1 and asserts the VA L I D signal as shown in Figure A3-2. The destination asserts the READY signal after T2. The source must keep its information stable until the transfer occurs at T3, when this assertion is recognized.

在下图中,源端在T1之后给出地址、数据或控制信息,并令VALID有效,在T2之后,目的端检测到VALID有效并给出READY有效信息,在T3阶段传输会发生,因此在T3阶段及之前,源端不能释放或改变需要传输的信息。

 Figure A3-2 VALID before READY handshake

源端必须在令VALID信号有效之后再等待READY信号有效,一旦VALID有效,源端必须等待握手发生,即在保持VALID不变的情况下,等待目的端的READY信号有效。

在下图中,目的端首先在T1阶段之后令READY信号有效,源端在T2阶段之后给出地址、数据或控制信息,并令VALID有效,然后在T3阶段开始传输,在这种情况下,传输只消耗了一个时钟周期,而在上面那种情况下,则消耗了两个时钟周期。

 Figure A3-3 READY before VALID handshake

A destination is permitted to wait for VA L I D to be asserted before asserting the corresponding READY. If READY is asserted, it is permitted to deassert READY before VA LID is asserted.

In Figure A3-4, both the source and destination happen to indicate that they can transfer the address, data, or control information after T1. In this case, the transfer occurs at the rising clock edge when the assertion of both VALID and READY can be recognized. These assertions means that the transfer occurs at T2. 

 Figure A3-4 VALID with READY handshake

3.2.2 通道信号需求

Each channel has its own VALID/READY handshake signal pair. Table A3-1 shows the signals for each channel.

每个通道都有自己的握手信号对:

  • 写地址通道:AWVALID/AWREADY。

  • 写数据通道:WVALID/WREADY。

  • 写响应通道:BVALID/BREADY。

  • 读地址通道:ARVALID/ARREADY。

  • 读数据通道:RVALID/RREADY。

写地址通道:

主设备仅当输出有效的地址和控制信息时才能使能AWVALID信号,在从设备的AWREADY信号有效后的第一个时钟上升沿,主设备的AWVALID信号必须保持有效。

AWREADY信号的默认状态可以为高也可以为低电平,规范推荐默认状态为高电平。当该信号为高电平时,意味着从设备一定可以接受任何有效的地址。

注意:规范不推荐AWREADY信号默认为低电平是因为这会强制使传输周期拉长到至少两个时钟周期,一个周期用于使能AWVALID信号,另一个周期则用于使能AWREADY信号。

=========================================================================

写数据通道:

在写突发过程中,主设备可以仅当它输出有效数据时才使能WVALID信号,同样的,该信号必须在从设备WREADY信号有效后的第一个时钟上升沿保持有效。

WREADY信号默认可以为高电平,但这意味着从设备总是可以在一个时钟周期内接收待写入的数据。

主设备在进行突发事务中的最后一次写传输时,必须令WLAST信号有效。

=========================================================================

写响应通道:

从设备输出有效的写响应信号后才能驱动BVALID信号,该信号在BREADY信号有效后的第一个时钟上升沿保持有效。

BREADY信号默认可以为高电平,但此时主设备必须总能在一个时钟周期内接收写响应。

========================================================================

读地址通道:

主设备仅当输出有效的地址和控制信息时才能使能ARVALID信号,在从设备的AWREADY信号有效后的第一个时钟上升沿,主设备的ARVALID信号必须保持有效。

ARREADY信号的默认状态可以为高也可以为低电平,规范推荐默认状态为高电平。当该信号为高电平时,意味着从设备一定可以接受任何有效的地址。

注意:规范不推荐ARREADY信号默认为低电平是因为这会强制使传输周期拉长到至少两个时钟周期,一个周期用于使能ARVALID信号,另一个周期则用于使能ARREADY信号。

========================================================================

读数据通道:

从设备只有在输出有效读数据时才能使能RVALID信号,同时在主设备的RREADY信号有效后的第一个时钟上升沿必须保持有效。即使从设备只有一个读数据源,它也必须在收到数据请求时才令RVALID信号有效。

主接口使用RREADY信号表示它可以接收数据,RREADY信号默认可以为高电平,但此时主设备启动读事务时必须能立即接收数据。

从设备在进行突发传输事务中的最后一次传输时必须使能RLAST信号

=========================================================================

3.3 通道间的关系

AXI协议要求各个通道间必须保持如下关系:

  • 写响应必须紧跟在其所属的写事务的最后一次写传输之后。

  • 读数据必须紧跟着它的地址之后。

  • 通道握手必须符合通道握手依赖关系。

除此之外,协议没有规定其它的任何关系,这意味着,在一个事务中,写数据信号可以提前于写地址信号,这种情况通常发生在写地址的通道的寄存器阶段要更多时, 同样,写数据可以和写地址信号同时出现。

注意:当互联器需要决定目标地址空间或从设备地址空间时,必须对地址和写数据重排,以确保写数据仅对其关联的从设备有效。

3.3.1 通道握手信号依赖关系

为了避免死锁,下列依赖规则必须遵守:

在任何事务中:

  • 发送信息的AXI接口的VALID信号不能依赖于接收信息的AXI接口的READY信号。

  • 接收信号的的AXI接口在其自身的READY信号有效前可以等待对方的VALID信号。

注意:VALID信号可以在READY信号之前有效,READY信号也可以在检测VALID信号之前有效,这些方式都会提升传输效率。

In the dependency diagrams:
• Single-headed arrows point to signals that can be asserted before or after the signal at the start of the arrow.
• Double-headed arrows point to signals that must be asserted only after assertion of the signal at the start of the arrow.

在下面的依赖图中:(重点!重点!重点!)

  • 单头箭头指向的信号可以在始端信号有效前或有效后有效。

  • 双头箭头指向的信号只有在始端信号有效后才能有效。

OR

  • 单头箭头指向可以在箭头开头的信号之前或之后断言的信号。
  • 双头箭头指向的信号必须在箭头开头的信号断言之后才可以断言。

读传输依赖

Figure A3-5 shows the read transaction handshake signal dependencies, and shows that, in a read transaction:
• The master must not wait for the slave to assert ARREADY before asserting ARVALID.
• The slave can wait for ARVALID to be asserted before it asserts ARREADY.
• The slave can assert ARREADY before ARVALID is asserted.
• The slave must wait for both ARVALID and ARREADY to be asserted before it asserts RVALID to indicate that valid data is available.
• The slave must not wait for the master to assert RREADY before asserting RVALID.
• The master can wait for RVALID to be asserted before it asserts RREADY.
• The master can assert RREADY before RVALID is asserted.
 

在读传输中:

总结就是:VALID信号发出前,必须首先使能VALID,才能等待READY信号;READY信号发出方,不必等待VALID有效,就可以发出READY信号,也可以等待VALID有效,再发出READY信号,同时,读数据通道的VALID信号不能保持常态有效

依赖关系图如下:

 Figure A3-5 Read transaction handshake dependencies

【解释说明】

Single-headed arrows point to signas that can be asserted before or after the signal at the start of the arrow. ...(单箭头)它可以提前或滞后于我们的数据拉高。

double-headed arrows point to signals that must be asserted only after assertion of the signal at the start of the arrow. ...(双箭头)它要滞后于我们的信号拉高。

【权威解释】

ARVALID和ARREADY它们两谁先来都可以,但是RVALID必须要在ARVALID和ARREADY信号之后拉高。RALID和RREADY没有先后顺序。

写传输依赖

  • 主设备在使能AWVALID或WVALID后才能等待从设备使能AWREADY或WREADY。

  • 从设备在使能AWREADY前可以等待AWVALID或WVALID有效。

  • 从设备在AWVALID或WVALID有效前可以先使能AWREADY。

  • 从设备可以在使能WREADY前等待AWVALID与WVALID有效。

  • 从设备在AWVALID或WVALID有效前可以先使能WREADY。

  • 从设备必须等待WVALID与WREADY都有效后才能使能BVALID。

  • 从设备必须等待WLAST有效后才能使能BVALID,因为写响应必须发生在一次写事务中的最后一次数据传输后。

  • 从设备必须在使能BVALID后才能等待主设备使能BREADY。

  • 主设备可以在使能BREADY前等待BVALID。

  • 主设备可以在BVALID有效前使能BREADY。

依赖关系图如下:

 Figure A3-6 AXI3 write transaction handshake dependencies

【本人理解】

AWVALID,AWREADY谁都可以先来,WVALID和WREADY之间谁都可以先来。但是BVALID必须要在WVALID和WREADY之后拉高。BVALID和BREADY谁都可以先来。


3.4 事务结构

3.4.1 地址结构

AXI协议是基于突发的,主设备向从设备传送事务的控制信息和第一个字节的地址,然后,从设备必须在此后的每次传输中计算数据地址。

突发传输不能跨越4KB地址边界。

注意:避免突发传输跨越两个从设备的边界,同时,必须使用从设备支持的地址增量。

突发长度:Burst length

突发长度由下列字段指定:

  • 对于读传输,ARLEN[7:0]。

  • 对于写传输:AWLEN[7:0]。

AXI3支持1~16的突发长度。

AXI4:

  • 对于INCR突发类型,支持1~256的突发长度。

  • 对于其它突发类型,支持1~16的突发长度。

AXI3中的突发长度定义如下:

突发长度 = AxLEN[3:0] + 1

AXI4中的突发长度定义如下:

突发长度 = AxLEN[7:0] + 1

在使用突发传输时,必须遵守如下规则:

  • 对于回绕传输,突发长度必须为2、4、8或16。

  • 突发传输不能跨越4KB地址边界。

  • 突发传输不支持过早结束。

在AXI4中,突发类型为INCR且突发长度大于16的突发传输可以转换为多个长度更短的突发传输,即使突发属性表明事务是不可修改的。在这种情况下,生成的突发事务必须保持与原始事务相同的事务特征,唯一的例外是:

  • 突发长度变小。

  • 突发地址被适当调整。

注意:为了实现AXI3兼容性,将长突发传输转换为多个短突发传输是必要的,同时,这也可以减少长突发对QoS保证的影响。

突发大小:Burst Size

该字段表示每次突发数据传输或每个节拍中中数据的字节数,由以下字段指定:

  • 对于读传输,ARSIZE[2:0]。

  • 对于写传输,AWSIZE[2:0]。

突发大小 = 2^AxSIZE

如果AXI的总线比突发大小宽,AXI接口每次传输就必须根据地址判断使用哪几条数据线,任何一次传输的大小都不能超过事务中任一代理的数据总线宽度。

突发类型:

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

  • 固定(FIXED):在突发事务中,每次传输的地址一致,有效的字节线也是一致的,但是可以通过WSTRB信号控制实际有效的字节。这种方式通常用于对同一位置的重复访问,如读取或清空FIFO时。

  • 递增(INCR):在一次递增突发事务中,每次传输,地址都会在之前的地址基础上递增,递增量为传输大小。

  • 回绕(WRAP):这种类型和递增方式类似,但是,地址到达上界后,地址就会回绕到下界。

在回绕传输中,有几点需要注意:

  • 起始地址必须对齐突发大小。

  • 突发长度必须为2、4、8或16。

回绕突发方式的行为如下:

  • 突发所使用的地址下界会对齐到传输数据的总量,这也被称为回绕边界。

  • 在每次传输后,地址都会像递增突发方式一样递增,但是,一旦递增后的地址超过回绕边界,就会回到回绕边界的开始位置。

  • 第一次传输的地址可以大于回绕边界的开始位置。

回绕突发方式通常用于Cache行的访问。

突发类型由如下字段指定:

  • 对于读传输,ARBURST[1:0]。

  • 对于写传输,AWBURST[1:0]。

字段取值如下:


3.4.3 数据读写结构

写选通:

当WSTRB[i]为高电平时,对应的WDATA[(8i+7):8i]数据线有效,当WVALID为低电平时,写选通信号可以为任何值,不过标准推荐写选通信号全0或保持上一次的值。

A master must ensure that the write strobes are HIGH only for byte lanes that contain valid data.

When WVALID is LOW, the write strobes can take any value, although this specification recommends that they are either driven LOW or held at their previous value.

狭窄传输(Narrow transfer):

当主设备产生一个数据宽度小于数据总线的传输时,地址和控制信号按照如何方式决定使用哪些字节线:

  • 在递增或回绕突发模式中,每拍使用不同的字节线。

  • 在固定突发模式中,每拍使用相同的字节线。

(不是很懂,有理解的前辈,指导一下!)

 Figure A3-8 Narrow transfer example with 8-bit transfers

Figure A3-9 Narrow transfer example with 32-bit transfers

字节不变性(Byte invariance):

在访问单个存储器空间中的大小端混合数据时,AXI协议使用字节不变性大小端模式。

字节不变性大小端模式是指:

  • 数据元素使用相同连续的内存字节,而不管数据的大小端如何。

  • 大小端决定了存储器中的字节顺序,也就是说存储器中的第一个字节是数据元素的MSB还是LSB。

  • 字节传输时,只需要将字节传输到地址给定的位置,而不需要考虑该字节是数据元素的哪一部分。

通常情况下,大多数小端组件可以直接连接到一个字节不变性接口,而只支持大端的组件则需要一个转换器。

 Figure A3-10 Example big-endian byte-invariant data structure

大端:是高字节数据存放到内存的低地址,低字节数据存放在内存的高地址;

 Figure A3-11 Example little-endian byte-invariant data structure


小端:是高字节数据存放到内存的高地址,低字节数据存放在内存的低地址; 

什么是大小端?怎么分辨大小端?-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_58250087/article/details/126453463?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171379181316777224442191%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171379181316777224442191&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-126453463-null-null.142%5Ev100%5Epc_search_result_base9&utm_term=%E5%A4%A7%E5%B0%8F%E7%AB%AF&spm=1018.2226.3001.4187

3.4.3.1 非对齐传输:

AXI supports unaligned transfers. For any burst that is made up of data transfers wider than 1 byte, the first bytes accessed might be unaligned with the natural address boundary. For example, a 32-bit data packet that starts at a byte address of 0x1002 is not aligned to the natural 32-bit address boundary.

AXI支持非对齐传输,对于任何数据宽度大于一个字节的突发传输而言,第一个字节的访问都可能是非对齐的。

一个主设备可以:

  • 使用低位地址线发送一个非对齐的开始地址。

  • 提供对齐的地址并使用字节选通信号线发送非对齐的开始地址。

注意:

  • 低位地址线上的信息必须与字节选通信号提供的信息一致。

  • 从设备不需要根据主设备传递的对齐信息执行任何特别的动作。

Figure A3-13 shows examples of incrementing bursts, with aligned and unaligned 32-bit transfers, on a 32-bit bus. 
Each row in the figure represents a transfer and the shaded cells indicate bytes that are not transferred.

图A3-13显示了在32位总线上具有对齐和未对齐32位传输的增量突发的示例。

图中的每一行表示一次传输,阴影单元格表示未传输的字节。

 

 Figure 3-13 Aligned and unaligned transfers on a 32-bit bus

Figure 3.14 shows examples of incrementing bursts, with aligned and unaligned 32-bit transfers, on a 64-bit bus. 
Each row in the figure represents a transfer and the shaded cells indicate bytes that are not transferred.

 Figure 3.14 Aligned and unaligned transfers on a 64-bit bus

3.4.4 数据读写响应结构

AXI协议提供了读写事务中的响应信号:

  • 对于读事务而言,从设备在读数据通道上发送响应信息,使用RRESP[1:0]信号。

  • 对于写事务而言,从设备在写响应通道上发送响应信息,使用BRESP[1:0]信号。

响应共有四种类型:

  • OKAY:一般访问成功。该信号表示一个一般访问成功,也表示一个独占访问失败。

  • EXOKAY:独占访问成功。

  • SLVERR:从设备错误。该信号表示向从设备的访问已成功,但从设备希望向原始主设备返回一个错误条件。

  • DECERR:译码错误。通常由互联器生成,表示根据给定的事务地址找不到从设备。

RRESP与BRESP的取值如下:

对于写事务而言,只有当整个突发事务结束时才会发出一个响应。

对于读事务而言,从设备可以针对突发事务中的每个传输发送不同的响应。

协议规定,指定数量的数据传输必须全部被执行,即使发生了错误。

下面详细介绍不同的响应所对应的可能的情况:

OKAY响应可能在下列情况出现时产生:

  • 一个一般访问成功。

  • 一个独占访问失败。

  • 独占访问指定的从设备不支持独占访问。

EXOKAY响应可能在下列情况出现时产生:

  • 一个独占访问成功。

对于SLVERR响应,为了简化系统监控和调试,规范推荐这种错误响应只用于错误条件,而不用于除了事件外的一般通知,SLVERR响应可能在下列情况出现时发生:

  • FIFO或缓冲区已满或已空。

  • 尝试不支持的传输大小。

  • 尝试写一个只读位置。

  • 从设备超时。

  • 尝试访问已禁用或已掉电功能。

对于DECERR响应,只有当互联器不能找到对应的从设备时才会返回。规范推荐互联器此时路由到一个默认的从设备,并由该默认从设备返回DECERR响应。

AXI协议要求事务中的全部数据传输必须都被完成,即使发生了错误,因此任何给定DECERR响应的组件满足这个需求。


4 事务属性

4.1 事务类型和属性

从设备可以分为以下两种类型:

  • 存储器从设备:一个需要正确处理全部事务类型的存储器从设备。

  • 外设从设备:一个外设从设备实现了定义的访问方法。通常,这被记载在组件的datasheet中。对于未定义的访问方法,外设从设备必须能够完成事务,但是规范并不要求从设备能够正确的完成所操作,它之要求从设备能够继续处理接下来的事务,这主要是为了避免系统发生死锁。

AXI协议定义了一整套支持存储器和外设从设备的事务属性,使用ARCACHE与AWCACHE信号来表示(后面使用AxCACHE指代这两个信号),这些信号控制事务通过系统进行的方式与系统级Cache处理事务的方式。

4.2 AXI3存储器属性信号

AXI协议中的模棱两可的含义的解释-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/hit_shaoqi/article/details/53243173

在AXI3中,AxCache[3:0]指定了事务的可Buffer(Bufferable)、Cache(Cacheable)与分配(Allocate)属性:

可Buffer(B)是指,互联器或者其它任何组件是否可以让事务延迟任意个周期到达目的端,通常该属性仅与写请求相关。可Cache(C)是指,传输分配是否被允许,以及原始事务特征是否一定匹配最终的事务特征,即多次写事务是否可以被合并(对于写事务)或某个位置的内容是否可以被预取(对于读事务)或某个读操作是否可以被分解为多个读事务(对于读事务)。可读分配(RA)是指:是否推荐事务进行读分配,但不是强制的,当不可Cache时,该位必须为0。可写分配(WA)是指:是否推荐事务进行写分配,但不是强制的,当不可Cache时,该位必须为0。

4.3 AXI4对存储器属性信号的变更

(这个章节理解不透彻,又熟悉的前辈指导一下。)

AXI4做出了如下变更:

  • AxCACHE[1]为重命名为可修改(Modifiable)位。

  • 对于不可修改事务,定义了传输顺序要求。

  • 更新了读分配和写分配的含义。

4.3.1 AxCACHE[1], Modifiable

AxCACHE[1],可修改

在AXI4中,AxCACHE[1]位为可修改位,当该位为高时,表示事务特征可修改,当改位为低时,表示事务特征不可修改。

注意:该位仅仅是被重命名,因为新的名字能更好地描述该位的用途,而实际功能并未改变。

不可修改事务:

一个不可事务传输不能分割为多个事务,也不能和其它事务合并,下表中的参数也不能被改变:

AxCache信号仅被允许由可Buffer修改为不可Buffer,不允许其它的修改。

事务ID和QoS可被修改。

一个突发长度超过16的不可修改事务可被分割为多个事务,产生的事务仍然必须满足上述要求,除了:

  • 突发长度减小。

  • 突发地址被适当地修改。

对于独占的不可修改传输,在保持总访问字节数不变的情况下,允许修改AxSIZE与AxLEN。

注意:

  • 存在一些无法满足不可修改事务需求的情况,例如,传输降级到更狭窄的总线时,事务的传输大小AxSIZE必须修改。

  • 一个组件可以包含自定义的机制来通知事务特征发生了修改,这有助于软件调试。

可修改事务:

在可修改事务中,下列特征可以被修改:

  • 一个事务可以被分割为多个事务。

  • 多个事务可以被合并为一个事务。

  • 一个读事务可以进行预取操作。

  • 一个写事务可以访问比所需更大的地址范围,使用WSTRB信号以确保只有合适的位置被更新。

  • 在每个生成的事务中,下列信号可以被修改:传输地址、突发大小、突发长度、突发类型。

下列特征不可以被修改:

  • 锁定类型,AxLOCK。

  • 保护类型,AxPROT。

存储器属性AxCACHE可以被修改,但是任何修改都必须确保事务的可见性不会因为阻止事务传播到所需的点或更改在Cache中寻找事务的需求而减少。任何对于存储器属性的修改都必须与相同地址范围内的其它事务一致。

传输ID和QoS可被修改。

当修改的结果出现如下情况时是不允许的:

  • 导致访问与原始事务不同的4KB地址空间。

  • 导致针对单次拷贝原子大小的区域的单次访问变为多次访问操作。

4.3.1 不可修改事务的顺序要求

AXI4要求满足下列全部条件的任何事务集的顺序被保证:

  • 事务是不可修改的。

  • 事务使用了相同的AXI ID。

  • 事务目标是相同的从设备。

无论事务的地址是什么,只要事务目标是同一个从设备,事务顺序都必须被保证。

注意:当读写通道上分别出现独立的事务时,如果一个事务在另一个事务的响应被收到后才发出,则顺序可以被保证,否则顺序不能被保证。

4.3.2 读分配与写分配的更新含义

在AXI4中,读分配位表示事务中是否会发生分配,写分配位表示是否可能由于另一个事务而进行了分配。

对于读事务,写分配位被重定义用来表示:

  • 由于先前的写事务,该位置可能已经预先在Cache中分配(就像AXI3所定义的那样)。

  • 由于先前另一个主设备的行为,该位置可能已经预先在Cache中分配(AXI4的附加定义)。

对于写事务,读分配位被重定义用来表示:

  • 由于先前的读事务,该位置可能已经预先在Cache中分配(就像AXI3所定义的那样)。

  • 由于先前另一个主设备的行为,该位置可能已经预先在Cache中分配(AXI4的附加定义)。

这样变更意味着:

  • 如果AxCACHE[3:2]不等于00,事务必须在Cache中查找。

  • 如果AxCACHE[3:2]等于00,事务不需要在Cache中查找。

新的AWCACHE定义如下:

4.4 Memory types

The AXI4 protocol introduces new names for the memory types that are identified by the AxCACHE encoding. 

Table A4-5 shows the AXI4 AxCACHE encoding and associated memory types. Some memory types have different encodings in AXI3 and these encodings are shown in brackets. 

4.4.1 Memory type requirements

Non-bufferable

Device Bufferable

Normal Non-cacheable Non-bufferable

Normal Non-cacheable Bufferable

4.5 不同的存储器属性

访问存储器相同区域的多个代理可以使用不同的内存属性,然而,为保证功能正确性,必须遵守如下几条规则:

  • 所有访问存储器相同区域的主设备都必须拥有该区域的一致性可Cache视图,也就是说,要么这些主设备的AxCACHE[3:2]均为00,或均为非00。

  • 不同的主设备可以使用不同的可分配暗示信号。

  • 如果一个寻址区域是一般不可Cache的,任何主设备都可以使用设备存储器事务方式访问。

  • 如果一个寻址区域是可Buffer的,任何主设备都可以使用不可Buffer的方式访问。

4.5.1 改变存储器属性

一个特定存储器区域的属性可以被改变,不过这需要一个合适的流程来执行,通常如下所示:

  1. 所有的主设备停止访问该区域。

  2. 某个主设备执行Cache维护操作。

  3. 所有的主设备使用新属性重启对该区域的访问。

4.6 Transaction buffering

(略)

4.7 访问权限

AXI提供了访问权限信号用以阻止非法事务:

  • ARPROT[2:0]定义了读访问的访问权限。

  • AWPROT[2:0]定义了写访问的访问权限。

其中,信号定义如下:

AXI(Advanced eXtensible Interface)协议规范_extensible interface protocol.-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_41019681/article/details/118740047

非特权与特权访问

一些处理器支持多种特权级,但是AXI仅支持两种特权级,具体的映射方法可以参照具体处理器的文档。AxPROT[0]将访问标识为非特权或特权。

安全与非安全访问

AXI管理器可能支持安全和非安全操作状态,并将这种安全概念扩展到内存访问。AxPROT[1]将访问标识为安全或非安全。AxPROT[1]可以被认为定义了两个地址空间,一个安全地址空间和一个非安全地址空间。该信号可以被视为一个附加的地址位。必须正确处理安全和非安全地址空间之间的任何混淆。

指令与数据

在AXI协议规范中,该位仅仅是一种暗示,例如,若某个事务包含指令和数据的混合项,则推荐将该位设置为0,表示当前进行的是数据访问而不是指令访问。

4.8 遗留问题

AXI4在处理一些AxCACHE存储器属性时引入了额外的要求。

在AXI4中,所有使用相同ID且目的从设备相同的设备事务都必须按序排列。

注意:

  • 这并不是AXI3的要求,任何依赖该行为的AXI4组件都不能连接到不支持该特性的AXI3互联器上。

  • ARM相信大多数的AXI3互联器都支持所需的AXI4行为。

该规范强烈推荐任何新的AXI3设计都应该实现AXI4的要求。

对于AxCACHE位名和存储器类型名,AX3组件可以使用AXI3或AXI4的名字。

4.9  Usage examples

写到这的时候,不知道大家对AXI协议有一个基本的理解和概念。因为自己也是浅显的理解,很多的地方说的也不够准确。希望大家多指点一下。


5 AXI事务标识符

5.1 AXI transaction identifiers

AXI协议包含AXI ID事务标识符,主设备可以使用这个区分需要按序返回的事务。

AXI ID相同的事务必须保证顺序,但是AXI ID不同的事物则不能保证顺序,这意味着单个物理端口可以支持乱序事务,并据此模拟出多个逻辑端口,其中每个端口都是按序端口。

使用AXI ID,主设备可以在前面事务未完成的时候就发送新的事务,这可以提升系统效率,因为这允许事务的并行处理。

注意:这并没有要求主设备和从设备一定使用AXI事务ID,主设备和从设备可以同时只处理一个事务,这意味着所有的事务都是按序的,同时从设备返回的BID和RID必须和主设备发出的AXI ID一致。

5.2 事务ID

每一个事务通道都拥有自己的事务ID,如下表所示:


6 AXI顺序模型

(这章节没有理解透彻,有理解的前辈指导一下。)

本章描述AXI4顺序模型,该模型使用AXI-ID事务标识符来对事务进行排序。

6.1 顺序模型的定义

The AXI ordering model is based on the use of the transaction identifier, which is signaled on ARID or AWID. 
Transaction requests on the same channel, with the same ID and destination are guaranteed to remain in order. 
Transaction responses with the same ID are returned in the same order as the requests were issued.
The ordering model does not give any ordering guarantees between:
• Transactions from different masters.
• Read and write transactions.
• Transactions with different IDs.
• Transactions to different Peripheral regions.
• Transactions to different Memory locations.

If a master requires ordering between transactions that have no ordering guarantee, the master must wait to receive a response to the first transaction before issuing the second transaction.

6.2 Memory locations and Peripheral regions

The address map in AMBA is made up of Memory locations and Peripheral regions. 
A Memory location has all of the following properties:
• A read of a byte from a Memory location returns the last value that was written to that byte location.
• A write to a byte of a Memory location updates the value at that location to a new value that is obtained by a subsequent read of that location.
• Reading or writing to a Memory location has no side-effects on any other Memory location.
• Observation guarantees for Memory are given for each location.
• The size of a Memory location is equal to the single-copy atomicity size for that component.
A Peripheral region has all of the following properties:
• A read from an address in a Peripheral region does not necessarily return the last value that is written to that address.
• A write to a byte address in a Peripheral region does not necessarily update the value at that address to a new value that is obtained by subsequent reads.
• Accessing an address within a Peripheral region might have side-effects on other addresses within that region.
• Observation guarantees for Peripherals are given per region.
• The size of a Peripheral region is IMPLEMENTATION DEFINED, but it must be contained within a single slave component.

6.3 Transactions and ordering

A transaction is a read or a write to one or more address locations. The locations are determined by AxADDR and any relevant qualifiers such as the Non-secure bit in AxPROT. 
• Ordering guarantees are given only between accesses to the same Memory location or Peripheral region.
• A transaction to a Peripheral region must be entirely contained within that region.
• A transaction that spans multiple Memory locations has multiple ordering guarantees.
Transactions can be either of type Device or Normal:
Device A read or write where the request has AxCACHE[1] deasserted. 
Device transactions can be used to access Peripheral regions or Memory locations.
Normal A read or write where the request has AxCACHE[1] asserted.
Normal transactions are used to access Memory locations and are not expected to be used to access Peripheral regions. 
A Normal access to a Peripheral region must complete in a protocol-compliant manner, but the 
result is IMPLEMENTATION DEFINED.
A write transaction can be either Non-bufferable or Bufferable. It is possible to send an early response to Bufferable writes.
• A Non-bufferable write has A WCACHE[0] deasserted.
• A Bufferable write has A WCACHE[0] asserted.

6.8 Ordered write observation

To improve compatibility with interface protocols that support a different ordering model, a slave interface can give stronger ordering guarantees for write transactions. A stronger ordering guarantee is known as Ordered Write Observation.
The Ordered_Write_Observation property is used to define whether an interface exhibits Ordered Write Observation, it can be True or False for a single interface.
True An interface is defined as having the Ordered Write Observation property.
False An interface that does not have the Ordered Write Observation property. 
If Ordered_Write_Observation is not declared, it is considered False.
An interface that exhibits Ordered Write Observation gives guarantees for write transactions that are not dependent on the destination or address:
• A write W1 is guaranteed to be observed by a write W2, where W2 is issued after W1, from the same master, with the same ID.
A master using the Producer-Consumer ordering model that is connected to a slave interface that exhibits Ordered Write Observation is not required to wait for the completion response from earlier writes before issuing dependent writes.



深入理解AMBA总线(十三)AXI原子访问机制和AXI响应 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/642172790


7 原子访问

7.1 单拷贝原子大小

AXI4协议引入了单拷贝原子大小的概念,这个术语定义了一个事务原子更新的最小字节数。AXI4协议要求大于一个单拷贝原子大小的事务必须更新至少为单拷贝原子大小的内存块。

注意:原子性并不定义数据更新的确切时刻。必须确保的是,没有一个主设备可以观察到原子数据的部分更新形式。例如,在使用许多系统数据结构例如由32bit原子元素构成的链表时,针对这些元素的原子更新操作必须同时更新整个32bit的值,任何一个主设备在某个时刻只观测到其中的16bit发生更新,而在另一个时刻观测到另外16bit发生更新的的这一行为是不可接受的。

更复杂的系统要求支持更大的原子元素,特别是64bit原子元素,以便主设备可以使用基于更大原子元素的数据结构通信。

系统所支持的单拷贝原子大小非常重要,因为给定通信中设计的所有组件都必须支持苏偶像的原子元素大小。如果两个主设备正在通过互联器和同一个从设备通信,则所有涉及到的组件都必须确保所需大小的事务被原子对待。

AXI4协议不要求特定的单拷贝原子大小,系统可以支持不同的单拷贝原子大小。

对于组内通信,不同的组件组可以拥有不同的单拷贝原子大小,在AXI4中,单拷贝原子组这一术语指的是一组可以以特定的原子性进行通信的组件。

下图展示了如下的一个系统:

  • 处理器、DSP、DRAM控制器、DMA控制器、外设、SRAM以及关联的互联器都在一个32bit的单拷贝原子组中。

  • 处理器、DSP、DRAM控制器以及关联的互联器也在一个64bit的单拷贝原子组中。

 

 Figure A7-1 Example system with different single-copy atomic groups

事务的原子性只有在它的起始地址正确对齐时才能得到保证,例如,对于一个64bit的单拷贝原子组来说,如果突发事务的地址没有对齐到8字节边界,那么该事务就没有任何64bit单拷贝原子保证。

事务的字节选通信号不会影响单拷贝原子大小。

7.1.1 多拷贝写原子性

要指定一个系统提供多拷贝原子性,必须定义Multi_Copy_Atomicity属性。

如果这个属性被设置为True,则该系统拥有这个能力,否则该系统不拥有这个能力。

如果以下条件满足,则可以说明一个系统具有多拷贝原子性:

  • 针对同一个位置的写操作可以被所有的代理以相同的顺序观察到。

  • 对于一个除发出者外的代理可以观测到的写操作而言,其它的代理也都能观测到。

多拷贝原子性可以通过如下手段来保证:

  • 对于一个给定的地址使用单点序列化(POS),这样针对相同位置的全部访问操作都可以按序处理器,必须确保在该位置的新值针对任何代理都可见之前将被Cache的一致性拷贝全部无效化。

  • 避免在代理的上游使用前向Buffer,这可以避免一个Buffer写操作在对全部代理可见前对某些代理可见。

注意:如果一个系统使用了ARM v8架构处理器,则该系统必须拥有Multi_Copy_Atomicity属性。该属性用来支持获取加载和释放存储指令,释放存储指令要求存储操作是多拷贝原子性的。


AXI 独占访问(Exclusive)和锁定访问(Locked )机制_axi exclusive-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zmfmfking/article/details/120081488

7.2 独占访问

独占访问机制提供了信号量类型的操作,利用该机制时,不需要在整个访问周期内让总线被一个主设备所独占,这意味着信号量类型操作不会影响总线访问延迟以及最大可实现带宽。

AxLOCK信号选择独占访问,RRESP和BRESP信号则分别表示独占读和独占写操作的成功与否。

从设备要求额外的逻辑实现独占访问,当主设备访问一个不支持独占访问的从设备时,AXI协议提供了一种机制用来通知该主设备其所访问的从设备不支持独占访问操作。


7.2.1 独占访问过程

独占访问的基本机制如下:

  1. 主设备在给定地址上执行独占读事务。

  2. 过一段时间后,主设备尝试在相同的地址上执行独占写事务,这会导致独占读事务的完成,同时,独占写事务的AWID与独占读事务的ARID相同。

  3. 如果从执行独占读事务开始没有其它主设备写相同的位置,独占写事务将会更新存储器,并返回成功信号,否则会返回失败信号。

主设备或许不会完成独占事务的写部分,独占访问监视硬件对于每一个事务ID只会监视一个地址。如果一个主设备没有完成独占事务的写部分,接下来这个主设备又以相同的事务ID对另一个地址发起了独占读事务,则独占访问监视的地址就会被改变。

从主设备视角看待独占访问

一个主设备通过执行一个独占读事务的方式开始一个独占操作,如果事务成功,从设备就会返回EXOKAY响应,表示从设备已经记录了要监视的地址。

如果主设备尝试向不支持独占访问的从设备发出独占读事务请求,从设备会返回OKAY响应而不是EXOKAY响应。

注意:主设备可以将OKAY响应作为独占访问不支持的错误响应看待,规范推荐主设备接下来不要执行独占操作的写部分。

在独占读操作之后的一段时间后,主设备尝试对相同位置发起独占写事务,如果从独占读事务开始时到现在对应地址的内容始终没有发生改变,独占写操作就会成功,从设备返回EXOKAY响应,并更新对应的存储器位置,否则,独占写操作就会失败,从设备返回OKAY响应而不是EXOKAY响应,独占写操作不会更新对应的存储器位置。

主设备或许不会完成独占操作的写部分,如果发生了这种情况,从设备将会继续监视独占访问的地址直到针对该从设备的另一个独占读事务启动一个新的独占访问序列。

主设备在独占访问序列的读部分完成后才会开始独占访问序列的写部分。

从从设备视角看待独占访问

不支持独占访问的从设备可以忽略AxLOCK信号,这样的从设备对于一般和独占访问都必须提供OKAY响应信号。

支持独占访问的从设备必须拥有监视硬件,规范推荐对于每一个支持独占的事务ID而言都准备一个监视单元。ARM规范参考手册,ARMv7-A和ARMv7-R版本定义了一种独占访问监视器,一个单端口的从设备可以拥有一个外接的独占访问监视器,而一个多端口的从设备则或许需要实现内部监视器。

独占访问监视器需要记录任何独占读操作的地址和ARID,然后需要监视指定的位置,直到针对该位置的写操作发生或者使用相同ARID的另一个独占读操作复位监视器并将地址设置为另一个值。

当从设备接收到一个独占写事务时,监视器就会根据给定的AWID检查指定的地址是否被监视,如果是,这表示从独占读操作开始以来没有发生写操作,然后就会处理写操作并完成整个独占访问过程,返回EXOKAY响应,并更新存储器。

如果在进行独占写时,地址不再被相同AWID的监视硬件监视,则表明发生了下列情况之一:

  • 在独占读访问事务发起之后,对应的位置的内容被更新。

  • 监视器的地址被另一个独占读事务重置修改。

在以上两种情况中,独占写事务都不会更新对应的存储器位置,从设备必须返回OKAY而不是EXOKAY响应。

7.2.4 独占访问限制

独占访问存在以下限制:

  • 独占写操作的突发大小和突发长度必须与其对应的独占读操作一致。

  • 独占访问的地址必须对齐到事务的总字节数,也就是突发大小与突发长度的乘积。

  • 独占读与独占写事务的地址必须一致。

  • 独占读事务的ARID必须与独占写事务的AWID一致。

  • 独占读和独占写事务的控制信号必须一致。

  • 独占访问突发传输的字节数必须是2的幂,即1、2、4、8、16、32、64或128字节。

  • 独占访问突发传输的最大字节数为128字节。

  • 在AXI4中,独占访问的突发长度不能超过16。

  • AxCACHE信号的值必须保证监视独占访问的从设备可以看到事务。例如,独占访问事务的AxCACHE的值一定不表示事务是可Cache的。

不遵守这些限制将会导致不可预测的结果。

在独占操作过程中监视的最小字节数由事务的突发长度和突发大小所定义,而从设备可以选择监视更大的字节数(最大不超过128字节),但当相邻的字节被更新时,这会导致本应成功的独占访问操作变为失败状态。

不支持独占访问的从设备

RRESP与BRESP响应信号在表示一般访问成功时使用OKAY信号,而在表示独占访问成功时使用EXOKAY信号,这意味着不支持独占访问的从设备会使用OKAY信号表示独占访问操作的失败。

注意:

  • 针对不支持独占访问从设备的独占写操作总会更新存储器。

  • 针对支持独占访问从设备的独占写操作只有在独占写操作成功时才会更新存储器。

7.3 锁定访问

AXI4不支持锁定事务,而AXI3实现则必须支持锁定事务。

AXI4由于以下原因移除了锁定事务的支持:

  • 大多数组件不需要锁定事务。

  • 锁定事务的实现会对互联器的复杂度以及QoS保证能力造成显著的影响。

当主设备使用AxLOCK信号表示当前事务是一个锁定事务时,互联器就必须确保只有当前主设备可以访问目标从设备区域,直到该主设备发出解锁事务为止,互联器的仲裁器必须强制执行此限制。

在主设备开始读事务或写事务的锁定序列前,该主设备必须确保没有其它等待完成的事务。

任何携带AxLOCK信号的事务都是锁定事务,这会强制互联器锁定接下来的事务,因此,一个锁定序列只有当主设备发出无AxLOCK信号事务时才会终止,这个终止事务包含在锁定序列中并实际上移除了锁。

在即将完成锁定序列时,必须首先确保所有的锁定事务都已经完成,然后才能发出终止解锁事务,并必须确保在进行接下来的任何事务之前该解锁事务已经执行完成。

主设备必须确保一个锁定序列中的全部事务都拥有相同的AxID值。

注意:锁定访问事务需要互联器在锁定序列进行中时避免任何其它的事务发生,这会对互联器的效率产生影响,因此,该规范推荐锁定访问事务只用于支持早期设备。

该规范推荐下列的限制(但不是强制性的):

  • 在单个4KB地址域内保持任何锁定事务序列。

  • 将任何锁定任务序列限制为两个事务。

7.4 原子访问信号

在AXI3中,AxLOCK信号用于指定一般、独占和锁定访问,下表为AXI3规范对于AxLOCK信号的编码:

 AXI4 removes the support for locked transactions and uses only a 1-bit lock signal. Table A7-2 shows the AXI4 signal encoding of the AxLOCK signals.

7.4.1 遗留问题

在AXI4环境中,任何AXI3锁定事务可以按照下列方式被转换:

  • AWLOCK[1:0] = 10被转换为一般写事务,AWLOCK = 0。

  • ARLOCK[1:0] = 10被转换为一般读事务,ARLOCK = 0。

该规范推荐任何组件执行这样的转换,一般是互联器,可以包含一个可选的机制用于检测和标记这样的事务发生。

如果某些组件执行了这样的转换后不能正确工作,则这样的组件不能在AXI4环境中使用。

注意:对于许多早期使用锁定事务的例子,例如SWP指令的执行,或许需要通过修改软件的方式来避免使用强制使用锁定事务的指令。


8 AXI4附加信号

8.1 QoS信号

8.1.1 QoS接口信号

AXI4信号集支持两个4bit的QoS标识符:

  • AWQOS:一个4bit的QoS标识符,在每次写事务中由写地址通道发送。

  • ARQOS:一个4bit的QoS标识符,在每次读事务中由读地址通道发送。

协议并没有指定QoS标识符的精确使用方法,规范推荐AxQOS的值用于优先级指示器,更大的值表示更高优先级的事务。

当使用默认值0000时表示接口不参与任何QoS方案。

8.1.2 主设备问题

一个主设备可以产生自己的AxQOS值,如果它可以产生多个传输流,则可以为这些流分配不同的QoS值。

为了支持QoS,需要对正在使用的QoS方案有系统级的理解,同时需要全部的组件之间互相配合,因此,规范推荐主设备组件支持精确控制QoS值的机制用于任何给定的场景。

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

不能产生AxQOS值的主设备必须使用默认值。

注意:规范期望一些互联组件实现一些可编程寄存器,这些寄存器可以用于分配QoS值到连接的主设备,覆盖掉主设备原先的QoS值。

8.1.3 系统问题

AXI4中定义的QoS信号可以用于任何兼容的系统级QoS方法。

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

注意:这意味着AXI顺序规则优先于QoS。

可以实现兼容默认方案的更复杂的QoS方案。

8.2 多区域信号

8.2.1 附加接口信号

AXI4接口信号集支持两个4bit区域标识符(可选):

  • AWREGION:一个区域标识符,在每次写事务中由写地址通道发送。

  • ARREGION:一个区域标识符,在每次读事务中由读地址通道发送。

4bit区域标识符可以用于唯一地标识16个不同的区域,区域标识符可以提供更高阶的地址位译码,但在任何4KB地址空间内必须保持不变。

区域标识符的使用意味着从设备的单个物理接口可以提供多个逻辑接口,每一个都位于系统地址映射中的不同位置,区域标识符的使用也意味着从舍尔必不支持不同逻辑接口间的地址译码。

这个协议期望互联器在为拥有多个逻辑接口的单个从设备执行地址译码功能时产生AxREGION信号,如果一个从设备在系统地址映射中只有一个物理接口,则互联器必须使用默认的AxREGION值。

从设备必须确保两个位于不同区域但拥有相同的AXI ID的事务以正确地顺序响应。

如果从设备实现的区域少于16个时,从设备必须确保在任何主设备尝试访问不支持的区域时给出正确的协议信号,而这需要具体实现自行定义,例如,从设备或许需要通过下列方式来确保上述事宜:

  • 对于任何访问不支持区域的事务提供一个错误响应。

  • 为所有不支持的区域分配支持区域的别名,以确保响应符合协议。

AxREGION信号仅提供了对从设备可使用的现存地址空间的地址译码功能,以消除对地址译码功能的需求,这个信号并没有创建新的独立地址空间。

AxREGION只能出现在地址译码功能的下游接口上。

8.3 用户定义信号

AXI4接口信号集在每个通道上包含了一些用户定义信号,一般情况下,规范推荐用户不使用用户信号,因为AXI协议并没有定义这些信号的功能,贸然使用可能会导致两个组件之间出现互操作性的问题,因为两个组件可能以不兼容的方法使用了相同的用户信号。

8.3.1 信号命名

每个AXI4通道定义的用户信号名称如下:

  • AWUSER:写地址通道用户信号。

  • ARUSER:读地址通道用户信号。

  • WUSER:写数据通道用户信号。

  • RUSER:读数据通道用户信号。

  • BUSER:写响应通道用户信号。

8.3.2 使用问题

协议并不要求所有通道都支持用户信号。

规范推荐互联器包含用户信号,然而,并没有要求主设备和从设备包含用户信号。

规范推荐互联组件包含用户信号的支持,以便互联组件可以将用户信号在主设备和从设备之间传送,用户定义信号的宽度是具体实现定义的,对于每个通道都可以是不同的。


9 默认信号和互操作性

AXI协议并不要求一个组件使用AXI接口的完整可用信号集。

9.1 互操作性原则

下列互操作性原则针对AXI3和AXI4组件。

作为一个一般性原则,组件必须支持全部的输入组合,但不必生成全部的输出组合,例如,从设备必须支持不同可能突发长度,但主设备可以只生成它所用的突发类型,这个策略保证全部的组件都能配合其它的组件工作。

AXI接口可以省略信号的条件如下:

  • 可选输出:如果一个组件所需的值不与默认值匹配,组件就必须拥有其对应的输出信号,如果一个组件总是需要默认值,则不需要组件存在实际的信号。

  • 可选输入:如果一个信号不需要被主设备或从设备观测也能让功能操作正确执行,则该输入信号是可以忽略的。

注意:互联组件在合适的时候也可以忽略信号,例如,当一个信号仅输出默认值,则该信号就不需要被互联器转发,该信号可以直接在其目的端生成,类似地,如果一个信号不被任何目的端所使用,那么就不需要互联器转发该信号。

9.2 主要接口类别

9.2.1 读写接口

读写接口包含下列AXI通道:

  • AR:读地址通道。

  • R:读数据通道。

  • AW:写地址通道。

  • W:写数据通道。

  • B:写响应通道。

9.2.2 只读接口

只读接口仅支持读事务,因此只包含下述通道:

  • AR:读地址通道。

  • R:读数据通道。

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

9.2.3 只写接口

只写接口仅支持写事务,因此只包含下述通道:

  • AW:写地址通道。

  • W:写数据通道。

  • B:写响应通道。

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

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

AXI从设备分为存储器从设备与外设从设备。

存储器从设备必须正确地处理全部事务类型。

规范期望外设从设备拥有一个定义的访问方法,该方法建立了可以用于访问设备的事务类型以及对设备访问方式的限制。通常,定义的访问方法在组件的datasheet中描述,任何未定义的访问方法或许都会造成外设从设备失败,但规范期望以协议兼容的失败-安全方法完成访问以避免系统死锁,但不要求外设从设备继续进行正确的操作。

因为只有当使用外设定义的访问方法时才要求外设正常工作,因此外设从设备可以拥有接口信号的极小子集。

注意:规范期望所有外设都支持C语言定义的访问方法,如8bit/16bit/32bit对齐访问事务。并不存在要求支持的最小子集,因为每个组件支持的事务子集都可以不同,例如,一个外设可能只支持16bit访问事务,但另一个外设只支持32bit访问事务。

9.3 默认信号值

规范建议,一般而言,为了最大限度地重用IP,一个AXI组件接口包含所有的信号,这样就降低了设计流程中系统集成阶段出现错误的风险,它还可以帮助一些不能有效支持缺少信号的默认值的设计流程。

下列的几个表展示了AXI强制和可选信号,同时给出了可选信号的默认值。

 

 

 

 


 

9.3.1 主设备地址

AxADDR:规范并没有规定该信号的最小长度,如果系统地址总线比主设备地址信号更宽,则额外的高地址位全部设为0,如果更窄,则多余的高地址位不能连接到系统地址总线。

注意:一般情况下主设备支持32bit地址,主设备可选支持到至多64bit地址。

9.3.2 从设备地址

AxADDR:规范并没有规定该信号的最小长度,同时规范也不要求从设备对系统数据总线宽度内的数据使用低地址位进行寻址,并假设这些低地址位为全0,如果从设备的地址线比互联器更宽,则多余的高低地址位默认全0。

通常一个存储器从设备至少能够完全译码整个4KB地址空间。

9.3.3 存储器从设备

AxLOCK:规范不要求存储器从设备使用AxLOCK输入信号,然而,支持独占访问事务的存储器从设备需要这些信号。

AxCACHE:规范不要求存储器从设备使用AxCACHE信号,如果一个存储器从设备不支持Cache行为或所有的事务以相同的方式Cache,则该设备不需要这个信号。

9.3.4 写事务

WSTRB[3:0]:如果主设备总是执行整个数据总线宽度的写事务,则规范不要求主设备使用写字节使能信号,写字节使能的默认值是全1。

WLAST:规范不要求从设备使用WLAST信号,因为已定义写突发长度,从设备可以根据突发长度AWLEN[7:0]信号计算出最后一次写数据传输。

9.3.5 读事务

RLAST:规范不要求主设备使用RLAST信号,因为已定义读突发长度,主设备可以根据突发长度ARLEN[7:0]信号计算出最后一次读数据传输。

9.3.6 响应信号

RRESP,BRESP:如果主设备不需要执行独占访问事务也不需要事务错误通知,则主设备可以不使用RRESP与BRESP输入信号;如果从设备不需要支持独占访问事务也不需要生成错误响应,则从设备可以不使用RRESP与BRESP输出信号。

9.3.7 不安全和安全访问

AxPROT:规范不要求从设备区分非安全和安全访问,也不要求任何额外的保护支持,因此不要求从设备支持AxPROT输入信号。

注意:要特别注意AxPROT信号,AxPROT[1]信号表示事务是否为安全事务,不正确的设置可能会导致不正确的系统行为。


10 AXI功能总结(补充)

AXI4 is for memory-mapped interfaces and allows high throughput bursts of up to 256 data transfer cycles with just a single address phase.

AXI4-lite is a light-weight, single transaction memory-mapped interface. it has a small logic footprint and is a simple interface to work with both in design and usage.

AXI4:

provides separate data and address connections for read and writes, which allows simultaneous,bidirectional data transfer. 由于读写地址通道是分离的,所以支持双向同事传输;突发长度最大256;

repquires a single address and then bursts up to 256 words of data.

AXI4-lite is similar to AXI4 with some exceptions: the most notable exception is that bursting is not supported. 不支持突发传输

AXI4-Stream:只有一个单一数据通道和AXI4写数据通道比较类似;突发长度不受限制;

10.1 channel definition 

Each of independent channels consists of a set of information signals and VALID and READY signals that provide a two-way handshakes mechanism.

信息的源端使用valid信号,表示地址,数据和控制信息什么时候有效;

目的端通过使用ready,表示什么时候可以接收信息;

读数据通道和写数据通道都包含一个LAST信号,用于表示传输的最后一个数据。

读数据通道和写数据通道都有自己的地址通道,地址通道包含了请求所需的地址和信息。

读数据通道由从机发送给主机,包含了读数据和读响应的信息,读响应的信号用于表示都传输是否完成;

写数据通道由主机发送给从机,包含了写数据,然后通过WSTRB信号表示当前数据的哪个字节有效。写响应的信号用于表示都传输是否完成;

写响应信号,它是由从机发送给主机,然后用于表示包含了写响应信号,表示当前写操作是否完成。

10.2 AXI4-Lite

10.2.1 什么时候适用于AXI4-Lite

它适用于不需要AXI4完整功能时候,比如,一些简单的控制寄存器读写;

10.3 AXI突发读

从图中可以知道RDATA不是连续的。

10.4 AXI突发写

Write Burst


[Reference]

AXI接口介绍

AXI4协议-CSDN博客

AXI4协议学习:架构、信号定义、工作时序和握手机制-CSDN博客

欢迎大家批评指正~共同进步~

940900746@qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AMBA协议是指Advanced Microcontroller Bus Architecture(高级微控制器总线结构)协议,其中包括多个不同的总线协议,用于在现代SoC(系统级芯片)设计中实现高效的内部通信。其中,AMBA的第四代是AXI(Advanced eXtensible Interface协议AXI协议AMBA协议中的一种,被广泛应用于现代SoC设计中。它提供了一种高性能,灵活且可扩展的总线接口,用于在处理器、外设设备和内存之间进行高效的数据传输。AXI协议具有多个特性,包括支持高带宽、流水线设计、分层模型和端到端数据保护等。 AXI协议的主要特点包括: 1. 高带宽:AXI协议支持高频率的数据传输,能够满足现代SoC设计对于大量数据的处理需求。 2. 流水线设计:AXI协议使用流水线技术,可以同时进行多个传输操作,提高了总线的效率和吞吐量。 3. 分层模型:AXI协议采用分层的结构,可以灵活地连接多个从属设备,并支持多个处理器之间的共享内存访问。 4. 端到端数据保护:AXI协议引入了一些机制,如校验和和错误检测,以确保数据在传输过程中的完整性和可靠性。 总的来说,AMBA协议中的AXI协议是一种用于现代SoC设计的高性能、灵活和可扩展的总线接口协议,通过提供高带宽、流水线设计和端到端数据保护等特性,满足了现代SoC设计对于高效数据传输的需求。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [AMBA协议- AXI协议指南(1)](https://blog.csdn.net/ygyglg/article/details/129937804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值