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