AXI4-Stream 发射接口 - 3.3 简体中文

40G/50G High Speed Ethernet Subsystem 产品指南 (PG211)

Document ID
PG211
Release Date
2022-11-03
Version
3.3 简体中文

下图显示了 AXI4-Stream 发射接口信号。

表 1. 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 波形图 Page-1 Sheet.1 tx clk tx clk Sheet.2 tx_axis_tdata[127:0] tx_axis_tdata[127:0] Sheet.3 tx_axis_tready tx_axis_tready Sheet.4 tx_axis_tvalid tx_axis_tvalid Sheet.5 tx_axis_tuser_ena0 tx_axis_tuser_ena0 Sheet.6 tx_axis_tuser_sop0 tx_axis_tuser_sop0 Sheet.7 tx_axis_tuser_eop0 tx_axis_tuser_eop0 Sheet.8 tx_axis_tuser_err0 tx_axis_tuser_err0 Sheet.9 0 0 Sheet.10 0 0 Sheet.11 0 0 Sheet.12 0 0 Sheet.13 0 0 Sheet.14 tx_axis_tuser_mty0[2:0] tx_axis_tuser_mty0[2:0] Sheet.15 tx_axis_tuser_sop 1 tx_axis_tuser_sop 1 Sheet.16 rx_axis_tuser_ena1 rx_axis_tuser_ena1 Sheet.17 tx_axis_tuser_eop 1 tx_axis_tuser_eop 1 Sheet.18 tx_axis_tuser_err1 tx_axis_tuser_err1 Sheet.19 tx_axis_tuser_mty1[2:0] tx_axis_tuser_mty1[2:0] Sheet.20 0 0 Sheet.21 0 0 Sheet.22 0 0 Sheet.23 7 7 Sheet.24 0 0 Sheet.25 Sheet.26 Sheet.27 Sheet.28 Sheet.31 Sheet.32 Sheet.33 Sheet.34 Sheet.35 Sheet.36 Sheet.37 Sheet.38 Sheet.39 Sheet.40 Sheet.41 Sheet.42 Sheet.43 Sheet.44 Sheet.45 Sheet.46 Sheet.47 Sheet.50 Sheet.51 Sheet.52 Sheet.53 Sheet.54 Sheet.55 Sheet.56 Sheet.57 Sheet.58 Sheet.59 Sheet.60 Sheet.61 Sheet.62 Sheet.63 Sheet.64 Sheet.65 Sheet.66 Sheet.69 Sheet.70 Sheet.71 Sheet.72 Sheet.73 Sheet.74 Sheet.75 Sheet.76 Sheet.77 Sheet.78 Sheet.79 Sheet.80 Sheet.81 Sheet.82 Sheet.83 Sheet.84 Sheet.85 Sheet.86 Sheet.87 Sheet.88 Sheet.89 Sheet.90 Sheet.91 Sheet.92 Sheet.93 Sheet.94 Sheet.95 Sheet.96 Sheet.97 Sheet.98 Sheet.99 Sheet.100 Sheet.101 Sheet.102 Sheet.103 Sheet.104 Sheet.105 Sheet.106 Sheet.107 X16338-030916 Sheet.108 Sheet.109 Sheet.110 X16338-080621

下图显示了含不间断连续传输的正常发射周期。115 字节的包起始于分段 0,结束于分段 0。紧随其后是一个 81 字节的包,此包起始于分段 1 中的同一个时钟周期,结束于分段 1。

图 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_axis_tuser_sop0 = 1 时,如何将以太网帧起始位置映射到 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_axis_tuser_mty0[2:0] = 2,那么该信号段的最后 2 个字节不包含数据,且将被忽略。在包传输的最后一个周期(EOP 周期)内,mty 只能包含非零 (0) 值。
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_enatx_axis_tuser_eop 均采样为 1 的周期内才对此信号进行采样。当此信号采样为 1 时,最后一个代码字将被替换为 802.3 错误码控制字,以保证伙伴器件可接收到存在错误的数据包。如果在包的输入端此信号设置为 1,则禁用 FCS 检查和报告(仅针对该数据包)。
每个段均有 1 个 tx_axis_user_err 信号。