大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁。
上一课时我们初步了解了AXI4总线中的“社交礼仪”握手机制的3种情况,对他们有了初步的认识,这一课时我们来聊一聊AXI4总线握手机制在不同通道的注意事项,深入的了解握手机制。
这里会有一系列的课程,和大家分享AMBA总线家族,欢迎大家一起学习,收藏点赞。
系列文章
【总线】AMBA总线架构的发展历程-CSDN博客
【总线】设计fpga系统时,为什么要使用总线?-CSDN博客
【总线】AXI总线:FPGA设计中的通信骨干-CSDN博客
【总线】AMBA总线家族的明星成员:AXI协议简介-CSDN博客
【总线】AXI4第一课时:揭秘AXI4总线的五大独立通道-CSDN博客
【总线】AXI4第二课时:深入AXI4总线的基础事务-CSDN博客
【总线】AXI4第三课时:握手机制-CSDN博客
【总线】AXI4第四课时:握手机制详解-CSDN博客
【总线】AXI4第五课时:信号描述-CSDN博客
目录
不同通道的握手
写地址管道
写数据管道
写相应管道
读地址管道
读数据管道
通道间的关系
握手信号之间的依赖关系
不同通道的握手
写地址管道
-
AWVALID信号的断言:
主设备只能在提供了有效的地址和控制信息后,才能断言(即置为高电平)AWVALID信号。这意味着主设备准备好发送一个事务请求。 -
AWVALID信号的持续:
AWVALID信号必须保持被断言状态,直到从设备接受这个地址和控制信息,并通过断言(置为高电平)其对应的AWREADY信号来表示它已经准备好处理这个事务。 -
AWREADY信号的默认值:
AWREADY信号的默认值可以是高电平(HIGH)或低电平(LOW)。推荐使用高电平作为默认值,这表示从设备默认情况下总是准备好接收新的事务请求。 -
高电平AWREADY的含义:
如果AWREADY的默认值是高电平,那么从设备必须能够接受主设备呈现给它的任何有效地址。这要求从设备具有足够的缓冲能力来处理突发的事务请求。 -
低电平AWREADY的可能性:
虽然AWREADY的默认值设为低电平是可能的,但这是不推荐的。如果AWREADY默认为低电平,这将意味着每个事务至少需要两个时钟周期:第一个周期用于主设备断言AWVALID,第二个周期用于从设备断言AWREADY。 -
低电平AWREADY的影响:
如果使用低电平AWREADY,这将影响事务的传输效率,因为每个事务的开始都会延迟一个周期。
总结来说,主设备在发送事务请求之前必须确保AWVALID信号有效,并且从设备应该准备好响应这个请求。推荐的AWREADY默认值为高电平,以确保事务的高效传输。
写数据管道
-
WVALID信号的断言:
主设备在提供了有效的写数据时,才能断言(置为高电平)WVALID信号,表示主设备准备好发送数据。 -
WVALID信号的持续:
WVALID信号必须保持被断言,直到从设备接受写数据并断言WREADY信号,表示从设备已准备好接收数据。 -
WREADY信号的默认值:
WREADY的默认值可以是高电平(HIGH),但只有在从设备能够在单个时钟周期内始终接受写数据的情况下才推荐使用。如果WREADY默认为高电平,意味着从设备随时准备好接收数据。 -
WLAST信号的断言:
主设备在发送突发传输中的最后一个数据时,必须断言WLAST信号。这表示当前传输是突发传输中的最后一个数据。 -
WVALID信号为低电平时WSTRB的行为:
当WVALID为低电平时,WSTRB(写数据字节使能)信号可以取任何值,但推荐将它们驱动为低电平或保持在先前的值。这是为了确保在非活动周期内,写数据的字节使能信号不会意外地启用。
总结来说,主设备必须在发送有效数据时断言WVALID,并在从设备准备好接收数据时断言WREADY。WLAST用于标记突发传输的最后一个数据。WREADY的默认值应根据从设备的能力来设置,以确保高效的数据传输。
写相应管道
-
BVALID信号的断言:
从设备只能在提供了有效的写响应时,才能断言(置为高电平)BVALID信号,表示从设备已经完成了写操作,并向主设备发送了响应。 -
BVALID信号的持续:
BVALID信号必须保持被断言,直到主设备接受写响应并断言BREADY信号,表示主设备已准备好接收并处理这个响应。 -
BREADY信号的默认值:
BREADY的默认值可以是高电平(HIGH),但这仅在主设备能够始终在单个时钟周期内接受写响应的情况下推荐使用。这意味着主设备随时准备好接收从设备的写响应。
概括来说,从设备在发送写响应时必须断言BVALID,并在主设备准备好接收响应时断言BREADY。BREADY的默认值应根据主设备的能力来设置,以确保响应能够被及时接收和处理。这种握手机制确保了写操作的完整性和可靠性。
读地址管道
-
ARVALID信号的断言:
主设备只有在提供了有效的地址和控制信息时,才能断言(置为高电平)ARVALID信号,表示主设备准备好发起一个读请求。 -
ARVALID信号的持续:
ARVALID信号必须保持被断言,直到从设备接受地址和控制信息,并断言ARREADY信号,表示从设备已准备好响应这个请求。 -
ARREADY信号的默认值:
ARREADY的默认值可以是高电平(HIGH)或低电平(LOW)。推荐使用高电平作为默认值,这表示从设备默认情况下总是准备好接收新的读请求。 -
ARREADY默认值的考虑:
如果ARREADY默认为高电平,从设备必须能够接受主设备呈现给它的任何有效地址。如果ARREADY默认为低电平,这意味着每个事务至少需要两个时钟周期:第一个周期用于主设备断言ARVALID,第二个周期用于从设备断言ARREADY。
概括来说,主设备在发送读请求之前必须确保ARVALID信号有效,并且从设备应该准备好响应这个请求。RVALID信号用于指示从设备何时准备好发送数据,而RREADY信号用于指示主设备何时准备好接收数据。RLAST用于标记突发传输的最后一个数据。
读数据管道
-
RVALID信号的断言:
从设备只有在提供了有效的读数据时,才能断言RVALID信号,表示从设备准备好发送数据。 -
RVALID信号的持续:
RVALID信号必须保持被断言,直到主设备接受数据并断言RREADY信号,表示主设备已准备好接收并处理这些数据。 -
RREADY信号的使用:
主设备使用RREADY信号来表示它接受数据。RREADY的默认值可以是高电平,但这仅在主设备能够立即接受读数据的情况下推荐。 -
RLAST信号的断言:
从设备在发送突发传输中的最后一个数据时,必须断言RLAST信号。这表示当前传输是突发传输中的最后一个数据。
推荐的ARREADY和RREADY默认值为高电平,以确保事务的高效传输。
通道间的关系
在AXI4协议中,不同通道之间的关联是灵活的,这些通道包括地址通道、读数据通道、写数据通道和写响应通道。
-
通道间关联的灵活性:
在AXI4总线中,写数据(Write Data)可以在相关写地址(Write Address)之前到达接口。这通常发生在写地址通道包含的寄存器级数多于写数据通道时。同时,写数据也可以与地址在同一周期出现。 -
地址和写数据的重新对齐:
当互连(Interconnect)需要确定目标地址空间或从设备空间时,它必须重新对齐地址和写数据。这是为了确保写数据仅在目标从设备上有效时才被标记为有效。 -
必须维持的两种关系:
必须维持两种关系: a. 读数据(Read Data)必须始终跟随与其相关的地址。这意味着读数据传输必须在地址传输之后发生。 b. 写响应(Write Response)必须始终跟随写事务中的最后一个写传输。这意味着写响应是在写事务的最后一个数据传输之后发送的。
概括来说,尽管写数据可以在写地址之前或与地址同时传输,但必须确保数据传输的正确性和时序准确性。读数据和写响应的传输顺序是固定的,以保证数据的一致性和事务的完整性。这种设计允许AXI4协议在保持高性能的同时,提供必要的灵活性和可靠性。
握手信号之间的依赖关系
在AXI4协议中,为了避免死锁情况,必须注意握手信号之间的依赖关系。以下是对上述段落的理解和解释:
-
信号依赖规则:
- 在任何事务中,一个AXI组件的VALID信号不能依赖于另一个组件的READY信号。
- READY信号可以等待VALID信号的断言。
-
READY信号的灵活性:
- 虽然可以接受VALID信号断言后再断言READY信号,但也可以默认先断言READY信号,这可能导致更高效的设计。
-
图3-4和图3-5:
- 这些图展示了握手信号的依赖关系。单头箭头指向可以在前一个信号断言之前或之后断言的信号。双头箭头指向的信号必须在前一个信号断言之后才能断言。
-
读事务中的依赖关系(图3-4):
- 从设备可以在断言ARREADY之前等待ARVALID被断言。
- 从设备必须在ARVALID和ARREADY都被断言之后,才能开始通过断言RVALID返回读数据。
-
写事务中的依赖关系(图3-5):
- 主设备在断言AWVALID或WVALID之前,不能等待从设备断言AWREADY或WREADY。
- 从设备可以在AWVALID或WVALID,或两者都被断言之前等待,然后断言AWREADY。
- 从设备可以在AWVALID或WVALID,或两者都被断言之前等待,然后断言WREADY。
- 从设备必须在WVALID和WREADY都被断言之后,才能断言BVALID。
-
写事务中的重要注意事项:
- 在写事务期间,主设备在驱动WVALID之前,不能等待AWREADY被断言。如果从设备反过来在断言AWREADY之前等待WVALID,这可能会导致死锁情况。
概括来说,这些段落强调了在AXI4协议中进行事务处理时,握手信号之间必须遵守的依赖规则,以确保数据传输的顺利进行并避免死锁。设计者需要仔细考虑这些依赖关系,以确保系统设计既高效又稳定。