通用全硬件一步式1588的时钟同步装置及方法与流程

文档序号:15648232发布日期:2018-10-12 22:50阅读:888来源:国知局

本发明属于通信技术领域,更进一步涉及以太网技术领域中的一种通用全硬件一步式的基于网络测量和控制系统的精密时钟同步协议标准ieee1588(precisionclocksynchronizationprotocol)的时钟同步装置及方法。本发明按照网络测量和控制系统的精密时钟同步协议标准ieee1588(precisionclocksynchronizationprotocol)对网络设备进行时钟校准,使得基于以太网的分布式系统达到精确同步,保障以太网环境中网络设备间的实时性通信。



背景技术:

目前,随着以太网技术的快速发展,现代工业对时钟同步精度要求越来越高。由于现有的时钟同步方式都存在局限性,实现高精度、高可靠性、低成本的对时方式受到广泛关注。ieee1588标准,又称精确时间协议(precisiontimeprotocol,通常简写为ptp),是一种基于以太网的较为精确的时钟同步解决方案,其功能为使分布式网络中的其他时钟与最精确时钟保持时钟同步,用于对标准以太网或其他采用多播技术的分布式总线系统中的传感器、执行器以及其他终端设备中的时钟进行时钟同步。

中兴通讯股份有限公司在其申请的专利文献“ieee1588时间同步系统及其实现方法”(申请号:200810187676.0,公开号:cn101447861a)中公开了一种时间同步装置和时间同步方法。其装置包括交换机(switch)模块、物理芯片(phy)模块、cpu管理模块、实时时钟(rtc)模块、时间戳处理模块。所述switch模块,用于将来自多个phy模块端口的ieee1588时间戳消息过滤后,送到时间戳处理模块;所述phy模块,用于识别所述ieee1588消息,并向所述时间戳处理模块提供时间戳消息接收指示信号及时间戳消息发送指示信号;所述cpu模块,用于管理所述时间同步系统;所述rtc模块,用于提供本地时钟,根据接收到同步时钟来动态校准rtc;所述时间戳处理模块,用于实现对ieee1588时间戳消息的解析,获得同步时间,以校正rtc本地实时时钟;还用于产生ieee1588消息,并向其他设备发送。该装置存在的不足之处是,phy模块完成识别ieee1588消息并且给出消息发送、接收指示信号的功能,需要使用支持ieee1588协议的专用phy芯片,虽然同步精度大大提高,但该芯片会导致同步平台具有较差的通用性与移植性。

浙江大学在其申请的专利文献“一种基于ieee1588协议的高精度实时同步方法”(申请号:200810059859.4,公开号:cn101232457a)中公开了一种时间同步方法。该时间同步方法实施步骤是:第一,主时钟广播发送sync消息至从时钟,并记录sync消息发送点;第二,从时钟接收sync消息,并记录sync消息接收时间点;第三,主时钟把上一个sync消息的发送时间点信息放入followup消息,并发送给从时钟;第四,从时钟发送delayreq消息给主时钟,同时记录delayreq消息的发送时间点;第五,主时钟接收delay_req消息,并将该消息达到时间点放入delayresp消息,发送给从时钟,每实施一次即完成一次同步过程。该方法存在的不足之处是,每次同步过程中,主节点都需要发送一个跟随消息(followup),该跟随消息中包含发送同步消息sync时的精确时间戳信息,增加了网络的通信量。

北京四方继保自动化股份有限公司在其申请的专利文献“一种基于cpu通用定时器来实现ieee-1588协议中高精度时标的方法”(申请号:201310697514.2,公开号:cn103746789a)中公开了一种时间同步方法。该时间同步方法实施步骤是:第一,将以太网phy芯片通过mii接口与cpu芯片相连接,并将mii接口中的发送使能信号和接收数据有效信号,接至cpu的通用定时器的输入信号捕获管脚上;第二,使用cpu的通用定时器维护一个tai的时间轴,将通用定时器的每一个计数值都与tai的时间值一一对应;第三,发送使能信号和接收数据有效信号的上升沿时刻即为以太网报文的发送和接收时刻,通过使用通用定时器的捕获功能,获取所述发送或接受时刻的通用定时器的计数值;第四,将以太网报文发送和接受时刻对应的通用定时器的计数值转换为tai时间值,即可得到发送时标和接收时标;第五,根据获取的发送时标和接收时标在cpu上进行偏移量计算,根据偏移量对通用定时器进行补偿。该方法存在的不足之处是,系统内核和网卡软件驱动层在处理软件方式产生的时间戳的过程中,由于网卡的缓存效应和操作系统的进程调度具有不确定性,而导致cpu出现处理拥堵的问题,使该同步方法无法保证网络设备时钟同步的稳定性。



技术实现要素:

