0

PTP 1588中,带时间戳的数据包是指数据包的第一位PTP离开设备引脚的时间?

这是否意味着如果必须在数据包中提供该时间,PTP堆栈应该知道从PTP堆栈中的给定阶段到设备引脚被该PTP数据包占用多少时间?

这样时间可以在数据包中预先喂食吗?

4

2 回答 2

1

是的,我认为 IEEE1588 标准确实有一个确切的时间戳点的定义。这个点到底在哪里并不那么重要,因为延迟(只要它是一个恒定的延迟)将得到补偿。

通常当你使用 PTP 时,你有一个硬件时间戳单元 (TSU),它有一个可以通过软件调整的数字时钟。时间戳可以在 PHY(驱动线路的芯片)中实现,也可以在 MAC(在软件有时间读取帧之前缓冲帧的 CPU 外围)中实现。

当识别出 PTP 帧时,通常会将当前时间戳加上 PTP 序列号和消息类型存储到单独的内存中,以供 CPU 稍后获取。然后 CPU 将使用此信息来调整 TSU 的时钟(通常与从 OS 看到的正常系统时间不同)。TSU 时钟随后被应用程序硬件使用,例如为外部信号添加时间戳,或生成精确脉冲。它通常被软件直接使用,因为这会增加许多通过硬件时间戳避免的不可预测的延迟。

您不能只将时间戳附加到帧上,因为这样 CPU 就无法获得任何传输时间戳。如果软件在 CPU 上做任何类型的时间戳,PTP 的精度通常会丢失,因为有很多不确定性(如中断延迟、调度器延迟、队列等)

然而,PTP 帧还包含一个校正字段,可以通过硬件组件动态调整,例如,交换机可以将转发延迟直接添加到帧中,动态修改它,并计算新的校验和。

于 2019-10-01T14:09:24.543 回答
0

OP:在 PTP 1588 中,带时间戳的数据包是指 PTP 数据包的第一位离开设备引脚的时间?

......所以它不仅仅是“第一个......离开”的时候,而是那个信息位的开始:离开或进入。

除非在本标准的特定传输附件中另有规定,事件消息的消息时间戳点应是帧开始(SOF) 定界符之后的第一个符号的开始。IEEE 1588-2008 7.3.4.1事件消息时间戳点


OP:这是否意味着如果必须在数据包中提供该时间,PTP 堆栈应该知道从 PTP 堆栈中的给定阶段到该 PTP 数据包占用设备引脚的时间?这样时间可以在数据包中预先喂食吗?

这是一种课程方法。

一个更准确但复杂的方法是在数据包的后面部分注入时间信息。任何尾随 CRC 也需要实时计算。

1588 没有具体说明如何实现其目标。

于 2020-08-11T19:56:58.800 回答