王 軍,孫慧婷,姜 志,王 磊,何 昕
(1.蘇州科技大學(xué),江蘇蘇州215009;2.中國白城兵器實(shí)驗(yàn)中心,吉林白城137001;3.中國科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,長(zhǎng)春130033)
基于PCI-E的北斗導(dǎo)航授時(shí)卡設(shè)計(jì)*
王軍1,3*,孫慧婷1,姜志2,王磊1,何昕3
(1.蘇州科技大學(xué),江蘇蘇州215009;2.中國白城兵器實(shí)驗(yàn)中心,吉林白城137001;3.中國科學(xué)院長(zhǎng)春光學(xué)精密機(jī)械與物理研究所,長(zhǎng)春130033)
為提高Linux系統(tǒng)時(shí)間的精確度,設(shè)計(jì)了基于PCI-Express總線接口的北斗導(dǎo)航授時(shí)卡。北斗導(dǎo)航衛(wèi)星信號(hào)接收模塊輸出時(shí)間定位信息,F(xiàn)PGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)解出標(biāo)準(zhǔn)時(shí)間存入雙口RAM,PCI-E驅(qū)動(dòng)芯片將雙口RAM內(nèi)數(shù)據(jù)送到PCI-E總線供上位機(jī)調(diào)用。實(shí)驗(yàn)結(jié)果證明:授時(shí)卡在Linux系統(tǒng)下運(yùn)行穩(wěn)定,功耗較低,授時(shí)精度達(dá)到60 ns。
Linux;PCI-Express;FPGA;授時(shí)
計(jì)算機(jī)時(shí)間基本由網(wǎng)絡(luò)時(shí)間或主板時(shí)鐘芯片提供,導(dǎo)致時(shí)間誤差大,在工業(yè)控制、數(shù)據(jù)測(cè)量等領(lǐng)域無法完成特定任務(wù)。為解決計(jì)算機(jī)時(shí)間誤差較大問題,部分學(xué)者提出基于Windows系統(tǒng)PCI總線接口的GPS授時(shí)卡[1-2]。這種方法的不足在于:數(shù)據(jù)吞吐量、帶寬的限制使得PCI總線逐漸被PCI-E總線所取代,且GPS授時(shí)方式以及美國微軟Windows系統(tǒng)無法在國家安全敏感部門使用。針對(duì)上述不足,基于開源Linux系統(tǒng),設(shè)計(jì)了PCI-E總線接口的北斗授時(shí)卡。
授時(shí)卡總體設(shè)計(jì)了3個(gè)模塊:北斗衛(wèi)星解碼模塊、可編程邏輯器件以及PCI-E驅(qū)動(dòng)模塊,總體框圖如圖1所示。北斗衛(wèi)星解碼模塊通過天線接收北斗衛(wèi)星授時(shí)信號(hào),將$GPRMC格式碼流傳輸給FPGA串行通訊模塊,F(xiàn)PGA解出$GPRMC碼中的時(shí)間定位信息輸入到雙口RAM中。PCI-E驅(qū)動(dòng)模塊在接收到計(jì)算機(jī)的命令后將時(shí)間信息傳輸?shù)絇CI-E總線上供計(jì)算機(jī)應(yīng)用層軟件獲取[3-5]。

圖1 授時(shí)卡總體硬件框圖
可編程邏輯器件 FPGA采用 Altera公司CycloneⅣ系列中的EP4CE22E22C8N,該芯片具有144個(gè)IO端口、36個(gè)RAM塊、2個(gè)PLL鎖相環(huán)、18個(gè)嵌入式乘法器、4種配置方式和AS、JTAG下載調(diào)試接口。北斗衛(wèi)星解碼模塊采用和芯星通UM220-III為主芯片,授時(shí)精度可高達(dá)15 ns,與FPGA采用串口通信且有多種波特率可供選擇,只要保證有一顆衛(wèi)星連接正常,芯片就能輸出準(zhǔn)確的時(shí)間信息。PCI-E驅(qū)動(dòng)芯片采用PLX股份有限公司研發(fā)的PEX8612,支持I/O端口映射和擴(kuò)展ROM以及中斷,大大簡(jiǎn)化了授時(shí)卡硬件程序開發(fā)。授時(shí)卡部分硬件連接圖如圖2所示。
北斗衛(wèi)星導(dǎo)航模塊UM220與FPGA采用串行通訊,RXD與FPGA串行模塊發(fā)射端連接,接收FPGA設(shè)置指令;TXD與FPGA接收端連接,輸出時(shí)間定位信息碼流;并通過PPS輸出標(biāo)準(zhǔn)時(shí)間秒頭至FPGA。PCI-E驅(qū)動(dòng)芯片PEX8612將本地?cái)?shù)據(jù)地址線分別與FPGA虛擬雙口RAM的8 bit雙向數(shù)據(jù)線、8 bit位單向地址線相連,通過讀寫信號(hào)線控制與FPGA進(jìn)行數(shù)據(jù)交互;兩對(duì)差分信號(hào)連接PCI-E金手指與計(jì)算機(jī)PCIE總線通訊[3-5]。

