《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于北斗的嵌入式時間統(tǒng)一服務器的設計實現(xiàn)
基于北斗的嵌入式時間統(tǒng)一服務器的設計實現(xiàn)
來源:微型機與應用2014年第6期
呂晨陽,,王 建
(南京船舶雷達研究所,,江蘇 南京210003)
摘要: 針對實際應用中高精度時間同步的需求,需要設計一種支持多種授時格式的授時服務器,,提出了一種基于UM-220T北斗模塊,、ARM處理器和CPLD的時間統(tǒng)一服務器,。該服務器能夠?qū)崿F(xiàn)網(wǎng)絡時間協(xié)議(NTP)和IRIG-B碼協(xié)議,。給出了實現(xiàn)過程和測試結(jié)果,。
關鍵詞: ARM 北斗 NTP IRIG-B
Abstract:
Key words :

摘  要: 針對實際應用中高精度時間同步的需求,需要設計一種支持多種授時格式的授時服務器,,提出了一種基于UM-220T北斗模塊,、ARM處理器和CPLD的時間統(tǒng)一服務器,。該服務器能夠?qū)崿F(xiàn)網(wǎng)絡時間協(xié)議(NTP)和IRIG-B碼協(xié)議,。給出了實現(xiàn)過程和測試結(jié)果。
關鍵詞: 北斗,;NTP,;IRIG-B;ARM

    現(xiàn)代高技術戰(zhàn)爭需要高精度的時間同步,。普通的獨立時鐘通過晶振提供信號,,晶振的頻率精度和穩(wěn)定性都比較差,一般約為10-4~10-5,,每天的累計誤差可達十幾秒,,需要定期調(diào)整[1]。對于聯(lián)網(wǎng)的主機,,使用網(wǎng)絡時間協(xié)議(NTP)對時,,精度高、使用方便[1-2],。但由于武器裝備的特殊性,,不方便接入互聯(lián)網(wǎng),同時很多裝備需要進行機動,,無法接入專用網(wǎng)絡,,為滿足時間同步要求,可在系統(tǒng)內(nèi)架設專用的時間同步服務器,,為系統(tǒng)內(nèi)的眾多主機提供授時服務,。時間同步服務器需要高精度的時鐘源,導航衛(wèi)星授時精度高,、獲取容易,、易機動[3],滿足授時要求,。本文基于實際應用需求,,構(gòu)建以我國自主導航系統(tǒng)——北斗系統(tǒng)為源的時間統(tǒng)一服務器,能進行系統(tǒng)內(nèi)主機的網(wǎng)絡對時,,同時還可提供IRIG-B碼用于專用設備對時,。
1 NTP和IRIG-B授時協(xié)議
    網(wǎng)絡時間協(xié)議NTP(Network Time Protocol)是互聯(lián)網(wǎng)普遍使用的時間同步協(xié)議,,在全世界各地都分布有NTP服務器,對于聯(lián)網(wǎng)的計算機可以通過NTP協(xié)議進行授時,,授時精度對于廣域網(wǎng)可以達到10 ms,,對于局域網(wǎng)可以達到250μs[1]。
    NTP協(xié)議使用時間戳來進行對時,,對于Server/Client模式,,設客戶端發(fā)出請求的時間戳為T1,服務端接收到的時間戳為T2,,服務端響應時間戳為T3,,客戶端接收到的時間戳為T4,設客戶端與服務器之間的往返時間相同,,則服務器與客戶端的時間偏差θ=[(T2-T1)-(T4-T3)]/2,,網(wǎng)絡延遲σ=[(T2-T1)+(T4-T3)]/2??蛻舳送ㄟ^時間偏差和網(wǎng)絡延遲來調(diào)整本地時間,。
    IRIG-B簡稱B碼,是IRIG串行碼的一種,,碼元速率為100 pps,,通過碼元的寬度來區(qū)分0、1和參考標志,。0,、1的寬度分別為2 ms和5 ms,參考標志為8 ms,。B碼發(fā)送時,、分、秒,、天和年,,使用BCD碼進行發(fā)送[4]。IRIG-B可以達到比較高的精度,,參考文獻[5-6]中采用GPS的1 pps信號進行同步的IRIG-B碼發(fā)生器的前沿精度略微低于1 pps信號,。
