文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.016
中文引用格式: 左小普,楊祖芳,潘偉,等. 基于FPGA的GPS基帶產生與控制模塊設計[J].電子技術應用,2017,43(6):64-67.
英文引用格式: Zuo Xiaopu,Yang Zufang,Pan Wei,et al. The design and realization of GPS baseband generation and control module based on FPGA[J].Application of Electronic Technique,2017,43(6):64-67.
0 引言
隨著GPS使用范圍日趨廣泛,其安全問題也備受關注。信息化作戰情況下,對敵對目標衛星導航定位系統進行干擾,阻止其有效定位,成為了重要的作戰手段。隨著干擾與抗干擾領域的研究,GPS定位系統對抗干擾的要求越來越高,如何對抗種種人為的和非人為的干擾成為研究熱點。目前研究產生的基帶碼多為C/A碼,且多為單路輸出,產生多種偽碼并輸出多路GPS信號是發展方向。因此,本文研究產生多路GPS信號同時輸出和利用FPGA生成C/A碼、P碼。FPGA在硬件系統設計中具有很高的靈活性和可靠性。基帶碼的結構是可以預測的,方便利用FPGA重復產生并處理。利用FPGA產生基帶碼,可以研究基帶碼又可以探究新碼型,降低了系統的復雜度,提高了系統的集成度。
1 系統總體方案
本文主要包括硬件和軟件兩部分,軟件部分指用Verilog產生基帶碼和控制信號及C程序控制DDS產生載波。硬件電路由FPGA、C8051控制電路和輔助電路組成。由外部向FPGA提供時鐘信號和復位信號,FPGA用于產生基帶碼、增益控制信號及可控放大信號,其他預留的輸入輸出口留作其他用途。C8051用于向DDS提供控制信號,DDS參考時鐘由外部晶振提供。系統總體設計如圖1所示。
系統分為基帶模塊與射頻調制模塊兩部分。基帶模塊生成基帶信號,經調制模塊調制得到L1和L2,其中載波L1的頻率f1為1 575.42 MHz,載波L2的頻率f2為1 227.60 MHz。每顆GPS衛星用兩個L波段頻率L1和L2發射載波無線電信號。
本文主要介紹基帶模塊。外部提供215 MHz的時鐘信號供給基帶碼發生器,同時外部復位信號控制基帶碼發生器,用于向L1和L2頻點的射頻調制部分提供C/A碼和P碼以及增益控制信號。圖1中,1-2表示可以提供一路用于二進制相移鍵控調制(Binary Phase Shift Keying,BPSK),也可提供串并轉換之后的兩路用于正交相移鍵控調制(Quadrature Phase Shift Keying,QPSK)。C8051提供控制DDS生成正弦波信號,經倍頻得到L1和L2頻點的載波用于載波調制。FPGA還提供可控放大信號。
2 基帶模塊的實現
2.1 基帶產生模塊的總體設計
基帶產生模塊的原理圖如圖2所示。由外部時鐘提供的時鐘信號經整數分頻,得到的1.023 MHz時鐘給C/A碼發生器,再經L1串并轉換得到L1路C/A碼及其IQ兩路輸出;得到的10.23 MHz時鐘送到P碼發生器,一路P碼經L1串并轉換得到L1路P碼的IQ兩路輸出;另一路P碼經L2串并轉換得到L2路P碼的IQ兩路輸出,C/A碼和P碼也可直接輸出。
2.2 分頻模塊
分頻模塊有兩個:用于提供C/A碼時鐘的210分頻和P碼時鐘的21分頻,分別得到約1.023 MHz和10.23 MHz的時鐘信號。
2.3 C/A碼產生模塊
C/A碼由一個10級最長線性反饋移位寄存器(maximum,m)序列對產生,即一個C/A碼的長度是210-1=1 023碼片。C/A碼的時鐘為1.023 MHz,周期為1 ms[1]。在一個C/A碼碼片時間內,載波L1重復1 540周。如圖3所示,C/A碼發生器由G1和G2兩個移位寄存器構成,兩個移位寄存器的輸出相異或得到C/A碼輸出。X1歷元到來時兩個寄存器全部置1。
本設計中使用組合邏輯電路,輸入信號有C/A碼時鐘clk、偽碼sat_PRN_ID、復位信號reset、C/A碼輸出out。偽碼號取21,用Modelsim仿真的結果如圖4、圖5所示。
如圖4所示,C/A碼輸出1,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,1…,偽碼為21的C/A碼前十位的8進制,表示為1 746,即二進制的1111100110,C/A碼輸出正確。如圖5所示,在第1 023個時鐘周期之后, C/A碼輸出恢復到開始的1111100110,符合C/A碼長度為1 023這個特征。因此,C/A碼發生器設計正確。
2.4 P碼產生模塊
除C/A碼之外,P碼是GPS信號中的另一種偽碼,它同時調制在L1和L2載波信號上。P碼的周期為7天,碼率為10.23 MS/s,碼寬Tp約等于0.1 μs。加密后的P碼成為Y碼,它只有特定的用戶才可破譯。
如圖6所示,偽隨機噪聲碼(Pseudo Random Noise,PRN)為i的衛星上產生的P碼Pi是序列X1與序列X2i的模2和。序列X1的生成電路是由2個十二級反饋移位寄存器構成的,每個十二級反饋移位寄存器各能產生一個周期為4 095碼片的最長線性反饋移位寄存器(maximum,m)序列,而這兩個m序列通過截短,各自形成周期為4 092碼片的序列X1A和周期長為4 093碼片的序列X1B。截短碼X1A和X1B異或相加,生成周期為4 092×4 093的長碼。長碼再經過截短,變成周期為1.5 s、長為15 345 000碼片的序列X1。
與產生X1序列的過程相類似,另外2個十二級反饋移位寄存器最后產生長為15 345 037碼片的序列X1,而序列X2i是X2的平移等價碼。對于PRN i,平移等價序列X2i是由X2即延時i個碼片后得到的,其中i是1~37的整數。
序列X1與X2i異或相加后所得序列的周期長約為38星期的P碼,經過截短,得到周期為一星期長的P碼Pi。GPS采用了37種不同的平移等價碼X2i,進而獲得37種結構不同、周期均為一星期的P碼Pi。GPS星座中的各顆衛星產生一個互不相同的P碼,從而實現碼分多址[2]。
P碼發生模塊包含4個十二級反饋移位寄存器X1A、X1B、X2A、X2B,計數器暫停恢復信號resume1a、resume1b、resume2a、resume2b,計數器count1a、count1b、count2a、count2b決定其值。flag1a、flag1b、flag2a、flag2b計數分別決定4個寄存器是否復位。svndaysrst為一周復位信號,當zcount計數達到403 200時,svndaysrst置1,所有計數器復位,svndaysrst復位與rst復位的初值一樣。P碼輸出由X1輸出與X2移位輸出異或得到,add為延時使能信號,由flag2a和count2a決定。
P碼的仿真主要用于驗證P碼的初始狀態以及寄存器復位、計數復位、相移等功能是否實現,偽碼號取5,用Modelsim仿真P碼發生器的結果如圖7所示。
根據仿真圖7,在復位信號rst為1時載入初值,復位信號變為0后第一個時鐘上升沿到來,X1A輸出0,0,1,0,0,1,0,0,1,0,0,0,X1B輸出0,1,0,1,0,1,0,1,0,1,0,0,X2A輸出1,0,0,1,0,0,1,0,0,1,0,1,X2B輸出0,1,0,1,0,1,0,1,0,1,0,0;P碼輸出1,0,0,0,1,1,1,1,1,1,1,1……,前12位轉換為8進制是4 377,因此P碼的初始輸出正確。
圖8是P碼的計數復位仿真,寄存器X1A和X2A在4 092個基碼之后復位,寄存器X1B和X2B在4 093個基碼后復位,復位后X1A、X1B、X2A、X2B輸出初始值,與此同時代表其循環次數的計數器加1。仿真圖完全符合這一特征,因此P碼的計數復位正確。
X1B寄存器在循環了4 093個X1B后暫停,直到X1A循環了3 750個X1A后才恢復移位。X2B寄存器與之類似,但是在X1A寄存器完成3 750個循環之后,仍維持37個基碼時間不動,X2A寄存器在3 750個循環之后也保持37個基碼時間不動,之后由一周復位信號使其恢復,如圖9所示。
由圖9可以看出,在X1B暫停時,其輸出保持不變,暫停時刻flag1aout為3 749,恢復時flag1aout為4 092,相隔343個基碼時間。X2B暫停時,其輸出亦保持不變,flag1bout恢復計數后,從1計數到37,X2A和X2B正好開始移位輸出,符合P碼的原理。當X1A循環3 750個循環后zcountout加1,當zcountout為403 200后復位。綜上所述,P碼發生器的設計正確。
對于上述P碼產生程序,PRN號確定時,輸出的P碼由4個寄存器的值以及計數器決定,如果知道這些值并作為初值輸入到程序中,就可以輸出任意時刻的P碼。
3 控制模塊的實現
3.1 載波發生模塊
載波發生器采用ADI公司的集成DDS芯片AD9956,通過對頻率控制字(Frequency Tuning Word,FTW)和分頻字R的控制,能夠輸出特定的頻率值[3]。
輸出信號頻率與頻率控制字關系如下:
式中,fo表示輸出信號的頻率;FTW表示48位的控制字,取值范圍是0~247,R表示分頻系數,可取1、2、4、8;fREFCLK表示輸入時鐘390 MHz。
3.2 載波發生控制模塊
載波發生控制模塊采用C8051F,向DDS提供14個控制接口,用于對DDS提供控制信號的調諧數據。根據后續調制電路的要求,需要獲得70 MHz的信號用于得到L1頻段的載波,60 MHz的信號用于得到L2頻段的載波,因此需分別對產生L1頻段和L2頻段的DDS進行控制。
3.3 增益控制模塊
對載波及已調信號增益的控制,主要由FPGA提供增益控制信號實現,用芯片HMC468LP3和HMC273MS10G配合實現。只需對電平控制就可實現增益的改變。
4 系統測試與分析
4.1 測試儀器與設備
信號源采用Rohde & Schware SMB100A Signal Generator,頻率范圍為9 kHz~6 GHz。頻譜儀采用Rohde & Schware FSC6.Spectrum,頻率范圍為9 kHz~6 GHz。
4.2 C/A碼頻譜分析
在頻域,一個碼速率為1.023 MHz的隨機序列的功率譜函數在1.023 MHz的整數倍處為0。C/A碼雖然不是完全隨機的,但是其功率譜與隨機序列相似[4]。
圖10為調制之后的頻譜,載波頻段L1為1 575.42 MHz,第一個零點M2的頻率為1 576.43 MHz,與中心頻率L2相差約1.023 MHz。可以看出,第一副瓣相對于主瓣輸出功率衰減約15 dBm,與實際的GPS信號基本符合。
4.3 P碼頻譜分析
如圖11所示,調制之后的頻譜中心頻率為1 575.42 MHz(M2點處),之后的第一個零點M1為1 585.65 MHz,相隔10.23 MHz。如圖12所示,調制之后的頻譜中心頻率為1 227.6 MHz,之后的第一個零點M1為1 237.83 MHz,相隔10.23 MHz,達到要求。
5 結論
GPS基帶信號可以通過調制而依附在正弦形式的載波上,然后衛星將調制后的載波信號播發出去。因此,GPS基帶信號的研究對于導航定位設備的研發、檢測及生成式干擾信號的研究具有重要的應用價值。本文提出的基于FPGA產生的GPS基帶信號具有輸出增益可調、輸出頻點可控,可以為射頻模塊提供多路基帶信號及控制信號等特點。
參考文獻
[1] 王偉權,劉昌孝.用FPGA實現GPS的C/A碼發生器[J].桂林電子科技大學學報,2006,26(5):347-350.
[2] 謝鋼.GPS原理與接收機設計[M].北京:電子工業出版社,2009.
[3] Rochester Electronics.AD9956 data sheet[Z].2013.
[4] 瞿鐵錨.基于FPGA的GPS星座模擬器的研究與開發[D].南京:南京航空航天大學,2007.
[5] 王立賓,賀宏.GPS M碼、C/A碼和P碼性能比較研究[J].測控遙感與導航定位,2008,38(4):34-36.
作者信息:
左小普1,楊祖芳2,潘 偉3,鄭建生1,3
(1.武漢大學 電子信息學院,湖北 武漢430072;2.武漢工商學院 信息工程學院,湖北 武漢430065;
3.武漢大學衛星導航定位技術研究中心,湖北 武漢430079)