基于IEEE 1588标准的时钟透明传输装置及方法转让专利

申请号 : CN201610345624.6

文献号 : CN105846941B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邱智亮宋仕坤范传辉张之义李兴旺陈郝明潘伟涛鲍民权

申请人 : 西安电子科技大学中国电子科技集团公司第五十四研究所

摘要 :

本发明提供了一种基于IEEE 1588标准的时钟透明传输装置及方法,主要解决现有技术中使用各类专用芯片导致的连接关系复杂、功能单一,报文交换速率低,协议不可升级,端口数量不便于扩展的问题。其实现方案是:判断到达的以太网帧是否为PTP事件帧并对PTP事件帧打时间戳;提取PTP事件帧的纠正域字段内容;暂存时间戳及纠正字段内容;对所有以太网帧完成分组交换;记录PTP事件帧离开本节点的时间戳;计算新的纠正域字段值并写入到PTP事件帧对应字段;完成所有以太网帧校验字段的生成;转发所有以太网帧。本发明解决了现有技术存在的问题,具有可移植性、可对交换单元的端口数量进行扩展的优点,用于高精度时间同步系统。

权利要求 :

1.一种IEEE 1588下的时钟透明传输的装置,其特征在于:包括:

本地时钟模块(1),用于计算本地时间,向时间戳生成模块(8)提供纳秒级的实时时间,并向配置模块(11)提供修改本地时间及计时频率的接口;

MAC层发送模块(2),用于将输出处理模块(6)的数据封装成以太网帧,并下发到PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;

MAC层接收模块(3),用于接收PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块(4);

输入处理模块(4),用于轮询各个MAC层接收模块(3)的工作状态,将其中的有效数据帧缓存下来,当分组处理及队列管理模块(5)空闲时,将所述有效数据帧提交给该模块(5);

分组处理及队列管理模块(5),用于解析输入处理模块(4)提交的数据帧,按照目的端口号将到来的以太网帧进行分组并插入到各个分组缓存队列的队尾,等待各个输出处理模块(6)读取;

输出处理模块(6),用于从分组处理及队列管理模块(5)中取出一帧内容提交给MAC层发送模块(2),并根据源MAC地址查找该帧的源端口编号,将其提交给滞留时间处理模块(10);

PTP解析模块(7),用于监视PHY层与MAC层之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,并将该标志信号提交给时间戳生成模块(8);

时间戳生成模块(8),用于对每一个到达PTP解析模块(7)的帧打上本地时间戳,并将PTP解析模块(7)标志为有效的时间戳信息提交给缓存RAM模块(9)或滞留时间处理模块(10);

缓存RAM模块(9),用于按照源端口编号暂存已有的时间戳信息,等待滞留时间处理模块(10)的读取;

滞留时间处理模块(10),用于根据输出处理模块(6)提交的端口号读取缓存RAM模块(9)的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合发送时间戳生成模块(8)提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层发送模块(2);

配置模块(11),用于提供一组寄存器接口,便于用户可以配置上述各个模块的功能以及查询上述各个模块的工作状态。

2.根据权利要求1所述的装置,其特征在于,所述的MAC层发送模块(2),包括:

MAC层第一发送模块(21),用于将第一输出处理模块(61)的数据封装成以太网帧,并下发到第1端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;

MAC层第二发送模块(22),用于将第二输出处理模块(62)的数据封装成以太网帧,并下发到第2端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;

MAC层第三发送模块(23),用于将第三输出处理模块(63)的数据封装成以太网帧,并下发到第3端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;

MAC层第四发送模块(24),用于将第四输出处理模块(64)的数据封装成以太网帧,并下发到第4端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改。

3.根据权利要求1所述的装置,其特征在于,所述的MAC层接收模块(3),包括:

MAC层第一接收模块(31),用于接收第1端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块(4);

MAC层第二接收模块(32),用于接收第2端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块(4);

MAC层第三接收模块(33),用于接收第3端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块(4);

MAC层第四接收模块(34),用于接收第4端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块(4)。

4.根据权利要求1所述的装置,其特征在于,所述的输出处理模块(6),包括:

第一输出处理模块(61),用于从分组处理及队列管理模块(5)中取出一帧内容提交给MAC层第一发送模块(21),并根据源MAC地址查找该帧的源端口编号,将其提交给第一滞留时间处理模块(101);

第二输出处理模块(62),用于从分组处理及队列管理模块(5)中取出一帧内容提交给MAC层第二发送模块(22),并根据源MAC地址查找该帧的源端口编号,将其提交给第二滞留时间处理模块(102);

第三输出处理模块(63),用于从分组处理及队列管理模块(5)中取出一帧内容提交给MAC层第三发送模块(23),并根据源MAC地址查找该帧的源端口编号,将其提交给第三滞留时间处理模块(103);

第四输出处理模块(64),用于从分组处理及队列管理模块(5)中取出一帧内容提交给MAC层第四发送模块(24),并根据源MAC地址查找该帧的源端口编号,将其提交给第四滞留时间处理模块(104)。

5.根据权利要求1所述的装置,其特征在于,所述的PTP解析模块(7),包括:

第一PTP接收解析模块(71),用于监视第1端口的PHY层与MAC层第一接收模块(31)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧,给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第一接收时间戳生成模块(81);

第一PTP发送解析模块(72),用于监视第1端口的PHY层与MAC层第一发送模块(21)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,将该标志信号提交给第一发送时间戳生成模块(82);

第二PTP接收解析模块(73),用于监视第2端口的PHY层与MAC层第二接收模块(32)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧,给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第二接收时间戳生成模块(83);

第二PTP发送解析模块(74),用于监视第2端口的PHY层与MAC层第二发送模块(22)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,将该标志信号提交给第二发送时间戳生成模块(84);

第三PTP接收解析模块(75),用于监视第3端口的PHY层与MAC层第三接收模块(33)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧,给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第三接收时间戳生成模块(85);

第三PTP发送解析模块(76),用于监视第3端口的PHY层与MAC层第三发送模块(23)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,将该标志信号提交给第三发送时间戳生成模块(86);

第四PTP接收解析模块(77),用于监视第4端口的PHY层与MAC层第四接收模块(34)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧,给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第四接收时间戳生成模块(87);

