文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)06-0137-03
目前,采用FPGA實(shí)現(xiàn)的DSP系統(tǒng)與利用傳統(tǒng)DSP處理器相比,在高速與實(shí)時(shí)性,系統(tǒng)的重配置與硬件可重構(gòu)性以及單片DSP系統(tǒng)的可實(shí)現(xiàn)性等方面具有突出優(yōu)勢(shì)[1]。而DSP Builder是Altera公司的一個(gè)面向DSP開發(fā)的系統(tǒng)級(jí)工具,內(nèi)嵌Matlab的一個(gè)Simulink工具箱,使得DSP算法的電路實(shí)現(xiàn)可以充分利用Simulink的圖形化界面,具有直觀、高效的特性,簡(jiǎn)化了硬件實(shí)現(xiàn)流程[2]。采用DSP Builder作為設(shè)計(jì)數(shù)字電路的工具,是現(xiàn)代DSP系統(tǒng)設(shè)計(jì)的發(fā)展方向之一。
GPS L1頻點(diǎn)和BD2 B1頻點(diǎn)是衛(wèi)星導(dǎo)航系統(tǒng)中公開的民用信號(hào),以此為基礎(chǔ)的軟件接收機(jī)得到廣泛而深入的研究。目前,并行碼相位算法在用高級(jí)語言實(shí)現(xiàn)的軟件接收機(jī)中廣泛應(yīng)用,在運(yùn)算速度得到保證的前提下,與串行捕獲算法相比可以極大地提高捕獲衛(wèi)星的速度。但是目前大多數(shù)嵌入式實(shí)時(shí)衛(wèi)星接收機(jī)由于計(jì)算能力和資源的限制,而只能采用串行捕獲的方法。另外,采用C/C++或者M(jìn)atlab等高級(jí)語言實(shí)現(xiàn)的軟件接收機(jī)雖然在捕獲速度和精度上滿足要求,但是大多數(shù)只能實(shí)現(xiàn)事后處理,達(dá)不到實(shí)時(shí)處理的要求。即使實(shí)現(xiàn)了實(shí)時(shí)處理,用整臺(tái)計(jì)算機(jī)完成接收機(jī)的功能成本過高,而且體積重量較大。但FPGA在運(yùn)算的并行特性以及內(nèi)部集成的邏輯資源方面有著巨大優(yōu)勢(shì),保證了實(shí)時(shí)處理的可實(shí)現(xiàn)性。
對(duì)于RX3007 GPS/BD2雙模雙通道射頻模塊,1 ms的中頻數(shù)據(jù)量就達(dá)到了16 368個(gè)點(diǎn),原始的算法必須執(zhí)行一次16 368個(gè)點(diǎn)的FFT和IFFT組合,而163 68個(gè)點(diǎn)的FFT將極大地消耗LEs和RAM資源,這對(duì)FPGA十分不利。因此必須改進(jìn)捕獲算法,將運(yùn)算量和資源消耗量降至最低。相比參考文獻(xiàn)[3]中自行設(shè)計(jì)浮點(diǎn)型FFT的方式,本文在DSP Builder的圖形化界面中以第三方可定制FFT IP核為核心搭建基于改進(jìn)并行碼相位算法的GPS/BD2雙模接收機(jī)快速捕獲電路,實(shí)現(xiàn)雙模雙通道快速捕獲,能極大地縮短開發(fā)周期,減少資源消耗,提高計(jì)算效率。
1 并行碼相位捕獲算法原理
衛(wèi)星接收機(jī)捕獲算法的實(shí)現(xiàn)與射頻前端緊密關(guān)聯(lián),本文采用廣州潤(rùn)芯公司的RX3007雙模雙通道射頻模塊,上電后輸出頻率為4.092 MHz的GPS和BD2兩路2 bit中頻數(shù)字信號(hào),采樣時(shí)鐘為16.368 MHz。
并行碼相位捕獲算法的原理如圖1所示。先將中頻信號(hào)進(jìn)行載波剝離,采集整數(shù)倍毫秒時(shí)間內(nèi)的數(shù)據(jù)進(jìn)行FFT變換;然后將FFT結(jié)果與本地偽碼的FFT取共軛后的值逐點(diǎn)執(zhí)行復(fù)數(shù)乘法;最后對(duì)所得結(jié)果進(jìn)行IFFT變換,求取復(fù)數(shù)的幅值,進(jìn)行捕獲門限判決[4]。
設(shè)長(zhǎng)度都為N的兩個(gè)信號(hào)x(n)和y(n),x(n)代表輸入信號(hào),y(n)代表本地偽碼,信號(hào)x(n)與y(n)的相關(guān)值為:
從而可將相關(guān)運(yùn)算轉(zhuǎn)換為頻域的乘法運(yùn)算。一旦算出了Z(k),則其時(shí)域的結(jié)果就可以通過傅里葉逆變換得到,即:
2 算法改進(jìn)及仿真
以GPS為例,平均降采樣[5]主要是采用一個(gè)期望的小頻率時(shí)鐘對(duì)原始數(shù)據(jù)重采樣,對(duì)一個(gè)周期內(nèi)的數(shù)據(jù)進(jìn)行平均。但是降采樣時(shí)對(duì)這個(gè)時(shí)鐘要求較高,不方便實(shí)現(xiàn)[6]。將載波去除之后的16 368個(gè)數(shù)據(jù)降采樣至1 024點(diǎn),要進(jìn)行16次15個(gè)點(diǎn)的平均操作,其余均為16個(gè)點(diǎn)的平均。為方便實(shí)現(xiàn)和節(jié)省資源,本文采用固定位置和只進(jìn)行累加的方式,即先找出所有的對(duì)15個(gè)點(diǎn)累加操作的起始位置并存儲(chǔ)起來備用,將16 368個(gè)點(diǎn)的位置與之比較,如果相同則進(jìn)行連續(xù)15個(gè)點(diǎn)的累加操作,其余情況下均進(jìn)行連續(xù)16個(gè)點(diǎn)的累加。本地C/A碼先上采樣至16.368 MHz,然后采取同樣的方式進(jìn)行下采樣。為減少存儲(chǔ)偽碼FFT結(jié)果的位數(shù),對(duì)下采樣后的偽碼累加值做除法運(yùn)算,以降低平均采樣后的幅值,最后執(zhí)行1 024點(diǎn)的FFT。由于硬件電路中全是整型操作,為了便于存儲(chǔ)處理以及減少存儲(chǔ)所占的空間,綜合考慮精度和資源消耗兩方面因素,最終將所有32顆衛(wèi)星的本地偽碼FFT結(jié)果擴(kuò)大5倍并取整,存儲(chǔ)備用。另外,考慮弱信號(hào)條件和捕獲速度,采用4 ms非相干累積的方式提高信噪比。BD2 GEO衛(wèi)星C/A碼速率為2.046 MHz,沒有調(diào)制NH碼,所以必須降采樣至2 048點(diǎn),執(zhí)行2 048點(diǎn)FFT/IFFT組合,但捕獲過程中的其他操作同GPS類似。本設(shè)計(jì)的目標(biāo)是對(duì)中頻數(shù)據(jù)進(jìn)行適當(dāng)預(yù)處理使之能夠調(diào)用Altera的FFT IP核執(zhí)行FFT和IFFT變換組合,由于FFT IP核采用塊浮點(diǎn)的處理方式,運(yùn)算過程中在精度和資源占用之間的折中,數(shù)據(jù)位寬和旋轉(zhuǎn)因子固定,每一級(jí)蝶形變換都會(huì)根據(jù)情況對(duì)數(shù)據(jù)進(jìn)行移位,如果超出數(shù)據(jù)位寬,則低位數(shù)值將會(huì)被丟棄??紤]到這種情況,最后的門限判決采用主次峰值比值超過閾值的方法。圖2為GPS/BD2改進(jìn)捕獲算法的Matlab仿真驗(yàn)證結(jié)果。
分別用改進(jìn)算法和原始捕獲算法對(duì)同一組通過USB2.0采集到的中頻數(shù)據(jù)進(jìn)行處理,兩者捕獲得到的衛(wèi)星一樣,各衛(wèi)星多普勒頻率一樣,初始碼相位精度也在正負(fù)半個(gè)碼片之內(nèi)。這說明改進(jìn)的捕獲算法不僅大大降低了計(jì)算量,實(shí)現(xiàn)起來更加容易,而且仍然能夠很好地捕獲衛(wèi)星。
3 硬件電路設(shè)計(jì)及驗(yàn)證
快捕電路主要由平均采樣模塊average_sample、FFT/IFFT模塊fft_my、本地偽碼存儲(chǔ)模塊CA_FFT、復(fù)數(shù)乘法模塊complex_product、時(shí)序控制電路及累加判決六大部分組成,各模塊工作的參考時(shí)鐘為16.368 MHz。圖3顯示了完整電路的其中一部分, 整個(gè)電路的工作流程如圖4所示。
(1)FFT /IFFT模塊
本設(shè)計(jì)采用FFT和IFFT依照時(shí)序輪流在一個(gè)FFT IP核中執(zhí)行的方式,節(jié)省了一個(gè)FFT處理器,降低了資源消耗。GPS捕獲中IP核輸入數(shù)據(jù)位寬旋轉(zhuǎn)因子精度定為18 bit,BD2中精度為20 bit。由于采用主次峰值比值的檢測(cè)算法,IFFT的輸出結(jié)果可以不必除以變換點(diǎn)數(shù)而直接用于累加判決模塊,另外,在信號(hào)較強(qiáng)情況下利用1 ms數(shù)據(jù)進(jìn)行判決的過程中,IP核的指數(shù)輸出exp可不予考慮,這樣既節(jié)省了資源又降低了電路的復(fù)雜性。在執(zhí)行單次FFT/IFFT變換組合的過程中,首先將IP核的inverse信號(hào)置高,等待平均采樣模塊采集完1 ms數(shù)據(jù),從RAM中讀取數(shù)據(jù),依次產(chǎn)生sop和eop脈沖,執(zhí)行FFT,將所得結(jié)果取共軛后依次與預(yù)存在ROM中對(duì)應(yīng)衛(wèi)星的本地偽碼FFT結(jié)果相乘并暫存結(jié)果,然后將inverse信號(hào)置低,執(zhí)行IFFT。
(2)平均采樣模塊
本設(shè)計(jì)利用平均采樣模塊將16.368 MHz的數(shù)據(jù)降采樣至1.024 MHz和2.048 MHz,該模塊包括本地載波NCO子模塊carrier_gen,15點(diǎn)和16點(diǎn)累加子模塊add_1516,RAM模塊,累加點(diǎn)數(shù)判決子模塊index_judge和相應(yīng)的時(shí)序生成電路。其中載波NCO模塊基于LUT設(shè)計(jì),LUT預(yù)存8個(gè)數(shù)據(jù)代表正余弦波的一個(gè)周期,數(shù)據(jù)位寬為3 bit,輸入不同的頻率控制字將輸出不同頻率的本地載波。其對(duì)應(yīng)關(guān)系為:
其中,fcar為輸出的本地載波頻率,fclk為輸入時(shí)鐘,M為頻率控制字,N為相位累加的數(shù)據(jù)位寬(本設(shè)計(jì)N取32)。M由頻率控制字選擇模塊生成,遍歷±10 kHz范圍內(nèi)以400 Hz步進(jìn)的所有對(duì)應(yīng)頻率控制字,在捕獲過程中完成對(duì)本地載波頻率的調(diào)整。其余子模塊在時(shí)序電路的控制下完成15點(diǎn)或16點(diǎn)數(shù)據(jù)累加功能,最終數(shù)據(jù)分為I支路和Q支路分別暫存在兩個(gè)1 024×6 bit RAM中。
(3)其他模塊
本地偽碼存儲(chǔ)模塊存儲(chǔ)的是預(yù)先計(jì)算好的各衛(wèi)星偽碼被下采樣之后的FFT結(jié)果,按照實(shí)部和虛部分別存放在兩個(gè)ROM中。對(duì)GPS衛(wèi)星而言,偽碼FFT結(jié)果擴(kuò)大5倍取整后的數(shù)據(jù)需用10 bit表示, 而BD2則需用11 bit表示。復(fù)數(shù)乘法模塊的功能是將本地預(yù)存的C/A碼FFT結(jié)果與FFT IP核執(zhí)行FFT之后取共軛的結(jié)果相乘,然后進(jìn)行暫存,為執(zhí)行IFFT準(zhǔn)備數(shù)據(jù),根據(jù)實(shí)際情況對(duì)數(shù)據(jù)位寬進(jìn)行截取,使之等于IP和輸入精度。時(shí)序控制電路實(shí)現(xiàn)了對(duì)inverse信號(hào)的精確控制以及對(duì)各生成地址的計(jì)數(shù)器的使能和驅(qū)動(dòng)。累加判決完成最終的I2+Q2累加,找出最高峰值和非相鄰次高峰,寄存最高峰值的偏移量并進(jìn)行門限判決。
圖5為GPS和BD2快捕電路仿真得到I2+Q2的值,橫軸為采樣點(diǎn)的偏移值,縱軸為幅值。主次峰值的比值都超過了2,說明捕獲到衛(wèi)星;主峰偏移量分別為644和206,說明快捕電路通過運(yùn)算得到的初始碼相位與Matlab中的結(jié)果一致,算法改進(jìn)效果明顯。最終,使用Signal Compiler將圖形模塊轉(zhuǎn)化成VHDL語言,在QuartusII軟件中編譯成功后下載配置文件至目標(biāo)器件EP3C120F780C8N。實(shí)際測(cè)試時(shí)與華訊HX6330 GPS/BD2雙模接收機(jī)對(duì)比,快捕電路可以在2 s之內(nèi)對(duì)所有GPS和BD2衛(wèi)星完成一次盲捕,兩者捕獲得到的衛(wèi)星號(hào)基本一致。
改進(jìn)的捕獲算法不僅大大降低了運(yùn)算量,減少資源消耗,便于硬件電路的實(shí)現(xiàn),而且設(shè)計(jì)出來的電路能夠在單片F(xiàn)PGA內(nèi)以較高的精度迅速對(duì)GPS和BD2衛(wèi)星同時(shí)進(jìn)行捕獲,為捕獲之后的跟蹤環(huán)路留下寶貴的邏輯資源。同時(shí),本設(shè)計(jì)也為將來添加NIOS II多處理器系統(tǒng)完成信號(hào)跟蹤解調(diào)及導(dǎo)航解算從而在單片F(xiàn)PGA內(nèi)部實(shí)現(xiàn)雙模導(dǎo)航接收機(jī)的全部功能奠定了基礎(chǔ)。
參考文獻(xiàn)
[1] 潘松,黃繼業(yè),王國(guó)棟.現(xiàn)代DSP技術(shù)[M]. 西安:西安電子科技大學(xué)出版社,2003.
[2] 楊守良.基于DSP Builder的插值濾波器的設(shè)計(jì)及FPGA實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2013,32(1):54-56.
[3] 劉健.基于FPGA的高速浮點(diǎn)FFT的實(shí)現(xiàn)研究[J]. 微型機(jī)與應(yīng)用,2012,31(14):79-81.
[4] AKOS D M. 軟件定義的GPS和伽利略接收機(jī)[M].楊東凱,張飛舟,張波,譯.北京:國(guó)防工業(yè)出版社,2009.
[5] STARZYK J A, ZHU Z. Averaging correlation for C/A code acquisition and tracking in frequency domain[J].MWSCAS 2001, Dayton, OH, 2001:905-908.
[6] 趙麗.基于FPGA平臺(tái)的GPS信號(hào)捕獲與跟蹤算法研究與實(shí)現(xiàn)[D]. 南京:南京郵電大學(xué),2012.