賈興剛 許向陽 劉丹丹
摘 要 為了實現PC平臺上GPS軟件接收機C/A碼信號的快速搜索,本文提出了一種由CUDA快速捕獲GPS信號的方法。該方法以數據分塊和頻率補償信號捕獲算法為基礎,通過CUDA代碼的編寫,在GPU上并行計算實現信號的捕獲。最后,將本方法與傳統的捕獲方法進行比較。
關鍵詞 CUDA;捕獲;數據分塊;軟件接收機
中圖分類號 TN92 文獻標識碼 A 文章編號 2095-6363(2017)15-0087-01
GPS擴頻信號的快速捕獲技術一直是衛星信號處理研究的熱點。CUDA是利用圖形處理單元實現通用計算的編程模型,能夠使用大量的處理單元進行并行計算。本文在數據分塊和頻率補償信號捕獲算法基礎上,提出一種利用CUDA實現GPS信號C/A碼快速捕獲的方法。仿真結果表明:冷啟動條件下,搜索完全部GPS衛星只需1.602s,捕獲時間減少了。
1 數據分塊和頻率補償信號捕獲原理
數據分塊和頻率補償的信號補償算法是將Lms的采樣數據分塊,每塊包含1ms的數據,通過載波相位調整后的數據塊累加使信號強度提高,將中頻數據采樣按橫塊和豎塊重新排列,對豎塊數據進行FFT,對橫快數據進行FFT碼相位并行捕獲。
對一個L×N的輸入數據塊捕獲,數據分塊和頻率補償的信號捕獲總的FFT運算量為10×2×L個N點FFT加上N個L點FFT,如果直接對L×N的輸入數據進行FFT,總的計算量為20×L個L×N點的FFT。當L>1時,通過幾種不同的L長度兩種方法的運算量對比,先分塊處理然后進行FFT捕獲,利用FFT快速算法減少計算量從而達到快速捕獲的目的。
2 基于CUDA的快速捕獲
CUDA將并行計算從大型集群擴展到普通顯卡,使用戶只需要配置英偉達顯卡的電腦就可以運行較大規模的并行處理程序。GPU執行FFT的并行計算速度超過了CPU執行FFT的速度,使用基于數據分塊頻率補償與cuFFT相結合的的信號捕獲算法,可以實現更快的捕獲。
設定FFT點數為8192,輸入數據FFT的運算組數(Batch)為10,本地信號FFT的Batch為30,采用300個線程實現頻域相乘的操作。FFT的最大操作元素個數為8192×10×30=2457600。捕獲N號衛星的操作步驟如下:
Step1分配主機內存空間。
Step2分配設備內存空間。
Step3傳入衛星信號。
Step4對信號分塊。
Step5對輸入信號進行cuFFT變換。
Step6對本地偽碼進行cuFFT變換。
Step7根據頻率步進值調整偽碼cuFFT順序,將輸入信號的FFT結果和本地偽碼信號FFT結果共軛做乘法。
Step8對結果做cuIFFT逆變換得到一個矩陣,對這個矩陣中的數判斷最大值是否超過閾值。
Step9如果超過閾值,則捕獲成功,橫向是多普勒頻移信息,縱向是偽碼相位信息。如果不是則返回第一步繼續。
3 性能測試
在VS2010下利用C語言和CUDA編程語言分別實現捕獲算法。一種是基于FFT的碼相位并行搜索算法,使用的FFT是做了適量修改后的FFTW軟件包;另一種方法是本文提出的基于CUDA的快速捕獲方法。
仿真環境設置:硬件平臺為:英特爾i7-7700 3.60GHz,顯卡NVIDIA GeForce GTX 1060,3GB顯存,GPU的核心頻率是1.76GHz,1152個流處理器。測試過程中使用的時間函數是VS2010自帶的clock()函數。仿真環境不同測試的結果可能不同。
準備一組靜態測試的中頻數據。基本參數為:90s的BeiDou和GPS雙模中頻數據文件。采樣頻率為16.367 6MHz,理論中頻為4.130 4MHz,2比特量化,高比特為符號位,低比特為幅度位。程序中設計只捕獲GPS信號,兩種方法捕獲結果如表1所示。
由表1可見,兩種方法檢測到的參數幾乎相同,檢測性能沒有影響,但改進方法的計算速度提高了。
4 結論
本文針對GPS軟件接收機C/A碼信號快速捕獲的問題,以數據分塊和頻率補償的信號補償算法為基礎,提出了一種CUDA運算數據分塊和頻率補償算法快速捕獲GPS信號的方法。在PC平臺下將本方法和傳統碼相位捕獲方法進行了比較,結果表明,在保證捕獲性能的前提下,捕獲時間減少了。該方法對其他擴頻信號的快速捕獲具有一定的參考價值。
參考文獻
[1]L Xu,NI Ziedan. Correlation acceleration in GNSS software receivers using a CUDA-enabled GPU .Gps Solutions,2016:1-12.
[2]程俊仁,劉光斌,張博.基于CUDA的GPS信號快速捕獲[J].宇航學報,2010,31(10):2407-2410.
[3]魯郁.北斗/GPS雙模軟件接收機原理與實現技術[M].北京:電子工業出版社,2016.endprint