CN111200473B - 一种基于fpga的分布式系统时钟同步控制器 - Google Patents
一种基于fpga的分布式系统时钟同步控制器 Download PDFInfo
- Publication number
- CN111200473B CN111200473B CN201911316522.1A CN201911316522A CN111200473B CN 111200473 B CN111200473 B CN 111200473B CN 201911316522 A CN201911316522 A CN 201911316522A CN 111200473 B CN111200473 B CN 111200473B
- Authority
- CN
- China
- Prior art keywords
- frame
- module
- pcf
- sending
- frames
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0644—External master-clock
Abstract
本发明公开了一种基于FPGA的分布式系统时钟同步控制器,包括数据帧接收模块、余度接收控制模块、业务帧处理模块、保序处理模块、集群检测模块、选优模块、状态机模块、调度器模块、时钟修正模块以及数据帧发送模块;本发明提供的同步控制器采用FPGA硬件即可实现时钟同步,相比于以往采样软件模拟的同步方式,同步精度更高,并且提高了数据处理速度,降低了网络延迟。
Description
技术领域
本发明涉及时钟同步控制器,具体涉及一种基于FPGA的分布式系统时钟同步控制器。
背景技术
近年来,随着航空、航天等高端装备的电子系统都在由以前的分立式、联合式体系架构朝着网络化、综合化、分布式的开放体系架构方向发展,时间触发网络得到越来越多的重视,时间触发网络是一种在交换式网络环境下的时间触发通信技术,并严格按照整合周期和预先规划好的发送时间点进行业务调度,具备高可靠、确定性传输,同时具有良好的兼容性和高带宽,能够满足未来高端装备分布式综合电子系统的组网通信需求。
在分布式系统中,时间触发通信严格按照时刻调度表进行调度,因此时钟同步机制就显得格外重要,时钟同步精度越高,系统的通信抖动就越低,系统可靠性就越高。该时钟同步详细定义了同步流程以及容错控制机制,为高可靠、高精度的网络时钟同步提供了一套完整的设计机制。在时钟同步过程中定义了三种重要网络构件,包括:(1)同步控制器(Synchronization Master,SM),时钟同步请求的发起者,也是本地时钟同步的执行者;(2)同步集中器(Compression Master,CM),响应SM发起的时钟同步请求,担任全局时钟的仲裁者角色,生成全局统一时间,通常同步集中器为交换机;(3)同步客户端(SynchronizationClient,SC),被动接收网络时钟同步要求,进行本地时钟同步。
目前针对分布式系统时钟同步控制器的研究大都停留在软件和仿真层面,软件方式由于时间精度有限,导致同步精度在毫秒级别,其无法满足高端装备的实际需求。
发明内容
本发明的目的在于提供一种基于FPGA的分布式系统时钟同步控制器,用以解决现有技术中时钟同步控制器为软件模拟方法,存在同步精度不高的问题。
为了实现上述任务,本发明采用以下技术方案:
一种基于FPGA的分布式系统时钟同步控制器,所述的同步控制器采用FPGA芯片实现,所述的同步控制器包括数据帧接收模块、余度接收控制模块、业务帧处理模块、保序处理模块、集群检测模块、选优模块、状态机模块、调度器模块、时钟修正模块以及数据帧发送模块;
所述的数据帧接收模块用于同时获取两路数据帧后,将两路数据帧分别加入本地时标,获得两路加入本地时标后的数据帧;对两路加入本地时标后的数据帧进行完整性检测后输入至余度接收控制模块;
所述的余度接收控制模块用于将两路加入本地时标后的数据帧中首先到达余度接收控制模块的数据帧作为有效数据帧,将另外一个加入本地时标后的数据帧剔除;其中所述的有效数据帧包括多个PCF帧、TT帧以及BE帧,其中每个PCF帧包括成员关系值以及透明时钟字段;
所述的余度接收控制模块还用于将所述的有效数据帧中的多个PCF帧发送给保序处理模块;
所述的余度接收控制模块还用于对所述的有效数据帧中的TT帧进行余度处理,获得余度处理后的TT帧;
所述的余度接收控制模块还用于将所述的余度处理后的TT帧以及有效数据帧中的BE帧发送给业务帧处理模块;
所述的业务帧处理模块用于将所述的BE帧以及余度处理后的TT帧进行缓存;
所述的保序处理模块用于对所述的多个PCF帧按照每个PCF帧对应的保序点时间先后顺序进行排序,获得保序处理后的多个PCF帧;所述的每个PCF帧对应的保序点由该帧的实际接收点与该帧对应的透明时钟字段计算得到;
所述的保序处理模块还用于获得预接收点;
所述的集群检测模块用于将所述的保序处理后的多个PCF帧进行集群检测,获得同步集群检测结果以及异步集群检测结果;
所述的选优模块用于从所述的保序处理模块获得的保序处理后的多个PCF帧中选择一个最优PCF帧,所述的最优PCF帧的成员关系值最大且保序点与所述的预接收点之间的偏差最小;
所述的选优模块还用于计算最优PCF帧的保序点与所述预接收点之间的差值,获得误差值;
所述的状态机模块用于根据所述的最优PCF帧、同步集群检测结果以及异步集群检测结果,控制同步过程,所述的同步过程包括是否进入同步状态;
所述的状态机模块还用于判断当进入同步状态时,控制时钟修正模块开始进行修正处理;
所述的时钟修正模块用于当本地时钟计数到达预设的时钟修正点时,利用所述的误差值进行本地时钟修正处理,获得修正后的本地时钟;
所述的调度器用于当所述的修正后的本地时钟到达调度表中的时间点时生成数据帧发送信号;所述的调度表包括PCF帧发送时间、BE帧发送时间以及TT帧发送时间;
所述的数据帧发送信号包括PCF帧发送信号、BE帧发送信号或TT帧发送信号;
所述的数据帧发送模块用于根据所述的数据帧发送信号,将所述的获得PCF帧的发送内容、BE帧以及余度处理后的TT帧分成两路数据帧后进行编码输出。
进一步地,所述的数据帧接收模块包括两路并行设置的数据帧处理子模块;
所述的数据帧处理子模块包括依次设置的SFP接收控制模块、本地时标记录模块以及完整性检测模块;
所述的SFP接收控制模块用于获取数据帧后进行解码,获得解码后的数据帧;
所述的SFP接收控制模块还用于接收到数据帧后,根据数据帧达到的时间点,获得本地时标;
所述的本地时标记录模块用于在所述的解码后的数据帧中加入本地时标,获得加入本地时标后的数据帧;
所述的完整性检测模块用于检测所述的本地时标后的数据帧中的PCF帧的PCF_VLID字段和CTMarker字段是否在设定范围内,若不在则丢弃所述的本地时标后的数据帧。
进一步地,所述的集群检测模块将所述的保序处理后的多个PCF帧进行集群检测时,若任一PCF帧对应的保序点在筛选范围内,则将当前PCF划分为同步PCF帧,否则将当前帧划分为异步PCF帧,获得多个同步PCF帧以及多个异步PCF帧;
对所述的多个同步PCF帧的成员关系值进行按位或运算,获得同步集群检测结果;
对所述的多个异步PCF帧的成员关系值进行按位或运算,获得异步集群检测结果。
进一步地,所述的调度器根据调度表按照时间顺序生成数据帧发送信号,具体包括:
当所述的修正后的本地时钟到达PCF帧时间发送点时,生成PCF帧发送信号;
当所述的修正后的本地时钟到达TT帧时间发送点,生成TT帧发送信号;
当所述的修正后的本地时钟到达点既不是PCF帧时间发送点也不是TT帧时间发送点,生成BE帧发送信号。
进一步地,所述的数据帧发送模块包括一个余度发送控制模块以及两个并行设置的SFP发送控制模块;
所述的余度发送控制模块用于根据所述的PCF帧发送信号将所述的PCF帧的发送内容发送至任一SFP发送控制模块;
所述的余度发送控制模块还用于根据所述的TT帧发送信号将所述的TT帧发送至任一SFP发送控制模块;
所述的余度发送控制模块还用于根据所述的BE帧发送信号将所述的BE帧发送至任一SFP发送控制模块;
所述的SFP发送控制模块用于对接收的数据帧进行重新编码后输出。
本发明与现有技术相比具有以下技术效果:
1、本发明提供的基于FPGA的分布式系统时钟同步控制器提供了一套FPGA处理器能够实现的工作模块,采用FPGA硬件即可实现时钟同步,相比于以往采样软件模拟的同步方式,同步精度更高,并且提高了数据处理速度,降低了网络延迟;
2、本发明提供的基于FPGA的分布式系统时钟同步控制器通过利用PFGA中的SFP模块进行数据的发送与接收,相比于传统的软件模拟的方式,可靠性更好,并且提供了两路数据输入与输出,互为冗余设备,采用先到先得的方法进行数据输入的竞争,进一步地提高了控制器的可靠性;
3、本发明提供的基于FPGA的分布式系统时钟同步控制器采用PFGA实现分布式系统同步控制算法,同步精度可以达到100ns以内,单次调节的步进可以达到8ns,具有较高的实时性与可靠性,可以应用在航空、航天、高铁等对安全性和实时性要求高的产品研制中。
附图说明
图1为本发明提供的网络时钟同步过程示意图;
图2为本发明提供的同步控制器硬件结构示意图;
图3为本发明提供的FPGA同步控制器内部结构示意图;
图4为本发明提供的状态机工作过程示意图。
具体实施方式
下面结合附图和实施例对本发明进行详细说明。以便本领域的技术人员更好的理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
以下对本发明涉及的定义或概念内涵做以说明:
PCF帧:Protocol Control Frame,协议控制帧,携带有时间触发以太网协议控制信息,PCF帧还分为冷启动CS帧、冷启动确认帧CA帧以及整合IN帧。
TT帧:Time Triggered,时间触发数据帧;
BE帧:Best Effort,尽力传数据帧;
SFP:Small Form Pluggable,电信号转换为光信号的接口;
FPGA:现场可编程逻辑门阵列器件;
PCIe:PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准;
实施例:
在本实施例中公开了一种基于FPGA的分布式系统时钟同步控制器。
在本实施例中,节点机一般充当同步控制器SM的角色。如图2所示,包括SFP、A7系列FPGA、FLASH、串口等硬件结构。
SFP模块,既可以是光模块也可以是电模块,其作为SM与CM的数据交互接口,完成数据帧的收发功能。每个SM使用两路SFP模块,以支持双余度功能。
FPGA为赛灵思的A7系列,主要实现时钟同步控制器的功能。
FLASH用于存储FPGA的加载文件,FPGA上电后从FLASH读取并加载可编程逻辑,完成整个FPGA的功能。
串口为RS-232接口,负责接收控制器的状态信息及其它辅助信息。
如图1所示的分布式系统时钟同步过程,时钟同步由同步控制器SM发起,同步集中器CM收到链路上来自不同SM发送的PCF帧,通过保序计算、集中计算得到全局统一时钟,再通过PCF帧转发给SM/SC,SM/SC根据收到的全局统一时钟信息校正本地时钟,这样就完成分布式系统网络时钟同步过程。图中符号表示的含义如表1。
表1时钟同步过程中符号含义
本发明提供的同步控制器包括数据帧接收模块、余度接收控制模块、业务帧处理模块、保序处理模块、集群检测模块、选优模块、状态机模块、调度器模块、时钟修正模块以及数据帧发送模块;
数据帧接收模块用于同时获取两路数据帧后,将两路数据帧分别转换帧格式后加入本地时标,获得两路加入本地时标后的数据帧;对两路加入本地时标后的数据帧进行完整性检测后输入至余度接收控制模块;
可选地,数据帧接收模块包括两路并行设置的数据帧处理子模块;
数据帧处理子模块包括依次设置的SFP接收控制模块、本地时标记录模块以及完整性检测模块;
SFP接收控制模块用于获取数据帧后进行解码,获得解码后数据帧;
SPF接收控制模块还用于接收到数据帧后,根据数据帧到达时间点,记录本地时标,即获得本地时标;
如图3所示,SFP接收控制模块用于接收由集中器发送来的数据,将来自集中器的数据帧通过SFP接收控制模块解码,将解码后的数据帧传给后续模块。
本地时标记录模块用于在解码后的数据帧中加入本地时标,获得加入本地时标后的数据帧;
完整性检测模块用于检测本地时标后的数据帧中的PCF帧的PCF_VLID字段和CTMarker字段是否在设定范围内,若不在则丢弃本地时标后的数据帧。
在本实施例中,数据帧分为三大类,PCF帧(帧类型为0x891d)、TT数据帧(帧类型/长度字段为实际载荷长度,小于1500)、BE数据帧(除TT与PCF帧都可以视为BE帧),其中PCF帧又可分为三大类,包含冷启动帧(CS帧,pcf type=0x04)、冷启动确认帧(CA帧,pcf type=0x08)、整合帧(IN帧,pcf type=0x02)。
对PCF帧查询PCF_VLID字段和CTMarker字段,这两个字段合成PCF帧目的地址,如果这两个字段不在设定范围内,则直接丢弃此帧。如果当前是同步状态,还要检查整合周期是否正确。
在本实施例中,字段查询的设定范围是用户根据设备情况自定义的,例如对于某一节点的PCF帧查询以下信息:
0x0fe5<PCF_VLID<0x0fee、CTMarker=0xabadbabe
余度接收控制模块用于将两路加入本地时标后的数据帧中首先到达余度接收控制模块的数据帧作为有效数据帧,将另外一个加入本地时标后的数据帧剔除;其中有效数据帧包括多个PCF帧、TT帧以及BE帧,其中每个PCF帧包括成员关系值以及透明时钟字段;
余度接收控制模块还用于将有效数据帧中的多个PCF帧发送给保序处理模块;
余度接收控制模块还用于对有效数据帧中的TT帧进行余度处理,获得余度处理后的TT帧;
余度接收控制模块还用于将余度处理后的TT帧以及有效数据帧中的BE帧发送给业务帧处理模块;
在本实施例中,余度接收控制模块根据先到先赢的策略,将两个通道收到的数据帧中的冗余帧剔除,选择有效数据帧传送给后级。PCF帧传递给保序模块,业务帧(TT/BE)传递给业务帧接收控制模块。
业务帧处理模块用于将BE帧以及余度处理后的TT帧进行缓存;
在本实施例中,业务帧处理模块包括业务帧接收控制模块、业务数据缓冲模块以及PCIe模块。
业务帧接收控制模块用于将所述的BE帧以及余度处理后的TT帧发送给业务数据缓冲模块;
业务数据缓冲模块用于存储所述的BE帧以及余度处理后的TT帧后,等待PCIe模块读取;
上层软件通过PCIe模块读取BE帧以及余度处理后的TT帧。
保序处理模块用于对多个PCF帧按照每个PCF帧对应的保序点时间先后顺序进行排序,获得保序处理后的多个PCF帧;每个PCF帧对应的保序点由该帧的实际接收点与该帧对应的透明时钟字段计算得到;
保序处理模块还用于获得预接收点;
在本实施例中,保序处理模块,根据配置寄存器信息计算出预接收点sm_scheduled_pit,再根据实际帧的接收点sm_receive_pit与PCF帧携带的透明时钟字段,计算出保序点sm_permanence_pit,使得网络由于自身原因而失序的各个PCF帧,恢复其原始的发送时间顺序,即保证PCF帧的接收顺序与其发送顺序相同。
集群检测模块用于将保序处理后的多个PCF帧进行集群检测,获得同步集群检测结果以及异步集群检测结果;
在本实施例中,在经过保序处理的PCF帧,若保序点(sm_permanence_pit)在接收窗口(预接收点筛选范围)之内,则将该PCF帧的membership值整合成新的sync_membership;若保序点(sm_permanence_pit)在接收窗口之外,则将该PCF帧的membership值整合到async_membership,为SM状态机跳转提供条件。
可选地,集群检测模块将保序处理后的多个PCF帧进行集群检测时,若任一PCF帧对应的保序点在筛选范围内,则将当前PCF划分为同步PCF帧,否则将当前帧划分为异步PCF帧,获得多个同步PCF帧以及多个异步PCF帧;
对多个同步PCF帧的成员关系值进行或运算,获得同步集群检测结果;
对多个异步PCF帧的成员关系值进行或运算,获得异步集群检测结果。
在本实施例中,同步集群检测结果以及异步集群检测结果均为进行或运算后的成员关系值。
选优模块用于从保序处理模块获得的保序处理后的多个PCF帧中选择一个最优PCF帧,最优PCF帧的成员关系值最大且保序点与预接收点之间的偏差最小;
选优模块还用于计算最优PCF帧的保序点与所述预接收点之间的差值,获得误差值;
在本实施例中,当收到多个保序处理后的PCF帧时,根据择优算法(即成员关系值最大的前提下,保序点离预接收点偏差最小),选择出一个最优的PCF帧,该帧保序点sm_permanence_pit与预接收点sm_scheduled_pit的差值,即为误差值(clock_corr),将该值送入SM状态机模块。
状态机模块用于根据最优PCF帧、同步集群检测结果以及异步集群检测结果,控制同步过程;
在本实施例中,在时钟同步控制器的时钟同步设计中,定义了SM的状态机及转换关系,SM状态机包含8种状态:SM_INTEGRATE、SM_WAIT_4_CYCLE_START、SM_UNSYNC、SM_FLOOD、SM_WAIT_4_CYCLE_START_CS、SM_TENTIVE_SYNC、SM_SYNC、SM_STABLE。
各状态取值含义如表2所示:
表2SM各状态取值含义列表
SM协议状态机如图4所示。协议状态机中的同步状态有状态SM_TENTATIVE_SYNC、SM_SYNC和SM_STABLE,其余的都是异步状态。
状态机的具体工作过程为:
当状态为SM初始状态时,收到CA帧,次态为SM_WAIT_4_CYCLE_START_CS;收到IN帧,若IN中成员关系local_sync_membership>=sm_Integrate_to_sync_thrld时,下一个状态为SM_SYNC;收到IN帧,若IN中同步成员关系local_sync_membership<sm_Integrate_to_sync_thrld&>=sm_integ rate_to_wait_thrld时,下一状态为SM_WAIT_4_CYCLE_START;收到local_timer时间超时,次态为SM_UNSYNC。
当状态为SM等待被同步状态时,收到IN帧,转入到SM_WAIT_4_CYCLE_START;Local_timer超时,且local_sync_membership=0时,转入到SM_UNSYNC;Local_timer超时,且local_sync_membership>0时,转入到SM_TENTATIVE_SYNC。
当状态为SM未同步,主动发起冷启动,SM配置为高完整性,接收到了来自其他SM节点的CS帧,次态SM_FLOOD;当接收到CS帧,并且本节点的integrity为标准完整性时,跳转到下一个状态为SM_FLOOD;当接收到CA帧时,次态为SM_WAIT_4_CYCLE_START_CS;当接收到IN帧,且IN帧同步成员关系大于等于sm_unsync_to_sync_thrld时,次态为SM_SYNC;当接收到IN帧,且IN帧同步成员关系小于sm_unsync_to_sync_thrld,且大于等于sm_unsync_to_tentative_thrld时,次态为SM_TENTIVE_SYNC;未收到PCF帧,且local_timer时间超时,次态仍为本状态SM_UNSYNC。
当状态为SM冷启动同步准备,收到CS帧时,转入本状态SM_FLOOD;收到CA帧,local_flood_receive=TURE,并且local_close_window=false,转换到SM_WAIT_4_CYCLE_START_CS状态;Local_timer超时,并local_flood_receive=FALSE,local_close_window=FALSE的条件下,发送CA帧,转入本状态SM_FLOOD;16Local_timer超时,并local_flood_receive=TRUE,local_close_window=FALSE的条件下,转入本状态SM_FLOOD状态;local_timer超时,并local_flood_receive=TRUE,local_close_window=TRUE的条件下,转入状态SM_UNSYNC状态。
当状态为SM收到CA发送第一个IN帧时,收到CS帧,跳转到SM_FLOOD;收到CA帧,跳转到SM_WAIT_4_CYCLE_START_CS;当local_timer超时,跳转到SM_TENTATIVE_SYNC状态。
当状态为SM临时同步时,收到CA帧,下一个状态跳转到SM_WAIT_4_CYCLE_START_CS状态;当local_clock到达异步检测点smc_async_eval_pit时,并异步成员关系数local_async_membership>=sm_tentative_sync_threshold_async或>=local_sync_membership时,跳转到SM_UNSYNC;local_clock到达异步检测点smc_dispatch_pit时,并异步成员关系数(local_async_membership>=sm_tentative_sync_threshold_async OR>=local_sync_membership)不成立时,仍然维持SM_TENTATIVE_SYNC状态,并发送IN帧;Local_clock到达同步检测点smc_sync_eval_pit,且同步成员关系小于sm_tentative_sync_threshold_sync,下一状态转入到SM_UNSYNC;local_clock到达同步检测点smc_sync_eval_pit,且同步成员关系大于sm_tentative_sync_threshold_sync且小于sm_tentative_to_sync_thrld,下一状态维持到本状态stable_cycle_ctr+1;Local_clock到达同步检测点smc_sync_eval_pit,且同步成员关系>=sm_tentative_to_sync_thrld,下一状态转入到SM_SYNC,stable_cycle_ctr清零;local_clock到达同步检测点smc_sync_eval_pit,且同步成员关系>=sm_tentative_to_sync_thrld,下一状态转入到SM_SYNC,stable_cycle_ctr清零;local_clock到达同步检测点smc_sync_eval_pit,且同步成员关系>=sm_tentative_sync_threshold_syn&&<Sm_tentative_to_sync_thrld&&stable_cycle_ctrl>=num_stable_cycles&sm_tent_to_stab le_enabled,下一状态转入到SM_STABLE,stable_cycle_ctr清零;local_clock到达时钟修正点smc_clock_corr_pit,下一状态维持不变,local=local+clock_corr。
当状态为SM同步状态时,收到CA帧,下一个状态跳转到SM_WAIT_4_CYCLE_START_CS状态;当local_clock到达异步检测点smc_async_eval_pit时,并异步成员关系数local_async_membership>=sm_tentative_sync_threshold_async或>=local_sync_membership时,跳转到SM_UNSYNC;local_clock到达派遣点smc_dispatch_pit时,并异步成员关系数(local_async_membership>=sm_tentative_sync_threshold_async OR>=local_sync_membership)不成立时,跳转到SM_SYNC状态,并发送IN帧;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数0<local_sync_membership<sm_sync_threshold_sync时,跳转到SM_UNSYNC;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数local_sync_membership=0,跳转到SM_INTEGRATE;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数local_sync_membership>=sm_sync_threshold_sync且stable_clycle_ctr<num_stable_cycles时&sm_sync_to_stable_enabled,维持到SM_SYNC状态,将stable_clycle_ctr加1;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数local_sync_membership>=sm_sync_threshold_sync且stable_clycle_ctr>=num_stable_cycles时&sm_sync_to_stable_enabled,下一个状态转换到SM_STABLE状态,将stable_clycle_ctr置0;local_clock到达时钟修正点smc_clock_corr_pit,下一状态维持不变,local=local+clock_corr。
当状态为SM稳定同步时,收到CA帧且stable_ca_enabled,次态为SM_WAIT_4_CYCLE_START_CS;当local_clock到达异步检测点smc_async_eval_pit时,并异步成员关系数local_async_membership>=sm_stable_threshold_async或>=local_sync_membership时,跳转到SM_INTEGRATE;local_clock到达异步检测点smc_dispatch_pit时,并异步成员关系数(local_async_membership>=sm_stable_threshold_asyncOR>=local_sync_membership)不成立时,仍然维持SM_STABLE状态,并发送IN帧;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数local_sync_membership<sm_stable_threshold_sync时&stable_cycle_ctr<num_unstable_cycles时,下一个状态维持到SM_STABLE,将stable_cycle_ctr加1;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数local_sync_membership<sm_stable_threshold_sync时&&stable_cycle_ctr>=num_unstable_cycles时,下一个状态转移到SM_INTEGRATE;当local_clock到达同步检测点smc_sync_eval_pit时,同步成员关系数local_sync_membership>=sm_stable_threshold_sync时,下一个状态维持在SM_STABLE状态;local_clock到达时钟修正点smc_clock_corr_pit,下一状态维持不变,local=local+clock_corr。
状态机模块还用于判断当进入同步状态时,控制时钟修正模块开始进行修正处理;
时钟修正模块用于当本地时钟计数到达预设的时钟修正点时,利用误差值进行本地时钟修正处理,获得修正后的本地时钟;
在本实施例中,预设的时钟修正点由上层软件计算得出并配置。
在本实施例中,当本地时钟计数到达sm_clock_corr_pit时,根据误差值(clock_corr)修正本地时钟local_clock,完成时钟修正过程。
调度器用于当修正后的本地时钟到达调度表中的时间点时生成数据帧发送信号;调度表包括PCF帧发送时间、BE帧发送时间以及TT帧发送时间;
在本实施例中,调度器根据调度表对PCF/TT/BE帧的发送严格按照时间进行调度发送,其中PCF在send_pit进行发送,TT在调度表规定的时间发送,BE在除了发送PCF和TT帧的时间进行发送。BE和TT帧是PCIe模块提前下发到业务数据缓冲区中。PCF帧根据SM状态机的状态决定发送CS/CA/IN帧,在发送的时候根据帧格式填充当前透明时钟。
可选地,调度器根据调度表按照时间顺序生成数据帧发送信号,具体包括:
当修正后的本地时钟到达PCF帧时间发送点时,生成PCF帧发送信号;
当修正后的本地时钟到达TT帧时间发送点,生成TT帧发送信号;
当修正后的本地时钟到达点既不是PCF帧时间发送点也不是TT帧时间发送点,生成BE帧发送信号。
数据帧发送信号包括PCF帧发送信号、BE帧发送信号或TT帧发送信号;
数据帧发送模块用于根据数据帧发送信号,将获得PCF帧的发送内容、BE帧以及余度处理后的TT帧分成两路数据帧后进行编码输出。
可选地,数据帧发送模块包括一个余度发送控制模块以及两个并行设置的SFP发送控制模块;
余度发送控制模块用于根据PCF帧发送信号将PCF帧的发送内容发送至任一SFP发送控制模块;
余度发送控制模块还用于根据TT帧发送信号将TT帧发送至任一SFP发送控制模块;
余度发送控制模块还用于根据BE帧发送信号将BE帧发送至任一SFP发送控制模块;
SFP发送控制模块用于对接收的数据帧进行重新编码后输出。
在本实施例中,根据发送余度控制寄存器,将待发送的数据帧选择性的通过SFP发送控制器将数据发送出去,SFP发送控制器,将送到此模块的数据根据编码格式重新编码,通过SFP发送给CM交换机或者其他模块。
本发明提供的时钟同步控制器经过多次试验证明,同步精度可以达到100ns以内,单次调节的步进可以达到8ns,具有较高的实时性与可靠性,可以应用在航空、航天、高铁等对安全性和实时性要求高的产品研制中。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
Claims (5)
1.一种基于FPGA的分布式系统时钟同步控制器,其特征在于,所述的同步控制器采用FPGA芯片实现,所述的同步控制器包括数据帧接收模块、余度接收控制模块、业务帧处理模块、保序处理模块、集群检测模块、选优模块、状态机模块、调度器模块、时钟修正模块以及数据帧发送模块;
所述的数据帧接收模块用于同时获取两路数据帧后,将两路数据帧分别加入本地时标,获得两路加入本地时标后的数据帧;对两路加入本地时标后的数据帧进行完整性检测后输入至余度接收控制模块;
所述的余度接收控制模块用于将两路加入本地时标后的数据帧中首先到达余度接收控制模块的数据帧作为有效数据帧,将另外一个加入本地时标后的数据帧剔除;其中所述的有效数据帧包括多个PCF帧、TT帧以及BE帧,其中每个PCF帧包括成员关系值以及透明时钟字段;
所述的余度接收控制模块还用于将所述的有效数据帧中的多个PCF帧发送给保序处理模块;
所述的余度接收控制模块还用于对所述的有效数据帧中的TT帧进行余度处理,获得余度处理后的TT帧;
所述的余度接收控制模块还用于将所述的余度处理后的TT帧以及有效数据帧中的BE帧发送给业务帧处理模块;
所述的业务帧处理模块用于将所述的BE帧以及余度处理后的TT帧进行缓存;
所述的保序处理模块用于对所述的多个PCF帧按照每个PCF帧对应的保序点时间先后顺序进行排序,获得保序处理后的多个PCF帧;所述的每个PCF帧对应的保序点由该帧的实际接收点与该帧对应的透明时钟字段计算得到;
所述的保序处理模块还用于获得预接收点;
所述的集群检测模块用于将所述的保序处理后的多个PCF帧进行集群检测,获得同步集群检测结果以及异步集群检测结果;
所述的选优模块用于从所述的保序处理模块获得的保序处理后的多个PCF帧中选择一个最优PCF帧,所述的最优PCF帧的成员关系值最大且保序点与所述的预接收点之间的偏差最小;
所述的选优模块还用于计算最优PCF帧的保序点与所述预接收点之间的差值,获得误差值;
所述的状态机模块用于根据所述的最优PCF帧、同步集群检测结果以及异步集群检测结果,控制同步过程,所述的同步过程包括是否进入同步状态;
所述的状态机模块还用于判断当进入同步状态时,控制时钟修正模块开始进行修正处理;
所述的时钟修正模块用于当本地时钟计数到达预设的时钟修正点时,利用所述的误差值进行本地时钟修正处理,获得修正后的本地时钟;
所述的调度器用于当所述的修正后的本地时钟到达调度表中的时间点时生成数据帧发送信号;所述的调度表包括PCF帧发送时间、BE帧发送时间以及TT帧发送时间;
所述的数据帧发送信号包括PCF帧发送信号、BE帧发送信号或TT帧发送信号;
所述的数据帧发送模块用于根据所述的数据帧发送信号,将获得PCF帧的发送内容、BE帧以及余度处理后的TT帧分成两路数据帧后进行编码输出。
2.如权利要求1所述的基于FPGA的分布式系统时钟同步控制器,其特征在于,所述的数据帧接收模块包括两路并行设置的数据帧处理子模块;
所述的数据帧处理子模块包括依次设置的SFP接收控制模块、本地时标记录模块以及完整性检测模块;
所述的SFP接收控制模块用于获取数据帧后进行解码,获得解码后的数据帧;
所述的SFP接收控制模块还用于接收到数据帧后,根据数据帧达到的时间点,获得本地时标;
所述的本地时标记录模块用于在所述的解码后的数据帧中加入本地时标,获得加入本地时标后的数据帧;
所述的完整性检测模块用于检测所述的加入本地时标后的数据帧中的PCF帧的PCF_VLID字段和CTMarker字段是否在设定范围内,若不在则丢弃所述的加入本地时标后的数据帧。
3.如权利要求1所述的基于FPGA的分布式系统时钟同步控制器,其特征在于,所述的集群检测模块将所述的保序处理后的多个PCF帧进行集群检测时,若任一PCF帧对应的保序点在筛选范围内,则将当前PCF划分为同步PCF帧,否则将当前帧划分为异步PCF帧,获得多个同步PCF帧以及多个异步PCF帧;
对所述的多个同步PCF帧的成员关系值进行按位或运算,获得同步集群检测结果;
对所述的多个异步PCF帧的成员关系值进行按位或运算,获得异步集群检测结果。
4.如权利要求1所述的基于FPGA的分布式系统时钟同步控制器,其特征在于,所述的调度器根据调度表按照时间顺序生成数据帧发送信号,具体包括:
当所述的修正后的本地时钟到达PCF帧时间发送点时,生成PCF帧发送信号;
当所述的修正后的本地时钟到达TT帧时间发送点,生成TT帧发送信号;
当所述的修正后的本地时钟到达点既不是PCF帧时间发送点也不是TT帧时间发送点,生成BE帧发送信号。
5.如权利要求1所述的基于FPGA的分布式系统时钟同步控制器,其特征在于,所述的数据帧发送模块包括一个余度发送控制模块以及两个并行设置的SFP发送控制模块;
所述的余度发送控制模块用于根据所述的PCF帧发送信号将所述的PCF帧的发送内容发送至任一SFP发送控制模块;
所述的余度发送控制模块还用于根据所述的TT帧发送信号将所述的TT帧发送至任一SFP发送控制模块;
所述的余度发送控制模块还用于根据所述的BE帧发送信号将所述的BE帧发送至任一SFP发送控制模块;
所述的SFP发送控制模块用于对接收的数据帧进行重新编码后输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911316522.1A CN111200473B (zh) | 2019-12-19 | 2019-12-19 | 一种基于fpga的分布式系统时钟同步控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911316522.1A CN111200473B (zh) | 2019-12-19 | 2019-12-19 | 一种基于fpga的分布式系统时钟同步控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111200473A CN111200473A (zh) | 2020-05-26 |
CN111200473B true CN111200473B (zh) | 2021-08-24 |
Family
ID=70746943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911316522.1A Active CN111200473B (zh) | 2019-12-19 | 2019-12-19 | 一种基于fpga的分布式系统时钟同步控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111200473B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114301563B (zh) * | 2021-12-24 | 2023-05-05 | 中国航发控制系统研究所 | 集群间多余度同步电路、总线系统及集群间同步的方法 |
CN115150016B (zh) * | 2022-06-24 | 2023-07-28 | 中国电子科技集团公司第五十八研究所 | 一种时间同步主控制器电路的工作方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101207432A (zh) * | 2006-12-19 | 2008-06-25 | 华为技术有限公司 | 一种实现时间自动同步的方法和系统 |
CN102255803A (zh) * | 2011-07-06 | 2011-11-23 | 北京航空航天大学 | 一种适用于时间触发交换式网络的周期调度时刻表构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9693367B2 (en) * | 2014-01-13 | 2017-06-27 | Zte Corporation | Contention arbitration using code division multiplexing |
-
2019
- 2019-12-19 CN CN201911316522.1A patent/CN111200473B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101207432A (zh) * | 2006-12-19 | 2008-06-25 | 华为技术有限公司 | 一种实现时间自动同步的方法和系统 |
CN102255803A (zh) * | 2011-07-06 | 2011-11-23 | 北京航空航天大学 | 一种适用于时间触发交换式网络的周期调度时刻表构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111200473A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110545152B (zh) | 一种以太网中具有实时传输功能的上位机及以太网系统 | |
CN106921591B (zh) | 一种机载航电网络中关键性业务突发处理方法 | |
CN111200473B (zh) | 一种基于fpga的分布式系统时钟同步控制器 | |
CN102123073B (zh) | 数据包重排序方法及装置 | |
US10149025B2 (en) | Optical packet sending method and device, optical packet processing method, and optical switching device | |
CN114422448B (zh) | 一种时间敏感网络流量整形方法 | |
US8687637B2 (en) | Communication control method and relay device | |
CN115051938B (zh) | Opc ua-tsn传输时延测试系统及方法 | |
WO2020222289A1 (en) | Method implemented by computer means of a communicating entity in a packet-switched network, and computer program and computer-readable non-transient recording medium thereof, and communicating entity of a packet-switched network | |
CN111147178B (zh) | 一种基于fpga的分布式系统时钟同步集中器 | |
US20070076243A1 (en) | Method, interface and network for cyclical sending of ethernet telegrams | |
CN110518978B (zh) | 基于光纤链路的混合数据传输组件 | |
CN112688812A (zh) | 应用于电力数据传输的可靠性感知时间敏感网络路由方法 | |
US8630181B2 (en) | Communication system and corresponding integrated circuit and method | |
Ashjaei et al. | Response time analysis of multi-hop HaRTES ethernet switch networks | |
CN113098765B (zh) | 一种车载智能网关及其轮询调度方法 | |
CN104735824B (zh) | 数据处理系统 | |
CN114401076A (zh) | 一种降低以太网数据传输晃动的方法和装置 | |
Ashjaei et al. | The design and implementation of a simulator for switched ethernet networks | |
Yu et al. | Handling scheduling uncertainties through traffic shaping in time-triggered train networks | |
US8594111B2 (en) | Method and device for buffering cell by crossbar switching matrix | |
Benammar et al. | Timing analysis of AVB Ethernet network using the forward end-to-end delay analysis | |
Zhang et al. | A Novel Method Based on Time-Frequency Modeling for Interference Analysis in Avionics Systems | |
CN115118679B (zh) | 一种针对以太网交换器管理帧的快速转发系统 | |
CN115150016B (zh) | 一种时间同步主控制器电路的工作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A Clock Synchronization Controller for Distributed System Based on FPGA Effective date of registration: 20221207 Granted publication date: 20210824 Pledgee: Xi'an Caijin Financing Guarantee Co.,Ltd. Pledgor: XI'AN YUNWEI ZHILIAN TECHNOLOGY Co.,Ltd. Registration number: Y2022610000797 |