第四PTP发送解析模块(78),用于监视第4端口的PHY层与MAC层第四发送模块(24)之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,将该标志信号提交给第四发送时间戳生成模块(88)。

6.根据权利要求1所述的装置,其特征在于,所述的时间戳生成模块(8),包括:

第一接收时间戳生成模块(81),用于对每一个到达第一PTP接收解析模块(71)的以太网帧打上本地时间戳,并将第一PTP接收解析模块(71)标志为有效的时间戳信息连同第一PTP接收解析模块(71)提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块(9);

第一发送时间戳生成模块(82),用于对每一个到达第一PTP发送解析模块(72)的以太网帧打上本地时间戳,并将第一PTP发送解析模块(72)标志为有效的时间戳信息提交给第一滞留时间处理模块(101);

第二接收时间戳生成模块(83),用于对每一个到达第二PTP接收解析模块(73)的以太网帧打上本地时间戳,并将第二PTP接收解析模块(73)标志为有效的时间戳信息连同第二PTP接收解析模块(73)提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块(9);

第二发送时间戳生成模块(84),用于对每一个到达第二PTP发送解析模块(74)的以太网帧打上本地时间戳,并将第二PTP发送解析模块(74)标志为有效的时间戳信息提交给第二滞留时间处理模块(102);

第三接收时间戳生成模块(85),用于对每一个到达第三PTP接收解析模块(75)的以太网帧打上本地时间戳,并将第三PTP接收解析模块(75)标志为有效的时间戳信息连同第三PTP接收解析模块(75)提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块(9);

第三发送时间戳生成模块(86),用于对每一个到达第三PTP发送解析模块(76)的以太网帧打上本地时间戳,并将第三PTP发送解析模块(76)标志为有效的时间戳信息提交给第三滞留时间处理模块(103);

第四接收时间戳生成模块(87),用于对每一个到达第四PTP接收解析模块(77)的以太网帧打上本地时间戳,并将第四PTP接收解析模块(77)标志为有效的时间戳信息连同第四PTP接收解析模块(77)提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块(9);

第四发送时间戳生成模块(88),用于对每一个到达第四PTP发送解析模块(78)的以太网帧打上本地时间戳,并将第四PTP发送解析模块(78)标志为有效的时间戳信息提交给第四滞留时间处理模块(104)。

7.根据权利要求1所述的装置,其特征在于,所述的滞留时间处理模块(10),包括:

第一滞留时间处理模块(101),用于根据第一输出处理模块(61)提交的端口号读取缓存RAM模块(9)的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第一发送时间戳生成模块(82)提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第一发送模块(21);

第二滞留时间处理模块(102),用于根据第二输出处理模块(62)提交的端口号读取缓存RAM模块(9)的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第二发送时间戳生成模块(84)提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第二发送模块(22);

第三滞留时间处理模块(103),用于根据第三输出处理模块(63)提交的端口号读取缓存RAM模块(9)的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第三发送时间戳生成模块(86)提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第三发送模块(23);

第四滞留时间处理模块(104),用于根据第四输出处理模块(64)提交的端口号读取缓存RAM模块(9)的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第四发送时间戳生成模块(88)提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第四发送模块(24)。

8.一种基于IEEE 1588的时钟透明传输方法,包括如下步骤:

1)将以太网帧进入本节点任意一个端口时,其有效信号上升沿到达的时刻作为帧的到达时间,存入临时时间戳寄存器;

2)设定每种PTP帧类型的标志寄存器:即用‘ptp_evt_l2’标志二层以太网承载的PTP事件帧,用‘ptp_evt_l3_ipv4’和‘ptp_evt_l3_ipv6’分别标志三层以太网的IPV4和IPV6承载的PTP事件帧;逐层过滤接收帧的包头信息,判断是否为PTP帧以及是由哪一层以太网承载的PTP帧,以此更新所述的各个标志寄存器;

3)根据PTP帧类型标志寄存器的值判断是否需要提取当前帧的纠正域字段内容:若步骤2所述的任意一种PTP帧类型标志寄存器的值被更新为‘1’,则继续向下解析当前帧,在提取出其中的纠正域字段的内容,以及记录该字段相对于帧头的偏移量之后,执行步骤4;反之直接执行步骤4;

4)根据PTP帧类型标志寄存器的值判断是否需要打时间戳:若步骤2所述的任意一种PTP帧类型标志寄存器的值被更新为‘1’,则生成最终打时间戳的标志信号,该标志信号的脉冲宽度为一个时钟周期,并重置步骤2所有的标志寄存器;反之,则不生成最终打时间戳的标志信号;

5)根据最终打时间戳的标志信号判断是否将时间戳信息写入时间戳RAM:若打时间戳标志信号有效,即值为1,就将步骤1记录的帧到达时间戳以及步骤3的纠正域字段内容和偏移量三个数据一并写入时间戳RAM的固定地址,该地址与事件帧到达本节点的端口号唯一对应,即用端口号作为RAM地址索引;反之,丢弃该时间戳;

6)根据循环冗余校验CRC判断是否需要暂存当前接收到的以太网帧:当接收完一个完整的以太网帧后,若校验其CRC没有错误,则将该帧暂存到本端口的帧接收缓存区;反之,丢弃该帧;

7)轮询本节点所有端口的帧接收缓存区,按时间先后顺序取出其中的帧内容暂存到本节点的帧接收处理缓存区;

8)从本节点的帧接收处理缓存区取出一帧信息,根据当前帧的目的MAC地址查找本地的MAC地址与端口映射表,对该帧按照目的端口编号进行分组并存入目的端口对应的发送队列里;

9)各端口从本端口对应的发送队列的队尾取出一帧信息,根据当前帧所携带的源MAC信息查找本地的MAC地址与端口映射表得到源端口编号并暂存,准备发送当前帧到PHY层;

10)在发送当前帧内容到PHY层的同时,按照步骤1、2、4记录其发送时间戳;并从正在发送帧的目的MAC地址开始,迭代计算当前帧的CRC校验值;

11)根据当前正在发送帧的源端口编号从时间戳RAM里获取该帧的到达时间戳、纠正域字段值以及帧头偏移量,用步骤10记录的发送时间戳减去到达时间戳,得到PTP帧在本节点的滞留时间,然后与原纠正域字段值累加,得到一个新的滞留时间值;

