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