王 軍,孫慧婷,姜 志,王 磊,何 昕
(1.蘇州科技大學,江蘇蘇州215009;2.中國白城兵器實驗中心,吉林白城137001;3.中國科學院長春光學精密機械與物理研究所,長春130033)
基于PCI-E的北斗導(dǎo)航授時卡設(shè)計*
王軍1,3*,孫慧婷1,姜志2,王磊1,何昕3
(1.蘇州科技大學,江蘇蘇州215009;2.中國白城兵器實驗中心,吉林白城137001;3.中國科學院長春光學精密機械與物理研究所,長春130033)
為提高Linux系統(tǒng)時間的精確度,設(shè)計了基于PCI-Express總線接口的北斗導(dǎo)航授時卡。北斗導(dǎo)航衛(wèi)星信號接收模塊輸出時間定位信息,F(xiàn)PGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)解出標準時間存入雙口RAM,PCI-E驅(qū)動芯片將雙口RAM內(nèi)數(shù)據(jù)送到PCI-E總線供上位機調(diào)用。實驗結(jié)果證明:授時卡在Linux系統(tǒng)下運行穩(wěn)定,功耗較低,授時精度達到60 ns。
Linux;PCI-Express;FPGA;授時
計算機時間基本由網(wǎng)絡(luò)時間或主板時鐘芯片提供,導(dǎo)致時間誤差大,在工業(yè)控制、數(shù)據(jù)測量等領(lǐng)域無法完成特定任務(wù)。為解決計算機時間誤差較大問題,部分學者提出基于Windows系統(tǒng)PCI總線接口的GPS授時卡[1-2]。這種方法的不足在于:數(shù)據(jù)吞吐量、帶寬的限制使得PCI總線逐漸被PCI-E總線所取代,且GPS授時方式以及美國微軟Windows系統(tǒng)無法在國家安全敏感部門使用。針對上述不足,基于開源Linux系統(tǒng),設(shè)計了PCI-E總線接口的北斗授時卡。
授時卡總體設(shè)計了3個模塊:北斗衛(wèi)星解碼模塊、可編程邏輯器件以及PCI-E驅(qū)動模塊,總體框圖如圖1所示。北斗衛(wèi)星解碼模塊通過天線接收北斗衛(wèi)星授時信號,將$GPRMC格式碼流傳輸給FPGA串行通訊模塊,F(xiàn)PGA解出$GPRMC碼中的時間定位信息輸入到雙口RAM中。PCI-E驅(qū)動模塊在接收到計算機的命令后將時間信息傳輸?shù)絇CI-E總線上供計算機應(yīng)用層軟件獲?。?-5]。
圖1 授時卡總體硬件框圖
可編程邏輯器件 FPGA采用 Altera公司CycloneⅣ系列中的EP4CE22E22C8N,該芯片具有144個IO端口、36個RAM塊、2個PLL鎖相環(huán)、18個嵌入式乘法器、4種配置方式和AS、JTAG下載調(diào)試接口。北斗衛(wèi)星解碼模塊采用和芯星通UM220-III為主芯片,授時精度可高達15 ns,與FPGA采用串口通信且有多種波特率可供選擇,只要保證有一顆衛(wèi)星連接正常,芯片就能輸出準確的時間信息。PCI-E驅(qū)動芯片采用PLX股份有限公司研發(fā)的PEX8612,支持I/O端口映射和擴展ROM以及中斷,大大簡化了授時卡硬件程序開發(fā)。授時卡部分硬件連接圖如圖2所示。
北斗衛(wèi)星導(dǎo)航模塊UM220與FPGA采用串行通訊,RXD與FPGA串行模塊發(fā)射端連接,接收FPGA設(shè)置指令;TXD與FPGA接收端連接,輸出時間定位信息碼流;并通過PPS輸出標準時間秒頭至FPGA。PCI-E驅(qū)動芯片PEX8612將本地數(shù)據(jù)地址線分別與FPGA虛擬雙口RAM的8 bit雙向數(shù)據(jù)線、8 bit位單向地址線相連,通過讀寫信號線控制與FPGA進行數(shù)據(jù)交互;兩對差分信號連接PCI-E金手指與計算機PCIE總線通訊[3-5]。
圖2 授時卡部分硬件連接圖
3.1時間定位信息解碼程序設(shè)計
北斗導(dǎo)航衛(wèi)星UM220-III模塊可輸出標準GPRMC格式信息,各部分信息之間采用“,”隔開,定義如表1所示。
表1 UM220-III輸出幀格式
FPGA解析數(shù)據(jù)幀主要采取狀態(tài)機檢測法,當檢測到$GPRMC幀頭,開始進入解碼狀態(tài),檢測到第1個‘,'字符,進入時間狀態(tài)機,將時分秒h.min.s賦給時間變量;檢測第2個‘,'字符,進入定位狀態(tài)機,根據(jù)字符修改定位標志位;檢測第3個‘,'字符,進入緯度狀態(tài)機,將緯度賦給相應(yīng)變量;之后按照上述思想,檢測‘,'字符從而進入相應(yīng)的狀態(tài)機完成信息的提取。時間解碼流程圖如圖3所示。
3.2PCI-E驅(qū)動芯片控制軟件設(shè)計
FPGA利用IP核建立一個虛擬雙口RAM包括時鐘信號、讀寫使能信號、讀寫地址以及讀寫數(shù)據(jù)。FPGA將寫地址、時間數(shù)據(jù)放到地址線和數(shù)據(jù)線上,完成時間的解碼后產(chǎn)生一個寫使能信號,時間數(shù)據(jù)寫入到固定的寄存器。將北斗導(dǎo)航衛(wèi)星接收模塊輸出的PPS信號當作PCI-E驅(qū)動芯片的硬件中斷信號,當Linux系統(tǒng)應(yīng)用層軟件使能硬件中斷,進入中斷子程序?qū)CI-E總線設(shè)備端口讀時間數(shù)據(jù),PCI-E驅(qū)動芯片將PCI-E總線協(xié)議數(shù)據(jù)讀寫轉(zhuǎn)化為讀取FPGA虛擬雙口RAM的讀寫[6-9],流程圖如圖4。
圖3 時間解碼流程圖
圖4 PCI-E總線時間信息讀取流程圖
實驗計算機采用華碩主板,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ū)動模塊如圖5,并且通過lsmod命令檢測驅(qū)動是否加載成功,驅(qū)動模塊顯示列表如圖6。
圖5 驅(qū)動加載命令圖
圖6 驅(qū)動模塊顯示列表圖
驅(qū)動加載完畢后,打開采用GTK+函數(shù)庫編寫的授時測試軟件出現(xiàn)圖7界面,輸入設(shè)備號點擊“下一步”按鈕就會出現(xiàn)圖8授時卡應(yīng)用軟件主界面。從主界面中能夠查詢硬件商和設(shè)備編碼,以及I/O和寄存器基址。點擊“打開”按鈕打開授時卡中斷,狀態(tài)欄顯示ON狀態(tài)表示設(shè)備中斷打開,點擊“顯示”按鈕就能顯示標準北京時間。
圖7 授時卡應(yīng)用軟件初始界面圖
圖8 授時卡應(yīng)用軟件主界面
使用Tektronix公司的TDS-2014C示波器檢測北斗衛(wèi)星標準秒頭(橙色)與授時卡授時秒頭(綠色)誤差60 ns,波形如圖9。
圖9 授時秒頭與標準秒頭波形圖
Linux系統(tǒng)下設(shè)計的北斗授時卡采用 PCI-E橋接芯片,縮小PCI-E總線開發(fā)過程,簡化硬件語言開發(fā)難度。北斗衛(wèi)星導(dǎo)航授時有效克服GPS授時安全問題,且授時精度高、兼容性好,在Linux系統(tǒng)下運行穩(wěn)定,為Linux系統(tǒng)時間校對提供一種新方法。
[1]劉軍良,胡永輝,候雷.基于PCI總線的GPS授時卡設(shè)計[J].電子測量與儀器學報,2008(s2):122-127.
[2]趙志雄,李孝輝,劉婭,等.PCI總線的高精度大量程時間間隔計數(shù)器研制[J].電子測量與儀器學報,2014,28(12):1317-1323.
[3]鞠康.基于FPGA的PCI-E數(shù)據(jù)采集電路設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學,2014.
[4]楊子元,包啟亮,王旭.基于PCIE/104總線的高速數(shù)據(jù)接口設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(14):75-78.
[5]李木國,黃影,劉于之.基于FPGA的PCIe總線接口的DMA傳輸設(shè)計[J].計算機測量與控制,2013,21(1):233-237.
[6]雷雨,任國強,孫健,等.基于PCIE的高速光纖圖像實時采集系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2013,39(10):136-140.
[7]李玉峰,韓曉紅,劉洋,等.基于FPGA的高速數(shù)據(jù)采集系統(tǒng)的實現(xiàn)與性能分析[J].電子器件,2012,35(6):709-712.
[8]信侃.基于Xilinx FPGA的PCIe總線接口設(shè)計與實現(xiàn)[J].無線電通信技術(shù),2014,40(4):94-97.
[9]孫曉曄.基于PCIE的SG DMA高速數(shù)據(jù)傳輸系統(tǒng)[J].計算機技術(shù)與發(fā)展,2013,23(9):195-199.
王軍(1979-),男,漢,江蘇徐州,蘇州科技大學副教授,博士,主要研究方向為光電測控技術(shù)與儀器;
孫慧婷(1992-),女,漢,江蘇東臺,蘇州科技大學碩士研究生,碩士,主要研究方向為智能信息處理。
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
項目來源:國家自然科學基金項目(61472267);江蘇省普通高校研究生科研創(chuàng)新計劃項目(KYLX15_1311);蘇州科技大學研究生創(chuàng)新項目(SKCX15_050)
2015-10-17修改日期:2015-11-18
EEACC:633010.3969/j.issn.1005-9490.2016.05.009