基于DP83640的精确时钟同步协议实现
传统测量系统使用集中式的体系结构,这种结构把仪器与主计算机置于彼此相近的位置。这类系统会有定时约束要求,可通过编程和采用有确定反应时间的通信技术满足这一要求。今天的许多测量应用对测试系统有日益严格的定时要求。此外,越来越多的应用要求系统采用把设备布散于不同地点的的分布式体系结构。标准网络技术能很好适应分布式系统,但这些技术所使用的定时规范对测量应用尚不够严格,从而导致适用于网络测量和控制系统的精密时钟同步协议,即IEEE1588标准的开发。
LXI规范规定,对于A类或B类仪器需要实现IEEE1588精密时钟同步。对IEEE1588精密时钟同步的实现,将采用硬件部分与协议部分分离、软件部分与协议分离的PTP体系结构,这样可以减少运行时对处理器的要求。这个协议只占用少量的网络带宽,却可以达到微秒级的同步精度,在实验室环境下,这个精度甚至可以提高到数十纳秒。
LXI规范规定,对于A类或B类仪器需要实现IEEE1588精密时钟同步。对IEEE1588精密时钟同步的实现,将采用硬件部分与协议部分分离、软件部分与协议分离的PTP体系结构,这样可以减少运行时对处理器的要求。这个协议只占用少量的网络带宽,却可以达到微秒级的同步精度,在实验室环境下,这个精度甚至可以提高到数十纳秒。
IEEE1588同步协议
IEEE1588标准规定了一个将分散在测量和控制系统内的分离节点上独立运行的时钟同步到一个高精度和准确度的时钟上的协议。这些时钟是在一个通信网络中互相通信的。按这个基本格式,这个协议要形成树形的管理,使系统内的这些时钟产生一个主从关系。在一个给定子网中包括多个节点,第一个节点都有一个时钟,时钟之间经同网络连接。IEEE1588规定了子网的划分规则,它是按时钟的级别划分子网,一个子网只有一个1级或2级时钟。在一个子网中只有一个主时钟,从时钟从主时钟得到时间,所有时钟最终都是从一个称为祖母时钟那里得到它的时间。
系统中的一个时钟可选为主时钟,由主时钟向从时钟发送同步报文,通过报文传递时钟信息。IEEE1588定义了四种同步报文Sync、Follow_up、Delay_request、Delay_response,和一组管理报文。
同步过程分为两个阶段:偏移测量阶段和延迟测量阶段。偏移测量阶段用来修正主时钟和从属时钟的时间差。在这个偏移修正过程中,主时钟周期性发出一个确定的同步信息(Sync),一般为每两秒一次,它包含了一个时间印章(time stamp),精确地描述了数据包发出的预计时间。如图1所示,假设同步之前主时钟的时间为Tm=1050s,而从属时钟的时间为Ts=1000s。
系统中的一个时钟可选为主时钟,由主时钟向从时钟发送同步报文,通过报文传递时钟信息。IEEE1588定义了四种同步报文Sync、Follow_up、Delay_request、Delay_response,和一组管理报文。
同步过程分为两个阶段:偏移测量阶段和延迟测量阶段。偏移测量阶段用来修正主时钟和从属时钟的时间差。在这个偏移修正过程中,主时钟周期性发出一个确定的同步信息(Sync),一般为每两秒一次,它包含了一个时间印章(time stamp),精确地描述了数据包发出的预计时间。如图1所示,假设同步之前主时钟的时间为Tm=1050s,而从属时钟的时间为Ts=1000s。
主时钟测量出发送的准确时间TM1,而从属时钟测量出接收的准确时间TS1。由于信息包含的是预计的发出时间而不是真实的发出时间,所以主时钟在Sync信息发出后发出一个Follow_up信息,该信息加了一个时间印章,准确地记载了Sync信息的真实发出时间TM1。这样一来,从属时钟使用Follow_up信息中的真实发出时间和接收方的真实接收时间,可以计算出从属时钟与主时钟之间的偏移。
延迟测量阶段用来测量网络传输造成的延迟时间。使用IEEE1588定义的延迟请求信息包测量网络的传输延时。如图2所示,从属时钟在收到Sync信息后,在TS3时刻发出延迟请求信息包Delay_req,主时钟收到Delay_req后在延迟响应信息包印章出准确的接收时间TM3,并发送给从属时钟,因此从属时钟就可以非常准确地计算出网络延时。
延迟测量阶段用来测量网络传输造成的延迟时间。使用IEEE1588定义的延迟请求信息包测量网络的传输延时。如图2所示,从属时钟在收到Sync信息后,在TS3时刻发出延迟请求信息包Delay_req,主时钟收到Delay_req后在延迟响应信息包印章出准确的接收时间TM3,并发送给从属时钟,因此从属时钟就可以非常准确地计算出网络延时。
可以使用偏移测量和延迟测量获得的数据直接修正从属时钟,但这样估计的值存在较大的估计方差。为了获得更佳的估计精度,需要对偏移测量和延迟测量获得的数据进行信号处理。信号处理过程如图3所示。首先对时间印章差值进行模式分类,分类的目的是为了获得网络随机延迟条件下时间印章差值的几个类聚,可以通过人工神经网络算法实现模式分类。对每个类中的数据进行方差计算,选取方差最小的类作为真实的网络偏移数据,再对该类中的数据进行最小二乘估计,用估计值修正从属时钟。
DP83640芯片
DP83640芯片是一款由美国国家半导体公司推出的集成IEEE1588精确时钟协议硬件支持功能的以主网收发器。芯片内置高精度IEEE1588时钟,并设有由硬件执行的时间标记功能,可为接收及发送信息包印上标记。
DP83640主要包括PHY以太网物理层接口、IEEE1588包检测和处理模块、IEEE1588控制和IEEE1588时钟。
DP83640主要包括PHY以太网物理层接口、IEEE1588包检测和处理模块、IEEE1588控制和IEEE1588时钟。
PHY以太网物理层接口
PHY以太网物理层接口向下连接以太网通信媒介,向上通过MII和MDIO与MAC控制器相连。
DP83640通过硬件支持提供以下三个严格时间基础:IEEE1588同步时钟产生、时钟同步包时间印章、通过GPIO的事件触发和时间印章。
DP83640通过硬件支持提供以下三个严格时间基础:IEEE1588同步时钟产生、时钟同步包时间印章、通过GPIO的事件触发和时间印章。
IEEE1588同步时钟
DP83640为基于同步协议要求更新IEEE1588时钟提供了几种机制,这些方法包括:直接读/写、加/减调整、频率调整、临时频率控制。
时钟由以下域构成:秒(32位),纳秒(30位),亚纳秒 (单位是2-32ns)。时间值的直接设置可以通过设定一个新的时间值完成,以纳秒为单位的步进调整值可以加到当前值,调整值可以是正的或负的。
通过编程一个速率调整值可以使时钟以调整过的频率操作。通过包括一个速率调整持续时间,时钟还可以被编程执行临时调整频率值。速率调整允许在每参考时钟周期以2-32ns量级进行校正。频率调整允许时钟修正时间累计偏差,避免由时间值步进调整引起的任何潜在副作用。
用于更新时钟值的方法可能依赖于时钟值的不同而异。比如,在起初开始尝试同步时,时钟可能相差很远,因此需要采用步进调整或直接设置时间,以后当时钟非常接近时,临时速率调整方法可能是最佳选择。
IEEE1588时钟输出:DP83640提供一个同步时钟信号给外部设备使用。输出时钟信号可以是250MHz除以N之后的任意频率,N从2到255。提供频率从125HMz到980.4KHz。
IEEE1588时钟输入:IEEE1588PTP逻辑依靠一个由内部相位发生模块(PGM)产生的125MHz名义参考时钟操作。但是也可用选择使用PGM时钟的分频,或者使用一个不超过125MHz的外部参考时钟。
时钟由以下域构成:秒(32位),纳秒(30位),亚纳秒 (单位是2-32ns)。时间值的直接设置可以通过设定一个新的时间值完成,以纳秒为单位的步进调整值可以加到当前值,调整值可以是正的或负的。
通过编程一个速率调整值可以使时钟以调整过的频率操作。通过包括一个速率调整持续时间,时钟还可以被编程执行临时调整频率值。速率调整允许在每参考时钟周期以2-32ns量级进行校正。频率调整允许时钟修正时间累计偏差,避免由时间值步进调整引起的任何潜在副作用。
用于更新时钟值的方法可能依赖于时钟值的不同而异。比如,在起初开始尝试同步时,时钟可能相差很远,因此需要采用步进调整或直接设置时间,以后当时钟非常接近时,临时速率调整方法可能是最佳选择。
IEEE1588时钟输出:DP83640提供一个同步时钟信号给外部设备使用。输出时钟信号可以是250MHz除以N之后的任意频率,N从2到255。提供频率从125HMz到980.4KHz。
IEEE1588时钟输入:IEEE1588PTP逻辑依靠一个由内部相位发生模块(PGM)产生的125MHz名义参考时钟操作。但是也可用选择使用PGM时钟的分频,或者使用一个不超过125MHz的外部参考时钟。
包时间印章
IEEE1588发送包解析器和时间印章:IEEE1588发送解析器监视发送包数据以检测IEEE1588 V1和V2事件消息。发送解析器能够检测直接在Layer2层传输的以太网数据包以及UDP/IPv4和UDP/IPv6数据包PTP事件消息。当检测到PTP事件消息时,器件将捕获发送时间印章并且提供给软件。因为软件知道包发送的顺序,所以只记录时间印章。器件可以缓存4个时间印章。
IEEE1588接收包解析器和时间印章:IEEE1588接收解析器监视接收包数据以检测IEEE1588 V1和V2事件消息。接收解析器能够检测直接在Layer2层传输的以太网数据包以及UDP/IPv4和UDP/IPv6数据包PTP事件消息。当检测到PTP事件消息时,器件将捕获接收时间印章并且提供给软件。除时间印章以外,器件还将记录16位的序列号,4位的消息类型,而且为PTP事件消息的20-29字节生成一个12位的复述值。器件可以缓存4个时间印章。当一个接收时间印章准备好以后可以产生一个中断。
接收时间印章插入:DP836400能够通过在接收到的数据包中插入时间印章递送时间印章给软件。这允许使用一种简单的方法递送数据包给软件而不需要匹配时间印章到正确的数据包。这种方法免去了通过串行管理接口(SMI)读取接收时间印章的必要。
IEEE1588接收包解析器和时间印章:IEEE1588接收解析器监视接收包数据以检测IEEE1588 V1和V2事件消息。接收解析器能够检测直接在Layer2层传输的以太网数据包以及UDP/IPv4和UDP/IPv6数据包PTP事件消息。当检测到PTP事件消息时,器件将捕获接收时间印章并且提供给软件。除时间印章以外,器件还将记录16位的序列号,4位的消息类型,而且为PTP事件消息的20-29字节生成一个12位的复述值。器件可以缓存4个时间印章。当一个接收时间印章准备好以后可以产生一个中断。
接收时间印章插入:DP836400能够通过在接收到的数据包中插入时间印章递送时间印章给软件。这允许使用一种简单的方法递送数据包给软件而不需要匹配时间印章到正确的数据包。这种方法免去了通过串行管理接口(SMI)读取接收时间印章的必要。
DP83640内部寄存器
DP83640内部寄存器与DM9000等网络接口芯片寄存器不同之处,主要在物理层控制状态寄存器中,关于页寄存器的定义(14H-1FH将页寄存器分成0-6页):0页为物理层扩展寄存器,1页为测试寄存器,2页为链接诊断寄存器,3页为保留,4页为PTP1588基本寄存器,5页和6页都是PTP1588配置寄存器。
基于DP83640的1588实现
由于DP83640提供了底层时间印章的捕获功能,1588协议实现的工作将主要集中在软件上。
主时钟节点将执行下面过程:a.1在每个时间间隔(默认2秒),读取当前时间值,根据1588协议规定,构建Sync报文;a.2发送Sync报文;a.3从83640寄存器中获得Sync报文发送的准确时间,构建Follow_up报文,并发送;b.在任意时刻,监听Delay_req消息,一旦收到,构建Delay_resp报文,并发送。
从时钟节点将执行下面过程:a.1监听来自主时钟节点的Sync消息;a.2监听来自主时钟节点的Follow_up消息;a.3进行偏移测量计算,设置本地时钟值;b.1根据1588标准产生发送Delay_req报文的时间,并在此时间构建Delay_req报文并发送;b.2根据Delay_resp中的时间印章,计算延迟时间,修正本地时钟值。c.多次获取时间差值样本后,用模式分类方式,估计本地时钟值并对其修正。
主时钟节点将执行下面过程:a.1在每个时间间隔(默认2秒),读取当前时间值,根据1588协议规定,构建Sync报文;a.2发送Sync报文;a.3从83640寄存器中获得Sync报文发送的准确时间,构建Follow_up报文,并发送;b.在任意时刻,监听Delay_req消息,一旦收到,构建Delay_resp报文,并发送。
从时钟节点将执行下面过程:a.1监听来自主时钟节点的Sync消息;a.2监听来自主时钟节点的Follow_up消息;a.3进行偏移测量计算,设置本地时钟值;b.1根据1588标准产生发送Delay_req报文的时间,并在此时间构建Delay_req报文并发送;b.2根据Delay_resp中的时间印章,计算延迟时间,修正本地时钟值。c.多次获取时间差值样本后,用模式分类方式,估计本地时钟值并对其修正。
随着LXI总线技术越来越多的应用到测试领域中,解决分布式测量中同步总是的1588协议也越来越受到人们的关注。DP83640在芯片物理层之内集成了IEEE1588高精度时间协议,为LXI B类及A类仪器的设计者们提供了一个方便的平台。这种采用“COTS”产品的设计方式降低了设计成本,缩短了周期,也将为更多的人所喜闻乐见。
北京航天测控技术开发公司位于北京石景山产业园区,是中国航天科工测控中心、武器装备测试与综合保障技术中心,国防科技工业自动化测试技术研究应用中心,主要业务为军工领域测控装备和维修保障信息化装备研发生产、导弹通用测试平台、系统集成、工业控制、基础测试测量仪器产品和软件与信息化产品。公司在以武器装备测试与综合保障技术为代表的测控领域,取得了突出成绩,产品及服务覆盖部队、航天、航空、兵器、核工业、船舶、电子等军用领域和民航飞机、石油、汽车、化工、电力、铁路等民用领域。
文章版权归西部工控xbgk所有,未经许可不得转载。
上一篇:嵌入式大容量数据存储解决方案
下一篇:智能科技在仪器仪表及测量中的应用