本发明目的在于针对上述已有技术的不足,提供一种通用全硬件一步式1588的时钟同步装置及方法。利用数据链路层mac与物理层phy间的精简吉比特介质独立接口rgmii处数据有效信号ctrl,采集精确时间戳信息;主时钟在发送同步报文sync时就带有本次发送的精确时间戳,无需再发送跟随报文。

为了实现上述目的,本发明的技术思路为:可编程逻辑芯片fpga实现一套通用全硬件一步式1588的主从时钟同步设备,该设备主要用于分布式网络中设备的时间同步。主从时钟在纯硬件平台上采用一步式同步方法,在每次同步交互过程中,利用数据链路层mac与物理层phy间的精简吉比特介质独立接口rgmii处数据有效信号ctrl,主从时钟各采集2个时间戳,从时钟根据主从时钟采集的4个时间戳信息计算主从时钟偏差值,根据主从时钟偏差值对从时钟进行校准,完成通信网络系统中网络设备的时钟同步;通过采用硬件形式的时间戳管理,将数据链路层和时钟同步的时间戳生成模块集成在一起,主时钟设备在发送同步报文sync时就带有本次发送的精确时间戳,无需再发送跟随报文。

本发明的装置包括组帧模块,mac发送控制模块,mac接收控制模块,解析模块,时间戳生成模块,先入先出队列时间戳fifo模块,本地时钟模块,偏差计算模块,时间戳插入模块;

所述组帧模块输出端与mac发送控制模块输入端相连;mac发送控制模块输出端与解析模块输入端相连;解析模块输出端与时间戳生成模块输入端相连;时间戳生成模块输出端与先入先出队列时间戳fifo模块输入端相连;先入先出队列时间戳fifo模块输出端与偏差计算模块输入端相连;先入先出队列时间戳fifo模块输出端与ptp时间戳插入模块输入端相连;偏差计算模块输出端与本地时钟模块输入端相连;本地时钟模块输出端与ptp时间戳生成模块输入端相连;其中,

时间戳生成模块包括采集时间戳模块和精简吉比特介质独立接口rgmii,其中,精简吉比特介质独立接口rgmii连接mac发送、接收控制模块与phy层;

所述ptp组帧模块,用于ptp同步事件帧的组帧工作,组帧模块下发送位宽为32比特的ptp帧数据供mac发送控制模块处理;

所述mac发送控制模块,用于将ptp组帧模块的数据封装成以太网帧,转换成适合rgmii接口的数据,并下发到phy层进行传递;

所述mac接收控制模块,用于接收phy层传递过来的以太网帧,校验接收到的帧是否出错,将正确接收的以太网帧提交给上层;

所述ptp解析模块,用于判断过滤以太网帧的包头信息中类型域字段是否为“0x88f7”,若是,将以太网帧到达产生的时间戳信息写入先入先出队列时间戳fifo模块中,否则,丢弃该时间戳信息;

所述时间戳生成模块,用于记录接收以太网帧的到达时间戳信息,将时间戳信息写入先入先出队列时间戳fifo模块中;

所述时间戳fifo模块,用于缓存时间戳生成模块送入的有效时间戳,便于偏差计算模块与时间戳插入模块读取时间戳信息;

所述本地时钟模块,用于向时间戳生成模块提供精确的纳秒级时间;

所述时间戳插入模块,用于将先入先出队列时间戳fifo模块中时间戳信息,插入到同步广播报文sync帧结构的时间戳字段中;

所述偏差计算模块,用于从时间戳fifo模块读取4个同步报文时间戳,计算出主从时钟的时间偏差;然后,将时间偏差传递给本地时钟模块,完成从时钟校正功能。

本发明方法的具体步骤包括如下:

(1)记录时间戳信息:

(1a)以太网帧经过数据链路层mac与物理层phy间的精简吉比特介质独立接口rgmii时,时间戳生成模块中的精简吉比特介质独立接口rgmii拉高数据有效信号ctrl;

(1b)时间戳生成模块中的采集时间戳模块,检测到数据有效信号ctrl拉高后,采集本地时钟模块对应数据有效信号ctrl拉高的时间值,将该时间值作为以太网帧的到达时间戳信息,同时将该到达时间戳信息存入临时时间戳寄存器;

(2)解析模块判断过滤以太网帧的包头信息中类型域字段是否为“0x88f7”,若是,则执行步骤(3),否则,丢弃临时时间戳寄存器中的时间戳信息后执行步骤(1);

(3)存入时间戳信息:

时间戳生成模块将类型域字段为“0x88f7”的以太网帧到达产生的时间戳信息,写入先入先出队列时间戳fifo模块中;

(4)解析模块判断过滤以太网帧的消息类型字段是否为“0x00”,若是,则执行步骤(5),否则,执行步骤(6);

(5)插入时间戳信息:

