AXI 协议翻译介绍
一、介绍 Introduction
本章描述了axis协议的体系结构和协议定义的基本事务。它包含以下部分:
•第1-2页关于AXI协议
•第1-3页是架构
•第1-7页是基本事务
•第1-11页的附加功能。
1.1 关于AXI协议
AMBA AXI协议的目标是高性能、高频系统设计,包括一些特性,使其适合高速亚微米互连。
最新一代 AMBA 接口的目标是:
• 适用于高带宽和低延迟设计
• 无需使用复杂的桥接器即可实现高频操作
• 满足各种组件的接口要求
• 适用于具有高初始访问延迟的内存控制器
• 在互连架构的实施中提供灵活性
• 向后兼容现有的 AHB 和 APB 接口。
AXI协议的主要特性是:
• 单独的地址/控制和数据阶段
• 支持使用字节选通的未对齐数据传输
• 仅发布起始地址的基于突发的事务
• 独立的读取和写入数据通道以实现低成本的直接内存访问 (DMA)
• 能够发布多个未解决的地址
• 无序事务完成
• 轻松添加寄存器级以提供时序收敛。
除数据传输协议外,AXI 协议还包括可选扩展,涵盖低功耗操作的信令。
1.2 AXI架构
AXI 协议是基于突发的。 每个事务在地址通道上都有地址和控制信息,这些信息描述了要传输的数据的性质。 使用到从机的写数据通道或到主机的读数据通道在主机和从机之间传输数据。 在所有数据从主设备流向从设备的写事务中,AXI 协议有一个额外的写响应通道,允许从设备向主设备发出写事务完成的信号。
AXI 协议支持:
• 在实际数据传输之前发布的地址信息• 支持多个未完成的交易• 支持无序完成事务。
图 1-1 显示了读事务如何使用读地址和读数据通道。图1-2显示了写事务如何使用写地址、写数据和写响应通道。
1.2.1 通道定义
五个独立通道中的每一个都包含一组信息信号,并使用双向 VALID 和 READY 握手机制。
信息源使用 VALID 信号来显示有效数据或控制信息何时在通道上可用。 目的地址使用 READY 信号来显示它何时可以接受数据。 读数据通道和写数据通道都包含一个 LAST 信号,用于指示事务内最终数据项的传输何时发生。
读写地址通道
读和写事务都有自己的地址通道。 适当的地址通道携带事务所需的所有地址和控制信息。 AXI 协议支持以下机制:
• 可变长度突发,每次突发 1 到 16 次数据传输
• 传输大小为 8-1024 位的突发
• 环绕、递增和非递增突发
• 原子操作,使用独占或锁定访问
• 系统级缓存和缓冲控制
• 安全和特权访问。
读数据通道
读数据通道将读数据和任何读响应信息从从设备传送回主设备。 读取数据通道包括:
• 数据总线,可以是 8、16、32、64、128、256、512 或 1024 位宽
• 读取响应,指示读取事务的完成状态。
写数据通道
写数据通道将写数据从主机传送到从机,包括:
• 数据总线,可以是 8、16、32、64、128、256、512 或 1024 位宽
• 每八个数据位有一个字节通道选通,指示数据总线的哪些字节有效。
写数据通道信息总是被视为缓冲的,因此主设备可以执行写事务而无需从设备对先前写事务的确认。
写响应通道
写响应通道为从设备提供了一种响应写事务的方式。 所有写事务都使用完成信号。
完成信号针对每个突发出现一次,而不是针对突发内的每个单独数据传输。
1.2.2 接口和互联
典型的系统由若干主设备和从设备通过某种互连方式连接在一起组成,如图1-3所示。
AXI 协议提供了用于描述接口的单一接口定义:
• 在主设备和互连之间
• 从设备和互连之间
• 在主从设备之间。
接口定义支持各种不同的互连实现。 设备之间的互连相当于另一个具有对称主从端口的设备,可以连接真正的主从设备。
大多数系统使用以下三种互连方法之一:
• 共享地址和数据总线
• 共享地址总线和多条数据总线
• 多层,具有多个地址和数据总线。
在大多数系统中,地址通道带宽要求明显低于数据通道带宽要求。 通过使用具有多个数据总线的共享地址总线来实现并行数据传输,此类系统可以在系统性能和互连复杂性之间实现良好的平衡。
1.2.3 寄存器段/分割
每个AXI通道只在一个方向传输信息,各个通道之间不需要固定的关系。 这很重要,因为它可以在任何通道中插入寄存器片,但代价是额外的延迟周期。 这使得在延迟周期和最大操作频率之间进行权衡成为可能。
还可以在给定互连内的几乎任何点使用寄存器片。 在处理器和高性能存储器之间使用直接、快速的连接可能是有利的,但使用简单的寄存器片将更长的路径隔离到对性能不太重要的外围设备。
1.3 基本事务
本节给出基本的axi协议事务的示例。每个示例都展示了VALID和READY握手机制。当VALID和READY信号都是HIGH时,就会发生地址信息或数据的传输。例子为:
•读取突发示例
•重叠读突发示例
•写突发示例。
本节还描述了事务顺序。
1.3.1读突发示例
图1-4显示了4次传输的读突发。在这个例子中,主设备驱动地址,一个周期后从服设备接受它。
注意:
主设备还驱动一组显示脉冲串长度和类型的控制信号,但为清楚起见,图中省略了这些信号。
地址出现在地址总线上后,数据传输发生在读数据通道上。 从机将 VALID 信号保持为低电平,直到读取数据可用。 对于突发的最后数据传输,从器件置位 RLAST 信号以表明正在传输最后一个数据项。
图1-4 读突发
1.3.2 重叠读突发示例
图 1-5 显示了在从设备接受第一个地址后,主设备如何驱动另一个突发地址。 这使得从设备能够在完成第一个突发的同时开始处理第二个突发的数据。
图1-5 重叠读突发
1.3.3 写突发示例
图 1-6 显示了一个写事务。 当主机在写地址通道上发送地址和控制信息时,该过程开始。 然后主设备通过写数据通道发送每一项写数据。 当主机发送最后一个数据项时,WLAST 信号变为高电平。 当从设备接受了所有数据项后,它将写响应驱动回主设备以表示写事务已完成。
图1-6 写突发
1.3.4 事务排序
AXI 协议支持无序事务完成。 它为界面上的每笔事务都提供了一个 ID 标签。 该协议要求具有相同 ID 标签的事务按顺序完成,但具有不同 ID 标签的事务可以乱序完成。
无序事务可以通过两种方式提高系统性能:
• 互连可以使与快速响应从属的事务在与较慢从属的较早事务之前完成。(个人理解:慢点事务原本在前,但是太慢了会影响后续事务的传输,因此互连无序事务可以避免这种堵塞)
• 复杂从设备可以无序返回读取数据。 例如,在用于较早访问的数据可用之前,可以从内部缓冲区获得用于稍后访问的数据项。
如果 master 要求事务以它们发出的相同顺序完成,那么它们都必须具有相同的 ID 标签。 但是,如果主设备不需要按顺序完成事务,它可以为事务提供不同的 ID 标签,使它们能够以任何顺序完成。
在多主设备中,互连负责将附加信息附加到 ID 标签,以确保所有主设备的 ID 标签都是唯一的。 ID 标签类似于主设备编号,但具有扩展性,即每个主设备可以通过提供一个 ID 标签来指示虚拟主设备编号,从而在同一端口内实现多个虚拟主设备。
虽然复杂的设备可以使用乱序设施,但简单的设备不需要使用它。 简单的master可以使用相同的 ID 标签发出每笔交易,而简单的slave可以按顺序响应每笔交易,而不管 ID 标签如何。
1.4 附加属性
AXI协议也提供以下附加属性:
突发类型:
AXI 协议支持三种不同的突发类型,适用于:
• 正常的内存访问
• 环绕缓存线突发
• 将数据流式传输到外设 FIFO 位置。
参见第4章寻址选项。
系统缓存支持:
AXI 协议的缓存支持信号使主设备能够向系统级缓存提供事务的可缓冲、可缓存和分配属性。
请参阅第 5-2 页的缓存支持。
保护单元支持:
为了同时启用特权访问和安全访问,AXI 协议提供了三个级别的保护单元支持。
请参阅第 5-5 页的保护单元支持。
原子操作:
AXI协议定义了独占访问和锁定访问的机制。
错误支持:
AXI协议为地址解码错误和Slave产生的错误提供错误支持。
参见第7章响应信号。
地址对齐:
为了提高突发内的初始访问性能,AXI协议支持非对齐的突发起始地址。
见第10章非对齐转移。
2. 信号介绍
本章定义了 AXI 的信号。尽管总线宽度和事务 ID 宽度是特定于实现的,但本章中的表格显示了 32 位数据总线、四位写数据选通和四位 ID 字段。本章包含以下部分:
• 全局信号
• 写入地址通道信号
• 写入数据通道信号
• 写入响应通道信号
• 读取地址通道信号
• 读取数据通道信号
• 低功耗接口信号。
2.1 全局信号
表2-1 列出了AXI全局信号
2.2 写地址通道信号
表2-2 列出了AXI写地址通道信号
2.3 写数据通道信号
表 2-3 列出了 AXI 写数据通道信号。
2.4 写响应通道信号
表 2-4 列出了 AXI 写响应通道信号。
2.5 读地址通道信号
第 2-3 页的表 2-2 列出了 AXI 读地址通道信号。
2.6 读数据通道信号
表 2-6 列出了 AXI 读数据通道信号。
2.7 低功耗接口信号
可选低功耗接口的信号如表2-7 所示。
3. 通道握手
本章描述了主/从握手过程,并概述了 READY 和 VALID 握手信号的关系和默认值。 它包含以下部分:
• 第 3-2 页的握手过程
• 第 3-6 页上的通道之间的关系
• 通道握手信号之间的相关性。
3.1 握手进程
所有五个通道都使用相同的 VALID/READY 握手来传输数据和控制信息。 这种双向流控制机制使mater和slave都能够控制数据和控制信息移动的速率。 源生成 VALID 信号以指示数据或控制信息何时可用。 目的地产生 READY 信号以指示它接受数据或控制信息。 仅当 VALID 和 READY 信号均为高电平时才会发生传输。
主接口和从接口上的输入和输出信号之间不得有组合路径。
图 3-1至图 3-3 展示了握手序列的示例。 在图 3-1 中,源提供数据或控制信息并将 VALID 信号驱动为高电平。 来自源的数据或控制信息保持稳定,直到目的地驱动 READY 信号为高电平,表明它接受数据或控制信息。 箭头显示传输发生的时间。
在图 3-2 中,目的地在数据或控制信息有效之前驱动 READY HIGH。 这表明一旦数据或控制信息有效,目的地就可以在一个周期内接受数据或控制信息。 箭头显示传输发生的时间。
在图 3-3 中,源和目的地碰巧在同一个周期中表明它们可以传输数据或控制信息。 在这种情况下,传输会立即发生。 箭头显示传输发生的时间。
单独的 AXI 协议通道握手机制描述如下:
• 写地址通道
• 写入数据通道
• 写入响应通道
• 读取地址通道
• 读取数据通道。
3.1.1 写地址通道
master只有在驱动有效地址和控制信息时才可以断言 AWVALID 信号。 它必须保持有效,直到slaver接受地址和控制信息并确定相关的 AWREADY 信号。
AWREADY 的默认值可以是 HIGH 或 LOW。 推荐的默认值为 HIGH,但如果 AWREADY 为 HIGH,则slave必须能够接受提供给它的任何有效地址。
默认的 AWREADY 值 LOW 是可能的,但不推荐,因为这意味着传输至少需要两个周期,一个周期用于声明 AWVALID,另一个周期用于声明 AWREADY。
3.1.2 写数据通道
在写突发期间,mater只有在驱动有效写数据时才能断言 WVALID 信号。 WVALID 必须保持有效,直到从机接受写入数据并置位 WREADY 信号。
WREADY 的默认值可以是高电平,但前提是slave始终可以在单个周期内接受写入数据。
mater在驱动突发中的最终写入传输时必须断言 WLAST 信号。
当 WVALID 为低电平时,WSTRB[3:0] 信号可以采用任何值,但建议将它们驱动为低电平或保持在其先前值。
3.1.3 写响应通道
只有当slave驱动有效的写响应时,它才能断言 BVALID 信号。 BVALID 必须保持有效,直到master接受写响应并置位 BREADY。
BREADY 的默认值可以是 HIGH,但前提是master始终可以在单个周期内接受写响应。
3.1.4 读地址通道
只有当master驱动有效的地址和控制信息时,它才能断言 ARVALID 信号。它必须保持有效,直到slave接受地址和控制信息并置位相关的 ARREADY 信号。
ARREADY 的默认值可以是 HIGH 或 LOW。推荐的默认值为 HIGH,但如果 ARREADY 为 HIGH,则slave必须能够接受提供给它的任何有效地址。
低的默认 ARREADY 值是可能的,但不推荐,因为这意味着传输至少需要两个周期,一个用于断言 ARVALID,另一个用于断言 ARREADY。
3.1.5 读数据通道
只有当slave驱动有效读取数据时,它才能断言 RVALID 信号。 RVALID 必须保持有效,直到master接受数据并置位 RREADY 信号。即使slave只有一个读取数据源,它也必须仅在响应数据请求时才将 RVALID 信号置为有效。
master接口使用 RREADY 信号来指示它接受数据。 RREADY 的默认值可以是高电平,但前提是mater能够在执行读取事务时立即接受读取数据。
当slave驱动突发中的最终读取传输时,它必须置位 RLAST 信号。
3.2 通道之间的关系
地址、读、写和写响应通道之间的关系是灵活的。
例如,写入数据可以出现在与其相关的写入地址之前的接口处。 当写地址通道包含比写数据通道更多的寄存器级时,就会发生这种情况。 写数据也可能出现在与地址相同的周期中。
当互连必须确定目标地址空间或slave空间时,它必须重新对齐地址并写入数据。 这需要确保写入数据仅向其指定的slave发送有效信号。
必须保持的两个关系是:
• 读取数据必须始终遵循与数据相关的地址(读数据和读地址必须一一对应)
• 写响应必须始终跟在与写响应相关的写事务中的最后一个写传输之后。(写完最后一笔数据后,紧接着必须发送写响应)
3.3 通道握手信号之间的依赖关系
为了防止死锁情况,您必须观察握手信号之间存在的依赖关系。
在任何事务中:
• 一个 AXI 组件的 VALID 信号不得依赖于事务中另一个组件的 READY 信号
• READY 信号可以等待 VALID 信号的断言。
注意:
虽然在断言 READY 之前等待 VALID 被断言是可以接受的,但默认情况下在 VALID 断言之前断言 READY 也是可以接受的,这可以导致更有效的设计。
图 3-4 和图 3-5 显示了握手信号的相关性。 单向箭头指向可以在前一个信号被声明之前或之后被声明的信号。 双头箭头指向必须仅在前一个信号断言后才能断言的信号。
图 3-4 显示,在读事务中:
• salve可以在断言 ARREADY 之前等待 ARVALID 被断言(可以先断言ARREADY,之后断言ARVALID)
• slave必须等待 ARVALID 和 ARREADY 都被置位,然后才通过置位 RVALID 开始返回读取数据。(只有先断言地址ARVALID、地址ARREADY之后,才能断言数据RVALID)
图 3-5 显示,在写事务中:
• 在断言 AWVALID 或 WVALID 之前,mater不能等待salve断言 AWREADY 或 WREADY
• 在断言 AWREADY 之前,slave可以等待 AWVALID 或 WVALID,或两者兼而有之(Slave可以先断言AWREADY,之后等待master断言AWVALID 或 WVALID)
• 在断言 WREADY 之前,slave可以等待 AWVALID 或 WVALID,或两者兼而有之(Slave可以先断言WREADY,之后等待master断言AWVALID 或 WVALID)
• 在断言BVALID 之前,slave必须等待WVALID 和WREADY 都被断言。(slave断言写响应BVALID时,必须等待master先断言WVALID 和WREADY)
注意:
重要的是,在写事务期间,master在驱动 WVALID 之前不得等待 AWREADY 被置位。 如果slave在断言 AWREADY 之前相反地等待 WVALID,这可能会导致死锁情况。(如果Salve先等在Master写数据WVALID,然后再断言写地址AWREADY,会导致死锁)(相当于数据已经发好,但是一直不知道该发到那个地址中。)
4. 寻址选项 Addressing Options
本章介绍 AXI 突发类型以及如何计算突发内传输的地址和字节通道。 它包含以下部分:
• 相关寻址选项
• 突发长度
• 突发大小
• 突发类型
• 突发地址。
4.1 关于寻址选项
AXI 协议是基于突发的,Master通过驱动传输控制信息和传输中第一个字节的地址来开始每个突发。 随着突发事务的进行,Slave负责计算突发中后续传输的地址。
突发不得跨越 4KB 边界,以防止它们跨越Slave之间的边界并限制Slave内所需的地址增量器的大小。
4.2 突发长度
AWLEN 或 ARLEN 信号指定每个突发内发生的数据传输次数。 如表 4-1 所示,每个突发的传输长度为 1-16。
对于回环突发,突发的长度必须是 2、4、8 或 16 次传输。
每笔事务都必须具有 ARLEN 或 AWLEN 指定的传输次数。 没有任何组件可以提前终止突发以减少数据传输的数量。 在写突发期间,Master可以通过解除所有写选通来禁止进一步写入,但它必须完成突发中剩余的传输(无论如何不能中断正在进行中的突发)。 在读突发期间,Master可以丢弃进一步的读数据,但它必须完成突发中剩余的传输。
注意:
在访问读取敏感设备(例如 FIFO)时,丢弃不需要的读取数据可能会导致数据丢失。 Master绝不能使用比所需长度更长的突发长度来访问此类设备(不能多读)。
4.3 突发大小
表 4-2 显示了 ARSIZE 或 AWSIZE 信号如何指定在突发内的每个节拍或数据传输中传输的最大数据字节数。
AXI 根据传输地址确定每次传输使用数据总线的哪些字节通道。
对于传输大小小于数据总线的增量或回环突发,对于突发的每个节拍,数据传输在不同的字节通道上。 固定突发的地址保持不变,每次传输都使用相同的字节通道。
任何传输的大小不得超过事务中组件的数据总线宽度。
4.4 突发类型
AXI 协议定义了三种突发类型,如下所述:
• 固定突发(地址固定的突发)
• 增量突发(地址递增的突发)
• 回环突发。(在回环边界处回绕到较低地址的递增地址突发)
表 4-3 显示了 ARBURST 或 AWBURST 信号如何选择突发类型。
4.4.1 固定突发
在固定突发中,突发中每次传输的地址都保持不变。 这种突发类型用于重复访问同一位置,例如加载或清空外设 FIFO 时。
4.4.2 增量突发
在增量突发中,突发中每次传输的地址都是前一个传输地址的增量。 增量值取决于传输的大小。 例如,大小为四字节的突发中每次传输的地址是前一个地址加四。
4.4.3 回环突发
回环突发类似于递增突发,突发中每次传输的地址都是前一个传输地址的增量。 然而,在回环突发中,当到达回绕边界时,地址回绕到较低地址。 回环边界是突发中每个传输的大小乘以突发中的传输总数。
两个限制适用于回环突发:
• 起始地址必须与传输的大小对齐
• 突发的长度必须是 2、4、8 或 16。
4.5 突发地址
本节提供了一些简单的公式,用于确定突发内传输的地址和字节通道。 公式使用以下变量:
Start_Address Master发出的起始地址。
Number_Bytes 每次数据传输中的最大字节数。
Data_Bus_Bytes 数据总线中的字节通道数。
Aligned_Address 起始地址的对齐版本。
Burst_Length 突发内的数据传输总数。
Address_N 突发内传输 N 的地址。 N是2-16之间的整数。
Wrap_Boundary 回环突发中的最低地址。
Lower_Byte_Lane 传输的最低寻址字节的字节通道。
Upper_Byte_Lane 传输的最高寻址字节的字节通道。
INT(x) x 的四舍五入整数值。
使用以下等式来确定突发内的传输地址:
使用以下等式确定突发中第一次传输的地址:
使用此等式确定突发中第一次传输之后的任何传输的地址:
对于回环突发,扩展 Wrap_Boundary 变量以考虑回环边界:
如果
使用以下公式:
使用以下等式确定用于突发中的第一次传输的字节通道:
使用下列等式来确定在突发中的第一次传输之后要用于所有传输的字节通道:
数据传输于:
5. 附加控制信息
本章介绍了对系统级缓存和保护单元的 AXI 协议支持。 它包含以下部分:
• 缓存支持
• 保护单元支持。
5.1 缓存支持
通过使用缓存信息信号 ARCACHE 和 AWCACHE 来支持系统级缓存和其他性能增强组件。 这些信号提供有关如何处理事务的附加信息。
ARCACHE[3:0] 或 AWCACHE[3:0] 信号通过提供事务的可缓冲、可缓存和分配属性来支持系统级缓存:
Bufferable (B) bit, ARCACHE[0] and AWCACHE[0]
当该位为高电平时,意味着互连或任何组件可以将事务到达其最终目的地的时间延迟任意数量的周期。 这通常只与写入相关。
Cacheable bit, ARCACHE[1] and AWCACHE[1]
当该位为 HIGH 时,表示最终目的地的事务不必与原始事务的特征匹配。
对于写入,这意味着可以将多个不同的写入合并在一起。
对于读取,这意味着可以预取一个位置,或者可以为多个读取事务只提取一次。
要确定是否应缓存事务,该位应与Read Allocate (RA) 和Write Allocate (WA) 位结合使用。
Read Allocate (RA) bit, ARCACHE[2] and AWCACHE[2]
当 RA 位为 HIGH 时,这意味着如果传输是读取并且在缓存中未命中,则应该分配它。
如果 C 位为低,则 RA 位不得为高。
Write Allocate (WA) bit, ARCACHE[3] and AWCACHE[3]
当 WA 位为 HIGH 时,这意味着如果传输是写入并且在缓存中未命中,则应该分配它。
如果 C 位为低,则 WA 位不得为高。
表 5-1 显示了 ARCACHE[3:0] 和 AWCACHE[3:0] 信号的编码。
在写事务的情况下,AWCACHE 信号可用于确定哪个组件提供写响应。 如果写事务被指示为可缓冲,那么桥接器或系统级缓存提供写响应是可以接受的。 但是,如果事务被指示为不可缓冲,则必须从事务的最终目的地提供写响应。(如果事务可以缓存,则写响应可以由桥接器或者系统级缓存提供,不需要由直接接受事务的slave提供;但是如果事务不能缓存,则接收事务的slave必须能提供写响应。)
AXI 协议不确定缓冲或缓存数据到达目的地的机制。 例如,系统级缓存可能有一个控制器来管理清理、刷新和使缓存条目无效。 另一个示例是包含写入缓冲区的桥接器,如果它接收到具有匹配事务 ID 的不可缓冲写入,则它可能具有控制逻辑来排空缓冲区。
5.2 支持保护单元
为了支持复杂的系统设计,系统中的互连和其他设备通常需要提供针对非法事务的保护。 AWPROT 或 ARPROT 信号提供三个级别的访问保护:
Normal or privileged, ARPROT[0] and AWPROT[0]
• LOW 表示正常访问
• HIGH 表示特权访问。
一些Master使用它来指示他们的处理模式。 特权处理模式通常在系统内具有更高级别的访问权限。
Secure or non-secure, ARPROT[1] and AWPROT[1]
• LOW 表示安全访问
• HIGH 表示非安全访问。
这用于需要在处理模式之间进行更大程度区分的系统。
注意:
该位被配置为当它为高时,事务被认为是不安全的,当为低时,交易被认为是安全的。
Instruction or data, ARPROT[2] and AWPROT[2]
• LOW 表示数据访问
• HIGH 表示指令访问。
该位指示事务是指令还是数据访问。
注意:
此指示是作为提示提供的,并非在所有情况下都准确。 例如,事务包含指令和数据项的混合。 建议默认情况下,将访问标记为数据访问,除非它被明确称为指令访问。
表 5-2 总结了 ARPROT[2:0] 和 AWPROT[2:0] 信号的编码。
6. 原子访问 Atomic Accesses
本章介绍了 AXI 协议如何实现独占访问和锁定访问机制。 它包含以下部分:
• 关于原子访问
• 独占访问
• 锁定访问。
6.1 关于原子访问
为了实现原子访问基元,ARLOCK[1:0] 或 AWLOCK[1:0] 信号提供独占访问和锁定访问。 表 6-1 显示了 ARLOCK[1:0] 和 AWLOCK[1:0] 信号的编码。
6.2 独占访问
独占访问机制能够实现信号量类型的操作,而无需在操作期间将总线保持锁定到特定的Master。 独占访问的优点是信号量类型的操作不会影响关键的总线访问延迟或最大可实现的带宽。
ARLOCK[1:0] 或 AWLOCK[1:0] 信号选择独占访问,RRESP[1:0] 或 BRESP[1:0] 信号表示独占访问成功或失败。
Slave必须有额外的逻辑来支持独占访问。 AXI 协议提供了一种故障安全机制,以指示Master何时尝试对不支持它的Slave进行独占访问。
6.2.1 独占访问流程
独占访问的基本过程是:
Master从地址位置执行独占读取。
稍后,Master尝试通过对同一地址位置执行独占写入来完成独占操作。
Master的独占写访问信号如下:
• 如果在读取和写入访问之间没有其他Master写入该位置,则成功。
• 如果另一个Master在读写访问之间写入该位置,则失败。 在这种情况下,地址位置不会更新。
注意:
Master可能无法完成独占操作的写入部分。 独占访问监控硬件必须仅监控每个事务 ID 的一个地址。 因此,如果Master未完成独占操作的写入部分,则后续独占读取会更改正在监视的独占地址。
6.2.2 master 视角的独占访问
Master通过执行独占读取来启动独占操作。 这通常会从Slave返回 EXOKAY 响应,表明Slave记录了要监视的地址。
注意:
如果Master尝试从不支持独占访问的Slave进行独占读取,则Slave将返回 OKAY 响应而不是 EXOKAY 响应。 Master可以将此视为指示不支持独占访问的错误条件。 建议Master不要执行此独占操作的写部分。
在独占读取后的某个时间,Master尝试对同一位置进行独占写入。 如果自独占读取后位置没有改变,则独占写入操作成功。 Slave返回 EXOKAY 响应,独占写入更新内存位置。(独占读取后,接着进行同一个地址的独占写,肯定能成功)
如果自独占读取后地址位置发生了变化,则独占写入尝试失败,Slave返回 OKAY 响应而不是 EXOKAY 响应。 独占写入尝试不会更新内存位置。(独占读取后,接着进行不同的地址的独占写,会失败)
Master可能无法完成独占操作的写入部分。 如果发生这种情况,Slave将继续监视地址的独占性,直到另一个独占读取启动新的独占访问。
在读部分完成之前,Master不得开始独占访问的写部分。(独占写的优先级小)
6.2.3 Slave角度的独占访问
不支持独占访问的Slave可以忽略 ARLOCK[1:0] 和 AWLOCK[1:0] 信号。它必须为正常和独占访问提供 OKAY 响应。
支持独占访问的Slave必须具有监视器硬件。建议这样的Slave为每个可以访问它的独占Master ID 设置一个监控单元。单端口Slave可以在Slave外部有一个标准的独占访问监视器,但多端口Slave可能需要内部监视。
独占访问监视器记录任何独占读操作的地址和 ARID 值。然后它会监视该位置,直到对该位置进行写入,或者直到另一个具有相同 ARID 值的独占读取将监视器重置为不同的地址。
当使用给定的 AWID 值发生独占写入时,监视器会检查该地址是否正在被监视以获取独占性。如果是,则这意味着该位置没有发生写入,并且独占写入继续进行,完成独占访问。Slave向Master返回 EXOKAY 响应。
如果在独占写入时不再监视地址,这意味着以下情况之一:
• 位置自独占读取后已更新
• 监视器已重置到另一个位置。
在这两种情况下,独占写入都不能更新地址位置,Slave必须返回 OKAY 响应而不是 EXOKAY 响应。
6.2.4 独占访问限制
以下限制适用于独占访问:
• 具有给定ID 的独占写入的大小和长度必须与具有相同ID 的前一个独占读取的大小和长度相同。
• 独占访问的地址必须与事务中的总字节数对齐。
• 独占读取和独占写入的地址必须相同。
• 独占访问读取部分的ARID 字段必须与写入部分的AWID 匹配。
• 独占访问的读和写部分的控制信号必须相同。
• 在独占访问突发中传输的字节数必须是2 的幂,即1、2、4、8、16、32、64 或128 个字节。
• 可在独占突发中传输的最大字节数为 128。
• ARCACHE[3:0] 或AWCACHE[3:0] 信号的值必须保证监控独占访问的Slave看到事务。例如,由Slave监视的独占访问不能具有指示事务可缓存的 ARCACHE[3:0] 或 AWCACHE[3:0] 值。
不遵守这些限制会导致不可预测的行为。
在独占操作期间要监视的最小字节数由事务的长度和大小定义。 可以监控更大数量的字节,最多 128 个,这是独占访问的最大值。 然而,这可能导致独占访问实际上成功但由于相邻字节被更新而被指示为失败的情况。
6.2.5 不支持独占访问的Slave
响应信号 BRESP[1:0] 和 RRESP[1:0] 包括成功正常访问的 OKAY 响应和成功独占访问的 EXOKAY 响应。 这意味着不支持独占访问的Slave可以提供 OKAY 响应以指示独占访问失败。
注意:
对不支持独占访问的Slave的独占写入总是更新内存位置。
只有当独占写入成功时,对支持独占访问的Slave的独占写入才会更新内存位置。
6.3 锁定访问
当事务的 ARLOCK[1:0] 或 AWLOCK[1:0] 信号表明它是锁定传输时,互连必须确保只有该Master被允许访问Slave区域,直到来自同一Master的解锁传输完成。互连内的仲裁器用于强制执行此限制。
当Master启动读或写事务的锁定序列时,它必须确保没有其他未完成的事务等待完成。
任何将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为指示锁定序列的事务都会强制互连锁定之后的事务。因此,锁定序列必须始终以未将 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为指示锁定访问的最终事务完成。此最终事务包含在锁定序列中并有效地移除锁定。(锁定的事务会强制将它之后的事务也锁定,所以如果想要移除锁定,需要把最后一个事务的 ARLOCK[1:0] 或 AWLOCK[1:0] 设置为未锁定。)
当完成一个锁定序列时,Master必须确保在发出最终解锁事务之前所有先前的锁定事务都已完成。然后,它必须确保在开始任何进一步的事务之前,最终的解锁事务已经完全完成。
Master必须确保锁定序列中的所有事务都具有相同的 ARID 或 AWID 值。
注意:
锁定访问要求互连防止在锁定序列进行时发生任何其他事务,因此会对互连性能产生影响。 建议锁定访问仅用于支持传统设备。
以下限制是推荐的,但不是强制性的:
• 将所有锁定的事务序列保持在同一个 4KB 地址区域内(减少互连影响?)
• 将锁定的事务序列限制为两个事务。
7. 响应信号
本章描述了 AXI 读写事务中的四个从响应。 它包含以下部分:
• 关于响应信令
• 响应类型。
7.1 关于响应信号
AXI 协议允许读取和写入事务的响应信号。 对于读取事务,来自Slave的响应信息与读取数据本身一起传递,但是对于写入,响应信息沿写入响应通道传送。
AXI 协议响应为:
• OKAY
• EXOKAY
• SLVERR
• DECERR.
表 7-1 显示了 RRESP[1:0] 和 BRESP[1:0] 信号的编码。
对于写事务,整个突发只给出一个响应,而不是突发内的每个数据传输。(一个突发一个响应,而不是突发中每个数据每个响应)
在读事务中,Slave可以对突发内的不同传输给出不同的响应。 例如,在 16 次读取传输的突发中,Slave可能会为 15 次传输返回 OKAY 响应,并为其中一次传输返回 SLVERR 响应。
该协议定义了必须执行所需数量的数据传输,即使报告了错误。 例如,如果从Slave请求读取 8 次传输,但Slave有错误情况,则Slave必须执行 8 次数据传输,每次传输都有错误响应。 如果Slave给出单个错误响应,则不会取消突发的剩余部分。
该协议对可以发出多个未完成地址并且还必须支持精确错误信号的Master施加了限制。 这样的Master必须能够处理较早传输的错误响应,而较晚的传输已经在进行中。
7.2 响应类型
本节介绍四种 AXI 协议响应类型:
• 正常访问成功
• 独占访问
• Slave错误
• 解码错误。
7.2.1 正常访问成功
OKAY 响应表明:
• 正常访问成功
• 独占访问失败
• 对不支持独占访问的Slave独占访问。
OKAY 是大多数事务的响应。
7.2.2 独占访问
EXOKAY 响应指示独占访问成功。
7.2.3 Slave 错误
SLVERR 响应指示不成功的事务。 Slave错误条件的示例是:
• FIFO/缓冲区溢出或欠载情况
• 尝试的传输大小不受支持
• 尝试对只读位置进行写访问
• Slave超时条件
• 尝试访问不存在寄存器的地址
• 尝试访问禁用或关闭的功能。
为了简化系统监控和调试,建议错误响应仅用于错误条件,而不是用于发出正常、预期事件的信号。
7.2.4 译码错误
在没有完全解码地址映射的系统中,可能存在没有Slave响应事务的地址。 在这样的系统中,互连必须提供合适的错误响应以将访问标记为非法,并防止系统通过尝试访问不存在的Slave而锁定。
当互连无法成功解码Slave访问时,它会有效地将访问路由到默认Slave,并且默认Slave返回 DECERR 响应。
一个实现选择是让默认Slave也记录解码错误的详细信息,以便以后确定错误是如何发生的。 这样,默认Master可以大大简化调试过程。
AXI 协议要求完成事务的所有数据传输,即使出现错误情况也是如此。 因此,任何提供 DECERR 响应的组件都必须满足此要求。
8. 顺序模型
本章介绍 AXI 协议如何使用事务 ID 标签来启用多个未完成地址的发布和无序事务处理。 它包含以下部分:
• 关于排序模型
• 传输 ID 字段
• 阅读排序
• 正常写入排序
• 写入数据交错
• 读写交互
• ID 字段的互连使用
• 推荐的 ID 字段宽度。
8.1 关于排序模型
AXI 协议支持无序事务完成和多个未完成地址的发送(如何理解??The AXI protocol enables out-of-order transaction completion and the issuing of multiple outstanding addresses.)。 这些特性能够实现高性能互连,最大限度地提高数据吞吐量和系统效率。
ID 信号通过使每个端口充当多个有序端口来支持无序事务。 所有具有给定 ID 的事务都必须排序,但对具有不同 ID 的事务的排序没有限制。 这五个事务ID 是:
AWID 信号写地址组的 ID 标签。
WID 写入事务的写入 ID 标记。 与写入数据一起,Master传输 WID 以匹配相应地址的 AWID。
BID 写响应的 ID 标签。 Slave传输一个 BID 以匹配它正在响应的事务的 AWID 和 WID。
ARID 信号读取地址组的 ID 标签。
RID 读取事务的读取 ID 标签。 Slave传输一个 RID 以匹配它正在响应的事务的 ARID。
注意:
Slave和Master不需要使用这些高级功能。 简单的Slave和Master可以按照它们发出的顺序一次处理一个事务。
发射多个未完成地址的能力意味着Master可以发射事务地址,而无需等待较早的事务完成。 此功能可以提高系统性能,因为它可以并行处理事务。
无序完成事务的能力意味着可以完成对较快内存区域的事务,而无需等待较早的事务对较慢的内存区域。 此功能还可以提高系统性能,因为它减少了事务延迟的影响。
注意:
事务的重新排序总是相对于其他事务。 没有用于在突发内重新排序数据传输的设施。 定义突发的地址和控制信号控制突发内的传输顺序。
8.2 传输 ID 字段
AXI 协议提供了一个 ID 字段,使Master能够发出多个单独的事务,每个事务必须按顺序返回。
master 可以使用事务的 ARID 或 AWID 字段来提供有关 master 排序要求的附加信息。 管理事务排序的规则如下:
• 来自不同Master的事务没有顺序限制。他们可以按任何顺序完成。
• 来自同一Master但具有不同 ID 值的事务没有排序限制。他们可以按任何顺序完成。
• 具有相同 AWID 值的一系列写入事务的数据必须按照master发出地址的相同顺序完成。
• 具有相同ARID值的一系列读事务的数据必须按照以下顺序返回:
— 当具有相同 ARID 的读取来自同一slave时,slave必须确保读取数据以与接收地址相同的顺序返回。
— 当具有相同 ARID 的读取来自不同的salve时,互连必须确保读取数据的返回顺序与master发出地址的顺序相同。
• 具有相同AWID 和ARID 的读和写事务之间没有顺序限制。如果 master 需要排序限制,那么它必须确保在发出第二个事务之前完全完成第一个事务。
8.3 读排序
在Master接口上,来自具有相同 ARID 值的读取事务的读取数据必须以与master接口发出地址相同的顺序到达。具有不同 ARID 值的读取事务的数据可以以任何顺序返回,也可以将具有不同 ARID 字段的事务的读取数据交错。
Slave必须按照接收地址的相同顺序,从具有相同 ARID 值的一系列读取事务中返回读取数据。在具有不同 ARID 值的读取事务序列中,Slave可以以与事务到达的顺序不同的顺序返回读取数据。
Slave必须确保任何返回读取数据的 RID 值与其响应的地址的 ARID 值匹配。
互连必须确保来自不同Slave的具有相同 ARID 值的读取事务序列按顺序完成。
读数据重排序深度是指从Slave中可被重排序的待处理地址的数量。按顺序处理所有事务的Slave的读取数据重新排序深度为 1。读取数据重新排序深度是一个静态值,必须由Slave设计者指定。
8.4 正常写入排序
如果Slave不支持写入数据交错,则Master必须以其发出事务地址的相同顺序发出写入事务的数据。
大多数Slave设计不支持写入数据交错,因此这些类型的Slave设计必须按照它们接收地址的相同顺序接收写入数据。 如果互连将来自不同Master的写事务合并到一个Slave,则必须确保它按地址顺序合并写入数据。
即使写入事务具有不同的 AWID 值,这些限制也适用。
8.5 写入数据交错
写入数据交错使Slave接口能够接受具有不同 AWID 值的交错写入数据。 Slave声明写入数据交错深度,指示接口是否可以接受来自具有不同 AWID 值的源发出的交错写入数据。 写入数据交错深度是静态配置的。 缺省情况下,任一接口的写数据交错深度为1。
注意:
不允许交错具有相同 AWID 的不同事务的写入数据。(不同事务但是AWID相同时,不能交错)
写数据交错深度是当前在Slave接口中可以提供写数据的不同地址的数量。例如,一个写数据交错深度为2的Slave有4个不同的地址,所有地址都具有不同的 AWID 值,挂起可以接受前两个挂起地址中的任何一个的数据。
Slave接收每个事务的第一个数据项的顺序必须与它接收事务地址的顺序相同。
写入数据交错可以防止当多个互连组合发往同一个Slave的写入数据流时,发生停顿。 互连可能将来自慢速源的一个写入数据流和来自快速源的另一个写入数据流组合在一起。 通过交错两个写入数据流,可以提高系统性能。
注意:
如果具有不同 AWID 值的两个写入事务访问相同或重叠的地址位置,则未定义处理顺序。 更高级别的协议必须确保事务处理的正确顺序。
能够生成仅具有一个 AWID 值的写数据的Master接口会按照其发出地址的相同顺序生成所有写数据。 但是,如果Slave接口的写入数据交错深度大于 1,则Master接口可以使用不同的 WID 值交错写入数据。
对于大多数可以在内部控制写入数据生成的Master,写入数据交错是没有必要的。 这样的Master可以按照它生成地址的相同顺序生成写数据。 但是,以不同速度从多个源传递写入数据的Master接口可以交错这些源以最大限度地利用互连。
为避免死锁情况,Slave接口必须具有大于 1 的写入交错深度,前提是它可以连续接受交错写入数据。 Slave接口绝不能为了改变写入数据的顺序而停止接受写入数据。
8.6 读写交互
读和写事务之间没有顺序限制,它们可以以任何顺序完成。
如果Master需要给出读取和写入事务之间的关系,则它必须确保在发出较晚的事务之前完成较早的事务。在读取的情况下,当最后读取的数据返回到Master时,可以认为较早的事务已完成。在写的情况下,只有当Master收到写响应时才认为事务完成,当所有写数据都发送时认为写事务完成是不可接受的。
对于外设占用的地址区域,这通常意味着在需要排序限制的读写事务之间切换时,等待较早的事务完成。
对于内存区域,Master可以对未完成的事务执行地址检查,以确定新事务是否可能位于相同或重叠的地址区域。如果事务不重叠,则新事务可以开始而无需等待较早的事务完成。
8.7 ID 字段的互连使用
当Master接口连接到互连时,互连将附加位附加到该Master端口唯一的 ARID、AWID 和 WID 字段。
这有两个影响:
• Master不必知道其他Master使用什么 ID 值,因为互连在将Master编号附加到字段时使 ID 值唯一。
• Slave接口的ID 字段宽度比Master接口的ID 字段宽。
对于读取数据,互连使用 RID 字段的附加位来确定读取数据的目的地是哪个Master端口。 在将 RID 值传递到正确的Master端口之前,互连会删除 RID 字段的这些位。
8.8 ID 字段的推荐宽度
要利用 AXI 乱序事务功能,请使用以下建议:
• 在master组件中实现最多四位的事务 ID。
• 为互连中的master端口号实现最多四个额外的事务 ID 位。
• 在Slave组件中实现八位 ID 支持。
对于仅支持单个有序接口的master,可以将 ID 输出绑定到一个常量值,例如 0。
对于不使用排序信息而只是按顺序处理所有事务的Slave,可以使用标准的现成模块为Slave添加 ID 功能,从而可以设计不存在 ID 信号的基本功能 Slave。
9. 数据总线
本章描述了 AXI 读写数据总线上不同大小的传输,以及接口如何使用字节不变字节序来处理混合字节序传输。
它包含以下部分:
• 关于数据总线
• 写选通
• 窄传输
• 字节不变性
9.1 关于数据总线
AXI协议有两条独立的数据总线,一条用于读数据,一条用于写数据。 因为这些数据总线有自己独立的握手信号,所以有可能同时在两条总线上进行数据传输。
Master产生的每个传输必须与传输的数据总线宽度相同或更窄。
9.2 写选通
写选通信号 WSTRB 可以使能写数据总线上的稀疏数据传输。 每个写选通信号对应写数据总线的一个字节。 置位时,写选通指示数据总线的相应字节通道包含要在内存中更新的有效信息。
写数据总线的每8位有一个写选通,所以WSTRB[n]对应WDATA[(8×n)+7:(8×n)]。 图 9-1 显示了 64 位数据总线上的这种关系。
Master必须确保写选通仅针对可以包含由事务的控制信息确定的有效数据的字节通道。
9.3 窄传输
当Master产生比其数据总线窄的传输时,地址和控制信息决定传输使用哪些字节通道。 在递增或回环突发时,不同的字节通道在突发的每个节拍上传输数据。 在固定突发中,地址保持不变,可以使用的字节通道也保持不变。
图 9-2 和图 9-3 给出了两个字节通道使用示例。
在图 9-2 中:
• 突发有五次传输
• 起始地址为 0
• 每次传输为八位
• 传输在 32 位总线上进行。
在图 9-3 中:
• 突发具有三个传输
• 起始地址为 4
• 每次传输都是 32 位
• 传输在 64 位总线上进行。
9.4 字节不变性
为了访问保存在同一内存空间中的混合端数据结构,AXI 协议使用字节不变端方案。
字节不变的字节序意味着到给定地址的字节传输会将相同数据总线上的八位数据传递到相同的地址位置。
只有一种传输宽度的组件必须将其字节通道连接到数据总线的相应字节通道。支持多种传输宽度的组件可能需要更复杂的接口来转换不是自然字节不变的接口。
大多数小端组件可以直接连接到字节不变的接口。仅支持大端传输的组件需要一个用于字节不变操作的转换函数。
图 9-4 是一个需要字节不变访问的数据结构示例。标头信息(例如源和目标标识符)可能采用小端格式,但有效负载是大端字节流。(大端为数据高字节保存在内存低地址位;小端位数据高字节保存在内存高地址位;)
字节不变性确保对部分标头信息的小端访问不会破坏结构中的其他大端数据。
10.未对齐传输
本章介绍 AXI 协议如何处理未对齐的传输。 它包含以下部分:
• 关于未对齐的传输
• 例子
10.1 关于未对齐传输
AXI 协议使用基于突发的寻址,这意味着每个事务由多个数据传输组成。 通常,每个数据传输都与传输大小对齐。 例如,32 位宽的传输通常与四字节边界对齐。 但是,有时需要在未对齐的地址处开始突发。
对于由宽度大于一个字节的数据传输组成的任何突发,必须访问的第一个字节可能与自然数据宽度边界不对齐。 例如,从 0x1002 字节地址开始的 32 位(四字节)数据包与 32 位边界不对齐。
AXI 协议使Master能够使用低阶地址线为突发发送未对齐的起始地址。 低位地址线上的信息必须与字节通道选通上包含的信息一致。
注意:
AXI 协议不要求Slave根据来自Master的任何对齐信息采取特殊操作。
Master还可以简单地提供对齐的地址,并且在写入事务中,依靠字节通道选通来提供有关数据正在使用哪些字节通道的信息。
10.2 示例
图 10-1、图 10-2 和图 10-3 显示了不同宽度总线上对齐和未对齐传输的示例。 图中的每一行代表一次转移。 基于地址和控制信息,阴影单元表示未传输的字节。
图 10-2 显示了 64 位总线上的三个 32 位传输突发。
图 10-3 显示了 64 位总线上 32 位传输的回环突发。
11. 时钟和复位
本章介绍 AXI 时钟和复位信号的时序。 它包含以下部分:
• 时钟和复位要求。
11.1 时钟和复位要求
本节给出了实现 ACLK 和 ARESETn 信号的要求。
11.1.1 时钟
每个 AXI 组件使用一个单一的时钟信号 ACLK。 所有输入信号都在 ACLK 的上升沿采样。 所有输出信号的变化都必须发生在 ACLK 的上升沿之后。
Master接口和Slave接口上的输入和输出信号之间不得有组合路径。
11.1.2 复位
AXI 协议包括一个单一的低电平有效复位信号 ARESETn。 复位信号可以异步置位,但置位必须在 ACLK 上升沿后同步。
在复位期间,以下接口要求适用:
• Master接口必须驱动 ARVALID、AWVALID 和 WVALID LOW。
• Salve接口必须将RVALID 和BVALID 驱动为低电平。
所有其他信号都可以驱动为任何值。 只有在 ARESETn 为高电平后的 ACLK 上升沿,Master接口才必须开始将 ARVALID、AWVALID 或 WVALID 驱动为高电平。 图 11-1 显示了复位后的第一个点,即 ARVALID、AWVALID 或 WVALID 可以被驱动为高电平。
12. 低功耗接口
本章介绍进入和退出低功耗状态期间的 AXI 协议时钟控制接口。 它包含以下部分:
• 关于低功耗接口
• 低功耗时钟控制。
12.1 关于低功耗接口
低功耗接口是针对两类不同外设的数据传输协议的可选扩展:
• 需要断电序列并且只有在进入低功耗状态后才能关闭时钟的外设。 这些外设需要来自系统时钟控制器的指示来确定何时启动掉电序列。
• 没有断电序列的外设,可以独立指示何时可以关闭其时钟。
12.2 低功耗时钟控制
低功耗时钟控制接口由以下信号组成:
• 来自外设的信号,指示何时可以启用或禁用其时钟
• 系统时钟控制器请求退出或进入低功耗状态的两个握手信号。
时钟控制接口中的主要信号是 CACTIVE。外设使用此信号来指示何时需要启用其时钟。外设置位 CACTIVE 以指示它需要时钟,并且系统时钟控制器必须立即启用时钟。外设复位 CACTIVE 以指示它不需要时钟。然后系统时钟控制器可以确定是启用还是禁用外设时钟。
可以随时启用或禁用其时钟的外设可以永久驱动 CACTIVE LOW。必须始终启用其时钟的外设必须永久驱动 CACTIVE HIGH。
这种简单的系统时钟控制器接口对于一些没有掉电或上电序列的外设来说已经足够了。
对于具有掉电或上电序列的更复杂的外设,只有在系统时钟控制器发出请求后才会进入低功耗状态。 AXI 协议提供双线请求/确认握手来支持此请求:
CSYSREQ 为了请求外设进入低功耗状态,系统时钟控制器将 CSYSREQ 信号驱动为低电平。 在正常操作期间,CSYSREQ 为高电平。
CSYSACK 外设使用 CSYSACK 信号来确认低功耗状态请求和退出低功耗状态。
CSYSREQ 和 CSYSACK 的关系如图 12-1 所示。
在图 12-1 中的序列开始时,对于正常时钟操作,CSYSREQ 和 CSYSACK 均为高电平。 在时间 T1,系统时钟控制器解除 CSYSREQ 置位,指示将外设置于低功耗状态的请求。 外设在时间 T2 时通过解除 CSYSACK 确认请求。 在 T3,系统时钟控制器置位 CSYSREQ 以指示退出低功耗状态,外设在 T4 置位 CSYSACK 以确认退出。(CSYREQ和CSYSACK为低时,外设进入低功耗)
CSYSREQ 和 CSYSACK 之间的这种关系是 AXI 协议的要求。
外设可以接受或拒绝来自系统时钟控制器的低功耗状态请求。 当外设通过解除 CSYSACK 置位确认请求时,CACTIVE 信号的电平指示接受或拒绝请求。
12.2.1 接受低功耗请求
图 12-2 显示了外设接受系统低功耗请求时的事件序列。
在图 12-2 中,当系统时钟控制器将 CSYSREQ 置为无效以请求外设进入低功耗状态时,该序列从 T1 开始。 在外设识别出请求后,它可以执行掉电功能并取消激活 CACTIVE。 然后外设在 T3 时取消声明 CSYSACK 以完成进入低功耗状态。
在 T4,系统时钟控制器通过置位 CSYSREQ 开始低功耗状态退出序列。 然后外设在 T5 置位 CACTIVE,并通过置位 CSYSACK 在 T6 完成退出序列。
12.2.2 拒绝低功耗请求
图 12-3 显示了外设拒绝系统低功耗请求时的事件序列。
在图 12-3 中,外设通过在确认低功耗请求时将 CACTIVE 保持为高电平来拒绝低功耗请求。 在那之后,系统时钟控制器必须通过置位 CSYSREQ 来完成低功耗请求握手,然后才能发起另一个请求。(当CSYSREQ拉低,给外设低功耗条件时,但是外设拒绝低功耗请求CACTIVE为高,则若想要再次要求外设低功耗,也需要CSYSREQ置位后,重新拉低)
12.2.3 退出低功耗状态
系统时钟控制器或外设都可以请求退出低功耗状态并恢复时钟。 根据定义,CACTIVE 和 CSYSREQ 在低功率状态期间均为低电平,驱动这两个信号之一为高电平会启动退出序列。
系统时钟控制器可以通过启用时钟并将 CSYSREQ 驱动为高电平来启动退出低功耗状态。 然后外设可以执行一个上电序列,在该序列中它驱动 CACTIVE HIGH。 然后它通过驱动 CSYSACK HIGH 完成退出。
外设可以通过驱动 CACTIVE HIGH 启动退出低功耗状态。 然后系统时钟控制器必须立即恢复时钟。 它还必须将 CSYSREQ 驱动为高电平以继续握手序列。 然后外设通过在退出低功耗状态时将 CSYSACK 驱动为高电平来完成序列。 外设可以在完成退出序列所需的多个周期内将 CSYSACK 保持为低电平。
12.2.4 时钟控制序列总结
图 12-4 显示了进入和退出低功耗状态的典型流程。
12.2.5 在低功耗域中组合外设
系统时钟控制器可以在同一个低功耗时钟域内组合许多不同的外设。 如果遵守以下规则,则可以将时钟域视为单个外设:
• 时钟域CACTIVE 信号是时钟域内所有CACTIVE 信号的逻辑或。 这意味着系统时钟控制器只能在所有外设指示可以禁用时钟时才能禁用时钟。
• 系统时钟控制器可以使用路由到时钟域内所有外设的单个CSYSREQ 信号。
• 时钟域 CSYSACK 信号生成如下:
— 当所有外设的最后一个下降沿出现时,CSYSACK 的下降沿出现
— 当所有外设的最后一个上升沿出现时,CSYSACK 的上升沿出现。
AXI 协议翻译介绍的更多相关文章
- 关于 AXI协议的学习解释说明
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture ...
- AXI协议(一)
最近弄Zynq,不懂AXI协议Zynq很难玩儿的转.这些笔记主要攻克AXI中的一些难题. 所有的AXI4包含了5个不同的通道: (1)读/写地址通道(Read/Write address ch ...
- http2协议翻译(转)
超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...
- 转)TNS协议--翻译自《The Oracle Hackers Handbook》
在开发源工具解决Oracle中的问题时,必须了解TNS协议.在努力理解TNS协议的时候,Oracle JDBC驱动程序(classes12.zip)会是一个很有用的资源TNS头. 每个TNS包都有一个 ...
- 《wifi加密破解论文》翻译介绍-wifi不再安全
前言 wifi的加密协议WPA2已经被破解,影响范围包括所有支持wifi的设备,包括Android,Linux,Apple,Windows,OpenBSD,联发科技,Linksys等.其中对Andro ...
- zigbee学习之路(十二):zigbee协议原理介绍
一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...
- PBAP 1.0协议翻译(Part1)
添加vCard3.0 Spec的链接- http://tools.ietf.org/html/rfc2425- http://tools.ietf.org/html/rfc2426 寻找最新的Spec ...
- iOS:核心动画具体的类和协议的介绍
核心动画类:CAAnimation.CAPropertyAnimation.CABasicAnimation.CAKeyframeAnimation.CATransition.CAAnimationG ...
- 基于HTTP 协议认证介绍与实现
导言 一直对http 的头认证有兴趣,就是路由器的那种弹出对话框输入账号密码怎么实现一直不明白,最近,翻了一下http 协议,发现这是一个RFC 2617的实现,所以写篇文章介绍一下吧. Http基本 ...
- HTTP协议发展介绍
HTTP协议工作于C/S架构上,是万维网服务器传输超文本到本地客户端的一种应用层协议,全称是:Hyper Text Transfer Protocol(超文本传输协议),HTTP是基于TCP/IP通信 ...
随机推荐
- Ansible-playbook 快速入门到放弃
Ansible-playbook 快速入门到放弃 隔岸红尘忙似火,当轩青嶂冷如冰. 1-简介 playbook 相当于可以把模块命令都写入到配置文件里面,这样就可以直接执行配置文件了,类似脚本. 2- ...
- Gateway集成Netty服务
目录 一.Netty简介 二.Netty入门案例 1.服务端启动 2.通道初始化 3.自定义处理器 4.测试请求 三.Gateway集成 1.依赖层级 2.自动化配置 四.配置加载 1.基础配置 2. ...
- PostgreSQL TOAST技术解析
一.TOAST是什么? TOAST是"The Oversized-Attribute Storage Technique"(超尺寸字段存储技术)的缩写,主要用于存储一个大字段的值. ...
- ABP微服务系列学习-搭建自己的微服务结构(一)
在原本的结构里面,由于默认服务引用的都是ABP原生的模块,所以结构目录里面没有包含modules目录,这里我们添加一个modules目录,用于存放我们的自定义模块.在shared里面,我们再抽一个Ev ...
- ASP.NET Core - 配置系统之配置读取
一个应用要运行起来,往往需要读取很多的预设好的配置信息,根据约定好的信息或方式执行一定的行为. 配置的本质就是软件运行的参数,在一个软件实现中需要的参数非常多,如果我们以 Hard Code(硬编码) ...
- JavaScript 中的一些奇怪问题
JavaScript 中的一些奇怪问题 JavaScript 在开发过程中可能会出现很多奇怪的问题,以下是一些示例: 1.变量提升问题: 变量提升是 JavaScript 中一个常见的问题,特别是当没 ...
- android 上传文件到服务器,FTP方式
public class UploadFileUtils { private static boolean flag; /** * 需在在子线程下执行 * pathname 为:服务器存储地址 ,re ...
- C#辗转相除法输出最大公约数
void main() { int r, m, n, t; scanf_s("%d\n%d", &m, &n); if (m < n) { t = m; m ...
- 一些常用计算机快捷键和dos命令
1.window常用快捷键 ctrl V 粘贴 ctrl C 复制 ctrl A 全选 ctrl X 剪切 ctrl Z 撤销 ctrl S 保存 ALT F4 关闭窗口 shirt delete 永 ...
- linux ubuntu 连接mysql
linux ubuntu server sudo apt update -ysudo apt list --upgradable sudo apt upgrade -ysudo apt install ...