性能 - 3.3 简体中文

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

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

时间戳逻辑的性能经过测试,如先前引用的图例所示。在 RX 侧,抖动测试电路会在帧起始进入测试电路的同时记录系统定时器。稍后,此时间戳将被 RX PCS 捕获,并最终在系统侧 AXI4-Stream 接口 (rx_ptp_tstamp_out[79:0]) 上输出。这 2 次时间捕获之差的变化量 dt 即定义为时间戳逻辑的“抖动”性能。对于 tx_ptp_tstamp_out[79:0],TX 测试与此类似。

理论上,40G/50G 子系统时间戳逻辑能判定的跨 SOP 捕获平面的时间应在 80 位系统定时器输入的粒度范围内。因此,如果系统定时器的时间段为 1 nsec,那么时间戳的精度将在 1 nsec 抖动范围内。1 nsec 同时也是 IEEE 1588 定义的 80 位字段的最低有效位的粒度。

实际上,还有其它因素会限制真实系统中可实现的精度。

时钟域

实际上,系统定时器输入的精度应与 SerDes 时钟粒度相同。因此,系统定时器输入的时钟域交汇也应一并纳入考量。例如,如果 SerDes 时钟频率为 390 MHz,那么系统定时器实际粒度为 2.56 ns,这也是捕获时间戳的时钟的粒度。因此,可预计存在额外的 2.56 ns 变化。

收发器

在数据路径中添加 SerDes 并不会影响 40G/50G 子系统的抖动性能,但可能导致不对称。

在 1588 时钟应用中,RX + TX SerDes 时延会成为回路延迟的一部分,因此由 1588 协议来执行测量。为了最大程度提升从时钟的精度,最好将回路不对称纳入考量(RX 与 TX SerDes 时延之差)。赛灵思可以为您的器件专用的各种 SerDes 设置提供收发器时延。如果要将非对称纳入您的 PTP 系统考量范围,则需要联系数据路径中其它收发器的供应商以了解其特性。

UltraScale™ UltraScale+™ 收发器能够报告 RX 时延。RX 收发器变化主要源于其内部弹性缓冲器的填充级别。请参阅收发器指南以获取更多详细信息。

前向纠错

在时间戳捕获的线路侧会发生前向纠错(对应第 74 条和第 91 条)。因此,添加 FEC 将不会影响 40G/50G 子系统中的时间戳捕获的精度。与前述 SerDes 情况相似,FEC 的额外时延总量 (RX + TX) 也将由 1588 协议来进行测量。

(请注意,SOP 在发射的 FEC 帧中保持不可见状态,直至由 RX FEC 功能将其解码后才可见。)

为了最大程度提升 1588 从时钟的精度,最好明确 RX 和 TX 方向中 FEC 时延的非对称性。请联系赛灵思以了解特定 FEC 的 RX 和 TX 时延及其配置。如果 PTP 系统并非赛灵思 FEC 实现,那么您可能还需要从该系统中的链路伙伴供应商处获取此信息。

接收偏差纠正

在多通道系统(如 40G 和 50G)中,对应于 SOP 的包可能发生在任何通道内。此外,通道彼此间可能存在相对偏差。40G/50G 子系统能够通过报告 SOP 通道及其偏差,将 SOP 帧的到达通道纳入考量范围。可通过硬件或软件来执行纠正。建议步骤如下。

考虑以下 40G 和 50G 案例。对于这两者,过程是相同的,但 PMD 通道数量分别为 4 和 2。

