基于FPGA 的IEEE 1588 时钟同步系统的设计与实现

2023-05-24 09:06徐卓汀商艳娟王成群
智能计算机与应用 2023年5期
关键词:主从主站计数器

徐卓汀,商艳娟,王成群

(浙江理工大学 信息学院,杭州 310018)

0 引言

随着分布式网络应用范围及应用规模的不断增大,同步系统内各分散节点时钟的一致性变得越来越重要,精确的时间同步技术在分布式系统中占据着越来越重要的地位[1]。目前,时钟同步的主要方法包括IRIG-B(Inter Range Instrumentation Group-B)码时钟同步、网络时间协议(NTP)、简单网络时钟同步(SNTP)和全球定位系统(GPS)等[2]。传统的NTP 只能提供毫秒级的时间精度,不能满足现代工业以太网的高精度时钟需求。SNTP 协议是NTP的简化版本,采用了简化的同步算法,提高了性能,但只能满足对时间精度要求不高的系统。GPS 可以提供微秒级的时间精度,但其需要GPS 接收机这样的特殊设备,不仅成本比较高,而且不易实现[3]。IEEE 1588 精密时间协议的出现一定程度上弥补了一些时钟同步方式的不足[4]。IEEE 1588 协议基于以太网,不需要建立新的时钟网络,主从时钟通过交换时钟信息来进行同步[5]。通过软件实现的IEEE 1588 协议可以提供微秒级别的时间精度[6];通过硬件实现的IEEE 1588 协议可以提供纳秒级别的时间精度[7]。同时,硬件实现的IEEE 1588 协议对资源要求低,不仅可以通过支持IEEE 1588 协议的专用芯片实现,也可以在FPGA 芯片上实现,实现成本低,适用于各种分布式系统[8]。

本文在详细分析IEEE 1588 协议基本内容的基础上,通过软硬件结合的方式,在FPGA 芯片上实现IEEE 1588 报文的检测和时间戳的捕获。实验验证结果表明该系统能够正常工作,能满足现代工业以太网的高精度时钟同步需求。

1 IEEE 1588 时钟同步原理

IEEE 1588 精确时间协议在同步过程中,主时钟和从时钟之间相互交换带有精确时间戳和预估时间戳的报文[9]。各个从时钟得到这些时间戳信息后,计算与主时钟的链路传输延迟和时钟偏差,进而调整从时钟,达到与主时钟同步的目的。IEEE 1588协议的主从同步过程如图1 所示[10]。

图1 IEEE 1588 协议的主从同步过程Fig.1 Master and slave synchronization process of IEEE 1588

IEEE 1588 协议的同步原理是延时响应机制,通过PTP(Precision Time Protocol)报文承载时间戳来完成,PTP 报文分为4 种:Sync 同步报文、Follow_up 跟随报文、Delay_req 延迟请求报文、Delay_resp延迟请求报文、Delay_resp 延迟请求响应报文[11]。

一次时钟同步过程:

(1)Sync 报文周期性从主时钟向从时钟以广播的形式发出,主时钟在发送结束那一刻记录Sync 报文离开主时钟的精确发送时间TM1;

(2)主时钟将精确时间戳TM1封装进Follow_up报文中,发送给从时钟;

(3)从时钟记录Sync 报文到达从时钟的精确时间点Ts2;

(4)从时钟发送Delay_req 报文,并在发送结束那一刻记录下精确发送时间TS3;

(5)主时钟记录Delay_req 报文到达主时钟的精确到达时间TM4;

(6)主时钟发送携带精确时间戳信息TM4的Delay_resp 报文到从时钟。

经过一次时钟同步后,从时钟寄存4 个精确时间戳信息。利用4 个时间戳可以计算链路延时和时钟偏移。

设报文由主时钟到从时钟的链路延迟,式(1):

此时主时钟与从时钟之间存在的时间偏差offset1,式(2):

报文由从时钟到主时钟的链路延迟,式(3):

此时从时钟与主时钟之间存在的时间偏差offset2,式(4):

因为IEEE 1588 协议假设链路延迟是对称的,式(5):

那么平均链路延迟mean_delay,式(6):

此时主从时钟偏差offset,式(7):

进一步计算得到offset,式(8):

对从时钟进行补偿来达到同步于主时钟的目的。

2 系统软硬件设计

2.1 时间戳标记位置

IEEE 1588 协议的报文在交换消息过程中包含着各时钟的信息,所以时钟信息的提取对于提高同步精度有着十分重要的作用。时间的标记位置有3种方案,如图2 所示。

图2 时间戳位置标记Fig.2 Time stamp position marking

方案A:在应用层进行时间戳的标记,虽然实现方法简单,但由于协议栈的抖动和延迟是不确定的,会导致较大误差,使用软件实现的精度只能达到毫秒级。

方案B:在介质访问控制层(MAC),避免了协议栈的抖动和延迟,提高时间戳的标记精度,能够使用软件实现,时间精度达到微秒级[12]。

