摘要:全球衛(wèi)星定位系統(CPS)可以時海陸空進行全方位的實時定位與導航,其應用日益廣泛,通過GPS定位系統及其信息接收裝置可以實現對當前所在位置的確定 系統使用天線接收GPS衛(wèi)星信號,并在μC/OS操作系統下用NIOS處理器進行分析處理,以保證其實時性,最終輸出位置、速度等信息進行定位。本系統通過實驗測試驗證,定位具有較高的準確性和實時性。
關鍵詞:GPS;衛(wèi)星定位;NIOS處理器;μC/OS操作系統
0 引言
GPS全球衛(wèi)星定位系統在天空中是由24顆衛(wèi)星組成的GPS星座構成,它們特定的排列方式可以使地球上任何地方任何時刻都可以觀測到四顆及以上衛(wèi)星,定位精度高,是現有的衛(wèi)星定位系統中最常用的技術比較成熟和穩(wěn)定的定位系統,因此在當今社會GPS的應用十分廣泛,涵蓋陸地、海洋以及航空航天方面的應用,尤其是車輛導航、航程航線測定、船只實時調度與導航等都可以看成是一個個GPS顯示系統??梢?,GPS顯示系統能為人們的生活和工作帶來許多方便,所以GPS信息接收和顯示裝置的設計開發(fā)具有廣闊的發(fā)展前景。
GPS信息的接收模塊技術如今比較成熟,主要可以分為軍事和民用的兩類。民用的GPS芯片對于精度的要求并不是很高,但基本都能滿足人們的實用要求。由于GPS模塊接收到的數據無法直接讀取,因此需要設計一個合理的信息接收轉換及顯示系統,將GPS模塊接收的定位數據轉化為能夠直接讀取的格式并顯示出來。
本文設計的基于NIOS處理器的GPS定位信息顯示系統的主要目的是接收GPS定位衛(wèi)星的定位信息并實現時間、經度、緯度以及速度等信息的實時顯示,為人們的日常生活帶來便利。
1 系統的原理及整體設計
1.1 系統原理
GPS模塊接收GPS定位衛(wèi)星發(fā)射的信號,并在其內部經過一系列的信息處理解析出具有一定格式的、可讀性較強的導航電文,其中包含了經緯度和速度等定位信息。系統設計的GPS信息接收系統,主要是基于FPGA完成的,通過Verilog硬件描述語言在FPGA上嵌入NIOSⅡ處理器,并引入μC/OS實時操作系統來優(yōu)化整個系統的工作,通過C語言編程從GPS模塊輸出的定位信息中提取經緯度和速度等信息,并利用液晶顯示器顯示出來。
GPS的輸出數據遵循NMEA-0183協議標準,即美國海軍的電子設備標準。該協議定義了GPS接收模塊輸出的標準信息,最常用、兼容性最廣的語句格式包括:$GPRMC,$GPGGA,$GPGSV,$GPGSA,$GPGLL等。本設計選用$GPRMC,其數據格式為:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
其中:<1>為格林尼治時間;<2>為定位狀態(tài),A=有效定位;<3>為緯度;<4>為緯度半球;<5>為經度;<6>為經度半球;<7>為地面速率;<8>為地面航向;<9>為格林尼治日期。
1.2 系統整體設計
系統總體分為五大部分:GPS接收模塊、FPGA及其內部NIOSⅡ處理器部分、擴展存儲部分、液晶顯示部分及下載線部分。其整體結構框圖如圖1所示。
(1)GPS接收模塊。能夠捕獲到按一定衛(wèi)星高度截止角所選擇的待測衛(wèi)星的信號,并跟蹤這些衛(wèi)星的運行,對所接收到的GPS信號進行變換、放大等處理,測出GPS信號從衛(wèi)星到接收機天線的傳輸時間,從而解譯出GPS所發(fā)送的導航電文。此過程完全在現有的GPS模塊中完成,本設計只需要了解其輸出數據的格式并完成對它的解析即可。
(2)FPGA及其內部NIOSⅡ處理器部分。通過使用Verilog硬件描述語言在FPGA上搭建一個MOSⅡ處理器,并描述出FPGA內部邏輯電路的連接方式,然后在NIOSⅡ處理器中移植入一個μC/OS操作系統,采用C語言編程控制整個系統的工作,對GPS導航電文進行解析并控制液晶顯示等。
(3)擴展存儲部分。片外的FLASH和SDRAM擴展了系統的容量,可以實現大規(guī)模的編程,完成復雜的任務,本設計由于需要操作系統的植入,需要更大的存儲空間,因此在FPGA的外圍設置了FLASH和SDRAM。
(4)液晶顯示部分。FPGA將從GPS模塊解析出來的位置、速度等信息送給液晶,由液晶顯示器顯示出來,并且要保證其能夠實時更新。
(5)下載線部分。通過Altera USB Blaster把電腦里編譯好的程序下載到FPGA中的NIOSⅡ處理器上,并進行在線調試。
2 系統硬件設計
系統硬件設計根據各部分的功能需求主要包括2個部分:FPGA及其外圍電路、GPS模塊及液晶顯示電路。GPS模塊負責接收衛(wèi)星的定位信息并輸出導航電文,FPGA及其嵌入的NIOS處理器是分析和處理導航電文的核心,液晶顯示屏則顯示可直接讀取的定位信息。
2.1 FPCA及其外圍電路
FPGA芯片選用Altera公司的CyeloneⅢ系列芯片,該芯片有相應的完善的設計開發(fā)平臺,方便系統的設計與調試。
FPGA配置采用AS+JTAG方式,這樣在調試階段可以使用JTAG方式,最后當程序調試無誤后在使用AS模式把程序燒到配置芯片里去。這樣做的一個明顯的優(yōu)點是:在AS模式不能下載的時候,可以利用Quartus自帶的工具將配置程序生成.jic文件,用JTAG模式來驗證配置芯片是否損壞。通過JTAG將FPGA的配置程序寫入到片外配置芯片中,掉電不丟失,每次上電時再將其中的程序讀入到FPGA中。另外在FPGA的I/O引腳接入一些LED燈,方便觀察測試結果,也可用來檢驗設計的正確與否。
2.2 GPS接收模塊及液晶顯示電路
GPS接收模塊采用Ublox NEO-6M模塊,它是一個現有的GPS接收模塊,輸出的導航電文格式清晰,便于處理。它將接收到的衛(wèi)星定位信息在其內部經過簡單的處理輸出給FPGA的I/O端口,在FPGA內部解析之后又通過另外的I/O端口發(fā)送給液晶顯示器。液晶顯示選用12864液晶顯示器,并采用串行數據輸入方式,將接收到的數據顯示出來。
2.3 供電部分
因FPGA各管腳所需輸入電壓包括3.3 V,2.5 V和1.2 V,12864液晶需要5 V,GPS模塊所需電壓為3.3 V,因此整個電路板需要多種供電電壓,供電電路的設計思想是輸入5 V電壓,再通過電平轉換電路轉換出其他所需要的電平。
系統供電模塊如圖2所示。其中電源與地之間的電容主要作用是去除電源中耦合的其他信號,以減小甚至是消除這些信號對電源的影響。
3 系統軟件設計
FPGA內部使用Quartus內嵌的工具SoPC Builder搭建NIOSⅡ處理器,并用Verilog硬件描述語言來描述FPGA內部電路結構,而μC/OS實時操作系統的植入及系統的控制程序則是由C語言編程完成的。
3.1 FPGA內部邏輯實現
首先構建NIOSⅡ處理器,包括一個CPU和它的內存單元、JTAG和UART部分,如圖3所示。
從圖3中可以看出NIOS處理器和外圍設備及接口的大概結構,各部分通過Avalon總線連接起來,并可以自動分配地址和中斷。
根據設計對實時性的需要,其中NIOS軟核選擇NIOSⅡ/f,它占資源最多,但速度最快,并且功能最多;RS 232串口根據NMEA-0183協議,為了獲取GPS定位信息,必須將波特率設置為9 600 b/s,數據位設置為8 b,停止位設置為1 b,校驗為設置為無。
然后用Verilog硬件描述語言實現FPGA內部邏輯,包括NIOSⅡ處理器、鎖相環(huán)等。最后,FPGA內部綜合后的RTL結構如圖4所示。
3.2 系統功能程序設計
在構建好NIOS處理器的基礎上,采用C語言編程將μC/OS實時操作系統移植到處理器中,并編寫實現設計功能的程序,如接收CPS定位數據、GPS信息解碼、延時和LCD液晶顯示程序等。主程序及主要子程序流程圖如圖5所示。
本文中μC/OS操作系統的使用,即是建立若干個任務,將實現功能的各程序函數放入各任務中,并分別對任務設置不同的優(yōu)先級,任務之間的通信是通過發(fā)送信號量實現。當任務創(chuàng)建完成之后,將操作權交給操作系統,由操作系統對各任務的執(zhí)行順序進行安排。μC/OS操作系統可以實現在一個任務掛起時,馬上開始執(zhí)行另一個處于等待狀態(tài)的優(yōu)先級最高的任務,從而提高系統的實時性。任務的執(zhí)行流程如圖6所示。
設計中,出于對系統功能的考慮,在μC/OS操作系統中設置這樣四個任務和一個按鍵中斷:串口接收GPS定位數據,GPS定位數據解碼,液晶顯示經緯度和速度信息,液晶顯示航向、時間、日期和設計者信以及按鍵中斷。開機首先GPS模塊初始化,初始化結束串口接收完第一幀完整的數據時,開始對定位數據進行解碼;當解碼完成后,把解碼出的定位信息顯示在液晶顯示屏上并開始接收下一幀定位數據;通過五向按鍵的上下撥動可以實現定位信息在液晶屏幕上的交替顯示。
4 系統測試
檢查完電路連接無誤后,首先在QuartusⅡ軟件中建立工程,然后在SoPC Builder中構建好的NIOSⅡ處理器進行編譯,編譯完成后回到QuartusⅡ界面,將編寫好的對FPGA內部電路邏輯進行描述的Verilog語言程序寫入到工程里,對其進行編譯,結果如圖7所示。
從圖中可以看出該設計占用的FPGA內部資源。然后將編譯生成的FPGA配置文件下載到FPGA片外的EPCS4芯片中,至此,FPGA配置完成,下面開始對軟件程序的測試。本設計的軟件調試在NIOS IDE軟件環(huán)境下完成。首先,在NIOS IDE軟件環(huán)境下新建一個工程,在選擇工程模板時可以選擇Hello MicroC/OS-Ⅱ,這樣在工程建立之時,μC/OS操作系統就已經被嵌入使用,接下來在NIOS IDE工程內輸入用C語言編寫的功能程序,對工程進行編譯,驗證程序的正確性。
在分別完成硬件電路和軟件程序測試的基礎上,將FPGA的硬件配置文件下載到電路中的片外EPCS4芯片中,將軟件程序下載到已經構建好的NIOSⅡ處理器中,然后進行總體測試。
連接上GPS天線,程序下載完成并等待一段時間后,天線收到定位數據,系統開始解碼并顯示定位信息,這時液晶屏上顯示第一屏定位信息,即經緯度和速度信息,如圖8所示。此時,若按下五向按鍵的向下鍵,液晶顯示信息翻屏,顯示第二屏定位信息,包括航向、時間、
日期和設計者信息。
將五向按鍵分別向上和向下撥動,液晶屏顯示信息可以在第一屏和第二屏之間進行切換。可見系統設計正確,能夠提供正確的實時位置和時間信息。
5 結語
本文基于GPS定位原理及FPCA設計了一種基于NIOS處理器的CPS信息接收系統,設計所用到的NlOSⅡ處理器專為嵌入式系統設計,μC/OS操作系統具有良好的實時性,有助于提高定位信息的實時顯示,以保證其正確性。系統整體設計思想是首先將NIOSⅡ處理器嵌入到FPGA內,FPGA內部電路結構用Verilog硬件語言描述,然后把μC/OS操作系統移植到處理器內部,通過C語言編程完成系統功能。經實際測試驗證,本文所設計的硬件電路及C語言功能程序完全能夠達到要求,并且能夠實現GPS信息接收與顯示的功能,實時地為使用者提供精確的經緯度、速度、時間和航向等定位信息。