DCMAC Subsystem IEEE 1588 逻辑由多个模块组成:
- PTP Timer,即 PTP 定时器,用于维护系统定时器(当日时间)
- PTP Timestamper,即 PTP 时间戳工具,用于给数据包添加时间戳
- TX PTP FIFO,用于将双步时间戳转发至出口 TX 时间戳接口
- TX PTP Insert block,即 TX PTP 插入块,用于执行单步时间戳插入
下图显示了 DCMAC Subsystem 1588/PTP 架构。虽然 TX PTP Insert + FIFO 仅存在于发射方向,但此图在发射方向和接收方向都适用。
图 1. 1588 模块框图
1588 时间戳支持主要围绕的是板载时间戳计算器(PTP 定时器),该计算器用于计算 PTP 当日时间 (TOD) 的准确值。时间戳计算器可使用控制输入和内部计数器相结合来进行调整,以便对时钟速率差异加以补充。PTP Timestamper 用于使用 PTP Timer 生成的 TOD 来计算入站和出站数据包的时间戳。
在接收方向上,AXI4‑Stream 接口上的所有数据包均已添加时间戳,在收到专用信号时,此时间戳值就会恢复。在 RX 灵活接口上,每个有效周期都会添加时间戳,以便您可识别并计算正确的时间戳。
在发射方向上,可使用双步或单步方法来添加时间戳。对于双步操作,经计算得出时间戳,并在所有请求的数据包的出口时间戳接口上提供计算所得时间戳和随附的标签。将数据包提供给 AXI4‑Stream 接口或 TX 灵活接口时,用户逻辑会标记数据包以供添加时间戳。对于单步操作,TX PTP 插入逻辑会处理将 1588 单步时间戳插入出站 PTP 数据包的操作。该逻辑会从出站 PTP 数据包中查找并提取纠正字段,使用计算所得时间戳对其进行调整,然后按需重新计算 UDP 校验和。“Ethernet FCS”(以太网 FCS)值会反映对纠正字段和 UDP 校验和执行的任何更改。