摘要: 介绍了精细时钟同步协议(PTP)的原理。本文精简了该协议,规划并完成了一种低成本、高精度的时钟同步体系计划。该计划中,本地时钟单元、时钟协议模块、发送缓冲、接纳缓冲以及体系打时标等功能都在FPGA中完成。经过测验,该计划能够完成ns级同步精度。该计划成本低,而且易于扩展,十分合适局域网络时钟同步的运用领域。
在许多大型物理试验和工业运用中,时钟同步技能都扮演着无足轻重的效果。比如在我国四川锦屏暗物质勘探试验中,需求为多个独立勘探设备供给相应的时刻信息,这些勘探器包含中心勘探器(HpGe)、液氩反契合勘探器、试验室外部宇宙线反契合勘探器[1]。又比如在大亚湾中微子试验中,需求为三个试验厅的子勘探器供给同步时钟和时刻戳,也需求为未来的长基线中微子振动试验供给同步时钟和时刻戳[2]。
为此,本文根据可编程逻辑器件FPGA,规划了一套高精度、低成本、易于扩展的时刻戳同步体系。
1 PTP协议简介
PTP精细时钟守时协议又称为IEEE 1588协议。它的基本功能是运用根据时刻戳的报文通讯的办法,使得分布式网络中的一切的时钟都与特定的某个时钟坚持准确同步。IEEE 1588协议能够用软件完成,也能够用专门的硬件完成。很显然,用硬件完成能抵达更高的精度。本文中的同步体系便是根据纯硬件完成的。
IEEE 1588协议中界说了5种类型的传输报文[3]:同步报文(sync)、跟从报文(follow_up)、延时恳求报文(delay_req)、延时呼应报文(delay_resp)和办理报文(management)。其间前4种报文首要用于时刻戳交流,详细的时刻戳交流的进程示意图如图1所示。
图1 PTP协议同步进程示意图
如图1所示,时刻戳同步进程包含主节点和从节点,主节点和从节点都运用晶振保持本地时钟。同步的意图是使从节点的本地时钟的时刻戳与主节点本地时钟的时刻戳抵达相对同步。未同步时,从节点相对主节点有一个时刻误差offset。同步的进程能够核算出这个误差。
主时钟周期性地向从时钟发送同步报文SYNC,这个报文中没有任何有用数据,可是当SYNC宣布时,主节点能够记录下来时刻戳t1,当从节点接纳到SYNC,从节点能够记录下来时刻戳t2。为了让从节点也知道t1,稍后主节点向从节点发送跟从报文FOLLOW_UP,这个报文中包含了t1这个有用数据。
然后,为了核算主节点到从节点的延时,在从节点接纳到FOLLOW_UP后一段时刻,从节点向主节点发送一个DELAY_REQ报文。和SYNC相似,当DELAY_REQ脱离时得到时刻戳t3,当DELAY_REQ抵达主节点时,主节点得到时刻戳t4。一段时刻后,主节点再向从节点发送DELAY_RESP报文,这个报文中包含了t4,然后从节点得到了4个时刻戳t1~t4。
有了以上4个时刻戳之后,假定主节点到从节点与从节点到主节点传输和网络延时不变,能够得到传输延时和时钟误差的核算办法:
假如PTP主从链路对称,即Dm2s=Ds2m=delay,则:
由以上剖析办法可知,PTP主从节点链路对称与否会影响offset的核算,然后会影响时刻戳的同步精度。
别的,因为主节点和从节点需求用本地晶振保护本地时钟。而跟着时刻的堆集,晶振存在频率漂移,而且不同晶振的固有频率也会有误差,这两个特点都会影响时钟同步的精度。
为了完成高精度时刻同步,规划同步体系时应该一起考虑到主从节点链路的对称性和晶振的特性。
2 电子学规划
时钟同步体系的全体结构规划如图2所示。
图2 时钟同步体系的硬件结构图
本计划中主节点和从节点运用同一块硬件电路,在规划的时分,硬件电路板上规划了一个跳线器,能够挑选一块硬件电路是主节点或许从节点。为了确保主从节点的链路对称, PCB电路板时钟收发途径以及PTP报文收发途径的长度都应该用蛇形线规划来确保长度共同。别的,为了消除晶振的频率漂移以及频率误差带来的影响,本计划中从节点不运用本地晶振,而是直接运用主节点传输来时钟信号作为时刻戳的时钟,也便是说主节点和从节点运用了同源时钟。
尽管主从节点运用的本地clock是同源的,可是因为clock的传输途径的差异,主从节点的clock是有相位差异的。这个相位差假如不考虑在规划计划中的话,会严重影响整个时钟体系能够完成的同步精度。如图3所示,假如体系中没有考虑主从节点的本地clock的相位差,也便是图中phase,那时钟体系所能抵达的同步精度最好也便是相位差的值。假定,主从节点的周期T为100 ns,主从节点的相位差为60 ns,那阐明同步体系所能抵达的最高精度为60 ns。
图3 主从节点时钟相位差丈量的重要性示意图
为了进一步进步时刻戳同步的精度,有必要规划相位丈量模块,消除主从时钟相位差对时刻戳的同步精度带来的影响。所以,主节点中包含了相位辨别芯片以及ADC芯片,用来准确丈量主从节点时刻戳的时钟相位差。
有了这个相位差丈量模块,就真的能够消除主从节点时刻戳的时钟相位差带来的影响吗?答案是必定的。图4为主从节点时钟传达示意图,AD8302即为本文中所用的相位辨别芯片。
图4 主从节点时钟传达示意图
咱们现已知道,为了使从节点与主节点的时刻戳完成准确同步,最直接的办法便是算出尽量准确的offset值,也便是要得出尽量准确的t1~t4的值。
图4中,Clk1为主节点晶振时钟,Clk2为从节点从主节点接纳到的时钟,因为有一段长的传达途径,因此Clk2相对Clk1会有一个相位差。为了在主节点丈量相位差,Clk3是从节点将Clk2直接发送到主节点而得到的时钟,因此Clk3相关于Clk2又会有一个相位差。详细Clk1~Clk3的示意图如图5所示。
图5 主从节点时钟联系图
关于时刻戳t1而言,t1指的是SYNC包从主节点宣布的时刻,触发时钟为Clk1,而时刻戳时钟是主节点的体系时钟Clk1,因此t1是准确的。关于时刻戳t2而言,t2指的是SYNC包抵达从节点的时刻,触发时钟为Clk2,而时刻戳时钟是从节点的体系时钟Clk2,因此t2也是准确的。关于时刻戳t3而言,t3指的是DELAY_REQ包从从节点触宣布的时刻,触发时钟为Clk2,而时刻戳时钟为从节点的体系时钟Clk2,因此t3也是准确的。关于时刻戳t4而言,t4指的是DELAY_REQ包抵达主节点时的时刻,触发时钟为Clk3,而时刻戳时钟为主节点的体系时钟Clk1,因此t4不是准确的,是有误差的。由图5的时钟联系图可知,准确的t4p应该在t4之前:
可见,相位差丈量模块在整个时刻戳同步计划中取到了无足轻重的效果。
3 固件程序规划
3.1 主节点固件规划
主节点的固件结构框图如图6所示,A/D操控模块和相位丈量模块是用来操控幅相辨别芯片和ADC芯片。发送缓冲的效果是将主节点时钟同步协议中的通讯报文以曼彻斯特编码方法发送出去,接纳缓冲的效果是从接纳途径中解码出相应的通讯报文。本地时钟模块的效果便是保护一个本地时钟。主节点时钟同步协议的首要效果是操控报文的发送和接纳。
图6 主节点固件结构框图
图7为主节点时钟同步协议模块的状况机转换图。
图7 主节点同步协议模块的状况机转换图
idle状况下,当检测到pps信号的上升沿,则开端整个同步周期。首要,开端ADC的读取操作,当比及AD_ready=’1’,则阐明ADC的数据现已准备好,然后进行读取保存即可。然后,进入到sync状况,这个状况下,主节点会向从节点发送SYNC同步包,之后模块进入sync_wait状况。等一段固定的时刻之后,模块进入follow状况,在这个状况下,主节点会向从节点发送FOLLOW_UP同步包。之后模块进入after_follow_wait,等候一段固定的时刻之后,模块进入delay_req_pre,这个状况下,主节点会告诉从节点能够发DELAY_REQ包了。之后,模块等候DELAY_REQ包,假如很长时刻都没有比及DELAY_REQ包,即等候超时,则模块回来idle状况;假如接纳到了DELAY_REQ包,主节点就向从节点发送DELAY_RESP。最终,等一段时刻后,模块回来到idle状况。
3.2 从节点固件规划
从节点固件的结构框图如图8所示,相位部分核算模块用来核算出前文提到的phase值,offset核算模块的效果是用t1~t4和phase值核算出准确的offset值。从节点时钟同步协议的首要效果是操控报文的发送和接纳和更新本地时钟。
图8 从节点固件结构框图
图9为从节点时钟同步协议模块的状况机转换图。
图9 从节点时钟同步协议模块的状况机转换图
当处在idle状况时,从节点监测接纳到的数据流,直到监测到sync包后当即进入wait_follow状况。在wait_follow状况,从节点相同监测接纳的数据流,直到监测到follow_up包后,当即进入wait_pre状况,假如在这个状况好久都没有接纳到follow_up包,将等候超时回来到idle状况。相同,wait_pre状况下,直到监测到delay_req_pre包后,跳入delay_req状况;假如等候超时,则回来idle状况。delay_req状况下,从节点向主节点发送delay_req包后当即进入wait_delay_resp状况。在wait_delay_resp状况下,监测到delay_resp包后,从节点当即进入phase_cacul状况;假如长时刻没有监测到delay_resp包,则回来idle状况。在phase_cacul状况下,开端相位差核算模块后,当即进入wait_phase_result状况。在wait_phase_result状况下,比及相位丈量成果准备好后,进入delay_cacul状况;假如长时刻,相位成果都没有准备好,或许相位成果过错,则回来idle状况。在delay_cacul状况下,敞开offset核算模块后,进入wait_result状况。在wait_result状况下,当检测到偏移丈量成果准备好信号后,进入offset_update状况;不然回来到idle状况。在offset_update状况下,从节点时钟同步协议向本地时钟模块发送偏移校对信号,然后更新从节点的本地时钟,然后进入idle状况。
4 测验成果
实践测验环境包含一个主节点和一个从节点,之间用光纤衔接。示波器用来调查主节点和从节点输出的pps信号。因为主从节点的时钟相位不共同,示波器调查到的便是这个相位差。pps上升沿到来时,主从节点时刻戳经过串口模块输出给PC机。经过比照示波器测得的主从相位差以及pps上升沿主从时刻戳的差值,就能够得出实在的时刻戳同步精度。
本次测验运用了三种不同长度(3 m、6 m、5.15 m)的光纤,然后经过调查在不同长度光纤下的试验成果,然后能够判别时钟同步体系所能抵达的精度。主从节点相位差直方图以及相应的时刻戳的差值直方图略——编者注。
由这三种不同长度光纤所得出的成果来看,本文完成的同步时钟体系的时刻戳同步精度可达1 ns。
结语
本计划完成的时钟同步体系,以IEEE 1588协议中根据时刻戳的报文通讯为基本原理,在纯硬件电路(FPGA)中完成。经过在主节点添加了相位差测验模块,消除了主从节点相位不同的影响,最终完成的时刻戳同步精度高达1ns。
本文规划出来的时钟同步体系所需成本低,同步精度十分高,十分合适运用在需求高精度时刻戳的场合。