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

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

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

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

4 軟件設(shè)計(jì)
    系統(tǒng)的主要功能需通過軟件實(shí)現(xiàn),軟件設(shè)計(jì)內(nèi)容主要包括Linux系統(tǒng)移植、NTP服務(wù)器程序的移植、B碼發(fā)生器控制應(yīng)用程序的編寫和IRIG-B碼發(fā)生器的VHDL實(shí)現(xiàn)。
4.1 NTP服務(wù)器軟件移植
    ntp.org提供和維護(hù)一個(gè)開源的NTP程序,該源程序功能全面、運(yùn)行穩(wěn)定,得到了廣泛的應(yīng)用。上文中提到北斗模塊采用兼容的NMEA0183協(xié)議,增加了北斗專用語句。原生NTP程序包不支持北斗專用語句,需對其源代碼進(jìn)行修改才能使用。
    在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平臺(tái)的交叉編譯,同時(shí)打開NMEA接受支持,用于接收北斗模塊信號(hào)。運(yùn)行腳本,編譯得到目標(biāo)文件,包括3個(gè)文件夾bin、lib、share,把得到的文件拷貝至ARM文件系統(tǒng)相應(yīng)的文件夾內(nèi)。NTP服務(wù)器通過文件/etc/ntp.conf進(jìn)行配置,配置文件通過server:127:127:20.u 打開NMEA0138作為時(shí)鐘源,u是NMEA的參數(shù)設(shè)置,包括串口的波特率和使用NMEA的哪條語句作為時(shí)間碼,具體配置參照參考文獻(xiàn)[7]。
    測試使用一臺(tái)客戶機(jī)進(jìn)行,測試結(jié)果如圖3所示,圖中第1列為服務(wù)器列表,使用國際標(biāo)準(zhǔn)NTP服務(wù)器作為對比,其中GPS_NMEA(0)為本設(shè)計(jì)的嵌入式時(shí)間同步服務(wù)器,bogon為客戶端本地時(shí)鐘,圖中加星號(hào)的為系統(tǒng)自動(dòng)默認(rèn)選擇的服務(wù)器,從圖中可以看出本服務(wù)器性能理想,滿足授時(shí)需求。
4.2 IRIG-B碼發(fā)生器設(shè)計(jì)
    為滿足系統(tǒng)內(nèi)專用設(shè)備的需求,設(shè)計(jì)IRIG-B碼發(fā)生器,把北斗時(shí)間碼轉(zhuǎn)換成IRIG-B碼。IRIG-B碼直接采用北斗模塊的1 pps信號(hào)作為系統(tǒng)同步時(shí)鐘,授時(shí)精度與北斗模塊相同。
    IRIG-B碼發(fā)生器系統(tǒng)框圖如圖4所示,系統(tǒng)由100 MHz時(shí)鐘輸入作為本地時(shí)鐘,通過內(nèi)部分頻模塊產(chǎn)生100 Hz和1 kHz的頻率信號(hào),IRIG-B碼時(shí)序如圖5所示,其中碼元速率為1 pps,故分頻產(chǎn)生100 Hz信號(hào)作為碼元時(shí)鐘,脈沖寬度分別為8 ms、2 ms和5 ms,分頻產(chǎn)生1 kHz用于控制脈沖寬度。發(fā)生器通過SPI接口與ARM系統(tǒng)相連,接受ARM系統(tǒng)控制。

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

 

 

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

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