基于FAST的TSN交换(6)基于FPGA的PTP时间同步实现
时间同步是TSN交换实现的前提。802.1AS规范定义了TSN网络同步的方法,其基本思路还是利用IEEE 1588v2定义的PTP协议,将网络中所有的时间从设备与时间主设备的时间进行同步。在基于FAST流水线的TSN实现中,与PTP协议相关的逻辑主要有接收控制逻辑(RXC),PTP-UDA模块以及PTP-UDO模块。这三个模块密切协同实现PTP时间同步而不需要软件参与。
一、FAST-TSN-04的PTP实现模型
在FAST-TSN-04的PTP协议实现模型如下图所示,主要由RxC、PTP-UDA和PTP-UDO模块组成。其中RxC模块位于FPGA OS内部,是FAST平台固有的逻辑,而PTP-UDA和PTP-UDO是FAST扩展的流水线模块,只有需要支持PTP协议的流水线才需要嵌入这两个模块。
(1)主要功能模块
每个从接口接收的分组首先进入RxC模块。RxC模块首先不加区分的为每个分组打上48比特接收时间戳。接收时间戳被填写在分组的元数据中,随着分组一同进入FAST流水线处理。由于接口时钟频率为125MHz,因此时间戳的精度为8ns。RxC模块位于输入缓存之前,因此输出缓存的拥塞和调度机制不影响接收时间戳标记的准确度。
PTP-UDA模块位于FAST流水线的开始,负责PTP协议的处理。根据软件配置,PTP-UDA可以工作在时间主模式或是时间从模式。
PTP-UDA内部的状态机控制整个时间同步过程,由于时间同步完全由硬件实现,因此同步过程中不需要followup消息,主从之间只交换sync、delay_req和delay-resp三类消息,关于PTP消息详细的交互流程以及offset的计算已有大量文章介绍,本文不再赘述。