王 歡,郭策安
(沈陽理工大學 裝備工程學院,遼寧 沈陽 110159)
1973年,美國國防部研究建立了新一代衛星導航系統“Navigation Satellite Timing and Ranging/Global Positioning System”即“授時與測距導航系統”,通常稱為“全球衛星定位系統”,簡稱“GPS”[1].GPS系統定位精度高,全天候開放,近年來在導航定位等多方面得到了廣泛的應用.GPS領域中任何研究必須首先建立真實可靠的GPS衛星信號,然后才能推廣到應用中.而真實的GPS衛星信號是高頻RF(Radio Frequency)信號,并夾雜于不斷變化的環境噪聲中,其硬件模擬方法需要考慮高頻信號的傳播、延時、多徑干擾等因素,導致其硬件模擬設備非常復雜,而且無法模擬多種環境下的GPS衛星信號.而基于現場可編程門陣列(Field Programmable Gate Array,FPGA)[2]的GPS衛星導航信號發生器采用Xilinx公司VirtexⅣ系列的XC3S500e-4pq208芯片,加載不同的應用程序,可以很好地解決上述問題.
本文通過分析GPS信號發生器中偽隨機序列對載波的調制,以及偽隨機序列與基帶速率進行異或運算后生成復合碼的過程,運用擴頻通信的生成原理和技術理論,對GPS衛星導航信號發生器進行設計,并采用Modelsim軟件進行仿真.這一研究有利于優化GPS信號發生器中數字信號基帶處理過程,進一步提高其抗干擾性和保密性,對開發GPS信號發生器產品以及相關領域的研究工作都具有重要的意義.
本文基于FPGA,主要對分頻模塊、Gold碼發生器模塊和二進制相移鍵控(Binary Phase Shift Keying,BPSK)調制模塊進行設計,在實現較為精確的偽隨機碼同步后,用擴頻模塊進行頻譜拓寬,加入載波,并采用BPSK的調制方式進行調制.頂層模塊的原理如圖1所示.

圖1 頂層模塊原理圖
對設計程序進行綜合、仿真等一系列操作后,可將具有特定功能的設計實體定義為一個元件.頂層模塊的主要功能是通過元件例化[3],描述元件之間端口界面的連接狀況,把電路設計元件或子模塊連接成一個完整的電路.圖2所示為綜合FPGA程序后得到的頂層模塊的綜合原理圖.

圖2 頂層模塊的綜合原理圖
在圖2中,左邊的輸入信號包括時鐘信號Clk、復位信號Reset,右邊的輸出信號為Out1和Sine(5∶0).Out1是偽隨機碼與基帶速率異或運算后的輸出,Sine(5∶0)是直接數字式頻率合成器(Direct Digital Synthesizer,DDS)輸出的正弦載波經BPSK調制的信號波.
時鐘分頻器[4]一般分為如下兩種:一種是將單一頻率信號的頻率降低為原來的1/k(可稱作k分頻方法);另一種是將信號中不同頻率成分的各種信號分成幾個頻率段.本文采用k分頻的分頻器,首先對100 MHz進行50分頻,將其降到2 MHz,接著對2 MHz進行40分頻,將頻率降到50 kHz.圖3所示為采用k分頻方法的時鐘分頻電路圖.圖4所示為綜合FPGA程序后得到的時鐘分頻器的綜合原理圖.

圖3 時鐘分頻電路圖

圖4 時鐘分頻器的綜合原理圖
分頻模塊程序的關鍵語句如下:
if count1="11000" then
count1<="00000";
clk_2Mtemp <= not clk_2Mtemp ;
else
count1<=count1+"00001";
clk_2M <= clk_2Mtemp.
C/A碼是偽隨機碼,又稱為偽隨機序列.在GPS C/A碼發生器[5]中,通常采用反饋型移位寄存器來產生偽隨機序列.C/A碼發生器主要由一個時鐘分頻器和兩個帶反饋的線性碼發生器組成.GPS信號發生器生成的C/A碼的碼長N=1 023位,碼元寬度T0=0.977 52 μs,周期T=NT0=1 ms,基碼速率為1.023 Mbit/s.C/A碼的生成過程如圖5所示.

圖5 C/A碼的生成過程
由C/A碼的設計規范可知,C/A碼為Gold組合碼,是由兩個10級移位寄存器產生的.移位寄存器G1的反饋抽頭連接在第3,10級上,G2的5個反饋抽頭分別為第2,3,6,9,10級.這些寄存器的狀態信息由異或電路運算后反饋到第1級.
碼發生器模塊程序的關鍵語句如下:
temp1 <= G1(2) xor G1(9);
G1<=G1(8 DOWNTO 0)& temp1;
temp2 <= G2(5) xor G2(4));
G2<=G2(8 DOWNTO 0)& temp2.
圖6所示為綜合FPGA程序后得到的碼發生器模塊的綜合原理圖.

