单步插入 - 2.3 简体中文

Versal Adaptive SoC 600G Channelized Multirate Ethernet Subsystem (DCMAC) LogiCORE IP 产品指南 (PG369)

Document ID
PG369
Release Date
2023-11-08
Version
2.3 简体中文

在单步插入模式下,出口 PTP 数据包将以计算所得时间戳进行动态修改。PTP Timestamper 逻辑从 TX 接口提取数据包数据、查找嵌入的 PTP 数据包、插入时间戳、(可选)重新计算 UDP 校验和,然后重新计算“Ethernet FCS”字段。

1588 规范可以定义 2 种受支持的时间戳模式:
“Ordinary/Boundary Clock Mode”(普通时钟/边界时钟模式)
表示在时间戳与 PTP 包的纠正字段组合中插入表示当日时间的时间戳。DCMAC Subsystem 仅修改纠正字段。
“Transparent Clock”(透明时钟)
表示纠正字段包含滞留时间,其计算方法为减去入口时间戳并加上出口时间戳(差即为滞留时间)。

DCMAC Subsystem 会使用“读取-修改-写入”方法来执行包级时间戳插入。当出站包穿过 TX PTP 插入逻辑进行传递时,使用提供给命令端口的 tx_ptp_cf_offset 字段来定位纠正字段中的现有值。出口时间戳 TS'egress(由 PTP Timer 逻辑提供)将与 PTP 纠正字段中发现的值相加。PTP 数据包时间戳字段则保留不动。

下表显示了每一种可用的时间戳模式下的 2 个 PTP 时间戳字段的处理方式。时间戳字段和传入纠正字段列均包含应由用户逻辑植入出站 PTP 帧的值。DCMAC Subsystem 逻辑则会将传出纠正字段列置于出站纠正字段内。

表 1. 纠正字段调整规则
模式 时间戳字段 传入纠正字段 传出纠正字段
透明 TSorig CFingress - TS'ingress CFingress - TS'ingress + TS'egress
普通时钟/边界时钟 TScurr -TS'curr - TS'curr + TS'egress

在该表中,显然 DCMAC Subsystem 逻辑无需确知选定时间戳的模式,因为无论选定任何模式,其行为都并无差异。用户逻辑负责在出站 PTP 数据包的时间戳和纠正字段中设置相应的初始时间戳值。

DCMAC Subsystem 支持通过多种不同模式来处理传出纠正字段中因添加 TS'egress 而导致上溢时的卷绕或饱和。将 ctl_tx_ptp_sat_enable 设为 0 会导致结果发生卷绕 (0x7FFFFFFF_FFFFFFFF -> 0x80000000_00000000)。将 ctl_tx_ptp_sat_enable 设为 1 则会导致结果饱和至最大正值 (0x7FFFFFFFF_FFFFFFFF)。卷绕或饱和通常用于处理如下状况,即传入纠正字段为较大的正数,而 TS'egress 过大,会导致上溢。但如果 TS'ingress/TS'curr 或 TS'egress 时间戳其中之一最近发生过卷绕,而另一个时间戳则没有发生卷绕,这也可能导致出现上溢状况。下游接收节点可能会检测到发生此状况,并对其进行调整。

或者,通过在传入纠正字段中添加额外信息(额外多个比特的信息)并将 ctl_tx_ptp_sat_enable 设为 2,PTP 插入逻辑即可检测到此状况并针对卷绕进行自动调整。此模式所需的额外信息包括:

  • TS'ingress/TS'curr 的位 62(置入传入纠正字段的位 0)
  • 入口纠正字段的符号位(置入传入纠正字段的位 1;如未采用“透明”模式,则使用传入纠正字段的符号。如未采用“透明”模式,则传入纠正字段应为 -TS'curr,且符号字段中应包含 1。)

如果结果仍出现实际上溢的状况,则表示传出纠正字段已饱和。在此模式下,在传出纠正字段中,将清除位 [1:0]。

注释: 这 2 个 PTP 字段使用不同的时间戳格式。在该表中,TS 表示时间戳字段格式的时间戳,而 TS' 则表示纠正字段格式的时间戳。大部分情况下,在计算中并不使用传入纠正字段的 8 个最低有效位,插入逻辑不会对其进行修改。在卷绕/饱和模式下则是例外。