2 系統(tǒng)結(jié)構(gòu)
    系統(tǒng)框圖如圖1所示,主要包括北斗模塊,、ARM系統(tǒng),、CPLD和網(wǎng)絡接口4個部分。北斗模塊接收北斗衛(wèi)星信號,,輸出1 pps和NMEA0183導航授時電文,。網(wǎng)絡接口進行NTP數(shù)據(jù)包的收發(fā),同時也是系統(tǒng)的控制終端,。IRIG-B發(fā)生器通過VHDL在CPLD內(nèi)部實現(xiàn),,與ARM系統(tǒng)通過SPI總線相連,,接收ARM系統(tǒng)提供的時鐘信號,在1 pps信號的同步下生成B碼,。ARM系統(tǒng)是本系統(tǒng)的核心,,運行Linux操作系統(tǒng),在此基礎上運行功能所需的應用程序,,包括NTP對時程序和IRIG-B碼發(fā)生器控制程序,。

3 系統(tǒng)硬件設計
    系統(tǒng)北斗模塊選用UM220-T,該模塊是和芯星通推出的一款專用于電信,、電力,、軍事的高精度授時模塊,具有GPS/BD2雙模模式,,輸出兼容NMEA0183協(xié)議,,在NMEA0183的基礎上增加了北斗專用語句。其1PPS信號的標準差1?滓=20 ns,,滿足本應用要求。
    系統(tǒng)硬件設計部分主要包括原理圖和PCB的設計,。PCB設計的主要注意事項包括模擬,、數(shù)字電源的隔離、差分線的等長和阻抗匹配,。硬件實物圖如圖2所示,。

4 軟件設計
    系統(tǒng)的主要功能需通過軟件實現(xiàn),軟件設計內(nèi)容主要包括Linux系統(tǒng)移植,、NTP服務器程序的移植,、B碼發(fā)生器控制應用程序的編寫和IRIG-B碼發(fā)生器的VHDL實現(xiàn)。
4.1 NTP服務器軟件移植
    ntp.org提供和維護一個開源的NTP程序,,該源程序功能全面,、運行穩(wěn)定,得到了廣泛的應用,。上文中提到北斗模塊采用兼容的NMEA0183協(xié)議,,增加了北斗專用語句。原生NTP程序包不支持北斗專用語句,,需對其源代碼進行修改才能使用,。
    在Linux系統(tǒng)下從www.ntp.org下載源代碼到本地工作目錄,在工作目錄下新建src目錄,,將源代碼解壓到src目錄下,,打開src/ntp-x.x.x/ntpd/refclock_nmea.c文件,將文件中的如下代碼:
    strncmp(cp,"$GPRMC",6)==0…strncmp(cp,"$GPGGA",6)==0…strncmp(cp,"$GPGLL",6)==0…strncmp(cp,"$GPXXX",6)==0
    修改為:
    strncmp(cp,"$GPRMC",6)==0||strncmp(cp,"$GNRMC",6)==0||strncmp(cp,"$BDRMC",6)==0)
    strncmp(cp,"$GPGGA",6)==0||strncmp(cp,"$GNGGA",6)==0||strncmp(cp,"$BDGGA",6)==0)
    strncmp(cp,"$GPGLL",6)==0||strncmp(cp,"$GNGLL",6)==0||strncmp(cp,"$BDGLL",6)==0)
    strncmp(cp,"$GPXXX",6)==0||strncmp(cp,"$GNXXX",6)==0||strncmp(cp,"$BDXXX",6)==0)
    NMEA0138協(xié)議通過每一行的頭來區(qū)分該行數(shù)據(jù),。對NTP源程序修改以增加北斗專用語句頭,,"$GNRMC",、"$GNGGA"、"$GNGLL",、"$GNXXX"表示現(xiàn)在是北斗/GPS雙模,,"$BDRMC"、"$BDGGA",、"$BDGLL",、"$BD-
XXX"表示現(xiàn)在是北斗單模。對上述修改文件保存退出,。在工作目錄下新建編譯腳本,,命名為run,內(nèi)容為:
    export CC=arm-linux
    ./configure --host=arm-linux --enable-NMEA
    make
