本小节重点讲述了AXI规范中的基本构成和基本协议,比如经典的握手协议以及尊徐的规范。
A3、Single Interface Requirements
本章描述了单个主设备和从设备之间基本的 AXI 协议事务基本要求。包含以下几个部分:
- 时钟和复位
- 基本读写事务
- 通道之间的关系
- 事务结构
A3.1 Clock and reset
本节描述了实现 AXI 全局时钟和复位信号 ACLK 和 ARESETn 的要求。
A3.1.1 Clock
每个 AXI 接口都有一个时钟信号 ACLK。
- 所有输入信号都在 ACLK 的上升沿进行采样。
- 所有输出信号的变化只能在 ACLK 的上升沿之后发生。
- 在主接口和从接口之间,输入信号和输出信号之间不能存在组合逻辑。[1]
A3.1.2 Reset
AXI 协议使用一个单一的低电平有效复位信号 ARESETn。复位信号可以异步有效,但解除复位只能与 ACLK 的上升沿同步。
在复位期间,接口有以下要求:
- 主接口必须将 ARVALID、AWVALID 和 WVALID 置为低电平。
- 从接口必须将 RVALID 和 BVALID 置为低电平。
- 所有其他信号可以为任何值,没有要求。
在复位后,主设备可以将 ARVALID、AWVALID 或 WVALID 置为高电平的最早时刻是在 ARESETn 变为高电平后的第一个ACLK 上升沿。图 A3-1 显示了复位后 ARVALID、AWVALID 或 WVALID 可以被置为高电平的最早时刻。
- 注:复位异步复位同步释放、或者同步复位同步释放;
- AXI 协议强调时序和信号的稳定性。为了确保数据传输的可靠性,输入信号的变化和输出信号的驱动应该是同步的,即所有信号的采样和驱动都应在时钟信号的控制下进行。这种做法可以避免在时钟周期内发生不可预测的信号变化,保证信号在有效的时钟边缘稳定。
- 为了遵循 AXI 协议的规范,设计时应确保输入信号和输出信号通过时钟触发的寄存器进行连接,而不是直接通过组合逻辑连接。这意味着主设备和从设备的接口设计应当保持信号的独立性,通过时钟周期进行同步。
- 设计时,推荐设备发出的信号都是通过ACLK同步后的信号,设备接收的信号经过ACLK后进行使用。
A3.2 Basic read and write transactions
本小节定义了AXI事务传输的规则。包括握手机制和各个通道上的信号规范。
A3.2.1 Handshake process
所有的事务通道使用相同的 VALID/READY 握手机制来进行地址、数据和控制信息的传输。这是一种双向流控制机制,主设备和从设备都可以控制信息传输的速率。信号发出端生成 VALID 信号,用来指示地址、数据或控制信息何时可用。信号接收端生成READY信号,用来指示何时可以接收信息。
- 只有当 VALID 和 READY 信号同时为高电平时,事务传输才有效。
- 在主接口和从接口之间,输入信号和输出信号之间必须没有组合逻辑路径。
图 A3-2 到图 A3-4(第 A3-42 页)展示了握手过程的示例。
(1)信号发送端在时刻 T1 之后提供信息,并置位 VALID 信号。
(2)信号接收端在 时刻T2 之后置位 READY 信号。
(3)信号发送端必须保持其信息的稳定,直到在 T3 时事务传输有效,此时该置位信号被识别。
- 信号发送端不允许等待 READY 信号被拉高位后再拉高 VALID 信号。
当 VALID 信号被拉高时,必须保持住该信号的有效状态,直到在时钟上升沿发生握手,此时 VALID 和 READY 信号均被拉高。
在图 A3-3 中,信号接收端在时刻T1 之后拉高READY 信号,而在地址、数据或控制信息有效之前。该置位表示它可以接受信息。信号发送端在 T2 之后提供信息并拉高VALID 信号,然后在 T3 时传输发生,此时该置位信号被识别。在这种情况下,传输在一个周期内完成。
- 信号接收端允许在VALID 信号被拉高后再拉高相应的READY信号。
如果 READY 信号被拉高,它也可以在 VALID 信号拉高之前取消 READY 信号。
在图 A3-4 中,信号发送端和信号接收端恰好在 时刻T1之后都表示它们可以传输地址、数据或控制信息。在这种情况下,传输发生在时钟上升沿,当 VALID 和 READY 信号的置位都能被识别时。这样的置位表示传输发生在 T2。
注: VALID和READY握手机制的原则是
1、任何事务的传输必须在 VALID和READY同时有效时发生,且一个有效周期传输一个事务;
2、信号发送端的VALID信号必须不能依赖于信号接收端的READY信号;
3、信号接收端的READY信号可以依赖于信号接发送的VALID信号;
2/3这样做的目的是为了避免: 如果发送端依赖于接收端的ready,并且接收到也依赖于发送端的valid的,这样就形成了死锁,导致数据发送不出去了。
A3.2.2 Channel signaling requirements
通道握手信号
每一个通道都包含VALID和READY的握手信号,如下表所示:
写地址通道
主设备仅在其需要发送有效地址和控制信息时才能拉高AWVALID 信号。当AWVALID 被拉高时, 必须保持置位状态,直到从设备拉高AWREADY 后的上升时钟边缘为止。
AWREADY 的默认状态可以是高或低。本规范建议将默认状态设置为高。当 AWREADY 为高时,从设备必须能够接收主设备发送的所有有效地址。
NOTE: 本规范不建议将 AWREADY 的默认状态设置为低,因为这会导致传输至少需要两个时钟周期来完成事务传输:一个周期用于拉高AWVALID,另一个周期用于拉高 AWREADY。
写数据通道
在写突发期间,主设备只有在需要发送有效的写数据时才能拉高 WVALID 信号。一旦置位,WVALID 必须保持置位状态,直到从设备拉高WREADY 后的时钟上升沿位置。
WREADY 的默认状态可以是高电平或者低电平,但前提是从设备能够始终在一个周期内接受写数据。主设备在驱动突发传输的最后一次写传输时,必须置位 WLAST 信号。
本规范建议在无效的字节通道上将 WDATA 驱动为零。
写响应通道
从设备仅在其需要发送有效的写响应时才能拉高 BVALID 信号。当该信号被置位时,BVALID 必须保持置位状态,直到主设备置位 BREADY 后的上升时钟边缘为止。
BREADY 的默认状态可以为高,但前提是主设备始终能够在一个周期内接受写响应。
读地址通道
主设备仅在其需要发送有效的地址和控制信息时才能拉高 ARVALID 信号。当该信号被置位时,ARVALID 必须保持置位状态,直到从设备拉高 ARREADY 信号后的上升时钟边缘为止。
ARREADY 的默认状态可以是高或低。本规范建议将默认状态设置为高。如果 ARREADY 为高,则从设备必须能够接受呈现给它的任何有效地址。
NOTE:本规范不建议将 ARREADY 的默认值设置为低,因为这会导致传输至少需要两个周期:一个周期用于置位 ARVALID,另一个周期用于置位 ARREADY。
读数据通道
从设备仅在其需要发送有效的读数据时才能拉高 RVALID 信号。当该信号被置位时,RVALID 必须保持置位状态,直到主设备置位 RREADY 后的上升时钟边缘为止。即使从设备只有一个读数据源,它也必须仅在响应数据请求时置位 RVALID 信号。
主接口使用 RREADY 信号来指示它能够接受数据。RREADY 的默认状态可以为高,但前提是主设备能够在开始读事务时立即接受读数据。
从设备在驱动突发传输中的最后一次读传输时必须置位 RLAST 信号。本规范建议,对于非活动的字节通道,RDATA 应驱动为零。
注:
- 任何通道的VALID信号只有在需要发送数据或信息的时候才能拉高;
- 发送数据或者信息需要一个时钟周期,该周期是READY和VALILD同时为高的周期;
- 设备如果能够接收请求,则建议WREADY置高;如果无法继续处理后续事务,则可以接收完第一笔请求后再将READY拉低。
A3.3 Relationships between the channels
AXI 协议要求维护以下通道之间的依赖关系:
- 写响应通达必须始终在写事务的最后一次写传输之后才能发送响应信号。
- 读数据通道必须始终在数据的读地址之后才能发送信号。
- 通道握手必须符合本小节中定义的依赖关系。
- 该协议不定义其他的通道依赖关系。
例如,写数据通道的信号可以在写地址通道之前出现在接口上。这种情况可能发生在写地址通道的寄存器级数多于写数据通道时。类似地,写数据可能会在与地址相同的周期内出现。
NOTE:当互连组件已经知道目标地址空间或从设备地址空间时,互联组件需要对地址和写数据进行重新对齐。这种重新对齐可以确保写数据仅对其目标从设备有效。
- 当主设备发出写请求时,必须能够提供该事务的所有写数据,而不能依赖于该主设备的其他事务。
- 当主设备发出读请求时,必须能够接受该事务的所有读数据,而不能依赖于该主设备的其他事务。
请注意:主设备接收相同ID的事务按顺序返回的读数据时,数据之前可以有依赖关系的,即主设备可以等到前面的ID数据来到后再接收下一个ID的读数据。此时主设备只需要有足够的存储空间来存储来自不同 ID 的事务的读数据即可。
A3.3.1 Dependencies between channel handshake signals
为了防止死锁情况发生,握手信号必须遵循规定的依赖规则。在任何事务中:
- 发送信息的 AXI 接口的 VALID 信号不应依赖于接收该信息的 AXI 接口的 READY 信号。
- 接收信息的 AXI 接口可以等待检测到 VALID 信号后,再置位其对应的 READY 信号。
NOTE:在置位 READY 信号之前等待 VALID是可以接受的。在检测到相应的 VALID 信号之前置位 READY 也是可以接受的,这样可以使得设计更高效。
此外,不同通道的握手信号之间也存在依赖关系,AXI4 定义了额外的写响应依赖关系。见后续章节。
死锁:从设备等待主设备的valid信号,主设备同时也在等待从设备的ready信号,则死掉了。
下面以关系图的方式来阐述,在依赖关系图中:
- 单头箭头指向的信号:可以在箭头起点信号之前或之后置位。
- 双头箭头指向的信号:必须在箭头起点信号置位后才能置位的信号。
Read transaction dependencies
图 A3-5 显示了读事务的握手信号之间的依赖关系:
- 主设备在置位 ARVALID 之前不得等待从设备置位 ARREADY。
- 从设备可以等待 ARVALID 被置位后,再置位 ARREADY。
- 从设备可以在 ARVALID 被置位之前置位 ARREADY。
- 从设备必须等待 ARVALID 和 ARREADY 都被置位后,才能置位 RVALID,以表示数据可用。
- 从设备不得等待主设置位 RREADY 后再置位 RVALID。
- 主设备可以在 RVALID 被置位后再置位 RREADY。
- 主设备可以在 RVALID 被置位之前置位 RREADY。
AXI3 write transaction dependencies
图 A3-6 显示了写事务的握手信号依赖关系:
- 主设备在置位 AWVALID 或 WVALID 之前不得等待从设备置位 AWREADY 或 WREADY。
- 从设备可以等待 AWVALID 或 WVALID,或两者都被置位后,再置位 AWREADY。
- 从设备可以在 AWVALID 或 WVALID,或两者都被置位之前,置位 AWREADY。
- 从设备可以等待 AWVALID 或 WVALID,或两者都被置位后,再置位 WREADY。
- 从设备可以在 AWVALID 或 WVALID,或两者都被置位之前,置位 WREADY。
- 从设备必须等待 WVALID 和 WREADY 都被置位后,才能置位 BVALID。从设备还必须等待 WLAST 被置位后,才能置位 BVALID。等待是必要的,因为写响应 BRESP 必须在写事务的最后一次数据传输后才被赋值。
- 从设备不得等待主设备断言 BREADY 后再置位 BVALID。
- 主设备可以在 BVALID 被置位后再置位 BREADY。
- 主设备可以在 BVALID 被置位之前置位 BREADY。
特注意:必须遵守依赖规则以防止死锁情况的发生。例如,主设备在驱动 WVALID 之前,不能等待 AWREADY 信号被置位。如果从设备在置位 AWREADY 之前等待 WVALID,就可能发生死锁情况。
AXI4 and AXI5 write transaction dependencies
AXI4 和 AXI5 定义了额外的从设备写响应依赖关系。
- 从设备必须在置位 AWVALID、AWREADY、 WVALID 和 WREADY 后,才能置位 BVALID。
- 通过发出写响应,从设备负责对所有后续事务进行写事务的危害检查。
这一额外的要求作为AXI3的补充,避免了从设备在接收到地址信息之后就发送写响应,但此时却无法处理后面的写数据的情况。
图 A3-7 显示了 AXI4 和 AXI5 所需的从设备写响应握手依赖关系。
这些依赖关系包括:
- 主设备在置位 AWVALID 或 WVALID 之前,不得等待从设备置位 AWREADY 或 WREADY。
- 从设备可以在置位 AWREADY 之前等待 AWVALID 或 WVALID,或两者均等待。
- 从设备可以在 AWVALID 或 WVALID 置位之前,或者两者均未置位的情况下置位 AWREADY。
- 从设备可以在置位 WREADY 之前等待 AWVALID 或 WVALID,或两者均等待。
- 从设备可以在 AWVALID 或 WVALID 置位之前,或者两者均未置位的情况下置位 WREADY。
- 从设备必须在置位 AWVALID、AWREADY、WVALID 和 WREADY 后,才能置位 BVALID。
从设备还必须在置位 BVALID 之前等待 WLAST 被置位。这一等待是因为写响应 BRESP 只能在写事务的最后一次数据传输后发出。 - 从设备不得在置位 BVALID 之前等待主设备置位 BREADY。
- 主设备可以在置位 BREADY 之前等待 BVALID。
- 主设备可以在 BVALID 被置位之前置位 BREADY。
A3.3.2 Legacy considerations
在 AXI4 和 AXI5 的写事务依赖关系中,一个符合AXI3协议的从设备可以在接收到所有写数据和写地址之前提供写响应,这一行为将不再符合AXI4或者AXI5协议(这会导致AXI4/AXI5的主设备在连接AXI3从设备时,发生不可预期问题)。因此,将 AXI3 旧版从设备连接到 AXI4 或 AXI5主设备上时 需要添加一个转发器,这个转发器确保在从设备接受了适当的地址之前,不会提供返回的写响应。
NOTE:本规范强烈建议任何新的 AXI3 从设备实现都应包括这一额外依赖关系。
任何 AXI3 主设备都可以直接连接 AXI4 和 AXI5 的从设备。
标签:置位,WVALID,VALID,信号,讲解,READY,AXI,AMBA,设备 From: https://blog.csdn.net/why584691794/article/details/143279404