在下图中,显示了典型的帧发射序列。此处示例演示的是 400G/8 段总线。为使图例保持简洁,此处未显示分段 2 到 6。
图 1. AXI4‑Stream 帧发射典型序列
此操作顺序的要点如下:
- 在周期 3 中,有 1 个新的帧(帧 A)于分段 0 内起始。帧 A 长度为 158 字节(9 个完整分段,加 1 个最终分段,其中包含 14 字节,2 个为空字节)。驱动帧 A 的用户逻辑会将
ena0
和sop0
与数据 A0 的前 16 字节一并断言有效。在tx_preamblein_0
端口上提供前导码。该帧在分段 1 - 7 上继续。 - 在周期 4 中,帧 A 在分段 0 内继续,但当
eop
断言有效时,该帧在分段 1 内结束。mty
信号会指明此分段内未使用的字节数(在此例中即4'h2)。新的帧 B (FRM-B) 在分段 2(不允许存在空闲分段间隔)内开始,并在分段 6 内结束(总计 5 个分段,因此该帧含 65 到 80 字节;此处未显示详细信息)。由于 FRM-B 的sop
位于分段 0-3 内,因此tx_preamblein_0
会提供前导码。 - 帧 C 从周期 4 的分段 7 开始;其前导码在
tx_preamblein_2
上提供,因为sop
在分段 4 到 7 内。 - 帧 C 继续经过周期 5,跨越所有分段(数据 C1 到 C8)。
- 在周期 6 中,帧 C 在含数据 C16 的分段 7 内结束。在此分段内,
eop
信号断言有效,并且mty
字段会指示未使用的 5 个字节。 - 在周期 7 中,启动新的帧 D。但 AXI4‑Stream 接口已断言
tx_axis_tready_0
无效。用户逻辑必须保持输入,直至tx_axis_tready_0
再次断言有效为止。 - 在周期 8 中,
tready
信号已再次断言有效,因此接受传输。帧 D 从分段 0 开始(sop
已断言有效),并继续直至分段 7。 - 帧 D 在周期 9 内继续,跨越分段 0 到分段 7。
- 在周期 10 中,
eop
断言有效,帧 D 于分段 0 内结束。用户逻辑没有更多数据可供发送,因此在分段 1 到 7 内,ena
保持断言无效。 - 在下一个周期 11 内,没有任何数据可供发送,因此用户逻辑断言
tx_axis_tvalid_0
无效,表明总线完全处于空闲状态。 - 在周期 12 分段 0 中,启动新的帧 E。用户逻辑再次将
tx_axis_tvalid_0
断言有效。帧 E 继续至分段 7。 - 帧 E 在周期 13 及后续周期内继续。