亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

TI KeyStone架构中实现IEEE1588方案的介绍

发布时间:2020-07-31
分享到:

TI KeyStone架构中实现IEEE1588方案的介绍

发布时间:2020-07-31
分享到:

 摘要

    IEEE1588标准又称为网络测量和控制系统的时钟同步协议标准,是IEEE标准委员会颁布的为了满足定位服务和无线移动通信系统高同步要求的标准。随着Ethernet技术的广泛应用,采用IEEE1588方式通过以太网实现时钟同步方案在网络上的应用越来越普遍。本文简要介绍1588的原理和常见的实现方式,并详细介绍TI  KeyStone架构上的1588实现方案。

    1 概述

    1588是IEEE规范定义的网络实时同步标准[1]。它提供一种通过网络信息交互以获得精准时钟信息的标准。和在广域网上的NTP协议比较,1588标准提供高于纳秒级别的时钟,可以用来满足要求在一个相对小的空间范围内对时钟同步有严格要求的应用场景,例如基站同步,音视频网桥(AVB),工业控制,产线控制,军事应用等。

    KeyStone架构是TI推出的高性能多核架构,该架构目前已演进了两代——KeyStone1 和KeyStone2。基于KeyStone架构,TI推出多款针对基站和网络应用的多核芯片。

    KeyStone1家族基于40nm工艺,包括如下器件型号:

    TCI6616,参见文献[2]

    TCI6618,参见文献[3]

    TCI6614 和TCI6612,参见文献[4]和[5]

    TMS320C6678、TMS320C6674、TMS320C6672 等,参见文献[6]

    KeyStone2家族基于28nm工艺,包括如下器件型号:

    TCI6636K2H,参见文献[7]

    TCI6634K2K,参见文献[8]

    TCI6638K2K,参见文献[9]

    TCI6630K2L (即将发布),参见文献[10]

    本文首先介绍IEEE1588的基本原理,然后以常见的基于PHY的IEEE1588实现方案为参考,介绍KeyStone架构上支持IEEE1588的硬件功能。同时,本文总结了在KeyStone1芯片上实现IEEE1588方案需要注意的实现细节,并对KeyStone2芯片的1588方案做初步介绍。

    2 IEEE1588时钟同步原理

    IEEE1588使用精准时间协议PTP(Precision Timing Protocol),通过端到端的报文交互获得时钟参考信息,矫正本地时钟频率和相位。1588协议基于两个假设条件:,在时钟源设备和受时钟设备之间,网络报文传输时间是对称的。也就是说一个报文从时钟源设备到受时钟设备的传输时间等于报文从受时钟设备到时钟源设备的传输时间相同;第二,在PTP报文交换过程当中,本地时钟的漂移可以忽略不计。

    如图所示,在经过sync->delay_request->delay_response消息交互以后,受时钟设备获得4个时间值。以太网报文在两个设备之间的环路时延可以计算为:

    Troundtrip=(t4-t1)-(t3-t2)

    假设包传输时延是对称的,那么单路时延是:

    Ttripdelay=((t4-t1)-(t3-t2))/2

    从时钟设备的时钟和主时钟的差值是:

    Tdelta=t2-(t1+Ttripdelay)

    实际部署时,时钟源发送sync消息,从设备根据多个sync消息来计算本地时钟的偏差。当从设备需要同步本地时钟相位的时候,发送delay_req消息,时钟源发送delay_response,从设备根据获得的4个时间值来估计相位的偏差。

    对于时钟源设备,如果在发送sync报文时所带的时间戳就是报文发送时采集的准确时间,这种模式叫做single step模式。如果发送sync报文的时候所带的时间戳只是一个近似时间,sync报文发送的准确时间不能在发送sync报文的时候获得或者实时插入到sync报文中,时钟源设备需要发一个follow up消息报文,用来传递sync 报文的准确发送时间,这种模式叫做two step模式。下面介绍的PHY 方案支持时钟源single step,TI的KeyStone架构支持时钟源two step模式。

    3 1588芯片实现方案

    根据打时间戳的方式不同,常见的1588方案分为软件时间戳方案和硬件时间戳方案。软件方案通常是通过软件手段在网络报文的接收中记录PTP报文接收或发送时间,处理灵活,可以根据应用场景灵活处理PTP协议报文,支持多种封装格式。但是因为软件中断的时间抖动大,软件时间戳方案的较差,在对要求不高的情况下使用。硬件方案通过特殊硬件解析PTP 报文,并用硬件记录报文发送或接收时间。硬件方案高,但是需要特殊硬件解析PTP报文,在特殊场景中,例如PTP over IPSec,报文经过加密,硬件无法解析PTP报文。根据硬件方案获取报文收发时间地点不同,硬件方案又分在PHY上集成的1588方案和MII集成的1588方案等。

    下面先简单介绍一下TI基于PHY的硬件解决方案作为参考,然后着重介绍KeyStone架构上的基于MII和PA的1588 方案。

    3.1 以太网PHY1588方案(DP83640)

    DP83640[11]是一款百兆网口PHY,集成1588功能,对外提供校准过的时钟和PPS信号,同时还支持同步以太网功能,直接从物理层获得远端时钟。在支持同步以太网的情况下,使用1588做相位调整,实验表明终的时钟偏差可以达到纳秒以下。

    83640 timestamp模块维护一个本地的1588计数器,包括32bit的秒计数和30bit的纳秒计数。PTP报文中要求的48bit秒计数中的高16位需要软件维护。上层软件在发送一个1588报文的时候,时间戳中秒计数的高16位由软件设置的,低32位设置为0。

    报文解析模块用来匹配解析PTP报文。83640支持1588Annex D&E和Annex F格式的报文。当PTP报文送至PHY时,报文解析硬件检测到这个PTP报文的时钟,在报文发出时,把本地的时间戳写到PTP报文里面,并修改相关的CRC 和CHKSUM值。83640支持1588 single step模式的时钟源。在报文接收方向,同样有报文解析硬件。在解析到PTP报文以后,接收报文的准确时间戳可以插入在报文里,或者通过控制接口上报。

    83640的1588时钟模块对外提供频率控制接口,软件通过控制寄存器可以调整输出的时钟频率。1588时钟模块根据上层软件的配置,对1588时钟模块的输入时钟信号微调,然后分频输出。时钟调整是通过调整每个时钟周期的时间来实现的。在每个时钟周期调整的单位是2-32ns。在正常模式下,这个调整机制用来补偿本地时钟和时钟源的差距。在长期工作以后产生累积同步误差时,软件可以调整寄存器的值,在一定时间内,对频率向上或者向下微调,以补偿相位差距。当在相位补偿以后,恢复正常频率补偿模式。

    软件协议栈通过协议处理以后获得本地的时钟与时钟源的时间差值,然后通过寄存器调整本地时间戳。在修改时,软件把时间差值写入寄存器,然后使能修改。这种方法适用初始同步时单次校正本地时间戳。如在正常工作中出现累积相位偏差,应该使用前面介绍的微调方法,避免输出时钟抖动。

    应用层通过设置83640的trigger control模块来控制输出PPS 或者其他同步信号。应用可以设置在timestamp 的哪些具体时刻某个GPIO管脚可以发生反转。trigger的输出可以线与并输出到GPIO管脚,通过线与可以是输出复杂的周期波形。

    83640方案实现简单,直接输出矫正时钟及相位信号,但是对于复杂传输场景支持困难;而且相比不包含IEEE1588功能的PHY芯片,83640的成本要高出许多。

    3.2 KeyStone1 1588方案

    KeyStone架构是TI推出的高性能多核架构,现在已经有KeyStone1和KeyStone2两种架构。KeyStone架构中也包含了对IEEE1588功能的支持。

    KeyStone1系列芯片的1588方案包括两个硬件部分:记录时间戳,发送同步脉冲。KeyStone1支持two step的时间戳模式,同时也能支持1588协议中Annex D&E和Annex F规定的PTP报文解析。

    对于记录时间戳,KeyStone1对于Annex D&E和Annex F采用不同的硬件来支持。Annex D&E使用以太网协处理(NetCP)里面的包加速器(PA)来支持;Annex F报文使用以太网交换机(GE Switch)里面的CPTS模块来支持 [12-13]。

    对于同步信号的输出,KeyStone1里面需要通过Timer64[14]来完成。软件通过CPTS或者PA获取到时间戳后,计算需要调整的频率和相位,然后通过配置Timer64的周期寄存器来更改Timer64的输出周期,调整输出的相位信息;通过SPI接口调整外部的VCXO的输出频率,矫正本地时钟频率。

    3.2.1 Annex D&E PTP报文处理

    PA内部会维护一个48bit的计时器,该计时器的频率与PA的频率一致(一般是350MHz)。由于Annex D&E报文的承载方式为IP/UDP承载(报文模式为IPv4和IPv6),当用户收到或者发送一个IPv4或IPv6的PTP报文时,在PA 侧会记录一个报文接收(或发送)的时间戳,这个时间戳只有32bit(为48bit中的低32bit)。这个时间戳保存在用户指定的QMSS的某个Queue的描述符里面。

    用户从Queue中提取出该描述符:如果是接收,用户可根据描述符信息解析报文类型,获取报文内容,同时读取32bit时间戳并换算成时间。如果是发送,用户只需读取时间戳,转换为1588 48bit时间后按照1588 two step的规则再做报文发送。

    3.2.2 Annex F PTP报文处理

    GE Switch模块上的CPTS模块支持对1588 Annex F(以太网封装)的PTP报文解析,支持VLAN。在CPSW逻辑匹配到PTP报文时,会触发一个硬件信号给CPTS模块用来触发时间戳获取。

    CPTS 的时间戳模块维护一个32bit的timer,根据配置,这个timer可以工作在二分之一CPU主频上。这个timer 是一个free run timer。软件通过这个timer

TI
加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论