黃超,林川
(南京郵電大學通信與信息工程學院,江蘇 南京,210003)
隨著科技的不斷進步,人們對無線通信的需求不斷增加,各種無線通信系統(tǒng)得到了迅速普及并作為通信領(lǐng)域研究的熱點得以快速持續(xù)的發(fā)展。與傳統(tǒng)的無線移動通信網(wǎng)絡(luò)相比,無線自組網(wǎng),即Ad Hoc網(wǎng)絡(luò),沒有中心控制器,所有節(jié)點分布式運行,可以隨時建立和拆除,所有節(jié)點共同承擔網(wǎng)絡(luò)的構(gòu)造和管理功能,具有很強的容錯性和魯棒性。
同所有的分布式系統(tǒng)一樣,網(wǎng)絡(luò)各節(jié)點的時鐘同步是Ad Hoc網(wǎng)絡(luò)技術(shù)研究中的一個重要問題。因為網(wǎng)絡(luò)節(jié)點內(nèi)部的硬件時鐘都具有一定的誤差,因此節(jié)點的本地時間存在有偏差,然而Ad Hoc網(wǎng)絡(luò)的許多應(yīng)用尤其是在協(xié)同工作時需要全網(wǎng)節(jié)點或一定范圍內(nèi)的節(jié)點具有一定精度要求的本地時間,因此Ad Hoc網(wǎng)絡(luò)需要時鐘同步而且不同的實際應(yīng)用有不同的同步精度要求。
IEEE 1588的基本功能是使分布式網(wǎng)絡(luò)內(nèi)的最精確時鐘與其他時鐘保持同步,它定義了一種精確時間協(xié)議PTP(Precision Time Protocol),用于對標準以太網(wǎng)或其他采用多播技術(shù)的分布式總線系統(tǒng)中的傳感器、執(zhí)行器以及其他終端設(shè)備中的時鐘進行亞微秒級同步。本文提出了一種實現(xiàn)方案,將IEEE 1588標準的PTP協(xié)議(Precise Time Protocol)應(yīng)用于Ad Hoc網(wǎng)絡(luò),以達到高精度的網(wǎng)絡(luò)時鐘同步。
本設(shè)計采用Xilinx公司的FPGA開發(fā)板ML410,PTP節(jié)點的功能實現(xiàn)就是在FPGA開發(fā)板上完成的。EDK提供了眾多的IP核,這些IP核可以直接實現(xiàn)用戶所需的功能,并能協(xié)同工作。本設(shè)計還創(chuàng)建了一個自定義IP核,此IP核實現(xiàn)了PTP節(jié)點的時間戳獲取等功能。各IP核連接情況如圖1所示。
圖1 PTP節(jié)點的設(shè)計
PTP節(jié)點的功能實現(xiàn)包括硬件和軟件2部分。軟件部分在uClinux中實現(xiàn),本設(shè)計將uClinux移植到FPGA開發(fā)板中。軟件部分主要完成的任務(wù)有:包括BMC算法在內(nèi)的協(xié)議引擎狀態(tài)機的實現(xiàn);消息的組裝、發(fā)送、接收和拆解;向FPGA硬件寫入和讀取需要的時間戳。硬件部分的主要功能有:獲取收發(fā)消息的時間戳,計算時間偏移量和實現(xiàn)頻率調(diào)節(jié)。
由于開發(fā)板上沒有無線收發(fā)設(shè)備,本設(shè)計使用了Intersil公司的PRISM2系列的無線網(wǎng)卡,無線網(wǎng)卡的MAC層控制芯片為HFA3841。本設(shè)計中將無線網(wǎng)卡通過PCI接口與FPGA相連接,將MAC層芯片的6個管腳通過飛線與FPGA的用戶引腳相連接,這6個管腳分別為:TXDATA、TXCLK、TX_RDY、RXDATA、RXCLK和RX_RDY。管腳的時序圖如圖2、圖3所示。
圖2 發(fā)送數(shù)據(jù)時序圖
圖3 接收數(shù)據(jù)時序圖
發(fā)送數(shù)據(jù)和接收數(shù)據(jù)時分別同步與TXCLK和RXCLK兩個時鐘,發(fā)送數(shù)據(jù)時TX_RDY持續(xù)為“1”,接收數(shù)據(jù)時RX_RDY持續(xù)拉高,這兩個信號可以用來指示數(shù)據(jù)的發(fā)送和接收,所以可以根據(jù)這兩個信號來獲取時間戳。
本設(shè)計的軟件部分在uClinux中實現(xiàn),其主要流程如下:
設(shè)備啟動后或收到系統(tǒng)的初始化時鐘命令時,時鐘系統(tǒng)處于PTP_INITIALI- ZING狀態(tài),它需要完成定時器隊列的初始化,為各數(shù)據(jù)集分配緩沖區(qū)、時鐘端口配置、通信協(xié)議棧初始化等操作。完成初始化操作后,系統(tǒng)應(yīng)進入PTP_LISTENING狀態(tài),偵聽網(wǎng)絡(luò)上的PTP消息。為了防止系統(tǒng)長期處于PTP_LISTENING狀態(tài),設(shè)定了偵聽外來Sync消息的定時器,時間為20s,如果定時器超時,系統(tǒng)自動進入到主時鐘狀態(tài)。在偵聽時如果通信端口收到相應(yīng)的PTP 消息,應(yīng)該進行最佳主時鐘算法,如果發(fā)現(xiàn)本地時鐘系統(tǒng)是最優(yōu)的,那么它將最終進入PTP_ MASTER狀態(tài)。
處于PTP_MASTER狀態(tài)的節(jié)點將每隔2s向外發(fā)送Sync消息,發(fā)完Sync消息,打開PTP硬件部分對應(yīng)的驅(qū)動文件,并用ioctl()讀取相應(yīng)位的數(shù)據(jù),此數(shù)據(jù)來自于保存發(fā)送消息時間戳的寄存器。然后將這個時間戳放到Follow_UP消息中發(fā)送出去。當處于PTP_MASTER狀態(tài)的節(jié)點收到Delay_Req消息,它在打開驅(qū)動文件之后,也會讀取相應(yīng)位的數(shù)據(jù),這些位的數(shù)據(jù)來自于保存接收PTP消息時間戳的寄存器。然后將這個時間戳封裝到Delay_Resp中發(fā)送出去。
如果PTP節(jié)點收到Sync消息,并根據(jù)BMC算法得出端口的狀態(tài)是PTP_SLAVE,它會去和發(fā)送Sync消息的時鐘同步。此時若發(fā)現(xiàn)需要和當前收到的Sync消息包含的時間同步,系統(tǒng)會將與這個Sync消息相對應(yīng)的Follow_Up消息中的時間戳寫入PTP硬件部分的相應(yīng)位,硬件部分會用寄存器將這個數(shù)據(jù)保存起來。當端口處于PTP_SLAVE狀態(tài)的PTP節(jié)點收到Delay_Resp消息時,也會將這個消息包含的主時鐘收到Delay_Req消息的時間戳寫入PTP硬件的相應(yīng)位,硬件部分也會用寄存器將這個時間戳保存起來,并在適當?shù)臅r候利用這些時間戳求得時間偏移和調(diào)整頻率。
用戶可以根據(jù)特定需要自定義IP核,但創(chuàng)建的任何IP核都必須適應(yīng)已生成的系統(tǒng),與現(xiàn)有總線相連接需要規(guī)范的接口,EDK對IP接口有明確的定義,本文只討論用戶邏輯部分。
PTP節(jié)點硬件實現(xiàn)部分的自定義邏輯了由5個功能模塊和4個寄存器模塊組成,頂層模塊將這些子模塊組裝在一起,再加上IPIF(IP接口),形成PTP節(jié)點硬件實現(xiàn)部分的IP核。該IP核的內(nèi)部結(jié)構(gòu)如圖4所示。
圖4 PTP節(jié)點的自定義IP核
5個功能模塊分別是:本地時鐘模塊、發(fā)送消息時間戳獲取模塊、接收消息時間戳獲取模塊、本地時鐘模塊、時間偏移量計算模塊、頻率偏移計算模塊。4個寄存器模塊分別是:A.發(fā)送消息時間戳寄存器、B.接收消息時間戳寄存器、C.Follow_Up消息包含的時間戳寄存器、D.Delay_Resp消息包含的時間戳寄存器。
此IP核對于主從時鐘都可以和軟件部分協(xié)調(diào)工作。工作過程如下:
接收消息時間戳獲取模塊的工作原理和發(fā)送消息時間戳獲取模塊類似,以接收消息時間戳獲取模塊為例。此模塊不斷檢測是否有數(shù)據(jù)幀到來,具體的檢測方法與使用的網(wǎng)絡(luò)技術(shù)相關(guān),詳述見后續(xù)章節(jié)。當發(fā)現(xiàn)有數(shù)據(jù)幀到來時,此模塊會向本地時鐘發(fā)送信號,本地時鐘記錄這個時間點,接收消息時間戳獲取模塊繼續(xù)檢測這個數(shù)據(jù)幀是不是需要打時間戳的PTP消息數(shù)據(jù)幀,即端口號是不是319,如果是,則此模塊會向本地時鐘發(fā)送另一個信號,本地時鐘會把之前記錄的時間戳保存在寄存器B中,以備讀取。
如果本節(jié)點作為主時鐘,因為不需要調(diào)整本地時間,頻率偏移計算模塊、時間偏移量計算模塊以及寄存器C、D并不工作。當本節(jié)點發(fā)送完Sync消息時,寄存器A記錄下了Sync消息發(fā)送的時間戳,接著軟件部分就會讀取這個時間戳,放在Follow_Up消息中發(fā)送。當本節(jié)點收到Delay_Req消息時,其接收時間戳會保存在寄存器B中,然后軟件部分就會讀取這個時間戳,把它放在Delay_Resp消息中發(fā)送。
如果本節(jié)點作為從時鐘,當接收到Sync消息或發(fā)送Delay_Req消息時會獲取時間戳并分別保存到寄存器B、A中,以供兩個計算模塊讀取。當本節(jié)點收到Delay_Req消息時,如果軟件部分認為此時需要計算傳輸延遲,會將Delay_Req消息中包含的時間戳寫入寄存器D。如果寄存器D發(fā)現(xiàn)有數(shù)據(jù)寫入,會通知時間偏移量計算模塊使用四個寄存器的數(shù)據(jù)計算傳輸延遲。發(fā)現(xiàn)數(shù)據(jù)寫入的實現(xiàn)可以利用64位時間數(shù)據(jù)的冗余位,軟件部分寫入時間時會將這個位置位,之后再將其復位,寄存器D會不斷檢測這個數(shù)據(jù)位并作為是否保存此數(shù)據(jù)和發(fā)送時間偏移量計算信號的依據(jù),寄存器C也可采用同樣的發(fā)現(xiàn)機制。當本節(jié)點收到Follow_Up消息時,如果軟件部分認為此時需要更新時間和頻率,就會將Follow_Up消息包含的時間戳寫入寄存器C。寄存器C發(fā)現(xiàn)有數(shù)據(jù)寫入會分別通知頻率偏移計算模塊和時間偏移量計算模塊計算頻率和時間的偏移,計算完成后,兩個模塊會通知本地時鐘模塊根據(jù)計算結(jié)果更新頻率和時間。
本文將IEEE 1588標準的PTP協(xié)議應(yīng)用于Ad Hoc網(wǎng)絡(luò),設(shè)計中完成了基于FPGA的PTP節(jié)點的功能,并能實現(xiàn)Ad Hoc網(wǎng)絡(luò)亞微秒級的網(wǎng)絡(luò)時鐘同步。
[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.