12)将获得的新的滞留时间信息写入到正在发送的帧的纠正字段;

13)当前正在发送帧的信息字段发送全部结束后,停止计算CRC值并将所得的CRC校验值写入到正在发送的帧的帧校验字段,完成发送。

9.根据权利要求8所述的方法,其中步骤8)中的MAC地址与端口映射表是由本节点通过自学习得到,步骤如下:

8a)构建一张空的端口与MAC地址的哈希映射表,当任意一帧以太网帧到达本节点时,提取该帧的源MAC地址并对该MAC地址进行哈希运算,得到在一个本映射表的存储地址;

8b)将该以太网帧所到达的端口号存入所述的存储地址;

8c)对每一帧到达的以太网帧重复上述8a)和8b)的操作,不断完善该映射表。

10.根据权利要求8所述的方法,其中所述的步骤12),按如下规则进行:

若MAC层与PHY层的帧有效信号电平由低变高,说明当前正在发送以太网帧,此时启动一个计数器用来计算当前发送的字节相对于帧头的偏移;

若当前计数值与步骤11)获取的偏移量相等,说明当前已进入纠正域字段,则用步骤

11)计算得到的新的滞留时间值替换掉原来的帧内容。

说明书 :

基于IEEE 1588标准的时钟透明传输装置及方法

技术领域

[0001] 本发明属于通信技术领域,特别涉及一种时钟校准方法,用于IEEE 1588时钟同步协议标准。

背景技术

[0002] 随着通信技术的日益发展和广泛应用,网络设备对时间同步功能的需求日趋迫切。许多业务的正常运行都要求网络时钟同步,网络测量和控制系统的精密时钟同步协议标准,即IEEE 1588标准,又称精确时间协议,简称PTP,是在IEEE标准化协会的监督下制定的一种时间同步的协议,已经广泛应用于对标准以太网或其他采用多播技术的分布式总线系统中的传感器、执行器以及其他终端设备中的时钟进行亚微秒级同步。应用了PTP协议的网络称为PTP域,通常PTP域中包括一个主钟和较多从钟,图1所示为一个PTP域。PTP协议定义了以下三种类型的基本时钟节点:
[0003] 1.普通时钟OC,是指时钟节点在同一个PTP域内只有一个PTP端口参与时间同步,并通过该端口从上游时钟节点同步时间,当时钟节点作为时钟源时,可以只通过一个PTP端口向下游时钟节点发布时间。
[0004] 2.边界时钟BC,是指时钟节点在同一个PTP域内拥有多个PTP端口参与时间同步,它通过其中一个端口从上游时钟节点同步时间,并通过其余端口向下游时钟节点发布时间;当时钟节点作为时钟源时,可以通过全部PTP端口向下游时钟节点发布时间。
[0005] 3.透明时钟TC,有多个PTP端口,它只在这些端口间转发PTP报文并对报文的转发延时进行校正,而不会通过任何一个端口同步时间。与BC或OC相比,这两种时钟需要与其它时钟节点保持时间同步,而TC则不与其它时钟节点保持时间同步。
[0006] 如图1所示,时钟B是一个边界时钟,它相对于时钟A来说是A的从时钟,但相对于时钟D1、D2、D3、D4来说时钟B又是D1~D4的主时钟。最高主时钟A以全球定位系统GPS为时钟源,获得GPS绝对时钟。时钟A与时钟B之间通过边界时钟模式进行时间同步,具体的,主钟A周期性地与其从钟B进行报文交换,从钟B根据交换的报文调整自己的时 间,以实现与主钟A的时间同步;然后对于时钟B的下游节点,主钟B周期性地与下游四个从钟D1、D2、D3、D4交换报文,这四个下游从钟D1~D4根据交换的报文调整自己的时间,以实现与主钟B的时间同步,这一过程中所有的帧都会通过C1或C2两个透明时钟,且这两个透明时钟C1和C2会记录所有通过本节点的PTP事件帧在本节点的滞留时间,并将其写入到事件帧的对应字段。同样的,下游从钟E1和下游从钟E2实现与其主钟D3时间同步,最终实现整个PTP域的时间同步。
[0007] 当从钟B与主钟A存在时间偏差时,时钟B的下游从钟D1~D4与主钟B同步后,下游从钟D1~D4的同步时间也会相应出现偏差,这种情况下,尽管时钟B会与时钟A进行同步校准以消除其时间偏差,但两者不可能达到绝对同相位,那么当PTP域中从钟较多时,每一级边界时钟BC都会累积误差,最下游的时钟数据将会不可用。在此基础上,IEEE提出了透明传输TC时钟,使得主从时钟可以透过TC直接进行同步,以此来消除透明时钟BC的累计误差。
[0008] 现有基于IEEE 1588标准下的透明传输装置主要使用支持该功能的专用以太网MAC芯片和专用以太网PHY芯片,并且还需要CPU来辅助计算驻留时间,各芯片之间连接关系复杂、功能单一,报文交换速率不高且不便于协议升级和功能自定义,也不便于扩展端口数量。

发明内容