圖2 授時(shí)卡部分硬件連接圖
3.1時(shí)間定位信息解碼程序設(shè)計(jì)
北斗導(dǎo)航衛(wèi)星UM220-III模塊可輸出標(biāo)準(zhǔn)GPRMC格式信息,各部分信息之間采用“,”隔開,定義如表1所示。

表1 UM220-III輸出幀格式
FPGA解析數(shù)據(jù)幀主要采取狀態(tài)機(jī)檢測(cè)法,當(dāng)檢測(cè)到$GPRMC幀頭,開始進(jìn)入解碼狀態(tài),檢測(cè)到第1個(gè)‘,'字符,進(jìn)入時(shí)間狀態(tài)機(jī),將時(shí)分秒h.min.s賦給時(shí)間變量;檢測(cè)第2個(gè)‘,'字符,進(jìn)入定位狀態(tài)機(jī),根據(jù)字符修改定位標(biāo)志位;檢測(cè)第3個(gè)‘,'字符,進(jìn)入緯度狀態(tài)機(jī),將緯度賦給相應(yīng)變量;之后按照上述思想,檢測(cè)‘,'字符從而進(jìn)入相應(yīng)的狀態(tài)機(jī)完成信息的提取。時(shí)間解碼流程圖如圖3所示。
3.2PCI-E驅(qū)動(dòng)芯片控制軟件設(shè)計(jì)
FPGA利用IP核建立一個(gè)虛擬雙口RAM包括時(shí)鐘信號(hào)、讀寫使能信號(hào)、讀寫地址以及讀寫數(shù)據(jù)。FPGA將寫地址、時(shí)間數(shù)據(jù)放到地址線和數(shù)據(jù)線上,完成時(shí)間的解碼后產(chǎn)生一個(gè)寫使能信號(hào),時(shí)間數(shù)據(jù)寫入到固定的寄存器。將北斗導(dǎo)航衛(wèi)星接收模塊輸出的PPS信號(hào)當(dāng)作PCI-E驅(qū)動(dòng)芯片的硬件中斷信號(hào),當(dāng)Linux系統(tǒng)應(yīng)用層軟件使能硬件中斷,進(jìn)入中斷子程序?qū)CI-E總線設(shè)備端口讀時(shí)間數(shù)據(jù),PCI-E驅(qū)動(dòng)芯片將PCI-E總線協(xié)議數(shù)據(jù)讀寫轉(zhuǎn)化為讀取FPGA虛擬雙口RAM的讀寫[6-9],流程圖如圖4。

圖3 時(shí)間解碼流程圖

圖4 PCI-E總線時(shí)間信息讀取流程圖
實(shí)驗(yàn)計(jì)算機(jī)采用華碩主板,Intel酷睿i5-4590處理器主頻3.3 GHz,4G內(nèi)存,操作系統(tǒng)為Ubuntu Kylin 15.04,內(nèi)核版本Linux 3.19.0。打開終端窗口,使用insmod命令加載PCI-E驅(qū)動(dòng)模塊如圖5,并且通過lsmod命令檢測(cè)驅(qū)動(dòng)是否加載成功,驅(qū)動(dòng)模塊顯示列表如圖6。

圖5 驅(qū)動(dòng)加載命令圖

圖6 驅(qū)動(dòng)模塊顯示列表圖
驅(qū)動(dòng)加載完畢后,打開采用GTK+函數(shù)庫編寫的授時(shí)測(cè)試軟件出現(xiàn)圖7界面,輸入設(shè)備號(hào)點(diǎn)擊“下一步”按鈕就會(huì)出現(xiàn)圖8授時(shí)卡應(yīng)用軟件主界面。從主界面中能夠查詢硬件商和設(shè)備編碼,以及I/O和寄存器基址。點(diǎn)擊“打開”按鈕打開授時(shí)卡中斷,狀態(tài)欄顯示ON狀態(tài)表示設(shè)備中斷打開,點(diǎn)擊“顯示”按鈕就能顯示標(biāo)準(zhǔn)北京時(shí)間。

