許國強, 陳皓瑜, 張永剛, 周小林
(1.復旦大學 信息科學與工程學院,上海 200433; 2.聯(lián)芯科技有限公司 運營管理部,上海 201206)
基于IEEE 1588協(xié)議的網(wǎng)絡(luò)時鐘同步系統(tǒng)
許國強1, 陳皓瑜2, 張永剛1, 周小林1
(1.復旦大學 信息科學與工程學院,上海 200433; 2.聯(lián)芯科技有限公司 運營管理部,上海 201206)
提出一種基于IEEE1588協(xié)議和衛(wèi)星授時的局域網(wǎng)內(nèi)時間同步方案,將FC3180微控制器作為設(shè)備的核心控制單元,結(jié)合相應(yīng)的硬件單元實現(xiàn)IEEE1588協(xié)議,將通過授時模塊獲取的衛(wèi)星上的時間作為基準時間.IEEE1588將此基準時間分布到局域網(wǎng)中,并將各個從時鐘設(shè)備的時間同步到基準時間源上.實驗結(jié)果表明,該方案能夠?qū)崿F(xiàn)亞微秒級別的時間同步精度,達到了IEEE1588協(xié)議規(guī)定的精度,能夠滿足大部分應(yīng)用系統(tǒng)對時間同步的要求,具有一定的應(yīng)用價值.
IEEE1588; 時間同步; 精確時間同步協(xié)議; 衛(wèi)星授時
時鐘同步在分布式系統(tǒng)中具有重要的作用,它指的是系統(tǒng)中的時鐘都以某個時鐘為基準,各個時鐘與基準時鐘進行同步,該同步達到一定的同步精度以符合應(yīng)用的需求,最后獲得系統(tǒng)意義上的時鐘同步.目前時間同步技術(shù)已經(jīng)應(yīng)用于通信、電力等眾多領(lǐng)域[1].對于需要亞微秒同步精度的應(yīng)用領(lǐng)域,之前的同步協(xié)議,如NTP,并不能滿足要求[2],用衛(wèi)星授時的方案雖能滿足同步要求但需較高成本,且應(yīng)用環(huán)境也受限制,因此需要研究更好的同步方案.
IEEE1588協(xié)議利用現(xiàn)有的以太網(wǎng)網(wǎng)絡(luò)傳遞時間信號,通過一系列機制配合少量硬件支持,可達到亞微秒級別的時間同步精度[3],能夠滿足大部分的應(yīng)用需求,非常適用于控制良好的局域網(wǎng)環(huán)境,具有擴展性良好,實現(xiàn)成本低,占用網(wǎng)絡(luò)資源少等優(yōu)點,有廣闊的應(yīng)用前景.
本文作者基于IEEE1588協(xié)議和FC3180微控制器[4],提出一種合理可行的同步方案.設(shè)備間通過以太網(wǎng)進行通信,每個設(shè)備上獨立運行IEEE1588精確時間同步協(xié)議(Precision Time Protocol,PTP)協(xié)議引擎,通過交換PTP報文信息建立主從時鐘體系網(wǎng)絡(luò),并據(jù)此實現(xiàn)時鐘同步.
本設(shè)計的網(wǎng)絡(luò)時鐘同步系統(tǒng)包括衛(wèi)星授時模塊、時間戳標記模塊、IEEE1588 PTP協(xié)議引擎.
1)衛(wèi)星授時模塊.通過衛(wèi)星接收機獲取衛(wèi)星上的時間,將此時間提供給IEEE1588網(wǎng)絡(luò),作為網(wǎng)絡(luò)的基準時間源.
2)時間戳標記模塊.在MAC里通過特有的邏輯和控制程序識別PTP事件報文,在MAC層標記并產(chǎn)生時間戳,保證了時間戳的精度.
3)IEEE1588 PTP協(xié)議引擎.PTP協(xié)議引擎負責收發(fā)報文,對報文進行處理并根據(jù)報文信息決定自身的狀態(tài),建立主從時鐘體系,主時鐘則不斷發(fā)布相關(guān)的同步報文,從時鐘根據(jù)收到的報文調(diào)整本地時鐘使其與主時鐘同步.
IEEE1588 PTP的主要功能為:通過套接字(Socket)接口收發(fā)PTP報文.在PTP事件報文通過MAC時由特定的數(shù)字邏輯和控制程序產(chǎn)生時間戳,并將時間戳存在列表中供PTP協(xié)議引擎利用,PTP協(xié)議引擎則負責時鐘同步的操作,如圖1所示.
圖1 IEEE1588 PTP總體框架
衛(wèi)星授時模塊主要包括天線、射頻芯片、AD轉(zhuǎn)換器、基帶處理芯片、微處理器等.由FC3180作為核心控制器控制基帶芯片對衛(wèi)星信號進行處理并得到時間信息.
2.1 授時模塊硬件設(shè)計
1) 射頻模塊.射頻部分的電路采用SFM95XDEQ射頻芯片實現(xiàn).SFM95XDEQ射頻芯片支持BD2、B1/B2/B3、GPSL1、GLONASS等5個頻段的信號接收,支持模擬中頻(50 Ω負載),中頻輸出到AD轉(zhuǎn)換器中進行轉(zhuǎn)換,能夠接收無源天線或有源天線信號輸入,支持62MHz低相噪時鐘信號輸出.
2) 基帶處理模塊.基帶處理部分采用JFM7201基帶處理芯片.該芯片用于接收處理經(jīng)過數(shù)字化后的北斗二號B1頻點、B3頻點或者GPS-L1頻點的中頻信號.它能夠?qū)Ш叫盘栠M行捕獲、跟蹤并進行導航電文解碼,提取原始觀測量等操作,芯片處理所得結(jié)果,如導航電文、原始觀測量以及基帶芯片的工作狀態(tài)信息等,通過數(shù)據(jù)總線接口輸出給微處理器.
3) 控制器模塊.核心控制部分采用FC3180微處理器.FC3180是一個低功耗、實時可重構(gòu)處理器,非常適用于需要高速度處理、低功耗、定制化的應(yīng)用場合.通過將編寫的定位定時程序下載到FC3180中,對基帶芯片JFM7201進行定位定時任務(wù)的安排,并實現(xiàn)定位和時間信息的獲取等操作.
圖2 衛(wèi)星授時模塊框圖
圖2為衛(wèi)星授時模塊框圖,相應(yīng)工作流程是天線收到射頻信號后,通過SFM95XDEQ芯片,形成中頻輸出,AD采樣后,形成數(shù)字輸出到基帶芯片.同時,FC3180微處理器負責進行控制.
2.2 授時模塊軟件設(shè)計
根據(jù)衛(wèi)星定位授時原理,編寫授時模塊的軟件程序.程序主要包括定位和獲取衛(wèi)星時間兩大部分.定位程序根據(jù)偽距定位原理[5]進行編寫,需要最少4顆可見衛(wèi)星才能進行定位,偽距定位示意圖如圖3所示.要獲取時間,首先需要成功定位,由于授時模塊的本地時鐘與衛(wèi)星時鐘之間存在鐘差,定位后需再根據(jù)授時模塊與衛(wèi)星鐘之間的鐘差對本地時間進行調(diào)整,使其同步到衛(wèi)星鐘,然后再將同步后的本地時間通過相應(yīng)接口輸出,供IEEE1588使用.
圖3 偽距定位示意圖
1) 定位程序.定位程序主要通過微處理器FC3180和基帶芯片JFM7201完成.定位數(shù)據(jù)需要通過設(shè)置基帶處理芯片進行電文信號捕獲.程序設(shè)置安排好基帶芯片的相應(yīng)通道進行捕獲衛(wèi)星之后,需要定時去查看捕獲的結(jié)果,這一部分工作通過觀測、測量中斷完成.首先要提取環(huán)路的狀態(tài),查看通道是否完成跟蹤,再算出衛(wèi)星的發(fā)射時間和接收時間,從而算出授時模塊與衛(wèi)星之間的偽距,將結(jié)果保存在相應(yīng)程序變量中.衛(wèi)星的坐標和大氣層延遲等數(shù)據(jù)則可以通過導航電文算出,利用這些數(shù)據(jù)再通過特定的算法(采用迭代法),便可算出用戶接收機的位置.
2) 時間獲取.雖然北斗的衛(wèi)星電文里有周內(nèi)秒時間,但沒有更精確的時間,因此不能簡單地從電文里獲取準確的時間,而且衛(wèi)星信號經(jīng)過長距離傳輸,當其到達接收機時,本地時間已不是信號播發(fā)時的時間.本文作者通過時鐘同步的方式來獲取北斗衛(wèi)星時間,即通過不斷使授時模塊上的時鐘與星上時鐘同步,根據(jù)定位程序算出的授時模塊與衛(wèi)星鐘之間的鐘差,對基帶芯片JFM7201的時鐘模塊進行調(diào)整,從而使接收機上的時鐘達到較高的精確度,從而能夠向外提供精準的時間.
3.1 時間戳標記單元設(shè)計
時間戳的精度對同步精度的影響至關(guān)重要,為保證同步精度應(yīng)在盡量接近物理層(PHY)的地方標記時間戳.時間戳標記處位于MAC層,如圖4所示.
FC3180通過微代碼和數(shù)字邏輯實現(xiàn)Ethernet MAC以及Timer System,實現(xiàn)IEEE1588事件報文的檢測、報文時間戳的生成.系統(tǒng)的MAC驅(qū)動經(jīng)過專門的修改,具有檢查以太網(wǎng)幀的有效負荷的能力,故能夠分辨以太網(wǎng)幀是否是PTP報文,如果發(fā)現(xiàn)是PTP報文,則在該幀的幀起始分界符(SFD)發(fā)往PHY或者從PHY接收過來時進行時間標記.
圖4 時間戳標記方案
3.2 最佳主時鐘算法(BMCA)設(shè)計
當系統(tǒng)啟動時,PTP首先進行初始化,然后迅速切換到監(jiān)聽狀態(tài),等待網(wǎng)絡(luò)上其他PTP時鐘發(fā)來的Announce報文,隨后與之對比.如果發(fā)現(xiàn)該時鐘的屬性比自身的更優(yōu),則狀態(tài)切換到從時鐘狀態(tài).而如果在等待一段時鐘后,未收到網(wǎng)絡(luò)上其他時鐘發(fā)出的Announce報文,則認為自己是最佳時鐘,時鐘狀態(tài)轉(zhuǎn)換為主時鐘.實現(xiàn)最佳主時鐘算法包括兩部分,一部分是數(shù)據(jù)集比較算法,另一部分是狀態(tài)決定算法.
1)數(shù)據(jù)集比較算法.數(shù)據(jù)集比較算法主要用于比較代表2個時鐘優(yōu)劣的數(shù)據(jù),并選出較好一方.代表時鐘好壞的屬性主要有6個,數(shù)據(jù)集比較算法基于以下優(yōu)先權(quán)屬性進行兩兩比較:
(a)priorityl:用戶指定一個時鐘為主時鐘;
(b)clockClass:定義時鐘的可追蹤屬性;
(c)clockAccuracy:定義時鐘的精確度屬性;
(d)offsetScaledLogVariance:定義時鐘穩(wěn)定性的屬性;
(e)priority2:在若干個可選擇的主時鐘中挑選出更好的以及設(shè)置備用的主時鐘;
(f)clockIdentity:統(tǒng)一標識符.
除了優(yōu)先次序之外,如果兩個邊界時鐘都是從同一個主時鐘獲取同步時間的,那么經(jīng)過較少邊界時鐘的邊界時鐘更優(yōu),Steps removed用于判斷邊界時鐘與最高級主時鐘間經(jīng)過的邊界時鐘的數(shù)量.
PTP時鐘有可能收到若干個其他時鐘發(fā)來的Announce報文,這些時鐘都聲稱自身具有成為主時鐘的能力,所以在程序中還需要實現(xiàn)關(guān)于收集各方傳來的Announce報文的功能.作者設(shè)計一個數(shù)組來記錄時鐘收到的Announce報文,然后再通過上述數(shù)據(jù)集比較算法,從所有的數(shù)據(jù)集中選擇最好的時鐘.
2)狀態(tài)決定算法.通過數(shù)據(jù)集比較算法選出本時鐘端口接收到的最優(yōu)數(shù)據(jù)集,最優(yōu)數(shù)據(jù)集代表了除本時鐘外網(wǎng)絡(luò)上存在的特性最優(yōu)的時鐘.狀態(tài)決定算法基于數(shù)據(jù)集比較算法和本地時鐘屬性,決定端口的下一狀態(tài).
3.3 計算主從時鐘間的偏差
圖5為報文交換的過程,從時鐘需要擁有4種時間戳,其中2種來自主時鐘,另2種由本地產(chǎn)生.這些時間戳用于計算主從時鐘的偏移量和傳輸延時.
1)偏差計算.根據(jù)圖5所示報文交換過程,從時鐘端節(jié)點周期性地向主從時鐘發(fā)送延遲請求報文Delay_Req,主時鐘節(jié)點收到Delay_Req報文后會記錄下接收時間,并通過Delay_Resp報文將此時間戳發(fā)給從時鐘節(jié)點.而在此之前,從時鐘節(jié)點通過Sync和Follow_Up報文計算出主時鐘到從時鐘的傳輸延遲,因此從時鐘節(jié)點在收到通過Delay_Resp報文后能夠計算出從時鐘到主時鐘的傳輸延遲,進而能夠?qū)⒂嬎愠銎骄舆t(MPD),將該結(jié)果保存留待計算主從偏差量:
(1)
式中D為MPD,在收到t1和t2后,從時鐘便可計算出它與主時鐘的偏差O.再將偏差量除以Sync報文間隔可得到頻率漂移.
圖5 報文交換過程
2)調(diào)整本地時鐘.根據(jù)計算得到的主從時鐘偏差以及從時鐘的頻率漂移量,可對從時鐘節(jié)點的本地時鐘進行調(diào)整.FC3180的本地時鐘主要由一個晶振和計數(shù)器構(gòu)成,晶振驅(qū)動計數(shù)器進行計數(shù),而晶振的頻率以及計數(shù)器的值都是不可更改的,因此不能直接根據(jù)主從時鐘的偏差對本地時鐘進行調(diào)整.可采用數(shù)字調(diào)整法對本地時鐘進行調(diào)整.
硬件計數(shù)器從使能時刻開始計數(shù),計數(shù)值存放在一個64 bit的計數(shù)器中.計數(shù)器值代表的是從其被使能開始起時鐘所跳動的次數(shù)(ticks)稱之原始時間Traw,而每一個tick所代表的時長tunitlength則由晶振頻率決定.故而從啟動計數(shù)器起的時間長度為
(2)
再加上啟動時的時間偏移量(從1970年1月1日0時0分開始)toffset,即可得到本地時刻:
(3)
因此,概括為表達式y(tǒng)=x×A+B,通過改變參數(shù)A和B達到調(diào)整時鐘頻率和相位的效果,增大A相當于增加時鐘的頻率,反之亦然.改變B相當于改變時鐘的相位.
4.1 授時模塊功能測試
所設(shè)計的時間獲取方式是:當在程序中收到第一條電文子幀時,根據(jù)測距碼的性質(zhì)解算出該電文的發(fā)射時間tTransmit,tTransmit是電文子幀發(fā)射時刻的精確周內(nèi)秒,而周計數(shù)nweek則可以直接在電文中讀取.北斗衛(wèi)星的時間由周計數(shù)和周內(nèi)秒計數(shù)構(gòu)成,它的起始時間是2006年1月1日UTC時間0時0分0秒.最后將tTransmit拆分成周內(nèi)秒ssow、秒內(nèi)段計數(shù)nsos、段內(nèi)計數(shù)ncos,然后將這3個值和nweek分別寫入基帶芯片的相應(yīng)寄存器中,接著向基帶芯片寫入加載時間命令,即完成了對基帶芯片內(nèi)時鐘初值的設(shè)置.然后根據(jù)授時模塊與衛(wèi)星之間的鐘差修正本地時間.在得到經(jīng)過校正的本地時間后,再通過串口向外提供推薦最小定位信息(RMC)格式的時間數(shù)據(jù)(TOD),如圖6所示.
4.2 IEEE1588同步性能測試
圖7為測試環(huán)境.授時模塊輸出UTC時間信號給同步網(wǎng)絡(luò)的主時鐘設(shè)備(搭載了IEEE1588 PTP軟件引擎的FC3180),然后主時鐘通過IEEE1588 PTP將此時間分布到網(wǎng)絡(luò)中,測試過程使用2塊FC3180板子,板子之間通過以太網(wǎng)通信,其中作為主時鐘的一個板子同步到北斗衛(wèi)星時間,另一塊板子與主時鐘通過IEEE1588 PTP實現(xiàn)同步.測量2塊板子輸出的脈沖序列的相位差,通過時序分析軟件TimeMonitor Analyzer分析脈沖序列的相位差.測試結(jié)果如圖8所示.
圖6 RMC格式TOD時間數(shù)據(jù)
圖7 測試套件
圖8 同步測試結(jié)果
由圖8可以看到相位標準差小于2 ns,達到亞微秒同步精度.
提出了一種基于衛(wèi)星授時的IEEE1588網(wǎng)絡(luò)時鐘同步方案.基于FC3180的IEEE1588時鐘源授時模塊能夠成功實現(xiàn)高精度定位定時功能,并能夠通過TOD方式向外提供時間基準,該時間基準可以通過串口的方式提供給IEEE1588主時鐘,然后主時鐘將該時間基準通過IEEE1588 PTP分布到網(wǎng)絡(luò)中,網(wǎng)絡(luò)中的從時鐘據(jù)此進行同步,從時鐘與主時鐘達到亞微秒的同步精度.
[1] 薛昊,蔣南.時間同步及其在電力系統(tǒng)中的應(yīng)用 [J].價值工程,2014(13):42-43.
Xue H,Jiang N.Time synchronous and its application in power system [J].Value Engineering,2014(13):42-43.
[2] 張城.基于IEEE1588協(xié)議的網(wǎng)絡(luò)同步時鐘技術(shù)的研究 [D].杭州:浙江大學,2013.
Zhang C.Research on time synchronization control technology based on IEEE1588 protocol [D].Hangzhou:Zhejiang University,2013
[3] IEEE.IEEE Standard for a precision clock synchronization protocol for networked measurement and control systems [S].New Jessy:IEEE,2008.
[4] Huan Y,Ma N,Blixt S,et al.A 61 μA/MHz reconfigurable application-specific processor and system-on-chip for internet-of-things [C].IEEE International SOC Conference (SOCC),2015.
[5] Kaplan E D,Hegarty C.Understanding GPS:principles and applications [M].Artech House,2006.
[6] 李曉珍.基于IEEE1588的網(wǎng)絡(luò)時間同步系統(tǒng)研究 [D].西安:中國科學院研究生院,2011.
Li X Z.Research on the network time synchronization system based on IEEE1588 [D].Xian:University of Chinese Academy of Sciences,2011.
[7] 王偉東.精確時間協(xié)議的軟件設(shè)計與實現(xiàn) [D].哈爾濱:哈爾濱工業(yè)大學,2012.
Wang W D.Software design and implement of the precision time protocol [D].Harbin:Harbin Institute of Technology,2012.
[8] 關(guān)松青,肖昌炎,夏曉榮.IEEE1588協(xié)議在工業(yè)以太網(wǎng)中的實現(xiàn) [J].計算機工程,2011,37(6):237-238.
Guan S Q,Xiao C Y,Xia X R.Implementation of IEEE 1588 protocol over industrial Ethernet [J].Computer Engineering,2011,37(6):237-238.
(責任編輯:包震宇,顧浩然)
Research and development of network clock synchronization protocolbased on the IEEE1588 system
Xu Guoqiang1, Chen Haoyu2, Zhang Yonggang1, Zhou Xiaolin1
(1.School of Information Science and Technology,Fudan University,Shanghai 200433;2.Department of Operations Management,Leadcore Technology Co.,Ltd.,Shanghai 201206)
In this paper,we proposes a local area network (LAN) time synchronization scheme based on IEEE1588 protocol and satellite timing.FC3180 micro controller is used as the core control unit of equipment combined with the corresponding hardware unit which realizes IEEE1588 protocol.The satellite time is gained through GPS clock module as a benchmark,and is distributed to LAN by using IEEE1588 protocol.The time on each clock equipment is synchronized to the benchmark.Experiment results show that sub-microsecond level time synchronization accuracy,as IEEE1588 sets,can be realized,and time synchronization requirements that most of application systems demand can be meet by using our scheme.
IEEE1588; time synchronization; precision time protocol; satellite timing
10.3969/J.ISSN.1000-5137.2017.01.024
2016-11-27
國家科技支撐課題項目(2015BAD17B04)
許國強(1992-),男,碩士研究生,主要從事物聯(lián)網(wǎng)方面的研究.E-mail:xu7936@sina.com
導師簡介: 周小林,(1973-),男,副教授,主要從事無線通信,移動通信,信號處理方面的研究.E-mail:zhouxiaolin@fudan.edu.cn(通信聯(lián)系人)
TN 929.5
A
1000-5137(2017)01-0142-07