欢迎到:上海爱启企业服务有限公司

全国热线:13681742592

产品类别

行业知识
您现在的位置: 首页 > 行业知识 > 内容
PTP模块同步与调钟技术介绍
编辑:上海爱启企业服务有限公司   时间:2016-12-08

主要内容:

       PTP模块简介:一步法/两步法;两层/三层;组播/单播。

       PTP模块协议栈与底层交互:时间戳回收;Protocol。

       调钟:PTP模块调钟基础;PTP模块调钟方法。

PTP模块简介:

       PTP模块协议(1588协议)全称为“网络测量和控制系统的精密时钟同步协议标准”

       PTP模块同步过程中,主时钟周期性的发布PTP报文,从时钟端口接收主时钟端口发来的时间戳信息,根据该信息计算主从线路延迟及时间差信息,并计算频差和相差进行调整实现从时钟设备与主时钟设备的频率同步或时间同步(频率同步且相位同步)。

一步法/两步法

       下图为PTP模块交互基本过程该图还体现了PTP模块的交互模式:一步法和两步法

       一步法和两步法的区别在于t1时间戳由谁携带

       一步法:sync(忽略程序发包到报实际从网口发出去的时间差值)

       两步法: follow-up

 

两层/三层

       1. 两层(ETH)三层(UDP)也是PTP模块协议工作的两种模式

       2. 通常情况下我们都使用的UDP的工作模式即三层报文

       3. 两层模式是值在以太网帧(Ethernet)上直接传输报文的一种特定的PTP模块交互方式。

       4. 两者区别在于是否经过网络层

       5. 系统启动时创建“/ptp/x/raw”设备,用于处理两层报文

组播/单播

       单播:一对一的通讯模式(类似于点对点)

       组播:一对一组的通讯方式(一次发送所有目标节点的数据)

       加入同一组的主机可以接收到此组内的所有数据,网络中的交换机和路由器只想需求者复制并转发所需要数据

       区别在于单播地址还是组播地址(D类Ip地址224.0.0.0—239.255.255.255)。

PTP模块协议栈与底层的交互

系统启动时会创建以下几种设备:

       /ptp/x/normal

       /ptp/x/event

       /ptp/x/raw

       /ptp/x/txt

其中x表示的是port号。每一个port都会有单独的以上四种设备。

这四种设备都用于缓存相应的报文或时间戳。

Protocol Stack

       其中“/ptp/x/event”用于PTP UDP(端口319)事件报文的收发,“/ptp/x/ normal”用于PTP UDP(端口320)通用报文的收发

       事件报文:计时报文,其中的精确时间戳在发送和接收时产生(如sync、req)

       通用报文:不要求精确时间戳如announce

       OS原有的TCP/IP协议栈无法接收这2种UDP报文,但其他报文不受影响,都被分发到OS原有的TCP/IP协议栈中,即OS原有的TCP/IP协议栈可以正常使用.

       其中“/ptp/x/raw”用于收发两层PTP报文

       其中“/ptp/x/txt” 用于收发时间戳,这里的时间戳是指t3时间戳。

报文发送

时间戳回收

T3时间戳为报文离开本机时候的时间戳。

逻辑打完时间戳之后,t3时间戳需要回收到协议栈。

       应用层通过标志位ZDCOMM_REQ_TIMESAMPLE通知驱动需要回收t3时间戳,驱动给逻辑置标志位,逻辑根据该标志位回传t3时间戳给驱动。

       驱动将该时间戳缓冲到设备“/ptp/x/txt”上,并通知应用程序来获取

       在设备“/ptp/x/txt”收到了时间戳(t3)之后,会调用响应的处理函数handle_txts_pending,从而提取出时间戳.

PTP模块调钟

       PTP模块调钟主要是通过主从时间戳计算主从之间频差(即频率差值),根据频差调整晶振振荡频率来实现主从频率同步和相位同步。

涉及到以下几个问题:

       频差

       相位

       调频

       调相

调钟-基础

       频差是指主时钟的振荡频率和从时钟振荡频率的差值。

       频差计算主要是通过t1和t2时间戳来计算的

       通过两层滤波计算频差

       一级滤波即低通滤波,找出每一组内t2-t1最小的原始t2和t1

       Kalman滤波:通过原始t2和t1差值及其在数组中位置,利用kalman迭代原理,计算出预估的频差值

       相差是指主时钟和从时钟之间时间差值。

       例如主当前主时钟时间为1970年1月1月0时0分0秒,从时钟时间为1970年1月1月0时0分1秒,则1秒差即为offset(相差)。

       相差计算主要是通过t1、t2、t3和t4时间戳来计算的

       Tms = Offset +TdealyAsym

       Tsm = Offset -TdelayAsym

       Offset =((t2-t1)-(t3-t4))/2

       调频:即通过kalman滤波输出的频差值经过转换计算出DA值,通过设置DA调整晶振的振荡频率,以实现频率的改变。

需要了解以下晶振的参数关系:

       10Mhz的恒温晶振:最大调整电压为5v,每v电压调整3.1HZ,DA范围为0-65535频差单位ppt和ppb。表示1秒中与标准主时钟的相位差值。其中ppt为10-12量级,ppb为10-9量级。

调钟-方法

调频基本思路

       第一次自学习

       粗调

       微调

       拉相

第一次自学习

       在没有调频之前,主时钟和从时钟之间的频差应该是一个差不多固定的值。

       学习到这个频差值,快速设定到晶振,可以使主从之间频差值快速缩小

       基本图形如下图:

粗调

       经过第一次自学习之后,由于自学习的值并不是完全准确,且频差值本身也不准确,调整误差等等原因,导致第一次设置DA之后主从之间频差仍然有一定的差距,这就需要进一步根据主从之间的频差进行调整。

       通常情况下调整的频差曲线如右图。主从之间的频差会越来越小,趋近与0.

微调

       微调通常发生在粗调之后,主从之间的频差比较接近,在1个da的调整范围之内。此时通常增加或者减少一个DA进行频差调整。

频率拉相位

       通过频率拉相位是指在主从频差已经稳定的情况下,主从之间的有较小且相对稳定的相差。此时可以通过调整DA来调整相位。即可以先将DA增大或者减少一定值,一段时间后再将DA还原。从而实现减小相位。

       由于频率拉相位的操作存在可能将频差调大的风险,所以通过频率拉相位的行为要求非常严格。在频差阈值、相位阈值及时间等方面都有严格要求。

       另外频率拉相位也并不一定能够将相位拉回到0的位置如下图