将当前传输同步报文确定为同步广播报文sync,时间戳插入模块将先入先出队列时间戳fifo模块中时间戳信息,采用字节计数方法,插入到同步广播报文sync帧结构的时间戳字段中后执行步骤(6);

(6)先入先出队列时间戳fifo模块判断其内部是否存储了4个时间戳,若是,则执行步骤(7),否则,执行步骤(1);

(7)利用时间偏差公式,计算主从时钟的时间偏差;

(8)校正从时钟时间:

用从时钟的本地时钟计数与偏差计算模块计算的时间偏差相加,将和值作为当前从时钟的本地时钟计数,完成主从时钟校正。

本发明与现有技术相比具有以下优点:

第一,由于本发明装置中的时间戳生成模块,采用在数据链路层mac与物理层phy间的精简吉比特介质独立接口rgmii处打时间戳的方式,能够直接获取同步报文到达数据链路层mac与物理层phy之间的时刻,消除了上层协议栈的延时不确定性,克服了现有技术由于使用支持ieee1588标准的专用phy芯片,同步平台通用性与移植性差的问题,使得本发明具有对物理层硬件要求低,同步平台通用性、移植性强的优点。

第二,由于本发明装置中的先入先出队列时间戳fifo模块,采用先入先出队列存储时间戳信息,保证了同步报文与自身到达时间戳的对应关系,克服了现有技术同步系统收到多个同步报文时,同步报文和到达时间戳不能正确对应的问题,使得本发明具有获得更准确到达时间戳的优点。

第三,由于本发明的方法采用硬件形式的时间戳管理,通过插入时间戳到同步广播报文sync帧结构时间戳字段,实现一步式的同步方法,使得主时钟在发送同步报文sync时就带有本次发送的精确时间戳,无需再发送跟随报文,克服了现有技术由于需要发送跟随报文,造成通信带宽浪费的问题,使本发明具有减小时钟同步所需的通信带宽的优点;

第四,由于本发明的方法在硬件fpga上计算主从时钟的时间偏差值,克服了现有技术采用软件计算时间偏差值的方式中,网卡的缓存效应和操作系统的进程调度具有不确定性,而导致cpu出现处理拥堵的问题,使本发明具有快速稳定计算主从时间偏差值的优点。

附图说明

图1为本发明装置的方框图;

图2为本发明方法的流程图;

图3为本发明方法中采集时间戳的示意图。

具体实施方式

下面结合附图对本发明做进一步的描述。

参照附图1装置方框图,对本发明装置做进一步的描述。

本发明装置组帧模块1,mac发送控制模块2,mac接收控制模块3,解析模块4,时间戳生成模块5,先入先出队列时间戳fifo模块6,本地时钟模块7,偏差计算模块8,时间戳插入模块9;所述组帧模块1输出端与mac发送控制模块2输入端相连;mac发送控制模块2输出端与解析模块4输入端相连;解析模块4输出端与时间戳生成模块5输入端相连;时间戳生成模块5输出端与先入先出队列时间戳fifo模块6输入端相连;先入先出队列时间戳fifo模块6输出端与偏差计算模块8输入端相连;先入先出队列时间戳fifo模块6输出端与ptp时间戳插入模块9输入端相连;偏差计算模块8输出端与本地时钟模块7输入端相连;本地时钟模块7输出端与时间戳生成模块5输入端相连;mac接收控制模块3与外部输入端相连。其中,

时间戳生成模块5包括采集时间戳模块10和精简吉比特介质独立接口rgmii,其中,精简吉比特介质独立接口rgmii连接mac发送控制模块2、mac接收控制模块3与phy层。

所述组帧模块1,用于ptp同步事件帧的组帧工作,组帧模块下发送位宽为32比特的ptp帧数据供mac发送控制模块处理。

所述mac发送控制模块2,用于将ptp组帧模块的数据封装成以太网帧,转换成适合rgmii接口的数据,并下发到phy层进行传递。

所述mac接收控制模块3,用于接收phy层传递过来的以太网帧,校验接收到的帧是否出错,将正确接收的以太网帧提交给上层。

所述解析模块4,用于判断过滤以太网帧的包头信息中类型域字段是否为“0x88f7”,若是,将以太网帧到达产生的时间戳信息写入先入先出队列时间戳fifo模块中,否则,丢弃该时间戳信息。

所述时间戳生成模块5,用于记录接收以太网帧的到达时间戳信息,将时间戳信息写入先入先出队列时间戳fifo模块中。

所述写入先入先出队列时间戳fifo模块6,用于缓存时间戳生成模块送入的有效时间戳,便于偏差计算模块与时间戳插入模块读取时间戳信息。

所述本地时钟模块7,用于向时间戳生成模块提供精确的纳秒级时间。

所述时间戳插入模块8,用于将先入先出队列时间戳fifo模块中时间戳信息,插入到同步广播报文sync帧结构的时间戳字段中。