方案C:在MAC 层和物理层(PHY)之间的简化媒体独立接口(RMII)处标记时间戳,通过软硬结合的方法实现。目前有两种方法,一种是使用支持IEEE 1588 协议的专用PHY 硬件芯片,如DP83640,可以在物理层检测IEEE 1588 报文,并将时间戳信息填充到IEEE 1588 报文中;第二种方法是在对原有硬件不做改变的情况下,在FPGA 芯片中识别IEEE 1588 报文以及捕获时间戳[13]。

时间戳的标记越接近于实际网络,抖动和延迟就越小,计算出的时钟偏差和链路延迟更接近于真实值,所以在本文的设计中,采用了方案C,因为方案C 的第二种方法不需要专用的PHY 芯片,而且FPGA 处理速度足够快,实现方法更简单。

2.2 系统硬件搭建

系统硬件采用Altera Cyclone IV 系列中的EP4CE6E22C8 FPGA 芯片以及RTL8201CP 接口PHY 芯片,分别作为系统的主控模块以及网络通信模块。

RTL8201CP PHY 芯片采用RMII 模式下的以太网连接方式,是简化的媒体独立接口,减少了以太网通信所需的引脚数,将引脚数从16 个减少为7 个,有着更简单的连接结构。

Altera Cyclone IV 系列FPGA 芯片作为主控模块,自身能够在物理层和PHY 之间的RMII 接口处进行时间标记,相对于其他如STM32F407 系列CPU芯片只能在MAC 数据链路层标记,有着更高的时间戳精度。主控模块主要实现接受发送PTP 报文,以及时钟同步等功能。

2.3 系统软件设计

本文系统的软件结构主要分为协议层、应用层。协议层完成报文的解析以及封装过程,应用层完成实时时钟以及精确时钟同步功能。其系统结构图如图3 所示。

图3 系统结构图Fig.3 System structure diagram

协议层分为UDP/IP 协议、EtherCAT 协议以及PTP 协议,EtherCAT 协议有两种实现方式:一种是利用标准IEEE802.3 以太网帧实现,一种是放入UDP/IP 协议中实现,本文采用第二种实现方式。系统的主时钟将PTP 报文封装在EtherCAT 中,再将EtherCAT 报文封装在UDP 报文中,最后通过网络传输到从时钟。从时钟接收到报文后,解析报文,进行时间戳的寄存和提取。

(3)政府应增加研发投入提高大豆单产水平,支持大豆产业发展。目前的补贴政策多与种植面积挂钩,对单产的刺激作用很小,而且政策的经济效率低。而当前大豆产业发展面临的重要瓶颈是单产水平过低,从而导致种植大豆的比较收益不高。

时钟同步系统上电后,通过PC 机,以UDP 协议的形式发送指令报文,初始化各主从时钟的计数器,并设定与PC 机通信的为主时钟,与主时钟通过网线相连的为从时钟。初始化各主从时钟后,PC 机周期性发送Sync 报文,进入时钟同步阶段。

如果本地时钟为主时钟状态,其主时钟流程图如图4 所示。主时钟接受来自PC 机的报文,识别并转发Sync 报文,对RMII 接口的TX_EN 信号进行锁存,当TX_EN 信号由高电平变为低电平时,寄存这个周期的时钟计数器,接着发送Follow_up 报文,Follow_up 报文的64 位精确时间戳为上一个寄存的时钟计数器的时间,发送结束后,等待接收下一条报文。接收到报文时,RMII 接口的RX_EN 信号由低变高,寄存该周期的时钟计数器,识别接受的报文,如果识别为其他报文,丢弃该时间戳,并回到等待接受Delay_req 报文状态,若为Delay_req 报文,保留该时间戳,并读取来自从时钟的端口号,接着构造Delay_resp 报文,Delay_resp 报文的64 位精确时间戳即为上一次寄存的时钟计数器。主时钟进入等待接受PC 机报文状态。

图4 主时钟流程图Fig.4 Master clock state machine process

如果本地时钟为从时钟,从时钟流程图如图5所示。时钟计数器初始化后,接受到报文时,RMII接口的RX_EN 信号由低变高,寄存器寄存该周期的时钟计数器的值,识别该报文是否是Sync 报文,若不是,则丢弃寄存的时间戳,并返回等待报文接受状态;如果是,继续接受并解析Follow_up 报文,读取报文中的时间戳,并开始构造Delay_req 报文。当发送Delay_req 报文结束时,即RMII 接口处的TX_EN 信号由高变低,寄存该时刻的时钟计数器的值,并与接受Follow_up 报文同样的过程接受Delay_resp 报文,并读取报文中的精确时间戳。从时钟得到来自物理层和PHY 之间的RMII 接口处的4 个精确时间戳,进入链路延迟以及时钟偏差计算阶段,并对从时钟进行补偿,得到同步的从时钟进入下一次时钟补偿阶段。

图5 从时钟流程图Fig.5 Slave clock state machine process

2.4 本地时钟补偿算法

本地时钟补偿采用动态的频率补偿算法来实现,其频率补偿过程如图6 所示。