圖6 碼發生器模塊的綜合原理圖
在二進制數字調制[6-7]中,當正弦載波的相位隨二進制數字基帶信號離散變化時,將產生BPSK信號.通常用一條信號載波的0°相位和180°相位分別表示二進制數字基帶信號的1和0.BPSK信號的時域表達式為:
uBPSK(t)=Acos(ωct+φn)
(1)
式中:A為載波信號的振幅;ωc為載波信號的角頻率;φn為載波信號第n個符號的絕對相位,且取值為0或π.當發送二進制符號1時,已調信號uBPSK(t)取0°相位,而發送二進制符號0時,uBPSK(t)取180°相位.
BPSK信號的波形如圖7所示.
采用直接序列擴頻得到的信號來調制正弦載波,能夠輸出預期的調制波信號(GPS衛星導航模擬信號).
BPSK調制模塊的關鍵語句為:
if out2=‘0’ then
sine <= sine1;
else sine <= “111111”-sine1+“000001”.
圖8所示為綜合FPGA程序后得到的BPSK調制模塊的綜合原理圖.

圖7 BPSK信號的波形

圖8 BPSK調制模塊的綜合原理圖
將調制模塊的復位端Reset設為“1”,當Out2為“0”且Clk為上升沿時,信號Sine波形與DDS波形相同;當Out2為“1”且Clk為上升沿時,信號Sine波形與DDS波形的相位相反,即信號Sine波形發生翻轉.
采用Xilinx公司VirtexⅣ系列的XC3S500e-4pq208芯片,通過Modelsim軟件進行仿真時,時鐘頻率設置為100 MHz,仿真時間設置為10 μs.
在時鐘分頻電路中,50分頻模塊的輸入時鐘信號Clk為100 MHz的系統時鐘,進行50分頻后,輸出為2 MHz的時鐘信號“Clk_2 MHz”(圖9).

圖9 100 MHz時鐘分頻至2 MHz的分頻模塊運行結果
經過50分頻輸出的“Clk_2 MHz”時鐘信號,作為40分頻模塊的輸入時鐘信號,即此時的輸入時鐘信號為2 MHz,進行40分頻后,輸出為50 kHz的時鐘信號“Clk_50 kHz”(圖10).

圖10 2 MHz時鐘分頻至50 kHz的分頻模塊運行結果
碼發生器是本文獲得GPS衛星導航信號發生器調制信號的基礎.選擇不同的衛星信號可以產生不同的C/A碼,只有獲得正確的C/A碼才能進行后續調制.本文選擇0號測試衛星的信號進行GPS衛星導航信號發生器的仿真設計與實現.
C/A碼發生器模塊輸入的時鐘信號Clkin為2 MHz,仿真運行后可得到0號衛星的偽隨機碼CA_OUT(圖11).

圖11 0號衛星的偽隨機碼仿真結果
頂層模塊是一個特殊的模塊,經過綜合可被看作電路模塊的“封裝”體.它的主要功能是對時鐘分頻電路模塊、碼發生器模塊和BPSK調制模塊進行例化封裝[7],使得3個子模塊連接成一個完整的電路.在頂層模塊中,通過例化后3個子模塊的輸入和輸出可檢驗各子模塊的正確性.衛星導航信號發生器的頂層模塊仿真波形如圖12所示.

圖12 衛星導航信號發生器的頂層模塊仿真波形
由圖12可知:“Clk_50 kHz”為基帶速率;C/A碼與基帶速率的異或運算可生成“Out1”;“Sine”是分頻模塊和碼發生器模塊加入“20 MHz DDS”載波與D觸發器,經BPSK調制而最終形成的信號,即GPS信號發生器發出的信號.
本文在分析GPS導航信號形成過程的基礎上,設計了時鐘分頻模塊、C/A碼發生器模塊和BPSK載波調制模塊,采用硬件描述語言編程,通過FPGA/Modelsim平臺仿真驗證,實現了0號衛星GPS導航信號發生器的仿真設計.所設計的民用GPS衛星導航信號發生器在數字信號基帶處理過程中具有較優越的性能,保密性和抗干擾性強.在硬件設計中,為便于驗證、說明和調試,對信號參數進行了映射處理,這與衛星信號的實際參數不完全一致.此外,對加入噪聲的情況也考慮不周.這些不足均需在今后工作中進一步完善.