盧潔瑩,馬路
(1.華南理工大學(xué)廣東廣州510641;2.中國科學(xué)院空間科學(xué)與應(yīng)用研究中心北京100190)
?
GPS信號(hào)并行捕獲算法的FPGA實(shí)現(xiàn)
盧潔瑩1,馬路2
(1.華南理工大學(xué)廣東廣州510641;2.中國科學(xué)院空間科學(xué)與應(yīng)用研究中心北京100190)
摘要:為了實(shí)現(xiàn)對GPS信號(hào)的快速捕獲,通過分析和比較了幾種現(xiàn)有算法,提出了基于平均采樣的FFT并行捕獲算法。為了避免平均采樣跨越偽碼的跳變沿而帶來能量損失,采用了尋找偽碼最大游程的方法,在最大游程里重新進(jìn)行平均采樣,使其多出一個(gè)碼片的樣點(diǎn),通過仿真驗(yàn)證了該算法既避免了平均能量的損失,又便于硬件實(shí)現(xiàn)。為了便于硬件實(shí)現(xiàn),設(shè)計(jì)了捕獲算法的系統(tǒng)結(jié)構(gòu)和各個(gè)子模塊的FPGA結(jié)構(gòu);通過功能仿真,分析驗(yàn)證了算法的可行性。
關(guān)鍵詞:平均采樣;FFT;并行捕獲;FPGA;有限狀態(tài)機(jī)
高效的捕獲算法是GPS接收機(jī)的關(guān)鍵技術(shù)。GPS的中頻采樣率為5 MHz,偽碼速率為1.023 Mbps,一個(gè)偽碼周期具有5 000個(gè)采樣點(diǎn)的數(shù)據(jù)。而5 000點(diǎn)的FFT,由于不是2的冪次,所以很難用硬件快速實(shí)現(xiàn)。為此,很多文獻(xiàn)提出了基于平均采樣的技術(shù)方案[1-2]。文獻(xiàn)[1],對連續(xù)的4點(diǎn)或5點(diǎn)偽碼樣點(diǎn)進(jìn)行平均累加作為該碼片的采樣值,將5 000個(gè)樣點(diǎn)進(jìn)行平均下采樣到1 023個(gè)點(diǎn);在第一個(gè)連續(xù)的5個(gè)樣點(diǎn)中,必有一個(gè)是碼片的第一個(gè)樣點(diǎn),故而采用5路平均采樣和FFT的捕獲方案,5條支路中最大值對應(yīng)的捕獲結(jié)果必是接收偽碼的相位點(diǎn)。該方案雖然將5 000點(diǎn)下采樣到了1 023點(diǎn),但是由于是非2的冪次點(diǎn)數(shù),故而不易于硬件實(shí)現(xiàn)。文獻(xiàn)[3]在文獻(xiàn)[4]的基礎(chǔ)上進(jìn)行了改進(jìn),對連續(xù)的5 000樣點(diǎn)下采樣到1 024點(diǎn),便于硬件實(shí)現(xiàn),但是由于平均采樣跨越了偽碼跳變沿,從而導(dǎo)致平均能量損失。為了避免平均采樣跨越偽碼的跳變沿,文獻(xiàn)[5]提出了一種非常巧妙的措施:尋找偽碼的最大游程,在最大游程里重新進(jìn)行平均采樣,使其多出一個(gè)碼片的樣點(diǎn),從而使總的樣點(diǎn)數(shù)由1 023點(diǎn)增加到1 024點(diǎn),這樣既避免了平均能量的損失,又便于硬件實(shí)現(xiàn)。
捕獲擴(kuò)頻信號(hào)的方法是尋找相關(guān)峰,通過相關(guān)峰的位置來粗略估計(jì)載波頻偏和碼相位值。由偽隨機(jī)序列的自相關(guān)特性可知,只有當(dāng)收發(fā)碼片對齊到一個(gè)碼片之內(nèi)時(shí),才會(huì)出現(xiàn)相關(guān)峰。所以,在做相關(guān)計(jì)算時(shí),一般移動(dòng)碼片相位在半個(gè)碼片之內(nèi)。但是,如果按照上述的平均采樣方法,直接將5 000點(diǎn)數(shù)據(jù)下采樣到1 024點(diǎn),然后與本地Go1d碼做FFT相關(guān)計(jì)算,由于其碼相位移動(dòng)步長為1個(gè)碼片,這樣有可能檢測不到相關(guān)峰。為了解決上述問題,采用文獻(xiàn)[1]提出的辦法,將輸入信號(hào)的前5個(gè)連續(xù)樣點(diǎn)分別作為輸入信號(hào)的第一個(gè)采樣碼片的首個(gè)數(shù)據(jù)點(diǎn),這樣就有5個(gè)1 024點(diǎn)的平均樣點(diǎn)。
本文給出了算法的FPGA設(shè)計(jì)方案,詳細(xì)分析和設(shè)計(jì)了各個(gè)子模塊的FPGA結(jié)構(gòu)。
基于平均采樣的FFT并行捕獲方案如圖1所示。其中,數(shù)據(jù)采集單元用以接收50 MHz的輸入中頻信號(hào),采用5條并行捕獲支路,每條支路用于處理不同的采樣起始點(diǎn),其內(nèi)部結(jié)構(gòu)如圖1所示;5條支路的處理結(jié)果在搜索調(diào)整單元里進(jìn)行比較,選擇最大的值作為本次搜索的結(jié)果,將其與門限比較,大與門限則捕獲成功,否則調(diào)整本地載波發(fā)生器步進(jìn)一個(gè)載波頻點(diǎn),進(jìn)入下一輪的搜索,如此反復(fù),直到搜索完所有的頻點(diǎn)。
圖1 基于平均采樣的5路并行FFT捕獲方案圖
圖2 基于平均采樣的FFT并行捕獲方案的支路內(nèi)部圖
每條支路的功能說明如下:數(shù)據(jù)采集控制模塊按照5 MHz的時(shí)鐘保存5 005個(gè)連續(xù)的中頻數(shù)據(jù)(此處稱為一幀)。當(dāng)中頻數(shù)據(jù)采集單元完成一幀數(shù)據(jù)的采集后,發(fā)出有效信號(hào)控制有限狀態(tài)機(jī)(Fjnjte State Machjne,F(xiàn)SM),狀態(tài)機(jī)控制載波發(fā)生器產(chǎn)生一個(gè)頻點(diǎn)的載波,同時(shí)觸發(fā)混頻單元進(jìn)行載波剝離;下變頻完成之后,進(jìn)入平均采樣模塊進(jìn)行降采樣處理,處理后的數(shù)據(jù)存儲(chǔ)到雙端口RAM中;降采樣完成后,進(jìn)入FFT相關(guān)檢測單元,在狀態(tài)機(jī)的控制下有序地完成1 024點(diǎn)數(shù)據(jù)的循環(huán)卷積運(yùn)算;相關(guān)檢測完成后進(jìn)入最大值搜索模塊,若相關(guān)峰值大于預(yù)設(shè)閥值,則捕獲成功,輸出頻偏和碼相位值,否則調(diào)整載波頻點(diǎn),步進(jìn)一個(gè)頻差,進(jìn)入下一幀的搜索。下面分別介紹捕獲模塊的各個(gè)子模塊的設(shè)計(jì)原理與硬件實(shí)現(xiàn)結(jié)構(gòu)。
數(shù)據(jù)采集單元用于存儲(chǔ)5 MHz連續(xù)的5 005點(diǎn)數(shù)據(jù)樣點(diǎn),用于5條支路的捕獲處理,每條支路的點(diǎn)數(shù)為5 000點(diǎn)。采集模塊采用乒乓RAM的工作方式,即:RAMA先接收數(shù)據(jù),A接收完畢后發(fā)出“A寫完成”信號(hào);在A的寫完成信號(hào)有效后,RAMB開始接收數(shù)據(jù),B接收完后發(fā)出“B寫完成”信號(hào),接著返回RAMA狀態(tài),繼續(xù)RAMA的讀取。當(dāng)“寫完成”信號(hào)有效后,采用40 MHz的時(shí)鐘進(jìn)行數(shù)據(jù)讀取操作;在讀取完連續(xù)的5 000點(diǎn)數(shù)據(jù)后,進(jìn)入等待狀態(tài)。乒乓RAM的讀寫操作如圖3和4所示。
數(shù)字中頻信號(hào)格式:信號(hào)由2比特組成,分別表示符號(hào)位和幅度位,用Sjgn和Mag表示,其格式參考文獻(xiàn)[6]。
圖3 乒乓RAM寫數(shù)據(jù)狀態(tài)機(jī)
圖4 乒乓RAM的讀操作狀態(tài)機(jī)
數(shù)據(jù)采集單元需要產(chǎn)生5路輸出數(shù)據(jù)。其操作方法如下:首先產(chǎn)生0~5 003的5 005個(gè)數(shù)據(jù);接著以5 000為數(shù)據(jù)長度取出其中某段數(shù)據(jù),分別對應(yīng)到0~4 999,1~5 000,2~5 001,3~5 002,4~5 003;然后將第一段數(shù)據(jù)延時(shí)4個(gè)時(shí)鐘,第二段數(shù)據(jù)延時(shí)3個(gè)時(shí)鐘,第3個(gè)數(shù)據(jù)延時(shí)2個(gè)時(shí)鐘,第4段數(shù)據(jù)延時(shí)1個(gè)時(shí)鐘;最后以最后一段數(shù)據(jù)的有效信號(hào)作為整個(gè)數(shù)據(jù)采集單元輸出的數(shù)據(jù)有效信號(hào)。其時(shí)序原理圖如圖5所示。
圖5 數(shù)據(jù)采集單元輸出數(shù)據(jù)的時(shí)序圖
2.2載波產(chǎn)生與剝離單元
載波產(chǎn)生單元采用數(shù)控振蕩器(Numerjca11y Contro11ed Oscj11ator,NCO)的方式實(shí)現(xiàn)。本設(shè)計(jì)中,NCO的工作始終為400 MHz,寄存器長度為32位,取寄存器的高兩位查表。對于采樣率為5 MHz的中心頻率為1.25 MHz中頻信號(hào),由于本地采樣率提高了8倍,故本地NCO初始頻率設(shè)為8×12.5=100 MHz,對應(yīng)頻率控制字為M=0x40000000。5 MHz采樣率下的頻率步進(jìn)為500 Hz,對應(yīng)到40 MHz時(shí)鐘域下為8×500 Hz,相應(yīng)的的頻率控制字為:△M= 0x0000A7C5。正余弦查找表的方法可參考文獻(xiàn)[6]。
載波剝離單元采用編碼的方式產(chǎn)生。中頻信號(hào)量化為2比特:00,01,10和11,代表的幅值分別為:1,+3,-1,-3;本地載波同樣量化為2比特:00,01,10和11,代表的幅值分別為:+ 1,+2,-1,-2?;祛l后的信號(hào)幅值分別為:+1,+2,+3,+6,-1,-2,-3,-6。其混頻譯碼結(jié)構(gòu)參考文獻(xiàn)[3]。
混頻輸出符號(hào)的編碼方式如表1所示。
表1 混頻器符號(hào)編碼
混頻輸出幅值的編碼方式如表2所示,其中sxt在VHDL語言中表示符號(hào)擴(kuò)展:
有杕之杜,其葉湑湑。 獨(dú)行踽踽。 豈無他人?不如我同父。 嗟行之人,胡不比焉?人無兄弟,胡不佽焉。 (佽,助。)
表1 混頻器幅值編碼
2.3平均采樣單元
該模塊的功能是將混頻后的5 000點(diǎn)數(shù)據(jù)累加平均為1 024點(diǎn),作為后續(xù)的1 024點(diǎn)FFT的輸入。由圖1可知,每個(gè)碼片的采樣點(diǎn)數(shù)是4或5;所以,可以每隔4點(diǎn)或5點(diǎn)進(jìn)行累加,將累加結(jié)果作為本碼片的采樣值。平均點(diǎn)數(shù)滿足下列關(guān)系式:
其中,Num4和Num5分別是4點(diǎn)和5點(diǎn)累加的個(gè)數(shù)。
將120個(gè)四點(diǎn)累加的地址存在ROM中,輸入數(shù)據(jù)以5 000點(diǎn)為一段并對輸入點(diǎn)數(shù)進(jìn)行計(jì)數(shù);計(jì)數(shù)值與ROM的輸出值進(jìn)行比較,當(dāng)相等時(shí)則從當(dāng)前點(diǎn)數(shù)開始對連續(xù)的4點(diǎn)數(shù)據(jù)進(jìn)行累加,否則對連續(xù)的5點(diǎn)數(shù)據(jù)進(jìn)行累加;ROM的地址計(jì)數(shù)加1,進(jìn)行后續(xù)的比較,如此反復(fù),直到5 000點(diǎn)數(shù)據(jù)計(jì)數(shù)完畢,對應(yīng)的累加結(jié)果即是1 024點(diǎn)數(shù)據(jù)。
Mat1ab產(chǎn)生的4點(diǎn)累加的數(shù)據(jù)地址如表3所示。
平均采樣模塊的設(shè)計(jì)采用狀態(tài)機(jī)進(jìn)行控制,其狀態(tài)結(jié)構(gòu)如圖6所示。共有6個(gè)狀態(tài)。ST0完成初始化操作,對輸入5 000點(diǎn)數(shù)據(jù)計(jì)數(shù)器和120點(diǎn)地址計(jì)數(shù)器清零,在模塊使能情況下進(jìn)入下一個(gè)狀態(tài)ST1;在ST1狀態(tài),判斷5 000點(diǎn)計(jì)數(shù)器與120點(diǎn)地址ROM輸出是否相等,相等則直接跳到ST3狀態(tài),否則進(jìn)入下一狀態(tài)ST2,這樣4點(diǎn)累加相對5點(diǎn)累加少了一個(gè)加1操作,即狀態(tài)ST2;在ST1,ST2,ST3,ST4和ST5狀態(tài)都具有加1操作,即對5000點(diǎn)計(jì)數(shù)器和120點(diǎn)地址計(jì)數(shù)器分別加1;在ST5狀態(tài),判斷5 000點(diǎn)數(shù)據(jù)是否加滿,加滿則轉(zhuǎn)到ST0,否則轉(zhuǎn)到ST1。
表1 四點(diǎn)累加地址
圖6 平均累加模塊狀態(tài)機(jī)
2.4FFT/IFFT變換單元
FFT運(yùn)算模塊的整體結(jié)構(gòu)主要包括兩個(gè)部分:8位的雙端口RAM,用來接收平均下采樣模塊產(chǎn)生的數(shù)據(jù);FFT運(yùn)算模塊,完成對下采樣數(shù)據(jù)的FFT變換。FFT狀態(tài)機(jī)共有7個(gè)狀態(tài),分別為:STjnjt狀態(tài):清零各變量,在輸入使能后轉(zhuǎn)入STramwr狀態(tài);STramwr狀態(tài):將下采樣數(shù)據(jù)的同相和正交支路拼接為一路數(shù)據(jù),在寫時(shí)鐘的控制下寫入雙端口RAM中,當(dāng)寫信號(hào)完成后轉(zhuǎn)入STramrd狀態(tài);STramrd狀態(tài):采用400 MHz的系統(tǒng)時(shí)鐘,使能RAM讀信號(hào)后轉(zhuǎn)入STready狀態(tài);STready狀態(tài):啟動(dòng)FFT IP核,在讀RAM的同時(shí)將數(shù)據(jù)寫入FFT IP核的輸入端口,轉(zhuǎn)入ST1oad狀態(tài);ST1oad狀態(tài):加載1 024長度的數(shù)據(jù),加載完成后轉(zhuǎn)入STfft狀態(tài);STfft狀態(tài):實(shí)現(xiàn)對數(shù)據(jù)的FFT變換,完成后啟動(dòng)IP數(shù)據(jù)輸出使能信號(hào)un1oad,轉(zhuǎn)入STun1oad;STun1oad狀態(tài):等待IP核輸出1 024點(diǎn)數(shù)據(jù),完成后轉(zhuǎn)入初始化狀態(tài)STjnjt,等待下一次平均采樣后的使能信號(hào)。
IFFT模塊采用同F(xiàn)FT模塊相似的狀態(tài)機(jī)設(shè)計(jì)結(jié)構(gòu),不同之處是不需要前端RAM采集數(shù)據(jù)。狀態(tài)機(jī)共有5個(gè)狀態(tài)。STjnjt狀態(tài):完成信號(hào)的清零,等待使能信號(hào)有效后轉(zhuǎn)入下一狀態(tài)STready;STready狀態(tài):啟動(dòng)IFFT IP核后轉(zhuǎn)入下一狀態(tài)ST1oad;ST1oad狀態(tài):加載1 024長度的數(shù)據(jù),完成后轉(zhuǎn)入STjfft狀態(tài);STjfft狀態(tài):等待完成1 024點(diǎn)數(shù)據(jù)的IFFT變換后,轉(zhuǎn)入STun1oad狀態(tài);STun1oad狀態(tài):輸出1 024點(diǎn)IFFT變換結(jié)果。
不同信噪比下,基于平均采樣的FFT并行捕獲算法的檢測概率如圖7所示。
圖7 不同信噪比下的檢測概率
假定輸入載噪比為C/N0=60 dB·Hz,則對應(yīng)的輸入信噪比為:S/N=C·Tc/N0=60-1og10(1.023e6)=20 dB,經(jīng)過FFT的相關(guān)累加之后得到:(S/N)coh=S/N+10×1og10(N)=-10+10×1og10(5000)=57 dB。由圖7可知,此時(shí)的檢測概率幾乎為1,滿足指標(biāo)要求。
設(shè)置收發(fā)端的碼偏移為512,如圖8所示為基于平均采樣的FFT并行捕獲算法的捕獲結(jié)果,由圖可知,捕獲程序很好地捕獲到了信號(hào)。
圖8 基于平均采樣技術(shù)的FFT并行捕獲結(jié)果
文中比較了幾種常見的捕獲算法,重點(diǎn)分析和討論了基于平均采樣的FFT并行捕獲算法的FPGA整體設(shè)計(jì),詳細(xì)描述了混頻單元、平均采樣單元、FFT相關(guān)卷積單元的FPGA設(shè)計(jì)結(jié)構(gòu)。最后對捕獲模塊的FPGA設(shè)計(jì)進(jìn)行了功能驗(yàn)證。在捕獲模塊設(shè)計(jì)上,為了確定平均采樣的起點(diǎn),采用5路并行捕獲的方案,提高了碼相位的捕獲精度。在各模塊的拼接上,采用使能信號(hào)進(jìn)行控制,即:前一個(gè)模塊的輸出有效信號(hào)作為后一個(gè)模塊的使能信號(hào),各模塊內(nèi)部采用狀態(tài)機(jī)進(jìn)行控制。
參考文獻(xiàn):
[1]Starzyk JA.Zhu Z.Averagjng corre1atjon for C/A code acqujsjtjon and trackjng jn frequency domajn[C]// Proceedjngs of the 44th IEEE 2001 Mjdwest Symposjum on Cjrcujts and Systems,2001:905-908.
[2]孫婉瑩.高動(dòng)態(tài)GPS接收機(jī)C/A碼的接收及其FPGA實(shí)現(xiàn)研究[D].西安:西安電子科技大學(xué),2007.
[3]趙麗,陳小惠,潘樹國. GPS頻域并行碼捕獲改進(jìn)算法[J].電子測量與儀器學(xué)報(bào),2011,25(11):985-990.
[4]李成軍,陸明泉,馮振明.基于采樣率變換與FFT的GPS系統(tǒng)C/A碼捕獲改進(jìn)算法[J].系統(tǒng)工程與電子技術(shù),2008,30(1):164-166.
[5]劉圣忠,宋茂忠,胡國光.一種基于FFT的GPS信號(hào)快捕算法[J].海軍航空工程學(xué)院學(xué)報(bào),2008,23(2):153-156.
[6]Ledvjna B M,Powe11 S P,Kjntner P M,et a1.A 12-Channe1 Rea1-Tjme GPS L1 Software Recejver1[C]//Proceedjngs of the 2003 Natjona1 Technjca1 Meetjng of The Instjtute of Navjgatjon,Anahejm,CA,January 2003:767-782.
Parallel acqulsltlon algorlthm for GPS slgnals based on FPGA
LU Jje-yjng1,MA Lu2
(1.South China University of Technology,Guangzhou 510641,China;2.Center for Space Science and Applied Research,Beijing 100190,China)
Abstract:In order to rea1jze rapjd acqujsjtjon of GPS sjgna1s,a para11e1 acqujsjtjon a1gorjthm based on average samp1jng method js proposed and ana1yzed. Moreover,a 1ongest run-1ength resamp1jng method js emp1oyed to overcome energy 1oss due to averagjng across the bjt edge. Further,the system structure and jts jmp1ementatjon are gjven based on FPGA. Sjmu1atjon resu1ts va1jdate the feasjbj1jty and effjcjency of our desjgn.
Key words:average samp1jng;FFT;para11e1 acqujsjtjon;FPGA;FSM
中圖分類號(hào):TN911.72
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1674-6236(2016)07-0079-04
收稿日期:2015-05-28稿件編號(hào):201505246
作者簡介:盧潔瑩(1990—),女,湖南常德人,碩士研究生。研究方向:系統(tǒng)建模分析與評(píng)估。