论文摘要
随着以太网技术的发展,人们开始将以太网应用在测试测量及工业自动化领域中,于是便出现了网络化测控系统。由于以太网的实时性不足,不能满足测控系统中对实时性的要求。而且,现有的网络时间同步协议如NTP协议,其同步精度是毫秒量级,无法满足测控系统中对时间同步更高精度要求,于是便出现了IEEE标准1588。IEEE 1588标准定义了一个能够在测量和控制系统中实现高精度时钟同步的协议——精密时钟同步协议PTP。本文深入研究了PTP协议,介绍了PTP协议中的普通时钟、边界时钟及时钟的状态,分析了PTP域及PTP通信机制,深入研究了最佳主时钟算法,同时给出了时钟方差计算公式。在对PTP协议深入研究的基础上,设计了两种PTP协议的实现方案,一种是软件实现方案,一种是基于FPGA的实现方案。本文设计的PTP软件实现方案中,软件代码运行在Linux操作系统上。本文根据最佳主时钟算法确定PTP时钟是主时钟还是从时钟。为了提高同步精度,本文在网卡驱动程序中读取消息收发时间作为时间印章,同时利用时钟同步算法来计算偏移量。为了同步时钟,本文设计了时钟修正系统来修正本地时钟同步到主时钟,并根据协议引擎状态机对时钟状态进行转换。本文使用FPGA来捕获时间印章,设计了基于FPGA的PTP实现方案。它与软件实现方案的区别在于,用FPGA来实现PTP消息的检测、时间印章的捕获和频率可调的实时时钟。时间印章是在物理层和MAC层之间捕获的,可以消除协议栈引起的延迟和抖动,提高了同步精度。另外,读取FPGA内部设计的实时时钟的时间作为时间印章,并利用该时间印章计算出主、从时钟之间的偏移量来修正FPGA内部的实时时钟。最后将本文设计的两种PTP实现方案分别应用在LXI仪器中,并对实现的同步精度进行了测试和误差分析,软件实现方案实现了微秒级的同步精度,基于FPGA的实现方案实现了亚微秒级的同步精度。