摘要:全球定位系統(tǒng)(Global Positioning System,GPS)能夠向全球范圍內(nèi)的用戶提供全天候的高精度導航、定位和授時服務,在軍用和民用領域得到了廣泛的應用。以GPS系統(tǒng)的測距碼粗碼C/A碼為研究對象,在深入研究C/A碼信號生成原理的基礎上,利用Matlab中的Simulink對C/A碼信號的生成進行了建模、仿真和分析,并利用FPGA設計并實現(xiàn)了C/A碼發(fā)生器,詳細說明了C/A碼生成的設計原理,對其中的關鍵模塊進行了設計和分析,給出了具體實現(xiàn)方案,同時闡述整個應用程序的流程,設計采用抽頭選擇控制端設置產(chǎn)生不同GPS衛(wèi)星號的C/A碼,最終仿真進一步驗證了其結果的正確性,它可以產(chǎn)生任意GPS衛(wèi)星號的C/A碼,設計中采用VHDL語言實現(xiàn)的C/A碼程序,可應用于基于FPGA的GPS接收機設計中,對研究我國的北斗導航系統(tǒng)接收機有一定的借鑒意義。
全球衛(wèi)星定位系統(tǒng)(GPS)可在全球范圍內(nèi),全天候為用戶連續(xù)地提供高精度的位置、速度和時間信息。目前,GPS已被應用于軍事、航海、航空、測量、交通、勘測等幾乎一切與位置、速度、時間有關的人類活動中。自從GPS系統(tǒng)建立以來,世界上對于GPS及其應用技術的研究越來越普及。而關于與用戶聯(lián)系最為緊密的GPS接收機的研究是其中的研究熱點。在GPS接收機的設計和研究中,為了捕獲和跟蹤GPS信號,首先就要對C/A碼信號進行碼剝離,為此,需要在本地復現(xiàn)與接收機接收的同相位的C/A碼信號。因此,關于GPS信號C/A碼生成的仿真研究就具有一定的意義。GPS衛(wèi)星信號包括載波信號、測距碼和數(shù)據(jù)碼。其中的測距碼粗碼即C/A碼(Coarse Acquisition Code)除了作為粗測碼外,還由于其具有碼長短,易于捕獲的特點而作為GPS衛(wèi)星信號的捕獲碼,因此C/A碼是GPS信號捕獲以及接收機實現(xiàn)的基礎。文獻利用Matl ab對C/A碼進行了仿真研究,文獻對C/A碼生成進行了硬件仿真。
文中針對GPS全球衛(wèi)星導航系統(tǒng)ICD接口文件中C/A碼的編碼方式,在Matlab仿真的基礎上。設計出一種基于FPGA的C/A碼發(fā)生器,通過VHDL語言編程實現(xiàn)了測距碼的仿真,其結果表明設計的正確性。
1 基本原理
GPS衛(wèi)星導航定位系統(tǒng)是一種無線電導航定位(Radio Navigational Satellite Service,RNSS)系統(tǒng),利用高空中的GPS衛(wèi)星,向地面發(fā)射L波段的載頻無線電測距信號,由地面上用戶接收機實時地連續(xù)接收,并計算出接收機天線所在的位置。GPS衛(wèi)星發(fā)射L1和L2兩種波段的載波,系統(tǒng)采用碼分多址(CDMA)技術來區(qū)分各顆衛(wèi)星,每顆衛(wèi)星都有自己特定的偽隨機噪聲碼(PRN碼)結構。C/A碼時鐘速率為1.023 MHz,碼長為1 023 chip,周期為1 ms。用于快速捕獲導航信號和實時粗略定位。GPS系統(tǒng)的L1信號調(diào)制有兩種偽碼,粗捕獲碼(C/A碼)和精密碼(P碼)。L1頻率上的GPS信號表達式如下:
C/A是Gold碼序列,由兩個10位移位寄存器G1和G2產(chǎn)生長度為210-1=1 023位的最大長度偽碼(PN碼)。C/A碼是由G1的直接輸出和G2的延時輸出異或的結果,是長度為1 023的±1序列。其發(fā)生器如圖1所示。G2的時間延時取決于選取的兩個點的位置,這兩個點的選取和衛(wèi)星的ID是一一對應的。
如圖1所示C/A碼發(fā)生器是由兩個10級反饋移位寄存器組成的,上面的移位寄存器產(chǎn)生m序列G1,下面移位寄存器產(chǎn)生m序列G2。G1和G2碼的特征多項式是:
G1(x)=1+x3+x10
G2(x)=1+x1+x2+x3+x6+x8+x9+x10 C/A碼是G1碼與G2碼的模2和的結果,通過在G2寄存器不同位置反饋抽頭,可產(chǎn)生不同的延遲偏置。選擇不同的等價序列G2和G1相異或,可以得到不同結構的C/A碼,C/A碼可表示為:
G(t)=G1(t)·G2(t+iTc)
i是大于等于0的整數(shù)。G1和G2的周期為1 023,碼速率均為1.023 MHz,因此,周期都是1 ms。采用不同的可以產(chǎn)生1023種不同結構的乘積碼,再加上G1和G2本身,共有1 025種結構不同的C/A碼。
2 C/A碼發(fā)生器的實現(xiàn)方法
C/A碼的產(chǎn)生需要G1和G2碼序列,G1和G2的一個周期總數(shù)為1 024,而C/A碼截斷一位,因此,在第1 023個碼元之后的下一個脈沖要進行復位操作。采用VHDL編寫各個m碼產(chǎn)生器,編寫的依據(jù)是m碼產(chǎn)生原理及其仿真。
2.1 G1碼發(fā)生器設計
G1碼序列是一個10級反饋移位寄存器所產(chǎn)生m序列,根據(jù)C/A碼發(fā)生器整體需要,還需要在設計G1碼發(fā)生器本身上再加上控制信號端。將編寫好的VHDL語言程序在Quartus II環(huán)境中進行編譯,并生成相應元件符號。用QuartusII模擬器對該模塊進行時序仿真。
圖2中,clk端為同步時鐘脈沖:1.023 MHz,en端為使能端,高電平“1”有效;reset端為復位端,高電平“1”有效,在reset下降沿以后開始輸出G1碼序列,每個時鐘上升沿輸出一個碼字,依次為:“1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,……”
2.2 G2碼發(fā)生器的設計
G2碼發(fā)生器的設計方法與G1相同,只是多了一個平移選擇器,平移選擇器的不同組合可以產(chǎn)生多種結構不同的m碼,所以,G2的設計要比G1多一個平移選擇器的控制項。本設計通過選擇不同的抽頭得到不同的m序列碼結構。用Quartus II對該模塊進行時序仿真。
如圖3所示,clk端為同步時鐘脈沖1.023 MHz;en端為使能端,高電平“1”有效;reset端為復位端,高電平“1”有效;pio_ca為相位選擇段。仿真以0號平移選擇器為例的,即選擇的抽頭為該10級反饋寄存器的2和6。系統(tǒng)在reset同步下降沿以后開始輸出G2碼序列,每個時鐘上升沿輸出一個碼字,依次為:
“0,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,0,1,0,……”
2.3 C/A碼發(fā)生器的FPGA設計
在Quartus II環(huán)境中,將生成的G1碼和G2碼的發(fā)生器生成元件符號,以Schematic File的設計方式將G1和G2碼發(fā)生器組合起來,考慮到系統(tǒng)的穩(wěn)定性,還設計了一個帶時鐘異或運算模塊,用于接收全局時鐘同步。本次仿真以第一顆衛(wèi)星為例,相位輸入為“0000”。在Quartus II環(huán)境下,將總體設計電路圖進行編譯,并進行時序仿真,平移選擇器控制字仍設置為0,仿真圖如圖4所示。
圖4中,在系統(tǒng)reset同步以后,開始輸出C/A碼序列,每個時鐘上升沿輸出一個比特,依次為:“1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0……”。其中,clk端為同步時鐘脈沖:1.046 MHz,en端為使能端:高電平“1”有效,reset端為復位端:高電平“1”有效,pharse為相位選擇輸入,ca端:產(chǎn)生的周期為1 023 bit的C/A碼序列。
為了驗證FPGA仿真的正確性,利用matlab simulink軟件進行建模和仿真。利用延時單元構成兩個10位的移位寄存器,并從移位寄存器輸出端選擇抽頭連接到異或門電路,將其輸出反饋,抽頭和反饋的連接按照GPS衛(wèi)星PRN編碼規(guī)則進行選擇,并把最終輸出結果連接到示波器單元觀察其仿真波形。建立的simulink仿真模型如圖5所示,運行的結果如圖6所示。從仿真的波形圖上可以看出,輸出的GPS第一顆衛(wèi)星PRN碼的C/A基碼也依次為:“1,1,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,1,0,0……”,前10個C/A基碼對應的8進制為1 440,與GPS系統(tǒng)第一顆衛(wèi)星的C/A碼完全相同。
3 結 論
結合GPS衛(wèi)星導航系統(tǒng)f1頻點C/A碼發(fā)生器的設計,在研究GPS衛(wèi)星導航系統(tǒng)ICD接口控制文件中C/A碼生成器原理的基礎上,給出了基于FPCA的碼生成器的設計方案。利用VHDL語言實現(xiàn)了G1碼和G2碼的產(chǎn)生,并設計實現(xiàn)了C/A碼,利用Matlab simulink建模仿真驗證了FPGA設計結果的正確性,該設計可以產(chǎn)生GPS系統(tǒng)衛(wèi)星號所對應的偽隨機碼,可以根據(jù)相位選擇的不同實現(xiàn)不同衛(wèi)星號的測距碼的產(chǎn)生。采用模塊化的設計方案,其研究結果對研究我國北斗導航接收機的設計具有一定的參考意義。