在PTP
1588 中,带有时间戳记的数据包意味着PTP
数据包的第一位离开设备引脚的时间?
这是否意味着如果必须在包中输入该时间,PTP
堆栈应该知道从PTP
堆栈中的给定阶段到设备引脚将被该{{ 1}}个数据包?
以便可以在包中预装时间?
答案 0 :(得分:0)
是的,我认为IEEE1588标准确实有确切的时间戳记点定义。这一点在哪里并不重要,因为延迟(只要是恒定延迟)将得到补偿。
通常,当您使用PTP时,您会拥有一个硬件时间戳单元(TSU),该单元具有可以通过软件进行调整的数字时钟。时间戳记既可以在PHY(驱动线的芯片)中实现,也可以在MAC(对帧进行缓冲,直到软件有时间读取它们的CPU的外围设备)中实现。
当识别出PTP帧时,通常将当前时间戳以及PTP序列号和消息类型存储在单独的内存中,以供CPU稍后提取。然后,CPU将使用此信息来调整TSU的时钟(通常与从OS看到的正常系统时间不同)。然后TSU时钟由应用程序编程的硬件(例如为外部信号打上时间戳,或生成精确的脉冲。它通常不直接由软件使用,因为这会增加许多不可预见的延迟,而这些延迟是通过使用硬件时间戳来避免的。
您不能仅将时间戳添加到帧,因为CPU无法获得任何发送时间戳。如果该软件在CPU上进行任何时间戳记,则PTP的精度通常会丢失,这是因为存在很多不确定性(例如中断延迟,调度程序延迟,队列等)
但是,PTP帧还包含一个校正字段,可以通过硬件组件(例如,交换机可以将转发延迟直接添加到帧中,即时对其进行修改,然后计算新的校验和。
答案 1 :(得分:0)
OP:在PTP 1588中,带时间戳的数据包是指PTP数据包的第一位离开设备引脚的时间?
...所以,这不仅是“第一位..离开”的时间,还是那条信息位的开始:离开或进入。
除非在本标准的特定于传输的附件中另有规定,否则事件消息的消息时间戳记点应为帧起始定界符(SOF)后的第一个符号的开头。 IEEE 1588- 2008 7.3.4.1事件消息时间戳点
OP:这是否意味着如果必须在数据包中填充该时间,PTP堆栈应该知道从PTP堆栈中的给定阶段到该PTP数据包占用设备引脚有多少时间?以便可以在包中预装时间?
那是一种课程方法。
尽管复杂的方法肯定是更准确的方法是将时间信息注入数据包的后续部分。任何尾随的CRC也需要实时计算。
1588没有具体说明如何实现其目标。