[0009] 本发明目的在于针对上述已有模型的不足,提供一种用FPGA实现透明传输时钟的装置及方法,以在不需要专用的1588PHY芯片下,提高传输的同步精度和报文交换速率,并便于协议升级和功能自定义及端口数量扩展。
[0010] 本发明的技术方案是这样实现的:
[0011] IEEE1588v2协议定义了两种透明时钟模型,分别是端到端透明时钟E2ETC和点到点透明时钟P2PTC。这两种透明时钟都能计算PTP报文在网络交换设备的时延,二者区别在于对路径延迟测量方式不同。本发明主要的研究对象是端到端透明时钟E2ETC。
[0012] 本发明的设计思路是:FPGA实现一个多端口的以太网交换设备,支持10/100/1000M传输速率,该设备可以不与其它时钟进行时间同步,只做频率同步。对通过本设备各个端口的PTP事件帧记录其时间戳,以此计算该帧在本设备内部的滞留时间,将所述滞留时间累加到事件帧对应的纠正域中,当事件帧到达下游从钟,从钟计算时间偏差时把纠正域考虑在内,这样就能补偿事件帧在透明时钟上的延时,使得交换设备看起来是“透明”的。
[0013] 根据上述思路,本发明的透明传输装置,包括:
[0014] MAC层发送模块,用于将输出处理模块的数据封装成以太网帧,并下发到PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;
[0015] MAC层接收模块,用于接收PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块;
[0016] 输入处理模块,用于轮询各个MAC层接收模块的工作状态,将其中的有效数据帧缓存下来,当分组处理及队列管理模块空闲时,将所述有效数据帧提交给该模块;
[0017] 分组处理及队列管理模块,用于解析输入处理模块提交的数据帧,按照目的端口号将到来的以太网帧进行分组并插入到各个分组缓存队列的队尾,等待各个输出处理模块读取;
[0018] 输出处理模块,用于从分组处理及队列管理模块中取出一帧内容提交给MAC层发送模块,并根据源MAC地址查找该帧的源端口编号,将其提交给滞留时间处理模块;
[0019] PTP解析模块,用于监视PHY层与MAC层之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,并将该标志信号提交给时间戳生成模块;
[0020] 时间戳生成模块,用于对每一个到达PTP解析模块的帧打上本地时间戳,并将PTP解析模块标志为有效的时间戳信息提交给缓存RAM模块或滞留时间处理模块;
[0021] 本地时钟模块,用于计算本地时间,向时间戳生成模块提供纳秒级的实时时间,并向配置模块提供修改本地时间及计时频率的接口;
[0022] 缓存RAM模块,用于按照源端口编号暂存已有的时间戳信息,等待滞留时间处理模块的读取;
[0023] 滞留时间处理模块,用于根据输出处理模块提交的端口号读取缓存RAM模块的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合发送时间戳生成模块提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层发送模块;
[0024] 配置模块,用于提供一组寄存器接口,便于用户可以配置上述各个模块的功能以及查询上述各个模块的工作状态。
[0025] 根据上述思路,本发明的透明传输方法,包括:
[0026] 1)将以太网帧进入本节点任意一个端口时,其有效信号上升沿到达的时刻作为帧 的到达时间,存入临时时间戳寄存器;
[0027] 2)设定每种PTP帧类型的标志寄存器:即用‘ptp_evt_l2’标志二层以太网承载的PTP事件帧,用‘ptp_evt_l3_ipv4’和‘ptp_evt_l3_ipv6’分别标志三层以太网的IPV4和IPV6承载的PTP事件帧;逐层过滤接收帧的包头信息,判断是否为PTP帧以及是由哪一层以太网承载的PTP帧,以此更新所述的各个标志寄存器;
[0028] 3)根据PTP帧类型标志寄存器的值判断是否需要提取当前帧的纠正域字段内容:若步骤2所述的任意一种PTP帧类型标志寄存器的值被更新为‘1’,则继续向下解析当前帧,在提取出其中的纠正域字段的内容,以及记录该字段相对于帧头的偏移量之后,执行步骤
4;反之直接执行步骤4;
[0029] 4)根据PTP帧类型标志寄存器的值判断是否需要打时间戳:若步骤2所述的任意一种PTP帧类型标志寄存器的值被更新为‘1’,则生成最终打时间戳的标志信号,该标志信号的脉冲宽度为一个时钟周期,并重置步骤2所有的标志寄存器;反之,则不生成最终打时间戳的标志信号;
[0030] 5)根据最终打时间戳的标志信号判断是否将时间戳等信息写入时间戳RAM:若打时间戳标志信号有效,即值为1,就将步骤1记录的帧到达时间戳以及步骤3的纠正域字段内容和偏移量三个数据一并写入时间戳RAM的固定地址,该地址与事件帧到达本节点的端口号唯一对应,即用端口号作为RAM地址索引;反之,丢弃该时间戳;
[0031] 6)根据循环冗余校验CRC判断是否需要暂存当前接收到的以太网帧:当接收完一个完整的以太网帧后,若校验其CRC没有错误,则将该帧暂存到本端口的帧接收缓存区;反之,丢弃该帧;
[0032] 7)轮询本节点所有端口的帧接收缓存区,按时间先后顺序取出其中的帧内容暂存到本节点的帧接收处理缓存区;
[0033] 8)从本节点的帧接收处理缓存区取出一帧信息,根据当前帧的目的MAC地址查找本地的MAC地址与端口映射表,对该帧按照目的端口编号进行分组并存入目的端口对应的发送队列里;
[0034] 9)各端口从本端口对应的发送队列的队尾取出一帧信息,根据当前帧所携带的源MAC信息查找本地的MAC地址与端口映射表得到源端口编号并暂存,准备发送当前帧到PHY层;
[0035] 10)在发送当前帧内容到PHY层的同时,按照步骤1、2、4记录其发送时间戳;并从正在发送帧的目的MAC地址开始,迭代计算当前帧的CRC校验值;
[0036] 11)根据当前正在发送帧的源端口编号从时间戳RAM里获取该帧的到达时间戳以及纠正域字段值,用步骤9记录的发送时间戳减去到达时间戳,得到PTP帧在本节点的滞留时间,然后与原纠正域字段值累加,得到一个新的滞留时间值;
[0037] 12)将获得的新的滞留时间信息写入到正在发送的帧的纠正字段;
[0038] 13)当前正在发送帧的信息字段发送全部结束后,停止计算CRC值并将所得的CRC校验值写入到正在发送的帧的帧校验字段,完成发送。
[0039] 本发明与现有技术相比具有以下优点:
[0040] 1.本发明由于采用了FPGA实现以太网帧的接收和转发,相比于专用交换芯片,本发明可以加入已有的较为高效的分组处理与转发方案,以自由的定制每一级帧缓存区的大小,甚至可以使用外部DDR存储器,提高了分组交换的容量、速率以及稳定性;
[0041] 2.本发明采用在MAC层与PHY层之间打时间戳的方式,能够直接获取PTP帧到达数据链路层与物理层之间的时刻,消除了上层协议栈的延时不确定性,获得的时间戳延时抖动极低;
[0042] 3.本发明由于在FPGA上实现了一个计时频率和计时初值均可配置的本地时钟,计时初值可以以纳秒为单位进行微调,计时频率由于引入了32比特小数,因此可以以10-10纳秒为单位进行微调,所获得的时间精度极高;
[0043] 4.本发明使用自定义的PTP解析模块以及MAC IP核,其功能和性能都可以自由定制,方便后期协议的改进和功能升级,理论上可以对任意帧的任意字段进行任意修改;
[0044] 5.本发明除以太网PHY层使用通用千兆芯片以外,其余模块均使用FPGA实现,具有可移植性,并且可对交换单元的端口数量进行扩展。

