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

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

圖2 授時卡部分硬件連接圖
3.1時間定位信息解碼程序設計
北斗導航衛星UM220-III模塊可輸出標準GPRMC格式信息,各部分信息之間采用“,”隔開,定義如表1所示。

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

圖3 時間解碼流程圖

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

圖5 驅動加載命令圖

圖6 驅動模塊顯示列表圖
驅動加載完畢后,打開采用GTK+函數庫編寫的授時測試軟件出現圖7界面,輸入設備號點擊“下一步”按鈕就會出現圖8授時卡應用軟件主界面。從主界面中能夠查詢硬件商和設備編碼,以及I/O和寄存器基址。點擊“打開”按鈕打開授時卡中斷,狀態欄顯示ON狀態表示設備中斷打開,點擊“顯示”按鈕就能顯示標準北京時間。

圖7 授時卡應用軟件初始界面圖

圖8 授時卡應用軟件主界面
使用Tektronix公司的TDS-2014C示波器檢測北斗衛星標準秒頭(橙色)與授時卡授時秒頭(綠色)誤差60 ns,波形如圖9。

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

王軍(1979-),男,漢,江蘇徐州,蘇州科技大學副教授,博士,主要研究方向為光電測控技術與儀器;

孫慧婷(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,Fine 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,FPGA(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);江蘇省普通高校研究生科研創新計劃項目(KYLX15_1311);蘇州科技大學研究生創新項目(SKCX15_050)
2015-10-17修改日期:2015-11-18
EEACC:633010.3969/j.issn.1005-9490.2016.05.009