CN112506268B - 多片fpga间时间同步方法、装置、设备及存储介质 - Google Patents
多片fpga间时间同步方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112506268B CN112506268B CN202011472991.5A CN202011472991A CN112506268B CN 112506268 B CN112506268 B CN 112506268B CN 202011472991 A CN202011472991 A CN 202011472991A CN 112506268 B CN112506268 B CN 112506268B
- Authority
- CN
- China
- Prior art keywords
- time
- timing
- fpga
- information
- synchronous
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Electric Clocks (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本申请公开了一种多片FPGA间时间同步方法、装置、设备及存储介质,该方法包括:通过校时主站FPGA接收外部IRIG‑B码时钟源的IRIG‑B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;利用校时主站FPGA将同步时间信息通过SPI总线同时发送至各校时从站FPGA,以及将微秒时钟脉冲通过GPIO硬连线同时发送至各校时从站FPGA;通过各校时从站FPGA接收同步时间信息进行本地对时,以及接收微秒时钟脉冲进行本地计时。这样在有效节省FPGA宝贵的逻辑的同时,还能保证校时的精度以及在板级多个器件之间的同步性,避免了在每片FPGA中独立校时带来的资源浪费。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种多片FPGA间时间同步方法、装置、设备及存储介质。
背景技术
在板级电路中,如果多片器件需要进行时间同步,例如,某型号集散控制***(Distributed Control System,DCS)主控包含多路Profibus-DP(Process Field Bus-Decentralized Periphery)主站,在三片现场可编程门阵列(Field-Programmable GateArray,FPGA)中实现,每路Profibus-DP都需要进行精确的同步时间信息通。
在现有技术中,通常采用图1和图2的方式来实现:如图1所示,IRIG-B时间编码信号分别连接到三路FPGA中,在FPGA中独立地分别通过B码校时算法模块进行时间校准管理;如图2所示,在MCU中,通过软件的方式实现NTP Client,和***侧的校时服务器NTP Server进行对时,实现NTP校时,然后MCU将时间信息通过LocalBus分别发送给各路FPGA进行校时守时。但是,对于图1的方式,因为校时逻辑比较复杂,占用较多的逻辑资源,分别在多片FPGA实现,造成资源的浪费;同时,各FPGA之间时钟不同,造成互相间时间的不同步。对于图2的方式,NTP校时主要依靠软件算法来保证,通过LocalBus下发时间信息也是分时进行的,因此,不论是时间精度,还是时间的同步性,都比较低。
因此,如何实现在板级多个器件之间精确的同步计时问题,是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种多片FPGA间时间同步方法、装置、设备及存储介质,可以在有效节省FPGA逻辑的同时,保证校时的精度及互相之间的时间同步的精确性。其具体方案如下:
一种多片FPGA间时间同步方法,包括:
通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;
利用所述校时主站FPGA将所述同步时间信息通过SPI总线同时发送至各校时从站FPGA,以及将所述微秒时钟脉冲通过GPIO硬连线同时发送至各所述校时从站FPGA;
通过各所述校时从站FPGA接收所述同步时间信息进行本地对时,以及接收所述微秒时钟脉冲进行本地计时。
优选地,在本发明实施例提供的上述多片FPGA间时间同步方法中,所述通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲,具体包括:
在所述校时主站FPGA中,通过脉宽检测模块对接收的外部IRIG-B码时钟源的IRIG-B时间编码信息进行脉宽检测,并输出相应解码值;
通过时间提取与秒脉冲模块从所述解码值中提取BCD时间码和秒计数信息,解析输出秒脉冲信号,依据所述秒脉冲信号对本地时间进行更新和对本地秒以内的计时进行校准;
通过校时与实时模块分别对频率误差、同步误差进行测量校准与守时,得到校准后的包含年、日、秒信息的同步时间信息和微秒时钟脉冲;
通过输出模块将所述年、日、秒信息和所述微秒时钟脉冲进行输出。
优选地,在本发明实施例提供的上述多片FPGA间时间同步方法中,所述通过校时与实时模块分别对频率误差、同步误差进行测量校准与守时,具体包括:
采用100MHz计数器测量两次B码秒脉冲间隔的计数值,将所述计数值与100000000进行比较,获取频率误差,并根据所述频率误差调节分频系数,使所述频率误差均匀分布在对应的10us计数周期内;
采用10us计时器进行0至100000循环计数,得出用于产生本地秒脉冲的计时值,将所述计时值与B码秒脉冲信号进行比较,获取同步误差,并根据所述同步误差调节分频系数,对10us时钟脉冲进行校准。
优选地,在本发明实施例提供的上述多片FPGA间时间同步方法中,所述通过各所述校时从站FPGA接收所述同步时间信息进行本地对时,以及接收所述微秒时钟脉冲进行本地计时,具体包括:
在所述校时从站FPGA中,通过SPI接收解析模块接收所述同步时间信息,并根据约定的帧格式解析所述同步时间信息;
通过校时从站本地计时模块将接收的所述SPI接收解析模块解析后的时间信息和本地计时信息进行比较,若有差异,则使用接收的时间信息进行重置。
优选地,在本发明实施例提供的上述多片FPGA间时间同步方法中,还包括:
利用各所述校时从站FPGA通过Profbus-DP协议栈将校时信息通过广播包进行输出。
本发明实施例还提供了一种时间同步装置,包括:外部IRIG-B码时钟源、校时主站FPGA和多片校时从站FPGA;其中,
所述校时主站FPGA,用于接收所述外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;还用于将所述同步时间信息通过SPI总线同时发送至各所述校时从站FPGA,以及将所述微秒时钟脉冲通过GPIO硬连线同时发送至各所述校时从站FPGA;
各所述校时从站FPGA,用于接收所述同步时间信息进行本地对时,以及接收所述微秒时钟脉冲进行本地计时。
优选地,在本发明实施例提供的上述时间同步装置中,所述校时主站FPGA包括:
脉宽检测模块,用于对接收的外部IRIG-B码时钟源的IRIG-B时间编码信息进行脉宽检测,并输出相应解码值;
时间提取与秒脉冲模块,用于从所述解码值中提取BCD时间码和秒计数信息,解析输出秒脉冲信号,依据所述秒脉冲信号对本地时间进行更新和对本地秒以内的计时进行校准;
校时与实时模块,用于分别对频率误差、同步误差进行测量校准与守时,得到校准后的包含年、日、秒信息的同步时间信息和微秒时钟脉冲;
输出模块,用于将所述年、日、秒信息和所述微秒时钟脉冲进行输出。
优选地,在本发明实施例提供的上述时间同步装置中,所述校时从站FPGA包括:
SPI接收解析模块,用于接收所述同步时间信息,并根据约定的帧格式解析所述同步时间信息;
校时从站本地计时模块,用于将接收的所述SPI接收解析模块解析后的时间信息和本地计时信息进行比较,若有差异,则使用接收的时间信息进行重置。
本发明实施例还提供了一种电子设备,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现如本发明实施例提供的上述多片FPGA间时间同步方法。
本发明实施例还提供了一种计算机可读存储介质,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如本发明实施例提供的上述多片FPGA间时间同步方法。
从上述技术方案可以看出,本发明所提供的一种多片FPGA间时间同步方法,包括:通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;利用校时主站FPGA将同步时间信息通过SPI总线同时发送至各校时从站FPGA,以及将微秒时钟脉冲通过GPIO硬连线同时发送至各校时从站FPGA;通过各校时从站FPGA接收同步时间信息进行本地对时,以及接收微秒时钟脉冲进行本地计时。
本发明在多片FPGA中,将校时逻辑在校时主站FPGA中实现,首先通过在校时主站FPGA中实现B码校时与守时,然后通过SPI以及硬连线的方式向各校时从站FPGA发送精确的SPI时间信息与计时脉冲,以实现在板级多个器件之间进行精确的同步计时,这样在有效节省FPGA宝贵的逻辑的同时,还能保证校时的精度,以及互相之间的同步性,避免了在每片FPGA中独立校时带来的资源浪费。此外,本发明还针对多片FPGA间时间同步方法提供了相应的装置、设备及计算机可读存储介质,进一步使得上述方法更具有实用性,该装置、设备及计算机可读存储介质具有相应的优点。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有的IRIG-B独立校时示意图;
图2为现有的NTP校时方式示意图;
图3为本发明实施例提供的多片FPGA间时间同步方法的流程图;
图4为本发明实施例提供的多片FPGA间实现精确时间同步的结构示意图;
图5为本发明实施例提供的多片FPGA间实现精确时间同步的具体结构示意图;
图6为本发明实施例提供的IRIG-B的波形示意图;
图7为本发明实施例提供的FPGA内部对应的时间产生示意图;
图8为本发明实施例提供的在T0时刻、T1时刻和T2时刻的不同位置示例图;
图9为本发明实施例提供的获取频率误差、同步误差的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种多片FPGA间时间同步方法,如图3所示,包括以下步骤:
S301、通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;
在实际应用中,IRIG串行时间码共有六种格式,即IRIG-A、B、D、E、G、H。它们的主要差别是时间码的帧速率不同。从最慢的每小时1帧的(D格式),到最快的每十毫秒1帧的(G格式)。各种格式的主要参数如下表一所述,本发明使用IRIG-B格式:
表一
格式 | 时帧周期 | 码元速率 | 二—十进制信息位数 | 表示时间的信息 |
IRIG-D | 1小时 | 1个/分 | 16 | 天、时 |
IRIG-H | 1分 | 1个/秒 | 23 | 天、时、分 |
IRIG-E | 10秒 | 10个/秒 | 26 | 天、时、分、10秒 |
IRIG-B | 1秒 | 100个/秒 | 30 | 天、时、分、秒 |
IRIG-A | 0.1秒 | 1000个/秒 | 34 | 天、时、分、秒、0.1秒 |
IRIG-G | 0.01秒 | 10000个/秒 | 38 | 天、时、分、秒、0.1秒、0.01秒 |
如图4所示,通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息,来完成B码校时与守时,这样将主要的校时算法在校时主站FPGA实现,可以节约其它校时从站FPGA的逻辑资源;
S302、利用校时主站FPGA将同步时间信息(T)通过SPI总线同时发送至各校时从站FPGA,以及将微秒时钟脉冲(C)通过GPIO硬连线同时发送至各校时从站FPGA;
S303、通过各校时从站FPGA接收同步时间信息(T)进行本地对时,以及接收微秒时钟脉冲(C)进行本地计时。
需要注意的是,因为校时主站FPGA和多片校时从站FPGA(同时实现其它逻辑功能,比如Profbus-DP主站)使用相同的计时脉冲,所以能够保证各FPGA之间计时的同步性。
在本发明实施例提供的上述多片FPGA间时间同步方法中,将校时逻辑在校时主站FPGA中实现,首先通过在校时主站FPGA中实现B码校时与守时,然后通过SPI以及硬连线的方式向各校时从站FPGA发送精确的SPI时间信息与计时脉冲,以实现在板级多个器件之间进行精确的同步计时,这样在有效节省FPGA宝贵的逻辑的同时,还能保证校时的精度,以及互相之间的同步性,避免了在每片FPGA中独立校时带来的资源浪费。
需要说明的是,本发明主要提供了多片FPGA间实现精确时间同步的方法,具体的校时周期、外部时钟等,均可根据实际情况予以调节。
进一步地,在具体实施时,在本发明实施例提供的上述多片FPGA间时间同步方法中,如图5所示,步骤S301通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲,具体可以包括:
步骤一、在校时主站FPGA中,通过脉宽检测模块对接收的外部IRIG-B码时钟源的IRIG-B时间编码信息进行脉宽检测,并输出相应解码值。
可以理解的是,IRIG串行时间格式分为A、B、D、E、G、H这6个子类,每种类型在时间数据帧周期、位宽上略有区别。其中IRIG-B波形如图6所示,以1s时间为周期,每周期发送100个比特,用于传输时间信息。这100个比特,每10个比特为1组,分别用BCD码和二进制数表示当前的时间信息。IRIG串行时间格式中,比特经由脉宽调制的方法进行处理,每个比特为占10ms,高电平的宽度决定了该比特为0、为1或为位置码(Position ID),脉宽检测模块可以对IRIG-B脉冲输入进行脉宽检测,并输出相应解码值。
步骤二、通过时间提取与秒脉冲模块从解码值中提取BCD时间码和秒计数信息,解析输出秒脉冲信号,依据秒脉冲信号对本地时间进行更新和对本地秒以内的计时进行校准。
需要说明的是,时间提取与秒脉冲模块完成串行比特的并行转换,从接收的并行数据中提取时间BCD码、秒计数等信息。解析得出的时间信息包括BCD格式的Time-of-Year(00-59秒计数,00-59分钟计数,00-23小时计数,001-366天计数),BCD格式年计数(00-99,2000年起)。每1秒,模块会输出1个单***时钟宽度的脉冲信号,并在此时更新解析得出的时间和控制信息。可在此秒脉冲信号对本地时间的更新,并依据秒脉冲对本地秒以内的计时进行校准。
步骤三、通过校时与实时模块分别对频率误差、同步误差进行测量校准与守时,得到校准后的包含年、日、秒信息的同步时间信息和微秒时钟脉冲。
可以理解的是,在FPGA内部,时间产生如图7所示。对于大于等于1秒的守时,会由FPGA本地时钟生成的周期为10us的计数器,并在此计数器(time_10us_o)基础上,分别生成秒脉冲(P_1s)、天脉冲(P_1d)、年脉冲(P_1y)时钟使能信号。
根据每100000个10us计1秒、每86400秒计1天、每365/366(days_of_year)计1年的规则,生成内部守时的年-日-秒计数信号。对于小于1秒的守时,主要依靠内部10us计数器time_10us_o完成,该计数器在每1秒起始位置,从0开始数至99999,周期产生秒脉冲。
如图7所示,只要10us脉冲(Pulse_of_10us)是准确的,那么10us计时(time_10us_o),以及后面的秒、日、年就是准确的,但是10us脉冲是根据外部晶振(100MHz)进行1000分频得到的,而晶振的频率因为工艺、温度等影响,其误差是固有的、不可避免的,因此校准的核心就是动态地调节分频系数,进而获得更加准确的10us脉冲周期,达到校时的目的。
因为FPGA内部时钟频率的偏移,10us计数器计至99999时,既可能超过1s,也可能不到1s,其判断的标准即是B码的秒脉冲信号,根据比较的偏差对Pulse_of_10us进行校准,当10us计数器被校准后,可认为基于10us计数器的其他内部守时信号均被校准。
对10us校时的要求是:计数值time_10us_o在1s内维持连续计数,在检测到偏差后,经过计算,将针对偏差的补偿尽量均匀地分布至每个10us计数周期内。即通过微调10us周期(即Pulse_of_10us的周期)实现校时。
为便于理解,举个例子加以说明:如图8所示,两人同时在T0时刻平行出发,T1时刻分别到达A1、B1不同的地点,如果分析原因,有两点。首先,两者之间的速度不同(A1-A0!=B1-B0),即互相之间存在频率误差;其次,两者之间出发点不同(A0!=B0),即存在同步误差。要使得两者之间能够同步,就需要识别这两种误差,调整其速度,在本例中以A为基准,调节B的速度,使得在T2时刻达到同步。
基于上述分析,计时误差分为两部分,即:频率误差(是外部时钟的不准确性决定的),以及同步误差(或称为相位误差),两者的特性和影响也是不同的。频率误差是始终存在的,而同步误差在补偿之后即可消除。举例来说,假设校时周期为1秒,在t秒得到频率误差为error_value_xtl,同步误差为error_value_sync,那么在t到t+1秒,需要同时校准以上两种误差(error_value_xtl+error_value_sync),如果在t+1秒校时脉冲丢失,此时需要进行内部守时,那么之后的时间只需要校准频率误差(error_value_xtl)即可,因为同步误差(error_value_sync)在t+1时刻已经得到了补偿。
如图9所示,在FPGA逻辑中分别用两个计数(cnt_100m,time_10us_o)器来测量这两种误差。具体地,采用100MHz计数器(cnt_100m)测量两次B码秒脉冲间隔的计数值,将计数值与100000000进行比较,获取频率误差,并根据频率误差调节分频系数,使频率误差均匀分布在对应的10us计数周期内;另外,采用10us计时器(time_10us_o)进行0至100000循环计数,得出用于产生本地秒脉冲的计时值,将计时值与B码秒脉冲信号进行比较,获取同步误差,并根据同步误差调节分频系数,对10us时钟脉冲进行校准。
可以理解的是,计数器(cnt_100m),用于获取频率误差,本发明使用FPGA的内部100MHz时钟,在B码秒脉冲时刻(T0)清零,递增计数到下个秒脉冲(T0+1),即,测量两次B码秒脉冲间隔的计数值,设其值为X,有如下三种情况:
X=1000_000_00,时钟准确无误,分频系数为1000(100MHz分频1000获得10us脉冲);
X>1000_000_00,认为时钟偏快,分频系数应适度调大;
X<1000_000_00,认为时钟偏慢,分频系数应适度调小;
例如:X计数值为1000_300_00,说明时钟偏快,偏差为30000,这30000个时钟的偏差可在后续每个秒周期中均匀地补偿校准。每秒可以分为100_000(=30000+70000)个10us,那么可以在前30000个10us中,10us脉冲(Pulse_of_10us)使用1001分频,后70000个10us中Pulse_of_10us使用正常的1000分频。
计时器(time_10us_o),即10us计时器,进行0~100_000循环计数,即每秒中的第多少个10us计时,用于产生本地的秒脉冲。在B码秒脉冲时刻(T0+1),根据比较计时值可以获得同步误差,同样有如下三种情况:
time_10us_o=0,时钟准确无误,无需校准;
time_10us_o=Y,已经到达100_000,并重新从0计时到Y,认为时钟偏快,分频系数应适度调大,转换为FPGA***时钟的偏差,即为(Y*1000);
time_10us_o=Z,还未到达100_000,计时到Z,认为时钟偏慢,分频系数应适度调小,此时的偏差为(100_000-Z)*1000。
同步误差加校准方式,如前面示例说明,需要注意的是,本误差值有效期为,从T0+1到T0+2,如果在T0+2时刻B码秒脉冲丢失,则认为在T0+2时刻,同步误差已经得到补偿,后续时间本误差不再有效。
通过以上方法,分别对频率误差、以及同步误差进行动态的校准,校时与实时模块即可获得精确的年、日、秒、以及10us计时,即完整的时间信息,输出到输出模块。
步骤四、通过输出模块(SPI_master)将年、日、秒信息和微秒时钟脉冲进行输出。
可以理解的是,将校时与实时模块得到的精确年、日、秒信息,按照下表二的帧格式通过SPI_master模块发送给校时从站FPGA。
表二
Bit位 | 79:72 | 71:56 | 55:40 | 39:8 | 7:0 |
段含义 | SYN_HEAD | year | days | second | SYN_TAIL |
从表二中可以看到其中没有10us计时信息,是因为设计中约定SPI每次发送的起始时间是固定的,即每秒的第300ms,即time_10us_o为30000时(30000*10us=300ms,本时刻可以调整,但避免在整秒时刻发送,以确保年、日、秒信息是稳定的),SPI发送时钟为1M,即每bit周期为1us,SPI每帧80bit,则SPI发送用时为80us,这样spi_slave接收到完整的时间信息时,10us计时器应该为30008,如果有偏差则进行重置校准。
在校时主FPGA中,分别对频率误差与同步误差进行测量,可以保证校时的快速与平滑。
在具体实施时,在本发明实施例提供的上述多片FPGA间时间同步方法中,步骤S303通过各校时从站FPGA接收同步时间信息进行本地对时,以及接收微秒时钟脉冲进行本地计时,具体可以包括:
首先,在校时从站FPGA中,通过SPI接收解析模块接收同步时间信息,并根据约定的帧格式解析同步时间信息;即通过SPI_slave接收SPI信息,并根据约定的帧格式解析年、日、秒等时间信息;
然后,通过校时从站本地计时模块将接收的SPI接收解析模块解析后的时间信息和本地计时信息进行比较,若有差异,则使用接收的时间信息进行重置(用于上电之后的初始化时间设置)。可以理解的是,本地的10us计时器,使用接收到10us计时脉冲计数,因为此信号(Pulse_of_10us)是计时主站经过校准的,是准确的,而且和校时主站保持同步,因此,10us计时,以及秒、日、年,都是同步的。
进一步地,在具体实施时,在本发明实施例提供的上述多片FPGA间时间同步方法中,还可以包括:利用各校时从站FPGA通过Profbus-DP协议栈将校时信息通过Profbus-DP广播包进行输出。在实际应用中,可以输出至更下层的后级模块,例如Profbus-DP从站模块。
基于同一发明构思,本发明实施例还提供了一种时间同步装置,由于该装置解决问题的原理与前述一种多片FPGA间时间同步方法相似,因此该装置的实施可以参见多片FPGA间时间同步方法的实施,重复之处不再赘述。
在具体实施时,本发明实施例提供的时间同步装置,具体包括:外部IRIG-B码时钟源、校时主站FPGA和多片校时从站FPGA;其中,
校时主站FPGA,用于接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;还用于将同步时间信息通过SPI总线同时发送至各校时从站FPGA,以及将微秒时钟脉冲通过GPIO硬连线同时发送至各校时从站FPGA;
各校时从站FPGA,用于接收同步时间信息进行本地对时,以及接收微秒时钟脉冲进行本地计时。
在本发明实施例提供的上述时间同步装置中,通过将校时逻辑在校时主站FPGA中实现,可以在有效节省FPGA宝贵的逻辑的同时,保证校时的精度,以及在多片FPGA间的同步计时的精确性,避免了在每片FPGA中独立校时带来的资源浪费。
在具体实施时,在本发明实施例提供的上述时间同步装置中,校时主站FPGA包括:
脉宽检测模块,用于对接收的外部IRIG-B码时钟源的IRIG-B时间编码信息进行脉宽检测,并输出相应解码值;
时间提取与秒脉冲模块,用于从解码值中提取BCD时间码和秒计数信息,解析输出秒脉冲信号,依据秒脉冲信号对本地时间进行更新和对本地秒以内的计时进行校准;
校时与实时模块,用于分别对频率误差、同步误差进行测量校准与守时,得到校准后的包含年、日、秒信息的同步时间信息和微秒时钟脉冲;
输出模块,用于将年、日、秒信息和微秒时钟脉冲进行输出。
在具体实施时,在本发明实施例提供的上述时间同步装置中,校时从站FPGA包括:
SPI接收解析模块,用于接收同步时间信息,并根据约定的帧格式解析同步时间信息;
校时从站本地计时模块,用于将接收的SPI接收解析模块解析后的时间信息和本地计时信息进行比较,若有差异,则使用接收的时间信息进行重置。
关于上述各个模块更加具体的工作过程可以参考前述实施例公开的相应内容,在此不再进行赘述。
相应的,本发明实施例还公开了一种电子设备,包括处理器和存储器;其中,处理器执行存储器中保存的计算机程序时实现前述实施例公开的多片FPGA间时间同步方法。
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
进一步的,本发明还公开了一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现前述公开的多片FPGA间时间同步方法。
关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置、设备、存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本发明实施例提供的一种多片FPGA间时间同步方法,包括:通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;利用校时主站FPGA将同步时间信息通过SPI总线同时发送至各校时从站FPGA,以及将微秒时钟脉冲通过GPIO硬连线同时发送至各校时从站FPGA;通过各校时从站FPGA接收同步时间信息进行本地对时,以及接收微秒时钟脉冲进行本地计时。这样将校时逻辑在校时主站FPGA中实现,在有效节省校时从站FPGA宝贵的逻辑资源的同时,还能保证校时的精度,以及互相之间的同步性,避免了在每片FPGA中独立校时带来的资源浪费。此外,本发明还针对多片FPGA间时间同步方法提供了相应的装置、设备及计算机可读存储介质,进一步使得上述方法更具有实用性,该装置、设备及计算机可读存储介质具有相应的优点。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的多片FPGA间时间同步方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种多片FPGA间时间同步方法,其特征在于,包括:
通过校时主站FPGA接收外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;具体包括:在所述校时主站FPGA中,通过脉宽检测模块对接收的外部IRIG-B码时钟源的IRIG-B时间编码信息进行脉宽检测,并输出相应解码值;通过时间提取与秒脉冲模块从所述解码值中提取BCD时间码和秒计数信息,解析输出秒脉冲信号,依据所述秒脉冲信号对本地时间进行更新和对本地秒以内的计时进行校准;通过校时与守时模块分别对频率误差、同步误差进行测量校准与守时,得到校准后的包含年、日、秒信息的同步时间信息和微秒时钟脉冲;通过输出模块将所述年、日、秒信息和所述微秒时钟脉冲进行输出;
利用所述校时主站FPGA将所述同步时间信息通过SPI总线同时发送至各校时从站FPGA,以及将所述微秒时钟脉冲通过GPIO硬连线同时发送至各所述校时从站FPGA;
通过各所述校时从站FPGA接收所述同步时间信息进行本地对时,以及接收所述微秒时钟脉冲进行本地计时。
2.根据权利要求1所述的多片FPGA间时间同步方法,其特征在于,所述通过校时与守时模块分别对频率误差、同步误差进行测量校准与守时,具体包括:
采用100MHz计数器测量两次B码秒脉冲间隔的计数值,将所述计数值与100000000进行比较,获取频率误差,并根据所述频率误差调节分频系数,使所述频率误差均匀分布在对应的10us计数周期内;
采用10us计时器进行0至100000循环计数,得出用于产生本地秒脉冲的计时值,将所述计时值与B码秒脉冲信号进行比较,获取同步误差,并根据所述同步误差调节分频系数,对10us时钟脉冲进行校准。
3.根据权利要求2所述的多片FPGA间时间同步方法,其特征在于,所述通过各所述校时从站FPGA接收所述同步时间信息进行本地对时,以及接收所述微秒时钟脉冲进行本地计时,具体包括:
在所述校时从站FPGA中,通过SPI接收解析模块接收所述同步时间信息,并根据约定的帧格式解析所述同步时间信息;
通过校时从站本地计时模块将接收的所述SPI接收解析模块解析后的时间信息和本地计时信息进行比较,若有差异,则使用接收的时间信息进行重置。
4.根据权利要求3所述的多片FPGA间时间同步方法,其特征在于,还包括:
利用各所述校时从站FPGA通过Profbus-DP协议栈将校时信息通过广播包进行输出。
5.一种时间同步装置,其特征在于,包括:外部IRIG-B码时钟源、校时主站FPGA和多片校时从站FPGA;其中,
所述校时主站FPGA,用于接收所述外部IRIG-B码时钟源的IRIG-B时间编码信息进行B码校时与守时,得到校准后的同步时间信息和微秒时钟脉冲;还用于将所述同步时间信息通过SPI总线同时发送至各所述校时从站FPGA,以及将所述微秒时钟脉冲通过GPIO硬连线同时发送至各所述校时从站FPGA;所述校时主站FPGA包括:
脉宽检测模块,用于对接收的外部IRIG-B码时钟源的IRIG-B时间编码信息进行脉宽检测,并输出相应解码值;
时间提取与秒脉冲模块,用于从所述解码值中提取BCD时间码和秒计数信息,解析输出秒脉冲信号,依据所述秒脉冲信号对本地时间进行更新和对本地秒以内的计时进行校准;
校时与守时模块,用于分别对频率误差、同步误差进行测量校准与守时,得到校准后的包含年、日、秒信息的同步时间信息和微秒时钟脉冲;
输出模块,用于将所述年、日、秒信息和所述微秒时钟脉冲进行输出;
各所述校时从站FPGA,用于接收所述同步时间信息进行本地对时,以及接收所述微秒时钟脉冲进行本地计时。
6.根据权利要求5所述的时间同步装置,其特征在于,所述校时从站FPGA包括:
SPI接收解析模块,用于接收所述同步时间信息,并根据约定的帧格式解析所述同步时间信息;
校时从站本地计时模块,用于将接收的所述SPI接收解析模块解析后的时间信息和本地计时信息进行比较,若有差异,则使用接收的时间信息进行重置。
7.一种电子设备,其特征在于,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至4任一项所述的多片FPGA间时间同步方法。
8.一种计算机可读存储介质,其特征在于,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的多片FPGA间时间同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011472991.5A CN112506268B (zh) | 2020-12-15 | 2020-12-15 | 多片fpga间时间同步方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011472991.5A CN112506268B (zh) | 2020-12-15 | 2020-12-15 | 多片fpga间时间同步方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112506268A CN112506268A (zh) | 2021-03-16 |
CN112506268B true CN112506268B (zh) | 2023-03-14 |
Family
ID=74973276
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011472991.5A Active CN112506268B (zh) | 2020-12-15 | 2020-12-15 | 多片fpga间时间同步方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112506268B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI779921B (zh) * | 2021-11-08 | 2022-10-01 | 優達科技股份有限公司 | 修正1秒脈衝信號的方法及授時接收器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539489B1 (en) * | 2000-03-31 | 2003-03-25 | Siemens Aktiengesellshaft | Apparatus, method and system for synchronizing slave system operations to master system clocking signals in a master-slave asynchronous communication system |
CN101122798A (zh) * | 2007-09-17 | 2008-02-13 | 浙江中控技术有限公司 | 实现工作主站和备用主站记录同步的方法 |
CN109302255A (zh) * | 2018-09-12 | 2019-02-01 | 杭州和利时自动化有限公司 | 时间同步控制方法、装置、***及计算机可读存储介质 |
CN110161931A (zh) * | 2019-06-08 | 2019-08-23 | 西安电子科技大学 | 基于gps授时的fpga编码解码***及方法 |
CN111598727A (zh) * | 2020-07-23 | 2020-08-28 | 国网江西省电力有限公司电力科学研究院 | 基于码相位计数法提升智能变电站计量时钟同步的方法 |
-
2020
- 2020-12-15 CN CN202011472991.5A patent/CN112506268B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6539489B1 (en) * | 2000-03-31 | 2003-03-25 | Siemens Aktiengesellshaft | Apparatus, method and system for synchronizing slave system operations to master system clocking signals in a master-slave asynchronous communication system |
CN101122798A (zh) * | 2007-09-17 | 2008-02-13 | 浙江中控技术有限公司 | 实现工作主站和备用主站记录同步的方法 |
CN109302255A (zh) * | 2018-09-12 | 2019-02-01 | 杭州和利时自动化有限公司 | 时间同步控制方法、装置、***及计算机可读存储介质 |
CN110161931A (zh) * | 2019-06-08 | 2019-08-23 | 西安电子科技大学 | 基于gps授时的fpga编码解码***及方法 |
CN111598727A (zh) * | 2020-07-23 | 2020-08-28 | 国网江西省电力有限公司电力科学研究院 | 基于码相位计数法提升智能变电站计量时钟同步的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112506268A (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10707984B2 (en) | Techniques for synchronizing slave devices | |
CN109617641B (zh) | 一种基于秒脉冲的可调精度时间获取方法 | |
CN110492965B (zh) | 一种主从***内串行报文对时的方法和装置 | |
CN109302255B (zh) | 时间同步控制方法、装置、***及计算机可读存储介质 | |
CN112506268B (zh) | 多片fpga间时间同步方法、装置、设备及存储介质 | |
JP2005249632A (ja) | 標準電波受信時刻装置及びタイムコード信号の復号化方法 | |
CN112162591B (zh) | 具有多个处理器的电子装置及其同步方法 | |
CN109085616A (zh) | 一种卫星授时方法、装置及存储介质 | |
CN101051837B (zh) | Usb接口内建式振荡器的频率校正装置及其方法 | |
CN111831056A (zh) | 一种实时时钟校准模块、方法及一种实时时钟芯片 | |
CN106383438B (zh) | 一种基于滑动窗口时间扩展高精度驯钟方法 | |
JP5936716B2 (ja) | 信号処理装置 | |
CN117320144A (zh) | 基于无线通信的子母钟时间同步方法和*** | |
CN112748758A (zh) | 时钟源选择方法、装置、电子设备和存储介质 | |
CN111193514A (zh) | 一种高同步精度irig-b编码器 | |
CN108873669B (zh) | 一种计算机同步时钟的utc时间计算方法 | |
CN112213541B (zh) | 一种应用于暂态录波型故障指示器的守时方法 | |
CN110908272B (zh) | 一种1pps脉冲信号校时方法 | |
CN112558685B (zh) | 一种配电终端模块间对时同步的方法 | |
CN110061735B (zh) | 小数分频电路及采用该电路的接口时钟分频电路 | |
JP2011252742A (ja) | 時刻修正装置 | |
CN113900480B (zh) | 一种与指定时刻对齐的周期秒脉冲输出的时间同步方法 | |
CN101958786B (zh) | 一种产生定时信号的方法和装置 | |
CN116886080B (zh) | 一种计时装置用控制装置及其控制方法 | |
CN115857620B (zh) | 一种基于fpga的ais时隙计算方法及设备 |
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 |