楊新華,李潤春
(蘭州理工大學 電氣工程與信息工程學院,甘肅 蘭州 730050)
全球定位系統(tǒng)GPS(Global Positioning System)是以衛(wèi)星為基礎的全球無線電導航定位系統(tǒng)[1]。它具有高精度、高效率、全天候、抗干擾、隱蔽性強、多功能、操作方便等特點,能夠為用戶提供精確的位置、速度、時間等信息。
隨著科技的發(fā)展,以GPS定位技術為主的定位導航監(jiān)控技術得到了高速的發(fā)展,并在眾多行業(yè)中得到了廣泛應用,如交通、航海、安全等領域。與此同時用戶對GPS接收系統(tǒng)的設計提出了更高的要求,傳統(tǒng)信號處理實現(xiàn)技術已經難以滿足系統(tǒng)實時性、靈活性、便攜性、可擴展性以及低功耗的苛刻要求。
可編程的片上系統(tǒng)SoPC(System onProgrammable Chip)是現(xiàn)代計算機輔助設計技術、EDA技術和大規(guī)模集成電路技術高度發(fā)展的產物[2],將處理器、存儲器、I/O接口、硬件協(xié)處理器和普通的用戶邏輯等系統(tǒng)設計需要的功能模塊集成到一片F(xiàn)PGA芯片內部,實現(xiàn)MCU、DSP和FPGA的完美結合。Altera公司開發(fā)的Nios II是32位、可嵌入在FPGA芯片中的軟核處理器,其突出優(yōu)點是可編程性和易操作性,其靈活性、可裁減、低成本、高性能的特點具有很強的競爭力,廣泛地應用于通信、工業(yè)控制、計算機相關產品和消費類電子領域等,已幾乎成為嵌入式軟核處理器的標準。
GPS定位的基本原理是以高速運動的衛(wèi)星瞬間位置作為已知的起算數(shù)據(jù),采用測量學的空間測距定位方法,確定待測點的位置。實際上,GPS接收機在僅接收到3顆衛(wèi)星有效信號的情況下只能確定二維坐標(即經度和緯度),只有收到4顆或4顆以上的有效GPS衛(wèi)星信號時,才能完成包含高度的3D定位。原因在于:在理想情況下,接收機對于GPS信息的接收不存在時間延遲的問題。根據(jù)3顆衛(wèi)星的位置以及信號傳輸?shù)木嚯x,可以列出以下3個方程式:
式中 x、y、z 為待測點(接收機)坐標,di(i=1,2,3)表示衛(wèi)星i到接收機之間的距離,該數(shù)據(jù)由信號傳輸?shù)臅r間(理想化情況)與信號的速度(光速)進行乘積計算得出。根據(jù)以上3個方程式即可解出待測點的三維坐標。
然而事實上,GPS接收機對于GPS信號的接收過程存在延遲的問題,當GPS信號由衛(wèi)星發(fā)送到接收機時,接收機需要一定時間的反應過程,這段時間稱為延遲時間。在延遲時間較長的情況下,由上面方程組求得的結果就會與待測點坐標相差較大。這時需要再引入1顆衛(wèi)星進行定位,列出如下所示的4個方程式:
其中t0表示延遲時間,為未知量。在考慮延遲時間的情況下,根據(jù)以上4個方程式,即可算出待測點的三維坐標。
GPS模塊輸出的定位信息遵從NMEA-0183通信標準,該標準輸出的數(shù)據(jù)采用ASCII碼,其內容包含了緯度、經度、高度、速度、日期、時間、航向及衛(wèi)星狀況信息。 語句 有 6種 , 包括 GGA、GLL、GSA、GSV、RMC 和VTG。對于不同的用途,選用的語句記錄也不同,由于嵌入式系統(tǒng)的使用者只關心日期和時間、角度、速度等信息,所以本設計選用RMC記錄語句作為接收系統(tǒng)的定位數(shù)據(jù)格式進行分析處理。1條$GPRMC語句包括13個記錄:語句標識頭、世界時間、定位狀態(tài)、緯度、緯度方位、經度、經度方位、地面速度、地面路線、日期、磁偏角、校驗和結束標記,共占用70個字節(jié)(其中包括用于分割記錄所使用的11個逗號)。例如:
$GPRMC,121530.998,A,4000.016 2,N,11619.547 6,E,0.00,240.81,160 102,*3B
GPS接收系統(tǒng)完成的主要任務是接收由外部GPS設備發(fā)送來的GPS數(shù)據(jù)包,并對數(shù)據(jù)包進行處理。根據(jù)各種不同的GPS通信語句提取出其中所需要的定位信息,如經緯度、時間、日期、速度、方向角等。由于GPS定位信息比較少,GPS設備多采用RS-232串口來實現(xiàn)計算機或開發(fā)板的接口。不同的GPS設備,其操作方式不盡相同。RS-232作為接口的設備,其發(fā)送的數(shù)據(jù)信息均為文本的字符串形式。且遵循NEMA-0183通信標準。根據(jù)GPS定位的數(shù)據(jù)格式,可以將GPS信息的處理過程簡化為文本字符串的解析過程。
GPS設備處于工作狀態(tài)時,會源源不斷地把從衛(wèi)星接收并計算出的GPS導航定位信息通過串口發(fā)送到主機中。主機接收數(shù)據(jù)并將其放置于緩存,在沒有進一步處理之前緩存中是一串文本字節(jié)流信息,這些信息在分類提取之前是無法加以利用的。因此,必須通過程序將各個字段的信息從緩存字節(jié)流中提取出來,將其轉換成實際意義的、可供高層決策使用并顯示在輸出設備上的定位信息數(shù)據(jù)。同其他通信協(xié)議類似,對GPS進行信息提取必須首先明確其幀結構,從而完成對各定位信息的提取。GPS定位信息數(shù)據(jù)主要由幀頭、幀尾和幀內數(shù)據(jù)組成,根據(jù)數(shù)據(jù)幀的不同,幀頭也不同,主要有“$GPGGA”、“$GPGSA”、”$GPGSV”及“$GPRMC”等。 這些幀頭標識了后續(xù)幀內數(shù)據(jù)的組成結構,各幀均以回車符和換行符作為幀尾標識的結束。對于通常情況。嵌入式系統(tǒng)設計所關心的定位數(shù)據(jù)如經緯度、速度、時間等均可以從“$GPRMC”幀中獲取得到,因此,本設計只對該類型的數(shù)據(jù)幀進行分析處理?!?GPRMC”幀的結構及各字段的含義如下:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh
其中<1>當前位置的格林尼治時間,格式為hhmmss;<2>狀態(tài)顯示,用A或V表示,即當天線視野上方的衛(wèi)星個數(shù)少于3顆A為有效的位置、V為非有效接收警告;<3>緯度,格式為 ddmm.mmmm;<4>南北半球,用 N 或 S表示,N為北半球、S為南半球;<5>緯度, 格式為dddmm.mmmm;<6>東西半球,用 E或 W 表示,E為東半球、W 為西半球;<7>地面導航的速度,范圍為 0.0 m/s~999.9 m/s;<8>方位角,范圍為 000.0°~359.9°;<9>日期,格式為 ddmmyy;<10>地磁變化,范圍為 000.0°~180.0°;<11>地磁變化方向,用 E或 W 表示。
圖1 系統(tǒng)原理框圖
根據(jù)SoPC嵌入式系統(tǒng)的典型結構結合具體情況,設計系統(tǒng)[3]如圖1所示。其中,Nios II是核心處理器,即為CPU。LCD控制器、UART IP、SDRAM 控制 器、JTAG-UART、SRAM 控 制 器 、Timer、Avalon TRISTAGE BRIDG 為 片 內 外 設 ,Avalon Switch Fabric為總線,負責各個模塊的連接和通信,LCD屏、SDRAM、SRAM、CFI-Flash、GPS模塊為片外外設。 由于本系統(tǒng)針對具有串口通信接口的GPS模塊,所以只要添加UART IP核就可以完成數(shù)據(jù)傳輸。該系統(tǒng)在SoPC Builder軟件里很容易搭建,如圖2所示。
圖2 GPS信息接收系統(tǒng)的SOPC結構
系統(tǒng)采用的硬件平臺是Altera公司的DE2-70開發(fā)板,F(xiàn)PGA芯片是 Cyclone II Ep2c70f896,該芯片具有68 416個邏輯單元 (LE)、622個用戶 I/O引腳、250個M4K RAM塊、1 152 000個 RAM位總數(shù)、150個嵌入式乘法器和4個鎖相環(huán)[3],集成度高、功能強大,完全滿足嵌入式系統(tǒng)設計需要。
Nios II IDE是Nios II系列嵌入式處理器的基本軟件開發(fā)工具,開發(fā)任務包括編輯、編譯和調試程序。目前,Nios II軟件開發(fā)任務是在HAL(Hardware Abstraction Layer)的基礎上進行的[4]。HAL系統(tǒng)庫是一個輕量級的運行環(huán)境,Nios II HAL系統(tǒng)庫提供了一個基于ANSIC C庫的C運行環(huán)境,具有硬件通信設備驅動程序。軟件設計包括:LCD控制器的字符驅動程序、GPS數(shù)據(jù)接收程序、GPS信息處理程序和GPS定位信息顯示程序。由于GPS接收程序的主要功能是將GPS模塊以串口的形式發(fā)出數(shù)據(jù),其重點是數(shù)據(jù)的分析處理和顯示。
本系統(tǒng)選用LCD作為輸出設備,用來顯示從GPS模塊接收來的相關定位信息。在此,選用點陣字庫的創(chuàng)建方法,創(chuàng)建了一個 8×12的ASCII碼字庫和一個 14×14的漢字小字庫,設計了相應的字符顯示程序,并且在單個字符的基礎上開發(fā)字符串顯示程序。以8×12的ASCII字符顯示為例,具體設計方法:使用工具Zimo21來提取8×12點陣的ASCII碼信息。設置參數(shù)“橫向取模”和“字節(jié)倒序”,使用該軟件提取字符A的信息,共有12個字節(jié)數(shù)據(jù),依此類推,共有 75個字模,將所有的字模保持到一個二維數(shù)組(Font08ASCII[][12])中,組成字庫。這樣,當應用程序將一個字符顯示在LCD屏幕的(x,y)坐標點時,具體流程為:
首先,獲取當前需要顯示字符在字庫中的存放位置,ASCII碼字符在字庫地址的計算公式如下:
其中,EN_CHAR_HEIGHT常量在設計中表示ASCII碼字符的高度。在使用上述計算公式得到所要顯示字符的字模存儲地址之后,可使用驅動程序中的像素點著色函數(shù)將點陣數(shù)據(jù)寫入緩存中。字符串的流程如圖3所示。
圖3 字符串顯示流程圖
根據(jù)接收系統(tǒng)的數(shù)據(jù)幀結構,處理緩存數(shù)據(jù)時通過搜尋ASCII碼“$”來判斷是否是幀頭。在對幀頭的類別進行識別后,通過對所經歷的逗號個數(shù)的計數(shù)來判斷當前正在處理的是哪一種定位導航參數(shù),并作出相應的處理。對緩存的數(shù)據(jù)進行分析,具體流程如圖4所示。
為了驗證本系統(tǒng)對GPS定位信息接收的正確與否,可以使用串口調試助手發(fā)送GPS字符串數(shù)據(jù)觀察LCD,屏幕上將顯示出與字符串數(shù)據(jù)相匹配的定位信息。
本文在“FPGA+SoPC”平臺上設計了 GPS信息接收系統(tǒng),該系統(tǒng)以串口作為GPS接收模塊的接口,并通過LCD顯示屏的使用實現(xiàn)了GPS信息的輸出顯示。最后通過調試軟件對實際應用進行了模擬,試驗證明了具有較強的實用性,為嵌入式系統(tǒng)添加GPS信息接收模塊提供了一種新方法。
圖4 GPS信息處理流程圖
[1]王剛,張瀲.基于FPGA的SOPC嵌入式系統(tǒng)設計與典型實例[M].北京:電子工業(yè)出版社,2009.
[2]李穎宏,趙俊桃.基于SoPC的嵌入式語音處理系統(tǒng)的設計與實現(xiàn)[J].現(xiàn)代電子技術,2009(2):33-34.
[3]李英蘭.Nios II嵌入式軟核SOPC設計原理及應用[M].北京:北京航空航天大學出版社,2006.
[4]孫凱,程世恒.Nios II系統(tǒng)開發(fā)設計與應用實例[M].北京:北京航空航天大學出版社,2007.