龔文浩,孫國良,黃智剛
(北京航空航天大學(xué),北京 100191)
偽衛(wèi)星是一種布設(shè)在地面的無線電定位信號發(fā)射器,通常發(fā)射類GPS信號,其定位原理與衛(wèi)星定位相同,使用4顆以上的偽衛(wèi)星即可組成偽衛(wèi)星定位網(wǎng)絡(luò),主要用于區(qū)域定位。目前,全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS)在生活中各個領(lǐng)域得到廣泛應(yīng)用,但是在森林、峽谷、礦井坑道或者城市建筑內(nèi)等環(huán)境中,受信號遮擋等影響無法實(shí)現(xiàn)定位。針對上述場景,偽衛(wèi)星定位成為了一種方便、可行的方案,具有廣泛的應(yīng)用價值。
本文給出了基于AD9361實(shí)現(xiàn)偽衛(wèi)星信號發(fā)射器的設(shè)計(jì)方案。AD9361[1]作為 ADI公司設(shè)計(jì)的一款高集成度、高靈活度以及可編程的高性能射頻收發(fā)器,擁有兩個相同且獨(dú)立控制的發(fā)射通道,每個通道提供了必要的數(shù)字信號處理、數(shù)模轉(zhuǎn)換、射頻模塊等,以實(shí)現(xiàn)直接變頻系統(tǒng)。數(shù)字信號處理部分擁有可控制、可編程的128抽頭FIR(Finite Impulse Response)濾波器以及多級插值濾波器,完成對數(shù)字信號的濾波、數(shù)據(jù)速率插值等處理;數(shù)模轉(zhuǎn)換器采用12位量化,最高采樣率61.44MHz;射頻模塊的工作頻率范圍是70 MHz至6.0 GHz,涵蓋大部分特許執(zhí)照和免執(zhí)照頻段,另外 AD9361還擁有90dB的功率控制范圍,這將允許偽衛(wèi)星系統(tǒng)針對不同應(yīng)用情景需求靈活設(shè)置信號發(fā)射頻段與發(fā)射功率;此外AD9361支持的通道帶寬范圍為200 kHz至56 MHz,足夠滿足無線電定位信號通常的帶寬要求。
本文將分別介紹基于上述方案的偽衛(wèi)星信號發(fā)射器系統(tǒng)架構(gòu)、系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)以及對信號發(fā)射器的測試分析等。
本設(shè)計(jì)中,偽衛(wèi)星信號發(fā)射器主要由SoC芯片、AD9361、衛(wèi)星導(dǎo)航數(shù)據(jù)模塊、上位機(jī)等組成,系統(tǒng)架構(gòu)如圖1所示。
圖1 偽衛(wèi)星信號發(fā)射器系統(tǒng)結(jié)構(gòu)圖
該信號發(fā)射器由AD9361實(shí)現(xiàn)射頻信號的產(chǎn)生及控制;通過Xilinx ZYNQ ZC7020 CLG400型號SoC芯片實(shí)現(xiàn)信號源的基帶設(shè)計(jì)。ZC7020芯片的基本架構(gòu)分為兩部分,其一,Processing System(一般簡稱為 PS),即處理器(ARM)部分,其二,Programmable Logic(一般簡稱為PL)即可編程邏輯(FPGA)部分[3]。PL部分主要負(fù)責(zé)偽衛(wèi)星信號發(fā)射器的數(shù)字基帶設(shè)計(jì)[4],然后利用AD9361模塊將數(shù)字基帶信號進(jìn)行濾波、數(shù)模轉(zhuǎn)換、上變頻等一系列處理,產(chǎn)生所需射頻信號;對AD9361的控制由PS部分負(fù)責(zé)實(shí)現(xiàn),其中AD9361的部分配置信息通過上位機(jī)發(fā)送給 PS部分,這樣實(shí)現(xiàn)了通過上位機(jī)對AD9361關(guān)鍵參數(shù)的靈活設(shè)置。
同時,信號發(fā)射器采用了高精度天寶GPS模塊提供的時間和位置信息作為偽衛(wèi)星的時間和空間基準(zhǔn)。通過GPS模塊的1PPS信號實(shí)現(xiàn)與世界協(xié)調(diào)時(Coordinated Universal Time,UTC)整秒時刻嚴(yán)格對齊,具體的時刻信息通過 RS232串口輸出的TSIP協(xié)議數(shù)據(jù)獲取。該時間同步方式將偽衛(wèi)星時間與 UTC時間相同步,為多臺偽衛(wèi)星發(fā)射器的同步提供了基礎(chǔ)。
偽衛(wèi)星信號由導(dǎo)航電文、偽隨機(jī)碼和載波三部分構(gòu)成。其中,導(dǎo)航電文提供了偽衛(wèi)星位置以及時間信息,偽隨機(jī)碼實(shí)現(xiàn)了對導(dǎo)航電文的擴(kuò)頻處理,并對數(shù)字載波進(jìn)行二進(jìn)制相移鍵控(Binary Phase Shift Keying,BPSK)調(diào)制;調(diào)制后的數(shù)字中頻信號由FPGA控制的AD9361轉(zhuǎn)換為射頻信號。
導(dǎo)航電文包含了定位所需的關(guān)鍵信息,是偽衛(wèi)星定位中不可或缺的一部分。本設(shè)計(jì)中電文用于主要包含了時間、偽衛(wèi)星三維位置等信息。電文速率采用50bps,周期為6s。其結(jié)構(gòu)如圖2所示。
電文以一個幀的結(jié)構(gòu)編排成數(shù)據(jù)流,共包含10個字,每個字包含30bits,最后6bits為奇偶校驗(yàn)位(規(guī)則參考GPS電文)。所設(shè)計(jì)偽衛(wèi)星導(dǎo)航電文中每個字前24bits詳情如表1所示。
第一個字主要用于電文幀的同步,其中第1~8bits為同步碼“10001011”,該同步碼每隔6s出現(xiàn)一次。第二個字的第1~14bits為日內(nèi)時計(jì)數(shù),日內(nèi)時計(jì)數(shù)由本地計(jì)數(shù)器提供,每六秒計(jì)數(shù)器加一,本地計(jì)數(shù)器的初始值由偽衛(wèi)星信號發(fā)射器開機(jī)后所得到時間基準(zhǔn)計(jì)算所得,對應(yīng)于每日零時計(jì)數(shù)器值為零。后面的幾個字中包含了當(dāng)前的年月日以及偽衛(wèi)星的經(jīng)緯高,該日期與日內(nèi)時計(jì)數(shù)相結(jié)合便能得到電文幀發(fā)射的準(zhǔn)確時間;偽衛(wèi)星三維位置同樣由衛(wèi)星導(dǎo)航數(shù)據(jù)模塊提供,并且實(shí)時更新,更新頻率為每分鐘一次。
圖2 偽衛(wèi)星信號電文結(jié)構(gòu)
表1 偽衛(wèi)星導(dǎo)航電文詳細(xì)格式
這樣的電文結(jié)構(gòu)設(shè)計(jì),使得只要衛(wèi)星導(dǎo)航數(shù)據(jù)模塊能夠接收衛(wèi)星信號并準(zhǔn)確輸出當(dāng)前時間、位置等,則偽衛(wèi)星信號發(fā)射器便可在短時間內(nèi)發(fā)射帶有準(zhǔn)確時間、位置信息的導(dǎo)航電文。這將允許偽衛(wèi)星在不同區(qū)域、隨時布置組網(wǎng),方便快速的用于區(qū)域定位。此外,當(dāng)前電文設(shè)計(jì)中仍保留約70bits備用,可滿足鐘差等其他信息使用。
偽隨機(jī)碼具有良好的自相關(guān)和互相關(guān)性能,在無線電定位中的主要作用為信號擴(kuò)頻處理與碼分多址。本設(shè)計(jì)中偽隨機(jī)碼采用了GPS的C/A碼,碼率1.023Mcps,周期1ms[8]。C/A生成主要由有兩個十級反饋移位寄存器和一個相位選擇器組成,首先由兩個反饋移位寄存器產(chǎn)生一對碼率為1.023Mcps、周期長為1023碼片的m序列G1和G2,這兩個十級m序列的特征多項(xiàng)式如下:
然后相位選擇器通過選擇G2發(fā)生器中的兩個不同的寄存器單元異或輸出,再與G1輸出異或即可產(chǎn)生不同編號的C/A碼。
數(shù)字基帶部分的主時鐘采用 51.15MHz。電文速率為 50bps,電文產(chǎn)生模塊中的時鐘由主時鐘1023000分頻得到;偽碼速率為 1.023Mcps,偽碼產(chǎn)生模塊中的時鐘由主時鐘 50分頻得到;數(shù)字載波頻率 5.115MHz,產(chǎn)生數(shù)字載波最常用的方式為直接數(shù)字式頻率合成,這種方式雖然簡單靈活而且精度較高,但是通常情況下這種方式所產(chǎn)生的載波頻率會存在微小的頻差,隨著時間的累積,會造成數(shù)字載波與電文、偽碼的相位不對齊。因此,本設(shè)計(jì)中采用直接分頻的方式,將一個周期正弦波/余弦波從零相位開始等分十個相位點(diǎn)分別計(jì)算對應(yīng)值,然后利用主時鐘沿依次讀取上述值,即可產(chǎn)生精確的5.115MHz的數(shù)字載波。
將導(dǎo)航電文與偽隨機(jī)碼進(jìn)行異或運(yùn)算,其結(jié)果對5.115MHz的低中頻數(shù)字載波進(jìn)行BPSK調(diào)制,完成數(shù)字基帶信號的產(chǎn)生。AD9361上變頻采用了正交上變頻的方式,因此需產(chǎn)生有 I、Q兩路數(shù)字基帶信號。通過 Modelsim軟件數(shù)字基帶信號進(jìn)行仿真,結(jié)果如圖3所示。
圖3 偽衛(wèi)星基帶信號仿真結(jié)果
圖3 中,code是導(dǎo)航電文,carrierWave_cos、carrierWave_sin為數(shù)字載波,navidata導(dǎo)航電文,signal_cos 、signal_sin為經(jīng)BPSK調(diào)制后的低中頻數(shù)字信號;從上圖可以看出,調(diào)制后的信號相位反轉(zhuǎn)點(diǎn)準(zhǔn)確,偽碼、導(dǎo)航電文以及數(shù)字載波的相位嚴(yán)格對齊。
AD9361負(fù)責(zé)偽衛(wèi)星信號發(fā)射器中數(shù)字基帶信號向射頻信號的轉(zhuǎn)換。AD9361的控制通過ZC7020芯片的PS部分完成,主要通過一組SPI接口,對AD9361內(nèi)部大量寄存器寫入值,以完成對AD9361的控制[5]。
表2 AD9361參數(shù)配置函數(shù)
ADI公司提供了基于Xilinx-Linux的AD9361開發(fā)程序包,其中包含了大量的AD9361配置函數(shù)。在對AD9361寄存器進(jìn)行配置時,首先調(diào)用程序包提供的初始化主函數(shù),并對其中某些參數(shù)進(jìn)行修改;其中包含,本設(shè)計(jì)中 AD9361使用的晶振頻率為26MHz,相應(yīng)的將其中參考時鐘頻率reference_clk_rate修改為 26000000;將frequency_division_duplex_mode_enable設(shè)置為 1,使用FDD工作模式;將lvds_mode_enable設(shè)置為1,使用LVDS接口方式等等。通過該初始化主函數(shù)能夠完成對大部分寄存器的初始化配置。然后再對某些關(guān)鍵參數(shù)進(jìn)行單獨(dú)配置,其中部分參數(shù)配置函數(shù)如表2所示。
為了方便對AD9361關(guān)鍵參數(shù)的靈活設(shè)置,本設(shè)計(jì)使用一臺PC機(jī)作為上位機(jī),通過以太網(wǎng)接口與 PS相連,利用UDP協(xié)議[6]向 PS發(fā)送AD9361的配置信息;將PS端作為UDP通信的服務(wù)器端,設(shè)置固定的端口號,上位機(jī)端作為客戶端。上位機(jī)中控制程序在 MATLAB中實(shí)現(xiàn),將發(fā)送信息封裝成特定格式的數(shù)據(jù)包,數(shù)據(jù)包結(jié)構(gòu)如圖4所示,使用udp函數(shù)向服務(wù)器端的IP地址與端口號發(fā)送數(shù)據(jù)包;在PS中LINUX環(huán)境下,使用socket函數(shù)創(chuàng)建服務(wù)器端套接字,利用bind函數(shù)將套接字綁定到服務(wù)器的網(wǎng)絡(luò)地址上,再利用recvfrom函數(shù)接收數(shù)據(jù)。將接收到的數(shù)據(jù)進(jìn)行包頭識別、ID識別,讀取出相應(yīng)的配置信息,使用對應(yīng)的配置函數(shù)完成對AD9361相關(guān)參數(shù)的配置。
圖4 數(shù)據(jù)包結(jié)構(gòu)
包頭為 0xF0,作為數(shù)據(jù)包的識別碼;ID位不同配置信息的識別碼;后面數(shù)據(jù)為 ID對應(yīng)的配置數(shù)據(jù)。
利用頻譜儀、標(biāo)準(zhǔn)導(dǎo)航接收機(jī)對偽衛(wèi)星信號發(fā)射器進(jìn)行測試,從頻譜、導(dǎo)航可用性兩個角度驗(yàn)證信號發(fā)射器所發(fā)射信號的準(zhǔn)確性。
將 AD9361射頻部分的本振 LO依次設(shè)置為71.61MHz、2.450085GHz,則實(shí)際發(fā)射信號中頻頻率分別為 76.725MHz、2.4552GHz,發(fā)射功率設(shè)置為-30dBm。通過惠普HP8595E頻譜儀對射頻信號進(jìn)行頻譜分析,分別將頻譜儀中心頻率設(shè)置為76.725MHz、2.4552GHz、,帶寬為10MHz,解析帶寬(RBW)為 100kHz,視頻帶寬(VBW)為 10kHz[9]。信號頻譜如圖5所示。
圖5 信號頻譜
圖6 導(dǎo)航接收機(jī)捕獲跟蹤測試
經(jīng)過測試,在兩個不同頻段,射頻信號頻譜均滿足兩側(cè)對稱,主瓣帶寬 2.046MHz,第一旁瓣相對于主瓣功率衰減約15dBm,因此偽衛(wèi)星信號發(fā)射器在不同頻段發(fā)射信號頻譜準(zhǔn)確。
本設(shè)計(jì)中,偽衛(wèi)星信號具有與GPS民用信號相同的偽隨機(jī)碼,電文幀結(jié)構(gòu)與GPS電文子幀相似,因此將本發(fā)射器信號載波頻點(diǎn)設(shè)置為 1575.42MHz時,能夠通過GPS接收機(jī)對信號完成捕獲、跟蹤與電文解算。本測試采用某型標(biāo)準(zhǔn)GNSS接收機(jī)進(jìn)行。
將發(fā)射信號偽隨機(jī)碼編號設(shè)置為 2,中心頻率設(shè)置為1575.42MHz,發(fā)射功率衰減至約-130dBm,用該衛(wèi)星導(dǎo)航接收機(jī)進(jìn)行處理。接收機(jī)處理結(jié)果如圖6所示。從圖中可以看出,接收到了衛(wèi)星編號為2的信號,多普勒頻率為 30Hz,信號載噪比45.0dBHz;“LOCK”結(jié)果為“ATBP”,表示已經(jīng)完成了捕獲(Acquisition)、跟蹤(Tracking)、位同步(Bit synchronization)、前導(dǎo)碼(Preamble)識別。由此表明偽衛(wèi)星信號發(fā)射器所產(chǎn)生的射頻信號準(zhǔn)確,信號質(zhì)量較高。
為滿足偽衛(wèi)星定位的需求,本文設(shè)計(jì)并實(shí)現(xiàn)了一種以FPGA為控制核心、AD9361為射頻模塊的偽衛(wèi)星信號發(fā)射器。該信號發(fā)生器能夠通過上位機(jī)程序方便的控制射頻信號中心頻率,以滿足不同應(yīng)用場景下對信號頻段的需求;整體設(shè)計(jì)結(jié)構(gòu)簡單,易于后續(xù)在FPGA上對基帶信號的結(jié)構(gòu)、體制進(jìn)行改進(jìn)。通過對信號頻譜、接收機(jī)處理等測試,證明了所設(shè)計(jì)實(shí)現(xiàn)的偽衛(wèi)星信號發(fā)生器能夠發(fā)射準(zhǔn)確的無線電定位信號。
參考文獻(xiàn):
[1]Analog Devices Inc. RF Agile Transceiver AD9361[EB/OL]. 2013, www.analog.com.
[2]李杰. 無線通信中的高階QAM實(shí)現(xiàn)技術(shù)研究[D]. 電子科技大學(xué), 2016.
[3]何賓. Xilinx ALL Programmable Zynq-7000 SoC設(shè)計(jì)指南[M]. 北京: 清華大學(xué)出版社, 2013.
[4]姚銘. 基于FPGA的偽GPS衛(wèi)星信號的研究與實(shí)現(xiàn)[D].湖北工業(yè)大學(xué), 2009.
[5]Analog Devices Inc. AD9361 Reference Manual UG-570[EB/OL]. 2014, www.analog.com.
[6]周麗娟. 基于UDP協(xié)議的Socket網(wǎng)絡(luò)編程[J]. 電腦知識與技術(shù), 2008, 4(34):345-346.
[7]Trimble ICM SMT 360? & RES SMT 360?Multi-GNSS Timing Modules User Guide [Z]. 2014.
[8]謝鋼. GPS原理與接收機(jī)設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社, 2009.
[9]李江雪. 頻譜分析儀最佳工作狀態(tài)的設(shè)置[J]. 中國科技信息, 2010(21):23-24.