图 1. 40G 填充级别纠正示例 Page-1 Sheet.1 Sheet.2 Sheet.3 Sheet.4 Sheet.5 Sheet.6 RX_LANE_ALIGNER_FILL_0 RX_LANE_ALIGNER_FILL_1 RX_LANE_ALIGNER... RX_LANE_ALIGNER_FILL_0RX_LANE_ALIGNER_FILL_1RX_LANE_ALIGNER_FILL_2RX_LANE_ALIGNER_FILL_3 Sheet.7 Sheet.8 Sheet.9 Sheet.10 Sheet.11 Sheet.12 PMD0 PMD1 PMD2 PMD3 PMD0PMD1PMD2PMD3 Sheet.13 PMD lanes PMD lanes Sheet.14 buffers buffers Sheet.15 RX_PTP_TSTAMP_OUT RX_PTP_TSTAMP_OUT Sheet.16 X16343-012417 Sheet.17 Sheet.18 Sheet.19 X16343-080621
图 2. 50G 填充级别纠正示例 Page-1 Sheet.1 Sheet.2 Sheet.3 Sheet.4 Sheet.5 RX_LANE_ALIGNER_FILL_0 RX_LANE_ALIGNER_FILL_1 RX_LANE_ALIGNER... RX_LANE_ALIGNER_FILL_0RX_LANE_ALIGNER_FILL_1RX_LANE_ALIGNER_FILL_2RX_LANE_ALIGNER_FILL_3 Sheet.6 Sheet.7 Sheet.8 Sheet.9 Sheet.10 Sheet.11 PMD0 PMD1 PMD0PMD1 Sheet.12 PMD lanes PMD lanes Sheet.13 buffers buffers Sheet.14 RX_PTP_TSTAMP_OUT RX_PTP_TSTAMP_OUT Bracket.284 Bracket.16 Sheet.17 Sheet.18 X16344-030916 Sheet.19 Sheet.20 Sheet.21 X16344-080621
图 3. 40G 偏差纠正示例 Page-1 Sheet.3 Sheet.4 STAT_RX_VL_NUMBER_0[1:0] = 3 STAT_RX_VL_NUMBER_1[1:0] = 0 STA... STAT_RX_VL_NUMBER_0[1:0] = 3STAT_RX_VL_NUMBER_1[1:0] = 0STAT_RX_VL_NUMBER_2[1:0] = 1STAT_RX_VL_NUMBER_3[1:0] = 2 Sheet.5 Sheet.6 PMD0 PMD1 PMD2 PMD3 PMD0PMD1PMD2PMD3 Sheet.7 PMD lanes PMD lanes Sheet.8 This example tells you to look at lane aligner fill 2 for SoP... This example tells you to look at lane aligner fill 2 for SoP fill level Sheet.9 Sheet.10 Sheet.11 Sheet.12 The PCS lane mapping is essentially random The PCS lane mapping is essentially random Sheet.13 Example: RX_PTP_PCSLANE_OUT = 2 Example: RX_PTP_PCSLANE_OUT = 2 Sheet.14 X16345-030916 Sheet.15 Sheet.16 Sheet.17 X16345-080621
图 4. 50G 偏差纠正示例 Page-1 Sheet.1 Sheet.2 STAT_RX_VL_NUMBER_0[1:0] = 2 STAT_RX_VL_NUMBER_1[1:0] = 3 STA... STAT_RX_VL_NUMBER_0[1:0] = 2STAT_RX_VL_NUMBER_1[1:0] = 3STAT_RX_VL_NUMBER_2[1:0] = 1STAT_RX_VL_NUMBER_3[1:0] = 0 Sheet.3 Sheet.4 PMD lanes PMD lanes Sheet.5 This example tells you to look at lane aligner fill 1 for SoP... This example tells you to look at lane aligner fill 1 for SoP fill level Sheet.6 Sheet.7 Sheet.8 Sheet.9 the PCS lane mapping is essentially random the PCS lane mapping is essentially random Sheet.10 Example: RX_PTP_PCSLANE_OUT = 1 Example: RX_PTP_PCSLANE_OUT = 1 Sheet.11 PMD0 PMD1 PMD0PMD1 Bracket.284 Bracket.16 Sheet.14 X16346-030916 Sheet.15 Sheet.16 Sheet.17 X16346-080621
图 5. 时间戳偏差纠正逻辑 Page-1 Sheet.1 ctl_rx_systemtimerin[79:0] ctl_rx_systemtimerin[79:0] Sheet.2 Xilinx PCS and MAC Xilinx PCS and MAC Sheet.3 Sheet.4 Sheet.5 Sheet.6 Xilinx SerDes Inputs Xilinx SerDes Inputs Sheet.7 AXI4-Stream packet data AXI4-Stream packet data Sheet.8 Customer Supplied Skew Correction Logic (hardware or software) Customer Supplied Skew Correction Logic (hardware or software) Sheet.9 Sheet.10 rx_ptp_tstamp_out[79:0] rx_ptp_tstamp_out[79:0] Sheet.11 Sheet.12 rx_lane_aligner_fill_[3:0] stat_rx_vl_number_[3:0][1:0] rx_lane_aligner_fill_[3:0]stat_rx_vl_number_[3:0][1:0] Sheet.13 Sheet.14 Sheet.15 Skew Corrected Timestamp Skew Corrected Timestamp Sheet.16 AXI4-Stream packet data AXI4-Stream packet data Sheet.17 X16347-030916 Sheet.18 Sheet.19 Sheet.20 X16347-080621

第一步是计算对齐缓冲器填充级别的平均时间,因为这些信号的粒度为 1 个 SerDes 时钟周期。虽然偏差在一段时间(例如,几分钟或几小时)内保持相对不变,但由于采样量化,对齐缓冲器级别的 SerDes 时钟周期存在短期浮动。因此,通过计算每个填充级别的平均时间可以获得更高精度(例如,亚纳秒级)的实际偏差。

假定已按上述方式准确判定填充级别,可使用以下公式来执行偏差纠正:

correction = ((RX_LANE_ALIGNER_FILL_n) - (RX_LANE_ALIGNER_FILL_0)) * SerDes clock period
corrected timestamp = RX_PTP_TSTAMP_OUT + correction
其中:

corrected timestamp 即完成偏差纠正后的时间戳,必须与对应包数据保持同步

RX_PTP_TSTAMP_OUT 是捕获的时间戳。

RX_LANE_ALIGNER_FILL_0 是在其中采集时间戳的通道的对齐缓冲器填充级别,通常此通道为通道 0(请与赛灵思技术销售支持人员确认以了解更新信息)。

RX_LANE_ALIGNER_FILL_n 是包含 SOF 的通道的对齐缓冲器填充级别。

所有计算的单位需保持一致。由于填充级别是以时钟周期为单位来提供的,可能需将其转换为纳秒或与计算过程一致的任何单位。

如需了解其它信息,请参阅 IEEE 1588-2008 标准《IEEE 网络测量和控制系统的精密时钟同步协议标准》http://standards.ieee.org/findstds/standard/1588-2008.html