所述偏差计算模块9,用于从时间戳fifo模块读取4个同步报文时间戳,计算出主从时钟的时间偏差;然后,将时间偏差传递给本地时钟模块,完成从时钟校正功能。

参照附图2,对本发明的方法做进一步的描述。

使用通用全硬件一步式1588的时钟同步装置,对标准以太网或其他采用多播技术的分布式总线系统中的传感器、执行器以及其他终端设备中的时钟进行时钟同步,其具体步骤包括如下:

步骤1,记录时间戳信息。

以太网帧经过数据链路层mac与物理层phy间的精简吉比特介质独立接口rgmii时,时间戳生成模块中的精简吉比特介质独立接口rgmii拉高数据有效信号ctrl;

时间戳生成模块中的采集时间戳模块,检测到数据有效信号ctrl拉高后,采集本地时钟模块对应数据有效信号ctrl拉高的时间值,将该时间值作为以太网帧的到达时间戳信息,同时将该到达时间戳信息存入临时时间戳寄存器;

所述数据有效信号ctrl包括数据经由链路层mac发送到物理层phy的发送有效信号tx_en、数据经由物理层phy发送到链路层mac的接收有效信号rx_dv。

步骤2,识别同步报文。

解析模块判断过滤以太网帧的包头信息中类型域字段是否为“0x88f7”,若是,当前以太网帧为同步报文,执行步骤3,否则,丢弃临时时间戳寄存器中的时间戳信息后执行步骤1;

所述同步报文的类型域字段为“0x88f7”,包括同步广播报文sync、同步请求报文delayreq。

步骤3,存入时间戳信息。

时间戳生成模块将类型域字段为“0x88f7”的以太网帧到达产生的时间戳信息,写入先入先出队列时间戳fifo模块中。

步骤4,识别同步广播报文sync。

解析模块判断过滤以太网帧的消息类型字段是否为“0x00”,若是,则执行步骤5,否则,执行步骤6。

步骤5,插入时间戳信息。

将当前传输同步报文确定为同步广播报文sync,时间戳插入模块将先入先出队列时间戳fifo模块中时间戳信息,采用字节计数方法,插入到同步广播报文sync帧结构的时间戳字段中后执行步骤6。

所述的字节计数方法的步骤如下:

第一步,数据链路层mac与物理层phy间的数据有效信号ctrl由低变高,说明当前正在发送以太网帧,此时启动一个计数器用于计算当前发送的字节相对于帧头的偏移;

第二步,解析模块判断过滤以太网帧的消息类型字段为“0x00”,说明当前发送帧为同步广播报文sync;

第三步,时间戳插入模块读取先入先出队列时间戳fifo模块中的时间戳信息;

第四步,当计数器计算的偏移量等于同步广播报文sync帧结构时间戳字段的偏移量时,说明当前传输位置为同步广播报文sync帧结构的时间戳字段,时间戳插入模块将读取的时间戳信息插入到同步广播报文sync帧结构的时间戳字段,用插入的时间戳信息替换同步广播报文sync帧结构时间戳字段中的当前帧内容。

步骤6,判断是否完成一次同步交互过程。

先入先出队列时间戳fifo模块判断其内部是否存储了4个时间戳,若是,则执行步骤7,否则,执行步骤1;

参照附图3,对本发明方法中采集时间戳过程做进一步的描述。

第一步,主时钟按照同步周期每隔一定时间向从时钟发送同步广播报文sync,同步广播报文sync中含有该报文的发送时间戳t1;

第二步,从时钟接收同步广播报文sync,并记录下接收时间戳t2;

第三步,从时钟每隔一段时间向主时钟发送同步请求报文delayreq,并记录下同步请求报文delayreq的发送时间戳t3;

第四步,主时钟接收同步请求报文delayreq,并记下同步请求报文delayreq的接收时间戳t4,然后主时钟立即向从时钟回复一个同步应答报文delayresp,将接收时间戳t4写进同步应答报文delayresp中传递给从时钟。

步骤7,计算主从时钟时间偏差。

按照下式,偏差计算模块计算主从时钟的时间偏差:

其中,t表示主从时钟的时间偏差,t1表示先入先出队列时间戳fifo模块第一次存入的同步广播报文sync发送时间戳,t2表示先入先出队列时间戳fifo模块第二次存入的同步广播报文sync接收时间戳,t3表示先入先出队列时间戳fifo模块第三次存入的同步请求报文delayreq发送时间戳,t4表示先入先出队列时间戳fifo第四次存入的同步请求报文delayreq接收时间戳。

步骤8,校正从时钟时间。

用从时钟的本地时钟计数与偏差计算模块计算的时间偏差相加,将和值作为当前从时钟的本地时钟计数,完成主从时钟校正。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1