圖7 授時(shí)卡應(yīng)用軟件初始界面圖

圖8 授時(shí)卡應(yīng)用軟件主界面
使用Tektronix公司的TDS-2014C示波器檢測(cè)北斗衛(wèi)星標(biāo)準(zhǔn)秒頭(橙色)與授時(shí)卡授時(shí)秒頭(綠色)誤差60 ns,波形如圖9。

圖9 授時(shí)秒頭與標(biāo)準(zhǔn)秒頭波形圖
Linux系統(tǒng)下設(shè)計(jì)的北斗授時(shí)卡采用 PCI-E橋接芯片,縮小PCI-E總線開發(fā)過程,簡(jiǎn)化硬件語言開發(fā)難度。北斗衛(wèi)星導(dǎo)航授時(shí)有效克服GPS授時(shí)安全問題,且授時(shí)精度高、兼容性好,在Linux系統(tǒng)下運(yùn)行穩(wěn)定,為L(zhǎng)inux系統(tǒng)時(shí)間校對(duì)提供一種新方法。
[1]劉軍良,胡永輝,候雷.基于PCI總線的GPS授時(shí)卡設(shè)計(jì)[J].電子測(cè)量與儀器學(xué)報(bào),2008(s2):122-127.
[2]趙志雄,李孝輝,劉婭,等.PCI總線的高精度大量程時(shí)間間隔計(jì)數(shù)器研制[J].電子測(cè)量與儀器學(xué)報(bào),2014,28(12):1317-1323.
[3]鞠康.基于FPGA的PCI-E數(shù)據(jù)采集電路設(shè)計(jì)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2014.
[4]楊子元,包啟亮,王旭.基于PCIE/104總線的高速數(shù)據(jù)接口設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(14):75-78.
[5]李木國,黃影,劉于之.基于FPGA的PCIe總線接口的DMA傳輸設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2013,21(1):233-237.
[6]雷雨,任國強(qiáng),孫健,等.基于PCIE的高速光纖圖像實(shí)時(shí)采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,39(10):136-140.
[7]李玉峰,韓曉紅,劉洋,等.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的實(shí)現(xiàn)與性能分析[J].電子器件,2012,35(6):709-712.
[8]信侃.基于Xilinx FPGA的PCIe總線接口設(shè)計(jì)與實(shí)現(xiàn)[J].無線電通信技術(shù),2014,40(4):94-97.
[9]孫曉曄.基于PCIE的SG DMA高速數(shù)據(jù)傳輸系統(tǒng)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(9):195-199.

王軍(1979-),男,漢,江蘇徐州,蘇州科技大學(xué)副教授,博士,主要研究方向?yàn)楣怆姕y(cè)控技術(shù)與儀器;

孫慧婷(1992-),女,漢,江蘇東臺(tái),蘇州科技大學(xué)碩士研究生,碩士,主要研究方向?yàn)橹悄苄畔⑻幚怼?/p>
Design of Beidou Navigation Timing Card under Linux PCI-E Bus*
WANG Jun1,3*,SUN Huiting1,JIANG Zhi2,WANG Lei1,HE Xin3
(1.Suzhou University of Science and Technology,Suzhou Jiangsu 215009,China;2.Bai Cheng Ordnance Test Center of China,Baicheng Jilin 137001,China;3.Changchun Institute of Optics,F(xiàn)ine Mechanics and Physics,Chinese Academy of Science,Changchun 130033,China)
To improve Linux system time accuracy,timing card was designed based on PCI-Express interface by Beidou navigation satellite.Module receives Beidou navigation satellite signal and outputs time location information,F(xiàn)PGA(Field-Programmable Gate Array)decodes time and puts it into dual-port RAM,PCI-E drive sent time data to the PCI-E bus for system transferring.Test results show that card is stable and low power,and the timing error is 60 ns under Linux system platform.
Linux;PCI-Express;FPGA;timing
TN927
A
1005-9490(2016)05-1063-04
項(xiàng)目來源:國家自然科學(xué)基金項(xiàng)目(61472267);江蘇省普通高校研究生科研創(chuàng)新計(jì)劃項(xiàng)目(KYLX15_1311);蘇州科技大學(xué)研究生創(chuàng)新項(xiàng)目(SKCX15_050)
2015-10-17修改日期:2015-11-18
EEACC:633010.3969/j.issn.1005-9490.2016.05.009