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

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

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

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

4 軟件設(shè)計
    系統(tǒng)的主要功能需通過軟件實現(xiàn),軟件設(shè)計內(nèi)容主要包括Linux系統(tǒng)移植,、NTP服務(wù)器程序的移植,、B碼發(fā)生器控制應(yīng)用程序的編寫和IRIG-B碼發(fā)生器的VHDL實現(xiàn)。
4.1 NTP服務(wù)器軟件移植
    ntp.org提供和維護一個開源的NTP程序,,該源程序功能全面,、運行穩(wěn)定,得到了廣泛的應(yīng)用,。上文中提到北斗模塊采用兼容的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接受支持,,用于接收北斗模塊信號。運行腳本,,編譯得到目標(biāo)文件,,包括3個文件夾bin、lib,、share,,把得到的文件拷貝至ARM文件系統(tǒng)相應(yīng)的文件夾內(nèi)。NTP服務(wù)器通過文件/etc/ntp.conf進行配置,,配置文件通過server:127:127:20.u 打開NMEA0138作為時鐘源,,u是NMEA的參數(shù)設(shè)置,包括串口的波特率和使用NMEA的哪條語句作為時間碼,,具體配置參照參考文獻[7],。
    測試使用一臺客戶機進行,測試結(jié)果如圖3所示,,圖中第1列為服務(wù)器列表,,使用國際標(biāo)準(zhǔn)NTP服務(wù)器作為對比,其中GPS_NMEA(0)為本設(shè)計的嵌入式時間同步服務(wù)器,bogon為客戶端本地時鐘,,圖中加星號的為系統(tǒng)自動默認(rèn)選擇的服務(wù)器,,從圖中可以看出本服務(wù)器性能理想,滿足授時需求,。
4.2 IRIG-B碼發(fā)生器設(shè)計
    為滿足系統(tǒng)內(nèi)專用設(shè)備的需求,,設(shè)計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碼輸出嚴(yán)格同步于1 pps信號,,時序符合IRIG-B碼規(guī)范。

    采用ARM+CPLD體系構(gòu)建時間統(tǒng)一服務(wù)器,,采用Linux和成熟穩(wěn)定的開源程序,,降低了系統(tǒng)的開發(fā)難度,提高了系統(tǒng)的可靠性,,采用CPLD硬件實現(xiàn)IRIG-B碼發(fā)生器,,時序精度高,滿足高精度IRIG-B碼授時要求,。目前本裝置已應(yīng)用到實際項目中,。
參考文獻
[1] 黃沛芳.基于NTP的高精度時鐘同步系統(tǒng)實現(xiàn)[J].電子技術(shù)應(yīng)用,2009,35(7):122-127.
[2] 宋妍,,朱爽.基于NTP的網(wǎng)絡(luò)時間服務(wù)系統(tǒng)的研究[J].計算機工程與應(yīng)用,,2003,39(36):147-149.
[3] 王文瑜.基于北斗衛(wèi)星的授時系統(tǒng)研制[D].北京:北京郵電大學(xué),,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碼的設(shè)計[J].遙測遙控,,1997,,18(2):33-37.
[6] 高林,胡永輝,,侯雷.基于ARM+FPGA的IRIG-B碼產(chǎn)生器的研制[J].時間頻率學(xué)報,,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)載。