无线自组网同步实现方案的研究
2010-07-12黄超林川
黄超,林川
(南京邮电大学通信与信息工程学院,江苏 南京,210003)
0 引言
随着科技的不断进步,人们对无线通信的需求不断增加,各种无线通信系统得到了迅速普及并作为通信领域研究的热点得以快速持续的发展。与传统的无线移动通信网络相比,无线自组网,即Ad Hoc网络,没有中心控制器,所有节点分布式运行,可以随时建立和拆除,所有节点共同承担网络的构造和管理功能,具有很强的容错性和鲁棒性。
同所有的分布式系统一样,网络各节点的时钟同步是Ad Hoc网络技术研究中的一个重要问题。因为网络节点内部的硬件时钟都具有一定的误差,因此节点的本地时间存在有偏差,然而Ad Hoc网络的许多应用尤其是在协同工作时需要全网节点或一定范围内的节点具有一定精度要求的本地时间,因此Ad Hoc网络需要时钟同步而且不同的实际应用有不同的同步精度要求。
IEEE 1588的基本功能是使分布式网络内的最精确时钟与其他时钟保持同步,它定义了一种精确时间协议PTP(Precision Time Protocol),用于对标准以太网或其他采用多播技术的分布式总线系统中的传感器、执行器以及其他终端设备中的时钟进行亚微秒级同步。本文提出了一种实现方案,将IEEE 1588标准的PTP协议(Precise Time Protocol)应用于Ad Hoc网络,以达到高精度的网络时钟同步。
1 PTP节点的设计
本设计采用Xilinx公司的FPGA开发板ML410,PTP节点的功能实现就是在FPGA开发板上完成的。EDK提供了众多的IP核,这些IP核可以直接实现用户所需的功能,并能协同工作。本设计还创建了一个自定义IP核,此IP核实现了PTP节点的时间戳获取等功能。各IP核连接情况如图1所示。
图1 PTP节点的设计
PTP节点的功能实现包括硬件和软件2部分。软件部分在uClinux中实现,本设计将uClinux移植到FPGA开发板中。软件部分主要完成的任务有:包括BMC算法在内的协议引擎状态机的实现;消息的组装、发送、接收和拆解;向FPGA硬件写入和读取需要的时间戳。硬件部分的主要功能有:获取收发消息的时间戳,计算时间偏移量和实现频率调节。
由于开发板上没有无线收发设备,本设计使用了Intersil公司的PRISM2系列的无线网卡,无线网卡的MAC层控制芯片为HFA3841。本设计中将无线网卡通过PCI接口与FPGA相连接,将MAC层芯片的6个管脚通过飞线与FPGA的用户引脚相连接,这6个管脚分别为:TXDATA、TXCLK、TX_RDY、RXDATA、RXCLK和RX_RDY。管脚的时序图如图2、图3所示。
图2 发送数据时序图
图3 接收数据时序图
发送数据和接收数据时分别同步与TXCLK和RXCLK两个时钟,发送数据时TX_RDY持续为“1”,接收数据时RX_RDY持续拉高,这两个信号可以用来指示数据的发送和接收,所以可以根据这两个信号来获取时间戳。
2 PTP实现的软件部分
本设计的软件部分在uClinux中实现,其主要流程如下:
设备启动后或收到系统的初始化时钟命令时,时钟系统处于PTP_INITIALI- ZING状态,它需要完成定时器队列的初始化,为各数据集分配缓冲区、时钟端口配置、通信协议栈初始化等操作。完成初始化操作后,系统应进入PTP_LISTENING状态,侦听网络上的PTP消息。为了防止系统长期处于PTP_LISTENING状态,设定了侦听外来Sync消息的定时器,时间为20s,如果定时器超时,系统自动进入到主时钟状态。在侦听时如果通信端口收到相应的PTP 消息,应该进行最佳主时钟算法,如果发现本地时钟系统是最优的,那么它将最终进入PTP_ MASTER状态。
处于PTP_MASTER状态的节点将每隔2s向外发送Sync消息,发完Sync消息,打开PTP硬件部分对应的驱动文件,并用ioctl()读取相应位的数据,此数据来自于保存发送消息时间戳的寄存器。然后将这个时间戳放到Follow_UP消息中发送出去。当处于PTP_MASTER状态的节点收到Delay_Req消息,它在打开驱动文件之后,也会读取相应位的数据,这些位的数据来自于保存接收PTP消息时间戳的寄存器。然后将这个时间戳封装到Delay_Resp中发送出去。
如果PTP节点收到Sync消息,并根据BMC算法得出端口的状态是PTP_SLAVE,它会去和发送Sync消息的时钟同步。此时若发现需要和当前收到的Sync消息包含的时间同步,系统会将与这个Sync消息相对应的Follow_Up消息中的时间戳写入PTP硬件部分的相应位,硬件部分会用寄存器将这个数据保存起来。当端口处于PTP_SLAVE状态的PTP节点收到Delay_Resp消息时,也会将这个消息包含的主时钟收到Delay_Req消息的时间戳写入PTP硬件的相应位,硬件部分也会用寄存器将这个时间戳保存起来,并在适当的时候利用这些时间戳求得时间偏移和调整频率。
3 PTP实现的硬件部分
用户可以根据特定需要自定义IP核,但创建的任何IP核都必须适应已生成的系统,与现有总线相连接需要规范的接口,EDK对IP接口有明确的定义,本文只讨论用户逻辑部分。
PTP节点硬件实现部分的自定义逻辑了由5个功能模块和4个寄存器模块组成,顶层模块将这些子模块组装在一起,再加上IPIF(IP接口),形成PTP节点硬件实现部分的IP核。该IP核的内部结构如图4所示。
图4 PTP节点的自定义IP核
5个功能模块分别是:本地时钟模块、发送消息时间戳获取模块、接收消息时间戳获取模块、本地时钟模块、时间偏移量计算模块、频率偏移计算模块。4个寄存器模块分别是:A.发送消息时间戳寄存器、B.接收消息时间戳寄存器、C.Follow_Up消息包含的时间戳寄存器、D.Delay_Resp消息包含的时间戳寄存器。
此IP核对于主从时钟都可以和软件部分协调工作。工作过程如下:
接收消息时间戳获取模块的工作原理和发送消息时间戳获取模块类似,以接收消息时间戳获取模块为例。此模块不断检测是否有数据帧到来,具体的检测方法与使用的网络技术相关,详述见后续章节。当发现有数据帧到来时,此模块会向本地时钟发送信号,本地时钟记录这个时间点,接收消息时间戳获取模块继续检测这个数据帧是不是需要打时间戳的PTP消息数据帧,即端口号是不是319,如果是,则此模块会向本地时钟发送另一个信号,本地时钟会把之前记录的时间戳保存在寄存器B中,以备读取。
如果本节点作为主时钟,因为不需要调整本地时间,频率偏移计算模块、时间偏移量计算模块以及寄存器C、D并不工作。当本节点发送完Sync消息时,寄存器A记录下了Sync消息发送的时间戳,接着软件部分就会读取这个时间戳,放在Follow_Up消息中发送。当本节点收到Delay_Req消息时,其接收时间戳会保存在寄存器B中,然后软件部分就会读取这个时间戳,把它放在Delay_Resp消息中发送。
如果本节点作为从时钟,当接收到Sync消息或发送Delay_Req消息时会获取时间戳并分别保存到寄存器B、A中,以供两个计算模块读取。当本节点收到Delay_Req消息时,如果软件部分认为此时需要计算传输延迟,会将Delay_Req消息中包含的时间戳写入寄存器D。如果寄存器D发现有数据写入,会通知时间偏移量计算模块使用四个寄存器的数据计算传输延迟。发现数据写入的实现可以利用64位时间数据的冗余位,软件部分写入时间时会将这个位置位,之后再将其复位,寄存器D会不断检测这个数据位并作为是否保存此数据和发送时间偏移量计算信号的依据,寄存器C也可采用同样的发现机制。当本节点收到Follow_Up消息时,如果软件部分认为此时需要更新时间和频率,就会将Follow_Up消息包含的时间戳写入寄存器C。寄存器C发现有数据写入会分别通知频率偏移计算模块和时间偏移量计算模块计算频率和时间的偏移,计算完成后,两个模块会通知本地时钟模块根据计算结果更新频率和时间。
4 结论
本文将IEEE 1588标准的PTP协议应用于Ad Hoc网络,设计中完成了基于FPGA的PTP节点的功能,并能实现Ad Hoc网络亚微秒级的网络时钟同步。
[1]IEEE std.1588-2002 “IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems”, 2002.
[2]IEEE Std 802.11-1997 “Wireless Lan Medium Access Control (MAC) And Physical Layer (PHY)Specifications”, 1997.
[3]Juha Kannisto, Timo Vanhatupa, Marko Hännikäinen,Timo D.Hämäläinen, ”Precision Time Protocol Prototype on Wireless LAN”, International Conference on Telecommunications (ICT 2004), August 1-6, 2004.
[4]A.Pakdaman, J.Eidson, T.Cooklev, "IEEE 1588 over IEEE 802.11b",IEEE 802.11 interim meeting, Berlin,Germany, Sept.2004.
[5]Q.Li and D.Rus, “Global clock synchronization in sensor networks,” IEEE Trans.Comput., vol.55, no.2,pp.214-226, Feb.2006.
[6]K.Romer, “Time synchronization in ad hoc networks,”in Proc.2nd ACM Int.Symp.Mobile Ad-Hoc Netw.Comput., Long Beach, CA, 2001,pp.173-182.
[7]M.Mock et al., “Clock synchronization in wireless local area networks,” in Proc.12th Euromicro Conf.Real Time Syst., Jun.2000, pp.183-189.
[8]J.E.Elson, “Time synchronization in wireless sensor networks,” Ph.D.dissertation, UCLA, Los Angeles, CA,2003.
[9]S.Ganeriwal, R.Kumar, and M.Srivastava, “Timingsync protocol for sensor networks,” in Proc.1st Int.Conf.Embedded Networked Sensor Syst., 2003, pp.138-149.
[10]L.Meier, P.Blum, and L.Thiele, “Internal synchronization of drift constraint clocks in ad-hoc sensor networks,” in Proc.5th ACM Int.Symp.Mobile Ad-Hoc Netw.Comput., 2004, pp.90-97.
[11]J.Eidson, Measurement, Control, and Communication Using IEEE 1588.New York: Springer-Verlag, 2006.
[12]T.Cooklev, Wireless Communication Standards: A Study of IEEE 802.11, 802.15, and 802.16.New York:IEEE Press, 2004.