简介
在前面的文章中介绍了i.MX RT1180跨界处理器的主要应用场景是在工业自动化与智能制造的高精度测量领域,而这其中时间同步是一个实时系统能够稳定运行的关键。而主流的工业网络协议基本上的时钟同步原理都是一脉相承来自于IEEE 1588标准,今天本文就介绍一下RT1180上如何实现1588同步。
1588基本原理简介
首先来了解一下802.1AS(又叫gPTP)协议本身。gPTP协议最早可以追溯到20世纪90年代,以太网的速度开始从10Mbps往100Mbps发展,而早期的时间同步协议NTP工作在应用层并且由纯软件实现,它通常只能保证毫秒级的同步精度,这无法满足工业自动化,汽车,电力系统等应用领域对同步精度的要求。
为了解决这个问题,在2002年, IEEE正式发布了1588协议的V1版本,定义了时间同步的基本原理,此版本的同步精度可以达到亚毫秒级,而在2008年发布的V2版本中引入了硬件时间戳的定义,同步精度由此提升到了亚微秒级。到了2011年第一版的gPTP协议发布,它脱胎于1588V2,但是与之不同的是它对1588V2进行了简化,抛弃了一些特性选项,并且针对性的仅工作在二层网络上以提升精度。再到2020年,IEEE又发布了一版802.1AS-2020协议,创新的加入了多个时间域的支持,使得不同种类的应用可以使用独立的时间域,有效提升了容错及冗余能力。
同步原理方面,从NTP到gPTP,使用的原理都是同样的步骤,如下图所示:

主时钟与从时钟之间通过Sync,Follow_up,Delay_req,Delay_rsep四种帧的通信,让从时钟能够获取与主时钟的偏移以及传输延迟,然后从时钟调整自己以与主时钟同步。
通常来说,在计算偏移与延迟的过程中,时间戳越接近模拟信号的出口就能够获取越准确的结果,而RT1180就依赖于一个内置的Timer模块,能够在MAC的出口获取时间戳,获得相对较为准确的数据。
RT1180 1588 Timer模块
RT1180的Timer模块的基本结构如下图所示:

时钟源的稳定是时钟同步的基础,所以RT1180的Timer可以支持多种时钟源输入作为计数源,可以根据需求选择不同稳定标准的时钟源来作为时基。
这个Timer提供了多个寄存器以提供准确的时间戳。包含两个64-bit的counter寄存器TMR_CNT,TMR_OFF。除此以外,还提供了两个32-bit的寄存器TMR_ACC配合TMR_ADD寄存器可以用于微调TMR_CNT的值,以让输出的时间戳能够与主时钟同步。
具体到它的调节原理如下,TMR_CNT会按照TMR_CTRL[TCLK_PERIOD]中设定的值每个周期递增,TMR_ACC(定时器累加器)在每个定时器时钟周期都会按照 TMR_ADD[ADDEND] 的值递增。当 TMR_ACC累加到溢出时,TMR_CNT 会额外加 1,用于补偿时钟频率中的小数部分。调整TCLK_PERIO以及TMR_ADD寄存器的值就可以做到调节Timer的输出时间戳的值而达到调节时钟频率的目的。
同时这个Timer还提供了Alarm以及Fiper寄存器,Alarm寄存器用以实现到达指定时间时输出脉冲,Fiper模块用以实现周期性的脉冲输出,主要用于1PPS信号的输出。
在实际的1588实现中,在周期性的计算offset的情况下,会使用PI控制的方法来动态调节TCLK_PERIOD与TMR_ADD的值以实现时钟频率的微调,让offset能够保持在一个稳定的范围以内。
RT1180时钟同步效果
同步的基本原理上面已经介绍过了,而在i.MX RT1180上,NXP提供的GenAVB/TSN软件包也可以用于测量实际的同步效果,下图就是基于两块RT1180-EVK单跳连接下所测量出来的gPTP的同步效果,可以看到offset还是保持在一个较低的值。

在确定性网络和工业自动化的时代,时间不仅是维度,更是协作的基石。i.MX RT1180凭借精准的时钟同步能力,让每一个节点都能“踩准节拍”,实现微秒级甚至纳秒级的协同。
未来,无论是智能工厂、车联网,还是能源系统,这种“魔法”都将成为推动高效、可靠通信的核心力量。时序共律,才能奏响工业互联的完美乐章!
全部0条评论
快来发表一下你的评论吧 !