保存退出,。腳本指定編譯器為arm-linux-gcc,,用于ARM平臺的交叉編譯,同時打開NMEA接受支持,,用于接收北斗模塊信號,。運行腳本,編譯得到目標文件,,包括3個文件夾bin,、lib、share,,把得到的文件拷貝至ARM文件系統(tǒng)相應的文件夾內(nèi),。NTP服務器通過文件/etc/ntp.conf進行配置,配置文件通過server:127:127:20.u 打開NMEA0138作為時鐘源,,u是NMEA的參數(shù)設置,,包括串口的波特率和使用NMEA的哪條語句作為時間碼,具體配置參照參考文獻[7],。
    測試使用一臺客戶機進行,,測試結(jié)果如圖3所示,圖中第1列為服務器列表,,使用國際標準NTP服務器作為對比,,其中GPS_NMEA(0)為本設計的嵌入式時間同步服務器,bogon為客戶端本地時鐘,,圖中加星號的為系統(tǒng)自動默認選擇的服務器,,從圖中可以看出本服務器性能理想,滿足授時需求,。
4.2 IRIG-B碼發(fā)生器設計
    為滿足系統(tǒng)內(nèi)專用設備的需求,,設計IRIG-B碼發(fā)生器,把北斗時間碼轉(zhuǎn)換成IRIG-B碼。IRIG-B碼直接采用北斗模塊的1 pps信號作為系統(tǒng)同步時鐘,,授時精度與北斗模塊相同,。
    IRIG-B碼發(fā)生器系統(tǒng)框圖如圖4所示,系統(tǒng)由100 MHz時鐘輸入作為本地時鐘,,通過內(nèi)部分頻模塊產(chǎn)生100 Hz和1 kHz的頻率信號,,IRIG-B碼時序如圖5所示,其中碼元速率為1 pps,,故分頻產(chǎn)生100 Hz信號作為碼元時鐘,,脈沖寬度分別為8 ms、2 ms和5 ms,,分頻產(chǎn)生1 kHz用于控制脈沖寬度,。發(fā)生器通過SPI接口與ARM系統(tǒng)相連,接受ARM系統(tǒng)控制,。

    ARM系統(tǒng)通過NTP程序使本地時鐘同步于北斗時鐘,,另一個進程運行IRIG-B碼發(fā)生器控制程序,在1PPS信號同步下取得本地時鐘,,轉(zhuǎn)換成IRIG-B碼格式,,通過SPI接口發(fā)送到CPLD內(nèi)部,程序流程圖如圖6所示,。

 

 

4.3 IRIG-B碼實測結(jié)果
    IRIG-B碼發(fā)生器的測試結(jié)果如圖7所示,,從圖中可以看出,B碼輸出嚴格同步于1 pps信號,,時序符合IRIG-B碼規(guī)范。

    采用ARM+CPLD體系構(gòu)建時間統(tǒng)一服務器,,采用Linux和成熟穩(wěn)定的開源程序,,降低了系統(tǒng)的開發(fā)難度,提高了系統(tǒng)的可靠性,,采用CPLD硬件實現(xiàn)IRIG-B碼發(fā)生器,,時序精度高,滿足高精度IRIG-B碼授時要求,。目前本裝置已應用到實際項目中,。
參考文獻
[1] 黃沛芳.基于NTP的高精度時鐘同步系統(tǒng)實現(xiàn)[J].電子技術應用,2009,,35(7):122-127.
[2] 宋妍,,朱爽.基于NTP的網(wǎng)絡時間服務系統(tǒng)的研究[J].計算機工程與應用,2003,,39(36):147-149.
[3] 王文瑜.基于北斗衛(wèi)星的授時系統(tǒng)研制[D].北京:北京郵電大學,,2008.
[4] Standard I.200-04-IRIG serial time code formats[S]. Timing Committee.Telecommunications and Timing Group. Range Commanders Council,US Army White Sands Missile  Range,NM.
[5] 姚軍.利用GPS實現(xiàn)高精度IRIG-B碼的設計[J].遙測遙控,,1997,,18(2):33-37.
[6] 高林,胡永輝,,侯雷.基于ARM+FPGA的IRIG-B碼產(chǎn)生器的研制[J].時間頻率學報,,2012,35(4):218-227.
[7] POGO,,KELLY W.Generic NMEA GPS receiver[EB/OL].[2013-10-29].http://www.eecis.udel.edu/~mills/ntp/html/drivers/driver20.html.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。