下图显示了 AXI4-Stream 发射接口信号。
信号 | I/O | 时钟域 | 描述 |
---|---|---|---|
tx_clk_out | 输出 | AXI 发射时钟。所有 TX 信号均以此时钟为参考。 | |
tx_axis_tready | 输出 | tx_clk_out | 当设为高电平有效 (High) 时,此信号指示 TX AXI 接口已准备好接受数据。当 tx_axis_tready 转为低电平有效 (Low) 时,您必须立即响应,即停止数据传输。 |
tx_axis_tdata[127:0] | 输入 | tx_clk_out | AXI4-Stream 发射数据(128 位接口)。TX AXI 数据总线用于接收用户提供的包数据。 |
tx_axis_tvalid | 输入 | tx_clk_out | AXI4-Stream 数据有效输入。仅当此信号为 1 时,数据传输才会完成。 |
tx_axis_tuser_ena0 tx_axis_tuser_ena1 | 输入 | tx_clk_out | 对应 TX AXI 总线传输的启用信号。此信号为“高电平有效 (High)”即可启用向 TX 传输数据。 |
tx_axis_tuser_sop0 tx_axis_tuser_sop1 | 输入 | tx_clk_out | AXI4-Stream 信号,指示以太网包起始。每个段均有 1 个包起始 (SOP) 信号。 |
tx_axis_tuser_eop0 tx_axis_tuser_eop1 | 输入 | tx_clk_out | AXI4-Stream 信号,指示以太网包结束。每个段均有 1 个包结束 (EOP) 信号。 |
tx_axis_tuser_err0 tx_axis_tuser_err0 | 输入 | tx_clk_out | 此信号采样为 1 时用于指示数据包含有错误,针对包的所有其它传输则采样为 0。仅在 tx_enain 和 tx_eopin 均采样为 1 的周期内才对此信号进行采样。当此信号采样为 1 时,最后一个代码字将被替换为 802.3 错误码控制字,以保证伙伴器件可接收到存在错误的数据包。如果在包的输入端此信号设置为 1,则禁用 FCS 检查和报告(仅针对该数据包)。每个段均有 1 个信号。 |
tx_axis_tuser_mty0[2:0] tx_axis_tuser_mty1[2:0] | 输入 | tx_clk_out | 发射空数据。此总线用于指示对应当前包的最近一次传输的 tx_datain 总线中为空或无效的字节数。仅在 tx_axis_valid 和 tx_axis_user_eopin 均采样为 1 的周期内才对此总线进行采样。 |
同步 TX AXI 总线接口可接受包导向数据。所有信号均与 tx_clk_out
端口的上升沿保持相对同步。
AXI4-Stream 发射接口包含 2 个段,每个段宽度均为 64 位(8 个字节)。此分段式方法也称为跨接式 AXI4-Stream 方法,能够提升效率,以使数据包能够在给定的分段或周期内起始和结束。
以下波形中显示了正常的发射周期。这些波形展示了在位宽为 128 位的 AXI4-Stream 接口上传输 73 个字节的包的过程。其中显示了 2 个段,编号为 0 和 1。
图 1. TX 波形
下图显示了含连续传输的正常发射周期。
图 2. 含连续传输的 TX 波形
以下小节中对 图 1 和 图 2 波形中所示信号进行了描述。
- tx_clk
- 这是子系统的信号
tx_clk_out
输出。所有 TX AXI 信号均以此时钟为参考。对于 50G 运行速度,此时钟的频率通常为 390.625 MHz,对于 40G 运行速度则通常为 312.5 MHz。
- tx_axis_tready
- 此信号断言有效时,表示 TX AXI4-Stream 接口能够接受数据。当
tx_axi_tready
变为低电平有效时,必须立即停止发送数据,否则 TX AXI4-Stream 接口将不接受数据。
- tx_axis_tdata[127:0]
- 这是要发射的帧的总线。
下图显示了如何将以太网帧的起始位置映射到 TX AXI4-Stream 接口的位元位置。请注意与 TX AXI4-Stream 总线的位元位置对应的 ENA0 和 ENA1 信号的位置。
此映射对应 128 位 AXI4-Stream 总线。
图 3. TX 映射
- tx_axis_tvalid
- 当设为“High”时,此信号指示 TX AXI 总线上存在有效数据。
- tx_axis_tuser_ena0 和 tx_axis_tuser_ena1
- 这些信号断言有效时,支持通过 TX 总线来传输数据。数据传输必须通过
tvalid
信号加以验证,才能执行传输。
针对每个 AXI 信号段都存在 1 个使能信号。
- tx_axis_tuser_sop0 和 tx_axis_tuser_sop1
- 这些信号表示该周期内以太网帧的起始位置。每个总线周期内仅允许 1 个 SOP。针对每个 AXI 信号段都存在 1 个单独的 SOP 信号。
- tx_axis_tuser_eop0 和 tx_axis_tuser_eop1
- 这些信号表示该周期内以太网帧的结束位置。每个总线周期内仅允许 1 个 EOP。针对每个 AXI 信号段都存在 1 个单独的 EOP 信号。
- tx_axis_tuser_mty0[2:0] 和 tx_axis_tuser_mty1[2:0]
- 这些信号表示对应信号段的哪些字节处于未使用(“为空”)状态。如果
tx_mtyin
值为 0x0,则不存在空字节通道,换言之,数据总线的所有位均有效。
- tx_unfout
- 在前述 TX 波形时序图中的波形上未显示
tx_unfout
输出指示符。当此信号设为“High”时,表示没有足够的数据传输,以太网接口将下溢。不允许出现此状况。您必须确保只要tx_axis_tready
为“High”,就必须存在数据传输,直至达到以太网帧结束为止。注释: 当此信号采样为 1 时,您需要应用tx_reset
/sys_reset
以便使该核从下溢问题恢复。tx_reset
仅复位 TX 路径,sys_reset
则会恢复整个系统。
- tx_axis_user_err0 和 tx_axis_user_err1
- 此信号采样为 1 时用于指示数据包含有错误,针对包的所有其它传输则采样为 0。仅在
tx_axis_tuser_ena
和tx_axis_tuser_eop
均采样为 1 的周期内才对此信号进行采样。当此信号采样为 1 时,最后一个代码字将被替换为 802.3 错误码控制字,以保证伙伴器件可接收到存在错误的数据包。如果在包的输入端此信号设置为 1,则禁用 FCS 检查和报告(仅针对该数据包)。