图6 频率补偿过程Fig.6 Frequency compensation process

在时钟同步过程中,当系统进行第一次时钟同步过程中时,主站记录下第一次发送Sync 同步报文的时间戳T1M1,从站记录下第一次收到同步报文的时间戳T1S2。同理,当系统进行第二次时钟同步时,记录下时间戳T2M1和T2S2。则主站的发送时间间隔MCC,式(9):

同理,从站接收到的时间间隔SCC,式(10):

主从站的时间偏差MSC,式(11):

主从之间的时间比率,式(12):

在每次时钟同步过程中,从时钟持续补偿计算出的时钟偏移量;在补偿过程中,判断偏移量的最高位是否为1,若是表示从时钟快于主时钟,偏移量的值应取反加1,补偿进从时钟中,反之,直接补偿从时钟;对于时间频率的补偿,从系统的第二次时钟同步阶段开始,判断MSC的值,若最高位为1,说明主时钟频率高于从时钟频率,则从时钟的纳秒(ns)计数器每增加γ值时减1,反之,主时钟频率低于从时钟频率,纳秒(ns)计数器每增加γ值时加1。

3 时钟同步测试

为了验证IEEE 1588 时钟同步系统的可行性,将IEEE 1588 协议以及本地时钟补偿算法应用于基于FPGA 的EtherCAT 协议栈中,采用低延时、高带宽、确定性的现场总线结构,该协议栈具有区分IEEE 1588 报文和普通报文的功能,主站能解析来自PC 机的报文,并将报文内容转发至从站,从站能够解析各报文命令,执行时间戳提取、初始化操作、时钟同步以及同步输出等功能。

本系统以主站的本地晶振作为授时源,通过主从站直连的方式进行时钟同步性能测试,设置的同步时间间隔为1 s,时钟同步过程分为两步:

(1)系统启动,发送初始化指令报文进行各主从站计数器清零操作;

(2)周期性发送Sync 报文,进行时钟同步。

3.1 一主一从主从直连同步测试

系统初始化后周期性发送Sync 同步报文进行时钟同步,其中主从站某一次输出1 s 脉冲图如图7所示,横坐标每一格线代表20 ns,该波形表示主从站的同步输出偏差为0 ns。

图7 主从站某一次输出1 s 脉冲Fig.7 Primary and secondary station output 1 s pulse diagram at one time

200 次主从同步,其时间偏差结果如图8 所示。

图8 时间偏差结果Fig.8 Time deviation result

其中时间偏差为一个绝对值量。由图8 可知,主从时钟最大时钟偏差为80 ns,时钟偏差基本分布在±80 ns 之间,能够满足现代工业以太网对时间精度的需求。

3.2 一主二从主从直连同步测试

系统初始化,进行200 次同步测试,其主从同步结果如图9 所示。

图9 主从同步结果Fig.9 Master slave synchronization result

其中,ID1 时钟表示从站1 与主站的时钟偏差,ID2 表示从站2 与主站的时钟偏差。ID1-ID2 时钟差值(LCK)为ID1 时钟与ID2 时钟的差值,ID1-ID2时钟差值(ns)为ID1-ID2 时钟差值(LCK)乘20 ns所得。

主站与从站1 的时钟偏差图和主站与从站2 的时钟偏差图如图10 和图11 所示。经过200 次测试,从站1 与主时钟的最大时钟偏差为100 ns,时钟偏差基本分布在±100 ns;从站2 与主时钟的最大偏差为100 ns,时钟偏差基本分布在±100 ns。相对一主一从的同步测试,由于其加大了链路延时的不对称性以及从站内部的处理延时,增大了时钟偏差,导致同步精度下降。

图10 主站与从站1 的时钟偏差Fig.10 Clock deviation between master station and slave station 1

图11 主站与从站2 的时钟偏差Fig.11 Clock deviation between master station and slave station 2

4 结束语

本文详细分析了IEEE 1588 协议,并将IEEE 1588 协议以及本地时钟补偿算法应用于分布式时钟同步系统中,在一主一从的分布式时钟同步基础上,拓展到了一主两从的分布式时钟同步系统。实验证明该方案的同步精度能够达到ns 级别,同步的时钟设备越少,时钟偏差越小。同步一个时钟设备和两个时钟设备,主从时钟偏差基本分布在±100 ns之间,能够满足现代工业以太网对高精确时钟的需求,简化了硬件电路设计,不需要专用的PHY 芯片,时钟戳提取和报文识别都在FPGA 芯片内部完成,降低开发难度和成本。

猜你喜欢
主从主站计数器
采用虚拟计数器的电子式膜式燃气表
FANUC系统PROFIBUS主从功能应用
基于OS2主站系统的海量数据共享技术研究
多表远程集抄主站系统
基于主从控制的微电网平滑切换控制策略研究
计数器竞争冒险及其处理的仿真分析
基于飞行试验数据的仿真模型主从一体化检验
基于改进经济压差算法的主站AVC的研究
关口电能计量故障监测报警装置及主站研究
基于FPGA的机床数控系统主从控制器通信研究