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