AXI协议详解(3)-通道握手

通道握手

本章描述了主/从握手过程,并概述了 READYVALID 握手信号的关系和默认值。 它包含以下部分:

  • 握手过程
  • 通道之间的关系
  • 通道握手信号之间的依赖关系

3.1 握手过程

所有五个通道都使用相同的 VALID/READY 握手来传输数据和控制信息。 这种双向流控制机制使mater和slave都能够控制数据和控制信息移动的速率。 源生成 VALID 信号以指示数据或控制信息何时可用。 目的地产生 READY 信号以指示它接受数据或控制信息。 仅当 VALIDREADY 信号均为高电平时才会发生传输。

主接口和从接口上的输入和输出信号之间不得有组合路径。

图 3-1至图 3-3 展示了握手序列的示例。 在图 3-1 中,源提供数据或控制信息并将 VALID 信号驱动为高电平。 来自源的数据或控制信息保持稳定,直到目的地驱动 READY 信号为高电平,表明它接受数据或控制信息。 箭头显示传输发生的时间。

AXI协议详解(3)-通道握手_第1张图片

Figure3-1 VALID before READY handshake

不能等待READY拉高之后再去拉高VALID信号。一旦VALID信号被拉高,那么必须等待握手发生,VALID信号才能被拉低。

在图 3-2 中,目的地在数据或控制信息有效之前驱动 READY HIGH。 这表明一旦数据或控制信息有效,目的地就可以在一个周期内接受数据或控制信息。 箭头显示传输发生的时间。

AXI协议详解(3)-通道握手_第2张图片

Figure3-2 READY before VALID handshake

可以去等待VALID信号拉高之后再去拉高READY信号。如果READY信号拉高,可以在VALID信号是高电平的时候拉低READY信号。

在图 3-3 中,源和目的地碰巧在同一个周期中表明它们可以传输数据或控制信息。 在这种情况下,传输会立即发生。 箭头显示传输发生的时间。

AXI协议详解(3)-通道握手_第3张图片

Figure3-3 VALID with READY handshake

单独的 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必须等待 ARVALIDARREADY 都被置位,然后才通过置位 RVALID 开始返回读取数据。(只有先断言地址ARVALID、地址ARREADY之后,才能断言数据RVALID

AXI协议详解(3)-通道握手_第4张图片

Figure3-4 Read transaction handshake dependencies

图 3-5 显示,在写事务中:

  • 在断言 AWVALIDWVALID 之前,mater不能等待salve断言 AWREADYWREADY
  • 在断言 AWREADY 之前,slave可以等待 AWVALIDWVALID,或两者兼而有之(Slave可以先断言AWREADY,之后等待master断言AWVALIDWVALID
  • 在断言 WREADY 之前,slave可以等待 AWVALIDWVALID,或两者兼而有之(Slave可以先断言WREADY,之后等待master断言AWVALIDWVALID
  • 在断言BVALID 之前,slave必须等待WVALIDWREADY 都被断言。(slave断言写响应BVALID时,必须等待master先断言WVALIDWREADY

AXI协议详解(3)-通道握手_第5张图片

Figure3-5 Write transaction handshake dependencies

注意:
重要的是,在写事务期间,master在驱动 WVALID 之前不得等待 AWREADY 被置位。 如果slave在断言 AWREADY 之前相反地等待 WVALID,这可能会导致死锁情况。(如果Salve先等在Master写数据WVALID,然后再断言写地址AWREADY,会导致死锁)(相当于数据已经发好,但是一直不知道该发到那个地址中。)

AWREADY* 之前相反地等待 WVALID,这可能会导致死锁情况。(如果Salve先等在Master写数据WVALID,然后再断言写地址AWREADY,会导致死锁)(相当于数据已经发好,但是一直不知道该发到那个地址中。)

你可能感兴趣的:(AMBA协议,硬件工程,fpga开发,arm开发,硬件架构)