文獻(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開(kāi)發(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)中公開(kāi)的民用信號(hào),,以此為基礎(chǔ)的軟件接收機(jī)得到廣泛而深入的研究。目前,,并行碼相位算法在用高級(jí)語(yǔ)言實(shí)現(xiàn)的軟件接收機(jī)中廣泛應(yīng)用,,在運(yùn)算速度得到保證的前提下,與串行捕獲算法相比可以極大地提高捕獲衛(wèi)星的速度,。但是目前大多數(shù)嵌入式實(shí)時(shí)衛(wèi)星接收機(jī)由于計(jì)算能力和資源的限制,,而只能采用串行捕獲的方法。另外,,采用C/C++或者M(jìn)atlab等高級(jí)語(yǔ)言實(shí)現(xiàn)的軟件接收機(jī)雖然在捕獲速度和精度上滿足要求,,但是大多數(shù)只能實(shí)現(xiàn)事后處理,達(dá)不到實(shí)時(shí)處理的要求,。即使實(shí)現(xiàn)了實(shí)時(shí)處理,,用整臺(tái)計(jì)算機(jī)完成接收機(jī)的功能成本過(guò)高,而且體積重量較大,。但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)雙模雙通道快速捕獲,能極大地縮短開(kāi)發(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)行捕獲門(mé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é)果就可以通過(guò)傅里葉逆變換得到,,即:
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ǔ)起來(lái)備用,,將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,,沒(méi)有調(diào)制NH碼,,所以必須降采樣至2 048點(diǎn),執(zhí)行2 048點(diǎn)FFT/IFFT組合,,但捕獲過(guò)程中的其他操作同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)算過(guò)程中在精度和資源占用之間的折中,,數(shù)據(jù)位寬和旋轉(zhuǎn)因子固定,每一級(jí)蝶形變換都會(huì)根據(jù)情況對(duì)數(shù)據(jù)進(jìn)行移位,,如果超出數(shù)據(jù)位寬,,則低位數(shù)值將會(huì)被丟棄??紤]到這種情況,,最后的門(mén)限判決采用主次峰值比值超過(guò)閾值的方法。圖2為GPS/BD2改進(jìn)捕獲算法的Matlab仿真驗(yàn)證結(jié)果,。
分別用改進(jìn)算法和原始捕獲算法對(duì)同一組通過(guò)USB2.0采集到的中頻數(shù)據(jù)進(jìn)行處理,,兩者捕獲得到的衛(wèi)星一樣,各衛(wèi)星多普勒頻率一樣,,初始碼相位精度也在正負(fù)半個(gè)碼片之內(nèi),。這說(shuō)明改進(jìn)的捕獲算法不僅大大降低了計(jì)算量,實(shí)現(xiàn)起來(lái)更加容易,,而且仍然能夠很好地捕獲衛(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)行判決的過(guò)程中,,IP核的指數(shù)輸出exp可不予考慮,,這樣既節(jié)省了資源又降低了電路的復(fù)雜性。在執(zhí)行單次FFT/IFFT變換組合的過(guò)程中,,首先將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)頻率控制字,在捕獲過(guò)程中完成對(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表示, 而B(niǎo)D2則需用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)行門(mén)限判決,。
圖5為GPS和BD2快捕電路仿真得到I2+Q2的值,,橫軸為采樣點(diǎn)的偏移值,縱軸為幅值,。主次峰值的比值都超過(guò)了2,,說(shuō)明捕獲到衛(wèi)星;主峰偏移量分別為644和206,說(shuō)明快捕電路通過(guò)運(yùn)算得到的初始碼相位與Matlab中的結(jié)果一致,,算法改進(jìn)效果明顯,。最終,使用Signal Compiler將圖形模塊轉(zhuǎn)化成VHDL語(yǔ)言,在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ì)出來(lái)的電路能夠在單片F(xiàn)PGA內(nèi)以較高的精度迅速對(duì)GPS和BD2衛(wèi)星同時(shí)進(jìn)行捕獲,為捕獲之后的跟蹤環(huán)路留下寶貴的邏輯資源,。同時(shí),,本設(shè)計(jì)也為將來(lái)添加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.