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