摘 要: 介紹了GPS的定位原理及算法,在此基礎(chǔ)上,,提出了一種基于ARM微處理器的GPS接收機(jī)的設(shè)計方案,。該GPS接收機(jī)采用Atmel公司生產(chǎn)的ATR0600芯片作為接收機(jī)的射頻前端,內(nèi)嵌ARM7核的ATR0620芯片作為接收機(jī)的數(shù)字基帶處理器, 并闡述了外圍擴(kuò)展電路及軟件設(shè)計。該GPS接收機(jī)具有體積小,、功耗低,、性能高的特點(diǎn),。
關(guān)鍵詞: GPS接收機(jī);ATR0600,;ARM,;ATR0620
全球定位系統(tǒng)(GPS)作為一種成熟的導(dǎo)航定位技術(shù),以其全天候、高精度,、自動化,、高效率等顯著特點(diǎn)及所獨(dú)具的定位導(dǎo)航、授時授頻,、精密測量等多方面的強(qiáng)大功能,,使其用途越來越廣泛。但傳統(tǒng)的使用8 bit單片機(jī)設(shè)計的GPS接收機(jī),,在數(shù)據(jù)處理,、系統(tǒng)性能提升以及功能擴(kuò)展等方面存在較大的不足。隨著嵌入式技術(shù)的發(fā)展,,以ARM為代表的32 bit微處理器憑借其高性能,、低功耗、低成本,、體積小等優(yōu)點(diǎn),,在現(xiàn)實(shí)中獲得了廣泛的應(yīng)用。
本文介紹了一種GPS接收機(jī)的整體設(shè)計方案,該方案采用Atmel公司生產(chǎn)的ATR0600和ATR0620芯片,。其中ATR0600芯片作為接收機(jī)的射頻前端,,內(nèi)嵌ARM7TDMI處理器核的ATR0620芯片作為接收機(jī)的數(shù)字基帶處理器。該方案具有低功耗,、高性能,、尺寸小、成本低的特點(diǎn),。
1 GPS定位原理
GPS由21顆工作衛(wèi)星和3顆備用衛(wèi)星組成,,分布在高度為20 200 km的6個軌道平面上,運(yùn)行周期為ll h 58 min,,其在空間的軌道分布保證了在地球上任何地方,、任一時刻都能接收到至少4顆GPS衛(wèi)星的信號[1-3]。
為了確定接收機(jī)在地球上的位置,,首先要得到衛(wèi)星的瞬時空間位置,,即接收機(jī)根據(jù)接收到的導(dǎo)航衛(wèi)星的星歷參數(shù),通過計算得到當(dāng)前衛(wèi)星在地球坐標(biāo)系中的瞬時位置坐標(biāo),。星歷參數(shù)是描述衛(wèi)星運(yùn)行軌道的一組數(shù)據(jù),,由衛(wèi)星以導(dǎo)航電文的形式連續(xù)不斷地向地面用戶接收機(jī)播發(fā)。其中包括星歷參數(shù)的參考?xì)v元,、參考?xì)v元的開普勒軌道參數(shù)和軌道攝動改正項,。其中,,除真近點(diǎn)角f是時間的函數(shù)外,其余均為獨(dú)立的常數(shù),。因此,,計算衛(wèi)星任一瞬時位置的關(guān)鍵就在于計算參數(shù)f。
為了確定接收機(jī)在地球上的位置,,還需通過測量獲得接收機(jī)對衛(wèi)星的相對距離,,結(jié)合該衛(wèi)星在空間的瞬時位置坐標(biāo),確定觀測點(diǎn)的定位參數(shù)所對應(yīng)的圓面,,由3個或3個以上的圓面在三維空間內(nèi)相交而得出自己在地球上的位置,,實(shí)現(xiàn)高精度的定位和導(dǎo)航。
但是,,由于接收機(jī)時鐘與衛(wèi)星時鐘不能達(dá)到完全同步,,接收機(jī)通信鏈路得到的接收機(jī)到衛(wèi)星的距離應(yīng)記為偽距?籽,它包含從衛(wèi)星到接收機(jī)的幾何距離和由接收機(jī)時鐘與衛(wèi)星時鐘之間的差異而造成的偏移,,其中接收機(jī)時鐘偏移tu也是未知數(shù),。因此,確定接收機(jī)位置需解算4個未知數(shù),,即位置坐標(biāo)的3個分量(x,,y,z)和時鐘偏移tu,,至少需要4個方程式,,即至少需要觀測到4顆衛(wèi)星。
3個坐標(biāo)分量的系數(shù)是近似用戶位置指向第s號衛(wèi)星的矢量的方向余弦,。第一次計算定位時,,如無近似位置可用,可將(0,,0,,0)作為初始值,也可由用戶手動輸入接收機(jī)的近似位置坐標(biāo)作為初始值代入以減少迭代次數(shù),。如果在不久以前的工作中已獲得位置,,則可用所存儲的位置作為初始值進(jìn)行迭代,從而減少迭代次數(shù),,縮短解算時間。
如果這樣計算出的結(jié)果不夠精確,,則將解算出的點(diǎn)坐標(biāo)作為新的初始估計值代入,,再重新按上述步驟求解,一般迭代2~3次便可達(dá)到可接受的精度要求,。
當(dāng)僅觀測到4顆衛(wèi)星時,,采用上述算法即可獲得用戶位置和時間偏移的單點(diǎn)解,。若在觀測過程中跟蹤到4顆以上的衛(wèi)星,則出現(xiàn)了冗余觀測量,,可用最小二乘法平差求解獲得用戶位置和時間偏移的估值,,還可采用動態(tài)濾波等抗干擾手段平滑導(dǎo)航解,進(jìn)一步提高導(dǎo)航定位的精度及連續(xù)性,。
2 GPS接收機(jī)的硬件設(shè)計
衛(wèi)星信號由天線接收,直接進(jìn)入射頻前端,。射頻前端具有變頻作用,將射頻信號轉(zhuǎn)換為中頻信號,。中頻信號經(jīng)采樣信號采樣,、量化后,轉(zhuǎn)換為數(shù)字中頻信號,。數(shù)字中頻信號進(jìn)入基帶數(shù)字處理器,,基帶數(shù)字處理器完成衛(wèi)星信號的處理后,解調(diào)出導(dǎo)航電文,,進(jìn)行相應(yīng)的處理后給出所需的定位信息或提供特定的應(yīng)用服務(wù),。
GPS接收機(jī)的基本組成如圖1所示[4-6]。
2.1 基于ATR0600的射頻前端電路設(shè)計
射頻(RF)前端模塊位于接收機(jī)天線與基帶數(shù)字信號處理模塊之間,它通過天線接收所有可見GPS衛(wèi)星信號,經(jīng)前置濾波器和前置放大器的濾波放大后,再與本機(jī)振蕩器產(chǎn)生的正弦波本振信號進(jìn)行混頻而下變頻成中頻(IF)信號,最后經(jīng)模數(shù)轉(zhuǎn)換器將中頻信號離散成包含GPS信號成分的,、頻率較低的數(shù)字中頻信號,,并在此過程中進(jìn)行必要的濾波和增益控制。
本設(shè)計中射頻前端主要由Atmel公司生產(chǎn)的ATR0600芯片及外圍濾波電路構(gòu)成,,它是一個GPS接收機(jī)射頻前端IC芯片,,采用單IF結(jié)構(gòu),芯片上包含有混頻器,、IF放大器,、2 bit的模數(shù)轉(zhuǎn)換器、晶體振蕩器等電路,,芯片具有極高的集成度和很小的功耗(約50 W),。
ATR0600通過外部天線接收1 575.42 MHz的L1 GPS信號,經(jīng)過一個無源帶通濾波器和LNA(低噪聲放大器)進(jìn)行第1級濾波,、放大后,,被外部SAW濾波器進(jìn)行鏡像抑制并對1 800 MHz GSM頻帶信號進(jìn)行隔離。該信號與基準(zhǔn)頻率為23.104 MHz的本振信號進(jìn)行混頻,混頻器將GPS信號下變頻到97.76 MHz中頻,?;祛l后,該信號經(jīng)過LC帶通濾波器和可變益放大器(VGA),,與片上集成的中頻帶通濾波器組合,,完成對GSM干擾信號的濾波。VGA輸出驅(qū)動集成的1.5 bit A/D轉(zhuǎn)換器,將中頻信號轉(zhuǎn)化成4.35 MHz的數(shù)字中頻信號,。
2.2 基于ATR0620的基帶處理器電路
基帶數(shù)字信號處理模塊是GPS接收機(jī)的核心部分,它通過處理射頻前端所輸出的數(shù)字中頻信號,,復(fù)制出與接收到的衛(wèi)星信號相一致的本地載波和本地偽碼信號,從而實(shí)現(xiàn)對GPS信號的捕獲與跟蹤,并且從中獲得GPS偽距和載波相位等測量值以及解調(diào)出導(dǎo)航電文,。
基帶數(shù)字信號處理模塊通常是硬件與軟件相結(jié)合的有機(jī)體,,其中載波解調(diào)和C/A碼解擴(kuò)通常是由ASIC硬件形式的數(shù)字信號處理器來完成的,而在微處理器中運(yùn)行的跟蹤環(huán)路控制軟件通過計算來調(diào)節(jié)數(shù)字信號處理器的各種操作,。由Atmel公司生產(chǎn)的ATR0620芯片包含有一個基于ARM7TDMI處理核的16通道相關(guān)器,,它具有高性能的32 bit RISC結(jié)構(gòu),使用16 bit指令系統(tǒng),,能利用ARM7TDMI微控制器核與片上RAM完成GPS16通道相關(guān)器和外圍設(shè)備接口功能,。利用芯片內(nèi)部大量的功能寄存器可以滿足實(shí)時控制應(yīng)用需求。
2.3 GPS接收機(jī)的電路設(shè)計
ATR0600射頻前端為ATR0620提供衛(wèi)星信號,、主時鐘信號和其他一些控制信號,而ATR0620為ATR0600提供采樣信號,。圖2為利用ATR0600和ATR0620芯片設(shè)計的GPS接收機(jī)方框圖。
2.4 存儲模塊及通信接口
選用Cypress公司生產(chǎn)的CY7C1041,,由片選信號NSCS[I]選通來擴(kuò)展SRAM,,容量為4 MB。Flash則選用ST公司的4 MB容量的SST39VF400芯片,,由片選信號NSCS[0]選通,。
接收機(jī)中設(shè)計了兩種通信接口:一種是JTAG調(diào)試接口,連接JTAG仿真器進(jìn)行開發(fā)調(diào)試,,下載用戶程序,;另一種是RS232通信串口,用于與主機(jī)通信,。
3 GPS接收機(jī)的軟件設(shè)計
GPS的用戶設(shè)備主要由接收機(jī)硬件和處理軟件組成,。用戶通過用戶設(shè)備接收GPS衛(wèi)星信號,經(jīng)信號處理而獲得用戶位置,、速度等信息,,最終達(dá)到利用GPS進(jìn)行導(dǎo)航和定位的目的。GPS接收機(jī)軟件的處理流程如圖3所示,。程序包含匯編語言程序(用于引導(dǎo)和系統(tǒng)初始化)和C語言應(yīng)用程序(用于主要的導(dǎo)航定位計算)兩部分,。軟件整體采用并行任務(wù)結(jié)構(gòu),由相關(guān)器產(chǎn)生的累加數(shù)據(jù)IRQ中斷信號進(jìn)行任務(wù)切換的驅(qū)動,,在中斷服務(wù)程序中更新偽碼,、載波和數(shù)據(jù)解調(diào)環(huán)路。
GPS接收機(jī)的應(yīng)用軟件根據(jù)不同的用途而有所區(qū)別,,主要包括數(shù)據(jù)采集與分析,、衛(wèi)星位置計算,、時間推算,、差分定位和動態(tài)定位等程序,。本文設(shè)計的GPS接收機(jī)上的程序主要在ARM—μCLinux交叉編譯環(huán)境下用C語言進(jìn)行編寫,通過ARM7 JTAG接口連接JAG仿真器進(jìn)行調(diào)試和移植,。
3.1 初始化/清除模塊
在初始化程序段中要完成對GPS設(shè)備的注冊,設(shè)備節(jié)點(diǎn)的創(chuàng)建和對串口相關(guān)寄存器的初始化,。部分代碼如下:
if((register_chrdev(GPS_MAJOR,GPS_NAME,,&gps_fops))<0)
{//注冊GPS字符設(shè)備
printk(KERN_INFO“[registering of“GPS”is failed]\n”),;
return ret;}
devfs_GPS_dir=devfs_mk_dir(NULL,,“GPS”,,NULL);
devfs_handle=devfs_register(devfs_GPS_dir,“GPS”DEVFS_FL_
DEFAULT,,GPS_MAJOR,,0,S_IFCHR|S_IRUSR|S_IWUSR,,
&GPS_fops,,NULL);
printk(“GPS suecessfully initialized\n”),;
*UCONO=Ox0211,;//串口工作模式定義
*UBDRO=Ox0017;//波特率的選擇相反,,清除模塊函數(shù)
//GPS_Cleanup(),,完成注銷字符設(shè)備
devfs_unregister_chrdev(GPS_MAJOR,GPS_NAME),;
printk(“GPSmoduleremoved\n”),;
3.2 兩個數(shù)據(jù)結(jié)構(gòu)定義
模塊驅(qū)動的最終目的就是取得GPS信息,因此規(guī)范GPS數(shù)據(jù)對數(shù)據(jù)傳遞的可靠性和速率都是有益的。
struct GPS_DATA{
unsigned int hour,;//小時,,24小時制
unsigned int minute;//分
unsigned long Second,;//秒,,精度小數(shù)點(diǎn)后三位
unsigned long latitude;//緯度
unsigned char southornorth,;//緯度屬于南北的標(biāo)志碼
unsigned long longitude,;//經(jīng)度
unsigned char eastorwest;//經(jīng)度屬于東西的標(biāo)志碼
},;//其中包括了在導(dǎo)航系統(tǒng)中所需的幾個重要數(shù)據(jù)
另外還有對驅(qū)動模塊文件操作結(jié)構(gòu)的定義,。即:
static struct file_operations gps_fops={
ead:gps_read,
rite:gps_write,
octl:gps_ioctl,
open:gps_open,,
elease:gps_release
},;//定義了設(shè)備操作映射函數(shù)結(jié)構(gòu)
3.3 驅(qū)動程序的模塊操作
在導(dǎo)航系統(tǒng)進(jìn)入GPS導(dǎo)航模式時,系統(tǒng)首先將GPS模塊注冊到操作系統(tǒng)中,,實(shí)現(xiàn)初始化過程,,再通過gps_open函數(shù)打開設(shè)備。此過程中完成對中斷,、緩沖區(qū)以及定時器等資源的申請,,為GPS數(shù)據(jù)讀取做準(zhǔn)備。通過gps_write()向模塊寫命令字來自主地選擇工作模式,,gps_ioctl()則是選擇串口傳輸模式,,使之與GPS模塊傳輸模式相匹配。之后的應(yīng)用程序?qū)?chuàng)立一個獨(dú)立的進(jìn)程gps_read()來讀取GPS數(shù)據(jù),,該進(jìn)程沒有數(shù)據(jù)時將一直處于睡眠狀態(tài)等待數(shù)據(jù),,有數(shù)據(jù)時進(jìn)入中斷處理模塊,完成數(shù)據(jù)的分析,,生成GPS_DATA數(shù)據(jù)結(jié)構(gòu),,供導(dǎo)航使用。這個進(jìn)程是隨著導(dǎo)航模式的切換而終止的,,此時除了關(guān)閉進(jìn)程外,,還需調(diào)用gps_release()釋放申請的所有資源,并關(guān)閉設(shè)備,。
4 性能測試
本設(shè)計的GPS接收機(jī)采用內(nèi)嵌ARM7核的GP4020芯片作為接收機(jī)的數(shù)字基帶處理器,。通過實(shí)驗(yàn)調(diào)試,消除了以往微處理器的瓶頸效應(yīng),,具有體積小,、功耗低、性能高的特點(diǎn),。其主要性能指標(biāo)如下:
(1)最大數(shù)據(jù)更新速率4 Hz,;
(2)定位精度3 m CEP;
(3)功率消耗<0.1 W,;
(4)信號重新捕獲時間<1 s,;
(5)動態(tài)范圍<4 g;
(6)首次定位時間:熱啟動時間為2.5 s,;冷啟動時間為41 s,;“暖”啟動時間為31 s。
利用Atmel公司生產(chǎn)的ATR06XX芯片組和ARM的高效處理控制技術(shù)精心設(shè)計的超外差式GPS接收機(jī)可達(dá)到很高的接收靈敏度,、頻率選擇性和較大的動態(tài)范圍,,并具有結(jié)構(gòu)簡單,、體積小、重量輕,、省電等優(yōu)點(diǎn),。最后經(jīng)整機(jī)測試,指標(biāo)達(dá)到設(shè)計要求,。如在此基礎(chǔ)上對硬件中的天線部分和軟件中的程序設(shè)計等加以修改,,此方案可應(yīng)用于我國的“北斗一號”衛(wèi)星導(dǎo)航定位系統(tǒng),。因此,,本設(shè)計具有廣闊的應(yīng)用范圍。
參考文獻(xiàn)
[1] 謝鋼.GPS原理與接收機(jī)設(shè)計[M].北京:電子工業(yè)出版社,,2009.
[2] 黃智偉.GPS接收機(jī)電路設(shè)計[M].北京:國防工業(yè)出版社,,2006.
[3] 黃繼海,楊凱.ARM系統(tǒng)應(yīng)用設(shè)計[M].鄭州:防空兵指揮學(xué)院,,2007.
[4] 劉基余.GPS衛(wèi)星導(dǎo)航定位原理與方法[M].北京:科學(xué)出版社,,2003.
[5] 李洪濤,許國昌.GPS應(yīng)用程序設(shè)計[M].北京:科學(xué)出版社,,2000.
[6] 周立功.ARM微控制器基礎(chǔ)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,,2003.