附图说明

[0045] 图1为IEEE 1588协议的精确时钟同步系统拓扑图;
[0046] 图2为本发明的透明传输装置框图;
[0047] 图3为本发明的透明传输方法流程图。

具体实施方式

[0048] 以下参照附图并举例,对本发明进行进一步的详细说明。
[0049] 参照图1,现有IEEE 1588协议的精确时钟同步系统拓扑结构中普通时钟OC A作为本系统的最高主时钟,边界时钟BC B是时钟OC A的从时钟,普通时钟OC D1、OC D2、OC D4和边界时钟BC D3是边界时钟BC B的下游从时钟。最高主时钟OC A周期性地与其从钟BC B进行报文交换,从钟BC B根据交换的报文调整自己的时间,以实现与主钟OC A的时间同步;然后对于时钟BC B的下游节点,主钟BC B周期性地与下游四个从钟OC D1、OC D2、BC D3、OC D4交换报文,这四个下游从钟OC D1、OC D2、BC D3、OC D4根据交换的报文调整自己的时间,以实现与主钟BC B的时间同步,这一过程中所有的帧都会通过TC C1或TC C2两个透明时钟,且这两个透明时钟TC C1和TC C2会记录所有通过本节点的PTP事件帧在本节点的滞留时间,并将其写入到事件帧的纠正域字段。同样的,下游从钟OC E1和下游从钟OC E2实现与其主钟BC D3时间同步,最终实现整个时钟系统的同步。
[0050] 参照图2,本发明基于IEEE 1588标准的时钟透明传输装置,包括:
[0051] 本地时钟模块1,MAC层发送模块2,MAC层接收模块3,输入处理模块4,分组处理及队列管理模块5,输出处理模块6,PTP解析模块7,时间戳生成模块8,缓存RAM模块9,滞留时间处理模块10,配置模块11和四个外部连接端口,即第1端口、第2端口、第3端口、第4端口。其中:
[0052] 所述MAC层发送模块2,包括MAC层第一发送模块21、MAC层第二发送模块22、MAC层第三发送模块23和MAC层第四发送模块24;
[0053] 所述MAC层接收模块3,包括MAC层第一接收模块31、MAC层第二接收模块32、MAC层第三接收模块33和MAC层第四接收模块34;
[0054] 所述输出处理模块6,包括第一输出处理模块61、第二输出处理模块62、第三输出处理模块63和第四输出处理模块64;
[0055] 所述PTP解析模块7,包括第一PTP接收解析模块71、第一PTP发送解析模块72、第二PTP接收解析模块73、第二PTP发送解析模块74、第三PTP接收解析模块75、第三PTP发送解析模块76、第四PTP接收解析模块77、第四PTP发送解析模块78;
[0056] 所述时间戳生成模块8,包括第一接收时间戳生成模块81、第一发送时间戳生成模块82、第二接收时间戳生成模块83、第二发送时间戳生成模块84、第三接收时间戳生成模块85、第三发送时间戳生成模块86、第四接收时间戳生成模块87、第四发送时间戳生成模块
88;
[0057] 所述滞留时间处理模块10,包括第一滞留时间处理模块101、第二滞留时间处理模块102、第三滞留时间处理模块103和第四滞留时间处理模块104。
[0058] 所述第1端口包括:MAC层第一发送模块21、MAC层第一接收模块31、第一输出处理模块61、第一PTP接收解析模块71、第一PTP发送解析模块72、第一接收时间戳生成模块81、第一发送时间戳生成模块82、第一滞留时间处理模块101。MAC层第一发送模 块21的输出端、MAC层第一接收模块31的输入端均通过第1端口与外部连接;第一输出处理模块61的输入端与分组处理及队列管理模块5的输出端连接,第一输出处理模块61输出端分别与MAC层第一发送模块21的输入端和第一滞留时间处理模块101的输入端连接;第一PTP发送解析模块72的输入端与MAC层第一发送模块21的输出端连接,第一PTP发送解析模块72的输出端与第一发送时间戳生成模块82的输入端连接;第一发送时间戳生成模块82的输入端与第一PTP发送解析模块72的输出端连接,第一发送时间戳生成模块82的输出端与第一滞留时间处理模块101的输入端连接;第一滞留时间处理模块101的输入端分别与缓存RAM模块9的输出端、输出处理模块61的输出端和发送时间生成模块82的输出端连接,第一滞留时间处理模块101的输出端与MAC层第一发送模块21的输入端连接;第一PTP接收解析模块71的输入端与MAC层第一接收模块31的输入端连接,第一PTP接收解析模块71输出端与第一接收时间戳生成模块81的输入端连接;第一接收时间戳生成模块81的输入端与第一PTP接收解析模块71连接,第一接收时间戳生成模块81的输出端与缓存RAM模块9的输入端连接;输入处理模块4的输入端与MAC层第一接收模块31的输出端连接,输入处理模块4的输出端与分组处理模及队列管理模块5的输入端连接;这些模块的工作原理如下:
[0059] MAC层第一发送模块21将第一输出处理模块61的数据封装成以太网帧,并下发到第1端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;MAC层第一接收模块31接收第1端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块4;
[0060] 第一输出处理模块61从分组处理及队列管理模块5中取出一帧内容提交给MAC层第一发送模块21,并根据源MAC地址查找该帧的源端口编号,将其提交给第一滞留时间处理模块101;
[0061] 第一PTP发送解析模块72监视第1端口的PHY层与MAC层第一发送模块21之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,并将该标志信号提交给第一发送时间戳生成模块82;
[0062] 第一发送时间戳生成模块82对每一个到达第一PTP发送解析模块72的帧打上本地时间戳,并将第一PTP解析模块72标志为有效的时间戳信息提交给第一滞留时间处理模块101;
[0063] 第一滞留时间处理模块101根据第一输出处理模块61提交的端口号读取缓存RAM模块9的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第一 发送时间戳生成模块82提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第一发送模块21;
[0064] 第一PTP接收解析模块71监视第1端口的PHY层与MAC层第一接收模块31之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述该标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第一接收时间戳生成模块81;
[0065] 第一接收时间戳生成模块81对每一个到达第一PTP接收解析模块71的帧打上本地时间戳,并将第一PTP解析模块71标志为有效的时间戳信息连同第一PTP接收解析模块71提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块9。
[0066] 所述第2端口包括:MAC层第二发送模块22、MAC层第二接收模块32、第二输出处理模块62、第二PTP接收解析模块73、第二PTP发送解析模块74、第二接收时间戳生成模块83、第二发送时间戳生成模块84、第二滞留时间处理模块102。MAC层第二发送模块22的输出端、MAC层第二接收模块32的输入端均通过第2端口与外部连接;第二输出处理模块62的输入端与分组处理及队列管理模块5的输出端连接,第二输出处理模块62的输出端分别与MAC层第二发送模块22的输入端和第二滞留时间处理模块102的输入端连接;第二PTP发送解析模块74的输入端与MAC层第二发送模块22的输出端连接,第二PTP发送解析模块74的输出端与第二发送时间戳生成模块84的输入端连接;第二发送时间戳生成模块84的输入端与第二PTP发送解析模块74的输出端连接,第二发送时间戳生成模块84的输出端与第二滞留时间处理模块102的输入端连接;第二滞留时间处理模块102的输入端分别与缓存RAM模块9的输出端、输出处理模块62的输出端和发送时间生成模块84的输出端连接,第二滞留时间处理模块102的输出端与MAC层第二发送模块22的输入端连接;第二PTP接收解析模块73的输入端与MAC层第二接收模块32的输入端连接,第二PTP接收解析模块73输出端与第二接收时间戳生成模块83的输入端连接;第二接收时间戳生成模块83的输入端与第二PTP接收解析模块
73连接,第二接收时间戳生成模块83的输出端与缓存RAM模块9的输入端连接;输入处理模块4的输入端与MAC层第二接收模块32的输出端连接,输入处理模块4的输出端与分组处理模及队列管理模块5的输入端连接;这些模块的工作原理如下:
[0067] MAC层第二发送模块22将第二输出处理模块62的数据封装成以太网帧,并下发到第2端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;MAC层第 二接收模块32接收第2端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块4;
[0068] 第二输出处理模块62从分组处理及队列管理模块5中取出一帧内容提交给MAC层第二发送模块22,并根据源MAC地址查找该帧的源端口编号,将其提交给第二滞留时间处理模块102;
[0069] 第二PTP发送解析模块74监视第2端口的PHY层与MAC层第二发送模块22之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,并将该标志信号提交给第二发送时间戳生成模块84;
[0070] 第二发送时间戳生成模块84对每一个到达第二PTP发送解析模块74的帧打上本地时间戳,并将第二PTP解析模块74标志为有效的时间戳信息提交给第二滞留时间处理模块102;
[0071] 第二滞留时间处理模块102根据第二输出处理模块62提交的端口号读取缓存RAM模块9的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第二发送时间戳生成模块84提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第二发送模块22;
[0072] 第二PTP接收解析模块73监视第2端口的PHY层与MAC层第二接收模块32之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述该标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第二接收时间戳生成模块83;
[0073] 第二接收时间戳生成模块83对每一个到达第二PTP接收解析模块73的帧打上本地时间戳,并将第二PTP解析模块73标志为有效的时间戳信息连同第二PTP接收解析模块73提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块9。
[0074] 所述第3端口包括:MAC层第三发送模块23、MAC层第三接收模块33、第三输出处理模块63、第三PTP接收解析模块75、第三PTP发送解析模块76、第三接收时间戳生成模块85、第三发送时间戳生成模块86、第三滞留时间处理模块103。MAC层第三发送模块23的输出端、MAC层第三接收模块33的输入端均通过第3端口与外部连接;第三输出处理模块63的输入端与分组处理及队列管理模块5的输出端连接,第三输出处理模块63输出端分别与MAC层第三发送模块23的输入端和第三滞留时间处理模块103的输入端连接;第三PTP发送解析模块76的输入端与MAC层第三发送模块23的输出端连接,第三PTP 发送解析模块76的输出端与第三发送时间戳生成模块86的输入端连接;第三发送时间戳生成模块86的输入端与第三PTP发送解析模块76的输出端连接,第三发送时间戳生成模块86的输出端与第三滞留时间处理模块103的输入端连接;第三滞留时间处理模块103的输入端分别与缓存RAM模块9的输出端、输出处理模块63的输出端和发送时间生成模块86的输出端连接,第三滞留时间处理模块103的输出端与MAC层第三发送模块23的输入端连接;第三PTP接收解析模块75的输入端与MAC层第三接收模块33的输入端连接,第三PTP接收解析模块75输出端与第三接收时间戳生成模块85的输入端连接;第三接收时间戳生成模块85的输入端与第三PTP接收解析模块75连接,第三接收时间戳生成模块85的输出端与缓存RAM模块9的输入端连接;输入处理模块4的输入端与MAC层第三接收模块33的输出端连接,输入处理模块4的输出端与分组处理模及队列管理模块5的输入端连接;这些模块的工作原理如下:
[0075] MAC层第三发送模块23将第三输出处理模块63的数据封装成以太网帧,并下发到第3端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;MAC层第三接收模块33接收第3端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块4;
[0076] 第三输出处理模块63从分组处理及队列管理模块5中取出一帧内容提交给MAC层第三发送模块23,并根据源MAC地址查找该帧的源端口编号,将其提交给第三滞留时间处理模块103;
[0077] 第三PTP发送解析模块76监视第3端口的PHY层与MAC层第三发送模块23之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,并将该标志信号提交给第三发送时间戳生成模块86;
[0078] 第三发送时间戳生成模块86对每一个到达第三PTP发送解析模块76的帧打上本地时间戳,并将第三PTP解析模块76标志为有效的时间戳信息提交给第三滞留时间处理模块103;
[0079] 第三滞留时间处理模块103根据第三输出处理模块63提交的端口号读取缓存RAM模块9的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第三发送时间戳生成模块86提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第三发送模块23;
[0080] 第三PTP接收解析模块75监视第3端口的PHY层与MAC层第三接收模块33之间传递 的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述该标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第三接收时间戳生成模块85;
[0081] 第三接收时间戳生成模块85对每一个到达第三PTP接收解析模块75的帧打上本地时间戳,并将第三PTP解析模块75标志为有效的时间戳信息连同第三PTP接收解析模块75提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块9。
[0082] 所述第4端口包括MAC层第四发送模块24、MAC层第四接收模块34、第四输出处理模块64、第四PTP接收解析模块77、第四PTP发送解析模块78、第四接收时间戳生成模块87、第四发送时间戳生成模块88、第四滞留时间处理模块104。MAC层第四发送模块24的输出端、MAC层第四接收模块34的输入端均通过第4端口与外部连接;第四输出处理模块64的输入端与分组处理及队列管理模块5的输出端连接,第四输出处理模块64输出端分别与MAC层第四发送模块24的输入端和第四滞留时间处理模块104的输入端连接;第四PTP发送解析模块78的输入端与MAC层第四发送模块24的输出端连接,第四PTP发送解析模块78的输出端与第四发送时间戳生成模块88的输入端连接;第四发送时间戳生成模块88的输入端与第四PTP发送解析模块78的输出端连接,第四发送时间戳生成模块88的输出端与第四滞留时间处理模块104的输入端连接;第四滞留时间处理模块104的输入端分别与缓存RAM模块9的输出端、输出处理模块64的输出端和发送时间生成模块88的输出端连接,第四滞留时间处理模块104的输出端与MAC层第四发送模块24的输入端连接;第四PTP接收解析模块77的输入端与MAC层第四接收模块34的输入端连接,第四PTP接收解析模块77输出端与第四接收时间戳生成模块87的输入端连接;第四接收时间戳生成模块87的输入端与第四PTP接收解析模块77连接,第四接收时间戳生成模块87的输出端与缓存RAM模块9的输入端连接;输入处理模块4的输入端与MAC层第四接收模块34的输出端连接,输入处理模块4的输出端与分组处理模及队列管理模块5的输入端连接;这些模块的工作原理如下:
[0083] MAC层第四发送模块24将第四输出处理模块64的数据封装成以太网帧,并下发到第4端口的PHY层进行传递,该模块需要对PTP事件帧的纠正域字段进行修改;MAC层第四接收模块34接收第4端口的PHY层传递过来的以太网帧,校验接收到的帧是否出错,并把正确接收的以太网帧提交给输入处理模块4;
[0084] 第四输出处理模块64从分组处理及队列管理模块5中取出一帧内容提交给MAC层第四发送模块24,并根据源MAC地址查找该帧的源端口编号,将其提交给第四滞留时间处 理模块104;
[0085] 第四PTP发送解析模块78监视第4端口的PHY层与MAC层第四发送模块24之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,并将该标志信号提交给第四发送时间戳生成模块88;
[0086] 第四发送时间戳生成模块88对每一个到达第四PTP发送解析模块78的帧打上本地时间戳,并将第四PTP解析模块78标志为有效的时间戳信息提交给第四滞留时间处理模块104;
[0087] 第四滞留时间处理模块104根据第四输出处理模块64提交的端口号读取缓存RAM模块9的接收时间戳、纠正域字段值和相对于帧头的偏移量,读取的接收时间戳结合第四发送时间戳生成模块88提交的发送时间戳计算PTP事件帧在本节点的滞留时间,再和纠正域字段值累加得到新的纠正域字段值,并将新的纠正域字段值以及相对于帧头的偏移量提交给MAC层第四发送模块24;
[0088] 第四PTP接收解析模块77监视第4端口的PHY层与MAC层第四接收模块34之间传递的所有以太网帧,识别出属于PTP帧的事件类型帧并给出相应的标志信号,提取PTP事件帧中的纠正域字段以及记录该字段相对于帧头的偏移量,并将所述该标志信号、纠正域字段内容和相对于帧头的偏移量一并提交给第四接收时间戳生成模块87;
[0089] 第四接收时间戳生成模块87对每一个到达第四PTP接收解析模块77的帧打上本地时间戳,并将第四PTP解析模块77标志为有效的时间戳信息连同第四PTP接收解析模块77提交的纠正域字段内容和相对于帧头的偏移量一并提交给缓存RAM模块9。
[0090] 所述本地时钟模块1,用于计算本地时间,向时间戳生成模块提供纳秒级的实时时间,并向配置模块11提供修改本地时间及计时频率的接口;本地时钟模块1的输入端与配置模块11的输出端相连,其输出端分别与第一接收时间戳生成模块81的输入端、第一发送时间戳生成模块82的输入端、第二接收时间戳生成模块83的输入端、第二接收时间戳生成模块84的输入端、第三接收时间戳生成模块85的输入端、第三接收时间戳生成模块86的输入端、第四接收时间戳生成模块87的输入端和第四接收时间戳生成模块88的输入端相连。
[0091] 所述输入处理模块4,用于轮询各个MAC层接收模块31~34的工作状态,将其中的有效数据帧缓存下来,当分组处理及队列管理模块5空闲时,将所述有效数据帧提交给该模块5;输入处理模块4的输入端分别与MAC层第一接收模块31的输出端、MAC层第二接收模块32的输出端、MAC层第三接收模块33的输出端和MAC层第四接收模块34的输 出端相连,输入处理模块4的输出端与分组处理及队列管理模块5的输入端相连。
[0092] 所述分组处理及队列管理模块5,用于解析输入处理模块提交的数据帧,按照目的端口号将到来的以太网帧进行分组并插入到各个分组缓存队列的队尾,等待各个输出处理模块61~64读取;分组处理及队列管理模块5的输入端与输入处理模块4的输出端相连,其输出端分别与第一输出处理模块61的输入端、第二输出处理模块62的输入端、第三输出处理模块63的输入端和第四输出处理模块64的输入端相连。
[0093] 所述缓存RAM模块9,用于按照源端口编号暂存已有的时间戳信息,等待滞留时间处理模块10的读取;该缓存RAM模块9的输入端分别与第一接收时间戳生成模块81的输出端、第二接收时间戳生成模块82的输出端、第三接收时间戳生成模块83的输出端和第四接收时间戳生成模块84的输出端相连,缓存RAM模块9的输出端分别与第一滞留时间处理模块101、第二滞留时间处理模块102、第三滞留时间处理模块103和第四滞留时间处理模块104的输入端相连。
[0094] 所述配置模块11,用于提供一组寄存器接口,便于用户可以配置上述各个模块的功能以及查询上述各个模块的工作状态;该配置模块11的输出分别与MAC层第一接收模块31的输入端、第一PTP接收解析模块71的输入端、第一输出处理模块61的输入端、MAC层第一发送模块21的输入端、第一PTP发送解析模块72的输入端、MAC层第二接收模块32的输入端、第二PTP接收解析模块73的输入端、第二输出处理模块62的输入端、MAC层第二发送模块22的输入端、第二PTP发送解析模块74的输入端、MAC层第三接收模块33的输入端、第三PTP接收解析模块75的输入端、第三输出处理模块63的输入端、MAC层第三发送模块23的输入端、第三PTP发送解析模块76的输入端、MAC层第四接收模块34的输入端、第四PTP接收解析模块
77的输入端、第四输出处理模块64的输入端、MAC层第四发送模块24的输入端、第四PTP发送解析模块78的输入端、输入处理模块4的输入端、分组处理及队列管理模块5的输入端、缓存RAM模块9的输入端和本地时钟模块1的输入端相连。
[0095] 参照图3,本发明基于IEEE 1588标准的时钟透明传输方法,包括如下步骤:
[0096] 步骤1,对到达的所有以太网帧打时间戳。
[0097] 当以太网帧进入本节点的任意一个MAC层接收模块时,将其有效信号上升沿到达的时刻作为帧的到达时间,存入临时时间戳寄存器。
[0098] 步骤2,解析当前帧是否是PTP事件帧并给出标志信号。
[0099] 2.1)设定每种PTP帧类型的标志寄存器:即用‘ptp_evt_l2’标志二层以太网承载的 PTP事件帧,用‘ptp_evt_l3_ipv4’和‘ptp_evt_l3_ipv6’分别标志三层以太网的IPV4和IPV6承载的PTP事件帧;
[0100] 2.2)逐层过滤接收帧的包头信息,判断是否为PTP帧以及是由哪一层以太网承载的PTP帧,以此更新所述的各个标志寄存器。
[0101] 步骤3,判断是否需要提取当前帧的纠正域字段内容。
[0102] 若步骤2所述的任意一种PTP帧类型标志寄存器的值被更新为‘1’,则继续向下解析当前帧,在提取出其中的纠正域字段的内容,以及记录该字段相对于帧头的偏移量之后,执行步骤4;
[0103] 反之,直接执行步骤4。
[0104] 步骤4,判断是否需要打时间戳。
[0105] 若步骤2所述的任意一种PTP帧类型标志寄存器的值被更新为‘1’,则生成最终打时间戳的标志信号,该标志信号的脉冲宽度为一个时钟周期,并重置步骤2所有的标志寄存器;
[0106] 反之,则不生成最终打时间戳的标志信号。
[0107] 步骤5,判断是否将时间戳写入时间戳RAM。
[0108] 根据最终打时间戳的标志信号判断是否将时间戳写入时间戳RAM:若打时间戳标志信号有效,即值为1,则将步骤1记录的帧到达时间戳以及步骤3的纠正域字段内容和偏移量三个数据一并写入时间戳RAM的固定地址,该地址与事件帧到达本节点的端口号唯一对应,即用端口号作为RAM地址索引;
[0109] 反之,丢弃该时间戳。
[0110] 步骤6,判断当前接收到的以太网帧是否需要暂存。
[0111] 根据循环冗余校验CRC判断是否需要暂存当前接收到的以太网帧:当接收完一个完整的以太网帧后,若校验其CRC没有错误,则将该帧暂存到本端口的帧接收缓存区;反之,丢弃该帧。
[0112] 步骤7,轮询本节点所有端口的帧接收缓存区,按时间先后顺序取出其中的帧内容暂存到本节点的帧接收处理缓存区。
[0113] 步骤8,对以太网帧分组。
[0114] 8.1)从本节点的帧接收处理缓存区取出一帧信息,根据当前帧的源MAC地址建立本地的MAC地址与端口映射表;
[0115] 8.2)根据当前帧的目的MAC地址查找本地的MAC地址与端口映射表,对该帧按照 目的端口编号进行分组并存入目的端口对应的发送队列里;
[0116] 若查表失败,则将当前帧作为广播帧,存入除源端口以外的所有其它本地端口的发送队列。
[0117] 步骤9,各端口从本端口对应的发送队列的队尾取出一帧信息,根据当前帧所携带的源MAC信息查找本地的MAC地址与端口映射表得到源端口编号并暂存,准备发送当前帧到PHY层。
[0118] 步骤10,发送以太网帧并记录发送时间,计算CRC值。
[0119] 10.1)在发送当前帧内容到PHY层的同时,按照步骤1、2、4记录其发送时间戳。
[0120] 10.2)在发送当前帧内容到PHY层的同时,从正在发送帧的目的MAC地址字段开始,利用已有的以太网CRC-32生成多项式迭代计算当前帧的CRC值。
[0121] 步骤11,计算新的纠正域字段值。
[0122] 11.1)根据当前正在发送帧的源端口编号从时间戳RAM里获取该帧的到达时间戳、纠正域字段值以及帧头偏移量,用步骤10.1记录的发送时间戳减去到达时间戳,得到PTP帧在本节点的滞留时间;
[0123] 11.2)将PTP帧在本节点的滞留时间与原纠正域字段值累加,得到一个新的滞留时间值;
[0124] 11.3)将获得的新的滞留时间信息写入到正在发送的帧的纠正字段:
[0125] 若MAC层发送模块与PHY层的帧有效信号电平由低变高,说明当前正在发送以太网帧,此时启动一个计数器用来计算当前发送的字节相对于帧头的偏移;
[0126] 若当前计数值与步骤11.1)获取的偏移量相等,说明当前已进入纠正域字段,则用步骤11.2计算得到的新的滞留时间值替换掉原来的帧内容。
[0127] 步骤12,将CRC值写入到帧校验字段。
[0128] 当前帧所有的信息字段全部结束时,停止步骤10.2对CRC的计算,并将得到的32位CRC校验值写入到正在发送的帧的帧校验字段,完成发送。
[0129] 以上仅为本发明的优选实例,不构成对本发明的任何限制,显然根据本发明的构思,本领域的技术人员均可做出不同的修改和置换,但这些均在本发明的保护之列。