基于凌華科技與System Generator的GPS快速捕獲算法的實現(xiàn)與驗證
作者
劉恩曉,男,1983.08生人,現(xiàn)為哈爾濱工業(yè)大學通信技術研究所博士生在讀,主要研究方向為衛(wèi)星導航接收機及其抗干擾技術研究
應用領域
導航接收機關鍵算法的硬件實現(xiàn)
挑戰(zhàn)
目前在GPS接收機中,對碼的捕獲一般有兩種方法:串行搜索方法和并行搜索方法。串行搜索方法硬件實現(xiàn)簡單,但其捕獲時間較長,每更改一次本地碼相位,就需要花費1ms,完成一個搜索約2min左右時間。導航接收機在很多應用領域要求高的數(shù)據(jù)更新率,這就要求捕獲時間變得更短才行。目前GPS信號捕獲電路的主要實現(xiàn)手段是通過使用DSP芯片,DSP可以通過C語言編寫程序,屬于軟件工作,可以在較高的層次進行設計,為設計工作提供了方便。但是此種實現(xiàn)方法不利于知識產權的保護,也不利于生產專門的芯片。因此本文采用FPGA來實現(xiàn)。而FPGA資源有限,如何通過復用來滿足資源占用是一個關鍵問題。此外,導航信號強度遠遠低于噪聲,接收SNR僅有-20dB,準確采集中頻數(shù)據(jù)對算法的驗證至關重要。
解決方案
重點研究了在SDR(Software Defined Radio)平臺上實現(xiàn)頻域捕獲算法,基于SDR平臺和FFT來實現(xiàn)并行快速捕獲算法。本文使用Xilinx公司的系統(tǒng)級建模工具System Generator完成了對XCVFX60FF1152這款V4 系列的FPGA芯片編程,完成了頻域捕獲算法的硬件實現(xiàn)。在設計中采用時分復用技術,使整個設計方案只采用一個FFT核,并且使用了一種新的復數(shù)乘法方案,節(jié)約了硬件資源。為了避免系統(tǒng)熱噪聲的影響而準確采集導航數(shù)據(jù),本系統(tǒng)設計時使用ADLINK公司生產的數(shù)字化儀PCI-9846H進行衛(wèi)星信號采集,使用Xilinx公司提供的編程軟件——System Generator,讀取采集數(shù)據(jù),在Matlab下的Simulink中進行系統(tǒng)設計調試,然后直接生成硬件描述語言下載到FPGA中。
一、引言
GPS接收機必須復現(xiàn)待捕獲的衛(wèi)星所發(fā)射的PN碼,然后必須移動這個復現(xiàn)碼的相位,直到與衛(wèi)星的PN碼發(fā)生相關為止。當接收機所復現(xiàn)的碼與輸入的衛(wèi)星碼相匹配時,有最大的相關值。當復現(xiàn)碼的相位與輸入的衛(wèi)星碼的相位在任何一邊的偏移超過1個碼片時,有最小的相關。這就是GPS接收機捕獲或跟蹤衛(wèi)星信號時在碼相位域內檢測衛(wèi)星信號的方式。這樣GPS信號的捕獲和跟蹤過程是二維的信號復現(xiàn)過,如圖1所示。圖中橫坐標為碼相位,縱坐標為多普勒頻槽。
典型情況下碼相位以1/2碼片的增量被搜索。每個碼相位搜索增量是一個碼片分格。每個頻率的分格大概是2/3T Hz,其中T是搜索逗留時間(逗留時間越長頻率分格越小)。一個碼分格和一個多普勒分格合并起來成為一個方格。在碼域內,GPS接收機完成自相關的過程是,首先搜索希望衛(wèi)星的相位,然后調節(jié)復現(xiàn)碼發(fā)生器的基碼標稱速率,以補償由于接收機和衛(wèi)星之間視距動態(tài)在衛(wèi)星PRN碼上所引起的碼相位延遲,從而實現(xiàn)對衛(wèi)星碼狀態(tài)的跟蹤。碼相關的過程用被相移的復現(xiàn)碼與輸入的衛(wèi)星碼實時相乘,然后積分和累加而實現(xiàn)。GPS接收機的目標是使其復現(xiàn)碼的瞬時相位于所希望的衛(wèi)星的碼相位保持最大的相關。 接收機還必須調整其復現(xiàn)的載頻信號,以使其與所希望的衛(wèi)星頻率相匹配,否則在距離域內的信號的相關過程將因為GPS接收機頻率響應的滾降特性而受到嚴重的衰減,后果是永遠也捕獲不到信號。即使接收機在搜索過程中成功捕獲了信號,如果失去了對衛(wèi)星頻率的跟蹤,也會接著失去對碼的跟蹤。因此,GPS接收機首先搜索希望衛(wèi)星的載波多普勒頻率,然后跟蹤這顆衛(wèi)星的載波多普勒狀態(tài),以在載波多普勒域完成載波的匹配過程。
二、頻域快速捕獲算法
2.1 頻域捕獲原理
隨著硬件技術的發(fā)展,F(xiàn)FT的運算速度越來越快。在現(xiàn)代通信,無線電導航,精密定位,精密時間測量和傳遞、授時等方面都要求對無線電信號進行實時相關處理。為了做到信號的快速捕獲,GPS接收機引入FFT算法來計算相關值。在每一個頻槽同時計算出所有碼相位的相關值,可以使捕獲時間盡可能的縮短。
FFT搜索算法是基于數(shù)學特性:時域的卷積等價于頻域的相乘[9]91-93。傳統(tǒng)的兩個抽樣序列之間的關系是按如下方式實現(xiàn)
偽碼并行FFT算法的搜索過程與匹配濾波法相似(但速度比匹配濾波法快),即:在估計的多普勒頻率點進行一次FFT搜索全部偽碼相位,功率最大值和門限值比較,若最大值大于門限值,則表明信號捕獲,給出信號所在位置的碼相位和多普勒頻率,進入信號跟蹤階段,如果最大值小于門限值,則表明信號未捕獲,通過控制邏輯改變多普勒搜索單元,重復上述過程。由于FFT具有把能量集中到一個單元上的特性,所以FFT的并行搜索方式,不但搜索時間短,而且可以在低信噪比下捕獲信號。
2.2 頻域捕獲的步驟
偽碼并行FFT算法的具體過程如下:
(1) 中頻信號采樣后經數(shù)字下變頻,交給FFT模塊。其中I、Q兩支路分別為實部和虛部進行復數(shù)FFT運算。
(2) 在FFT單元中,對進來的數(shù)據(jù)做分段處理,分段的長度L決定一次并行運算的長度,與捕獲概率、捕獲時間有很大的關系。
(3) 對本地產生的擴頻碼進行FFT運算,并取其復共軛。
(4) 把數(shù)據(jù)段和地址段的FFT結果相乘,然后進行IFFT運算。
(5) 對IFFT的結果取模值,存儲結果。
對結果進行捕獲判決,找出累加后一幀中最大點與設定的門限比較,如果高于門限值,進行一次捕獲檢驗,確定是真的捕獲后交與后面跟蹤支路。
2.3 頻域捕獲運算量分析
由于FFT算法的使用,使得相對時域的搜索算法相比,運算量大幅下降。以碼長為1023討論,對一路的接收信號序列x(n)和本地信號序列y(n)的相關函數(shù)在時域的表達式為:
在頻域計算1023個相關函數(shù)值所需的乘法運算次數(shù)縮減為在時域運算的1.57%,所需要的加法運算次數(shù)縮減為在時域運算的2.94%。可見該算法對運算量有明顯的減少。
三、算法實現(xiàn)與實驗驗證
本文中的導航信號來源于安捷倫4438C信號模擬器,射頻前端采用SiGe公司的SE4150芯片,數(shù)據(jù)采集采用ADLINK公司的PCI-9846H高速高分辨率數(shù)字化儀,該數(shù)字化儀具有4通道,16bit量化和40MSps的數(shù)據(jù)采集能力,板載512MHz的SDRAM,采集后將數(shù)據(jù)通過PCI存儲dat格式文件到計算機中,完全滿足實驗需求。數(shù)字處理平臺選用的是國防科技大學空間儀器研究中心開發(fā)的通用軟件無線電(SDR)開發(fā)平臺。
軟件平臺是Xilinx公司的System Generator,其特點是可以通過Simulink在高層實現(xiàn)硬件編程。System Generator是Xilinx公司的系統(tǒng)級建模工具,在很多方面擴展了MathWorks公司的Simulink平臺,提供了適合硬件設計的數(shù)字信號處理(DSP)建模環(huán)境,加速、簡化了FPGA的DSP系統(tǒng)級硬件設計。目前,基于System Generator的設計方法已在復雜系統(tǒng)實現(xiàn)中展現(xiàn)出強大的潛能。System Generator 在DSP工程師和FPGA工程師之間架起了一座橋梁,使得它在兩個領域都得到廣泛應用。對于DSP工程師來說,通過Simulink的設計,System Generator即可自動完成硬件比特流的產生,而不需要了解比特流的產生細節(jié)。對于FPGA工程師來說,System Generator并沒替代HDL的實現(xiàn)方式,而是簡化了繁瑣的編程過程,讓設計者把精力放在系統(tǒng)的關鍵模塊上。
3.1 系統(tǒng)設計
如果一個系統(tǒng)的所有模塊在System Generator模塊庫中能找到,那么使用System Generator實現(xiàn)整個系統(tǒng)設計將非常方便。用戶只需要點擊Generator按鈕即可產生所需要的所有文件,這些文件包括以下幾個。
(1) 該設計的全部HDL代碼。
(2) Clock Wrapper,包括系統(tǒng)時鐘和Clock Enable信號的產生。
(3) Testbench,用于ISE下仿真測試文件,可以對比Simulink下的仿真結果。
(4) 工程腳本文件,允許不同綜合工具(比如XST和Synplify)操作System Generator產生的HDL代碼。
(5) 其他文件,ISE通過這些文件使用System Generator產生的代碼。
使用System Generator進行FPGA開發(fā)的主要流程如圖3所示。
3.2 硬件開發(fā)平臺
國防科技大學空間儀器工程研究中心的通用軟件無線電(SDR)開發(fā)平臺,采用Xilinx公司的Virtex-4系列的XC4VFX60FF1148這款FPGA芯片和TI公司的TMS320C6455-1G這款DSP芯片作為主處理器。圖4及為SDR平臺。此外,此開發(fā)平臺上還集成了
(1) AD9287,四通道,8比特量化串行輸出,A/D轉換器。
(2) AD9432,單通道,12比特量化并行輸出,A/D轉換器。
(3) AD9777,二通道,16比特并行輸入,D/A轉換器。
(4) VME總線模塊,RS232模塊。
(5) 外擴SpiFlash,總容量64Mbit。
本設計方案采用了FPGA芯片作為處理器芯片,其內部資源如表1所示,可以看出此款FPGA芯片資源豐富,為基于FFT的快速捕獲算法的實現(xiàn)提供了很好的條件。
3.3 實驗結果
設置模擬器輸出GPS 4號衛(wèi)星導航信號,SNR=-19dB,多普勒頻偏+1kHz;ADLINK新建任務,設置ch0為工作通道,生成dat文件存儲到本地計算機,40MHz的采樣速率采集大于1s時長。
SiGe公司的SE4150芯片輸出中頻為16.368MHz,對DDS(Direct Digital Synthesizer)位數(shù)要求較高,所以對采集的數(shù)據(jù)進行預處理:經數(shù)字變頻將中頻降到1.25MHz。對于2MHz的帶寬,對數(shù)據(jù)不等間隔抽取降采樣,等效為4.096MHz的采樣速率,并重新量化為8bit位寬。將預處理的數(shù)據(jù)打開到工作區(qū)以待System Generator讀取調用。
System Generator的總體設計如圖5所示,主要包括以下幾個功能模塊:數(shù)據(jù)讀取模塊,4096點FFT/IFFT模塊,掃頻模塊,信號產生模塊,復數(shù)取模模塊,復數(shù)乘法模塊,F(xiàn)FT結果存儲模塊,捕獲判決模塊,邏輯控制模塊,本地數(shù)據(jù)與中頻數(shù)據(jù)選擇模塊(FFT數(shù)據(jù)與IFFT數(shù)據(jù)選擇模塊,系統(tǒng)控制信號產生模塊)等。
System Generator 可以自動生成可在ISE中處理的寄存器傳輸級(Register Transfer Level, RTL)和IP核代碼,在ISE中完成Xilinx執(zhí)行工程后生成位流文件,最后下載到FPGA完成整個設計流程。表2給出了經ISE綜合后本設計方案的硬件消耗情況。
從表中可以看出本設計方案所占用的芯片內的各項硬件資源平均在20%以下,這主要是因為,本設計方案采用了時分復用技術在整個設計方案中只采用一個FFT/IFFT核。從報告中可以看出系統(tǒng)的所支持的最大時鐘頻率為93.458MHz。
使用System Generator的Hardware Co-simulation功能,實現(xiàn)SDR平臺與PC交互通信,SDR平臺讀取PC中的數(shù)據(jù),并將運行結果返回給PC從而在PC上觀察分析實驗結果,如圖6所示。
圖7為輸入的待捕獲信號以及本地信號的波形圖。其中自上而下分別是待捕獲信號的實部,本地信號實部,待捕獲信號的虛部,本地信號的虛部,這里已經對待捕獲信號進行了歸一化處理。
圖8為FFT/IFFT模塊的輸入數(shù)據(jù)波形圖。其中圖a)為待運算數(shù)據(jù)的實部,圖b)為待運算數(shù)據(jù)的虛部,而圖c)為控制FFT/IFFT模塊開始工作的start端輸入的信號,圖d)為控制其進行FFT還是IFFT運算的fwd_inv端輸入的信號。輸入的運算數(shù)據(jù)分為3部分:本地信號FFT運算結果與待捕獲信號FFT運算結果復共軛相乘得到的數(shù)據(jù),下一次相關運算所需的本地信號,下一次相關運算所需的待捕獲信號??梢钥吹矫慨斠徊糠謹?shù)據(jù)輸入時,start端都會出現(xiàn)一個脈沖以使模塊開始進行運算,同時fwd_inv端輸入信號控制進行FFT運算還是IFFT運算。由于本地信號FFT運算結果與待捕獲信號FFT運算結果復共軛相乘得到的數(shù)據(jù)要進行IFFT運算,所以當這部分數(shù)據(jù)輸入時,fwd_inv端輸入的是0,代表進行的運算是IFFT運算。
圖9為FFT/IFFT模塊的輸出數(shù)據(jù)波形圖。其中圖a)為運算結果的實部,圖b)為運算結果的虛部,圖c)為xk_index端輸出數(shù)據(jù)波形,圖d)為標志著運算結束的edone端輸出數(shù)據(jù)波形。運算結果分為三部分:本地信號FFT運算結果與待捕獲信號FFT運算結果復共軛相乘得到的數(shù)據(jù)進行IFFT運算的結果待捕獲信號FFT運算結果,本地信號FFT運算結果。從圖中可以看出由于待捕獲信號的信噪比SNR=-19dB,其信號頻譜已完全淹沒于噪聲中。FFT/IFFT模塊完成一次運算,edone端會在輸出結果的前一個時鐘周期輸出一個脈沖,而當運算結果輸出時,xk_index端也會隨之輸出運算結果的序列號。
圖10為最終得到的捕獲結果波形圖,而圖11為最終捕獲到的碼相位延時和多普勒頻槽。可以看出在SNR=-19dB時,本設計方案得到了很好的相關峰。最終捕獲得到的碼相位延時為2000,多普勒頻槽為7,即捕獲到的DDS模塊的頻率字為40032,其對應的載波頻率為1.251MHz。這與輸入的待捕獲數(shù)據(jù)的參數(shù)一致。所以從仿真結果上可以證明,本設計方案能夠進行GPS信號的捕獲,同時進一步證明了基于FFT的頻域快速捕獲算法是正確有效的。
四、結論
本文詳細闡述了如何通過ADLINK結合System Generator構建驗證快速捕獲算法。本設計方案總體可分為FFT/IFFT模塊,掃頻模塊,信號產生模塊,復數(shù)運算模塊,F(xiàn)FT結果存儲模塊,捕獲判決模塊,以及最復雜的邏輯控制模塊等7個模塊。并且在設計的過程中只采用個一個FFT/IFFT核,很大程度上節(jié)約了硬件資源。同時還采用了一種新穎的復數(shù)乘法設計方案。從本章可以看出基于System Generator的硬件開發(fā)方法避開了繁瑣的編寫代碼的過程,簡單明了,模塊化很強,是一種快速有效的開發(fā)手段。
同時,本文通過Hardware Co-simulation對本設計方案進行了驗證。最終能夠對SNR=-19dB的待捕獲信號進行正確的捕獲。驗證了本設計方案的正確性與實用性。