吳衡,郭承軍,程亞文
(電子科技大學(xué) 電子科學(xué)技術(shù)研究院,成都 611731)
基于GPU的高動(dòng)態(tài)信號(hào)快速捕獲設(shè)計(jì)與實(shí)現(xiàn)
吳衡,郭承軍,程亞文
(電子科技大學(xué) 電子科學(xué)技術(shù)研究院,成都 611731)
傳統(tǒng)的軟件接收機(jī)均是由CPU處理器實(shí)現(xiàn),然而針對(duì)多普勒頻率偏移較大的衛(wèi)星信號(hào)捕獲問(wèn)題,基于FFT 的并行頻率空間搜索捕獲方法可捕獲較大的頻偏并跟蹤一定的頻率變化率,但其計(jì)算重復(fù)次數(shù)較多,耗時(shí)過(guò)長(zhǎng)。為此本文使用高性能計(jì)算平臺(tái),設(shè)計(jì)了一種適用于GPU的高動(dòng)態(tài)擴(kuò)頻信號(hào)捕獲的FFT并行頻率空間搜索捕獲方法,較好地平衡了其在高動(dòng)態(tài)擴(kuò)頻信號(hào)捕獲的優(yōu)越性和高捕獲耗時(shí)之間的矛盾,實(shí)現(xiàn)對(duì)高動(dòng)態(tài)擴(kuò)頻信號(hào)的快速捕獲。并充分利用GPU加速、高性能并行計(jì)算架構(gòu),測(cè)試結(jié)果表明:將FFT 的并行頻率空間搜索捕獲按本文的設(shè)計(jì)方案在GPU平臺(tái)實(shí)現(xiàn)后,捕獲單顆衛(wèi)星信號(hào)時(shí)間加速約96倍,捕獲全部衛(wèi)星時(shí)間加速46倍。
GPU;高動(dòng)態(tài);并行計(jì)算;并行頻率捕獲
在信號(hào)捕獲領(lǐng)域,擴(kuò)頻信號(hào)的快速捕獲一直是一個(gè)關(guān)鍵問(wèn)題。普通的靜態(tài)定位,載波多普勒頻率一般由衛(wèi)星的相對(duì)運(yùn)動(dòng)產(chǎn)生,接收機(jī)往往會(huì)自動(dòng)濾除高多普勒頻移的低仰角衛(wèi)星以提高接收的衛(wèi)星信號(hào)質(zhì)量,其有效多普勒范圍一般幾百Hz。但在高動(dòng)態(tài)環(huán)境下,載體的高速運(yùn)動(dòng)會(huì)導(dǎo)致載體和衛(wèi)星之間有很大的多普勒頻移以及很大的多普勒頻移變化率[1],例如彈載GPS接收機(jī)的運(yùn)動(dòng)(速度為7.6 km/s,加速度為10 g即98 m/s2)[2]。為了從高動(dòng)態(tài)擴(kuò)頻信號(hào)中解調(diào)出位置信息,就必須先對(duì)衛(wèi)星信號(hào)進(jìn)行快速捕獲。
與傳統(tǒng)的CPU架構(gòu)接收機(jī)相比,圖形處理器(GPU)具有高度的可編程能力、大量的并行處理單元和越來(lái)越高的內(nèi)存帶寬,因其廣泛用于高性能計(jì)算,非常適合大規(guī)模并行計(jì)算的特點(diǎn),近些年開(kāi)始逐漸應(yīng)用于GPS軟件接收機(jī)當(dāng)中[3]。例如楊靜、程俊仁等人在文獻(xiàn)[4]和文獻(xiàn)[5]中在GPU平臺(tái)上實(shí)現(xiàn)了基于FFT 的時(shí)域(碼相位)并行搜索算法,顯著提高了軟件接收機(jī)的信號(hào)捕獲速度,但其未提及處理高動(dòng)態(tài)信號(hào),黃健等人在文獻(xiàn)[6]中闡述,基于FFT 的頻域并行捕獲可捕獲較大的頻偏并跟蹤一定的頻率變化率,能解決多普勒頻率偏移較大的衛(wèi)星信號(hào)捕獲問(wèn)題,適用于高動(dòng)態(tài)信號(hào)的捕獲,然而其捕獲計(jì)算量大、耗時(shí)高,為此本文將并行頻率算法移植到GPU高性能平臺(tái)并實(shí)現(xiàn)計(jì)算加速。
所使用的GPU高性能平臺(tái),普通PC僅需要插入一張支持CUDA編程[7]的顯卡即可搭建,具有非常好的可移植性。本文通過(guò)使用CUDA編程實(shí)現(xiàn)了一種基于GPU的并行頻率空間搜索捕獲方法,實(shí)驗(yàn)測(cè)試結(jié)果表明:在保持原有可捕獲較大頻偏的特性下,搜索全部32顆衛(wèi)星僅需2.92 s,而使用CPU架構(gòu)則需要135.87 s,擁有將近46倍的加速比,而單顆衛(wèi)星的捕獲計(jì)算快近96倍。
正如文獻(xiàn)[8]中所說(shuō),目前國(guó)內(nèi)外文獻(xiàn)提出的捕獲算法大致可分為以下幾類(lèi):多普勒串行-偽碼串行搜索算法和多普勒串行-偽碼并行搜索算法,捕獲均受大頻偏范圍的影響;多普勒并行-偽碼串行搜索算法,捕獲受偽碼長(zhǎng)度的影響;多普勒和偽碼并行搜索方法,捕獲受高動(dòng)態(tài)性的影響。而文獻(xiàn)中的所描述的多普勒并行-偽碼串行搜索算法,即是本文所使用的并行頻率空間搜索算法。
在擴(kuò)頻通信中,由于信號(hào)傳輸、衛(wèi)星的高速移動(dòng)或者地面接收機(jī)的移動(dòng),都使接收到的信號(hào)與發(fā)送信號(hào)產(chǎn)生巨大差別,接收信號(hào)通常表達(dá)為
r0(t)=A·C(t-ετ)cos[2π(fc+fd)t+φ]+n0(t) ,
(1)
式中:A為幅度;C為偽碼;ε為偏移碼片數(shù);τ為碼元時(shí)間;fc為中頻頻率;fd為多普勒頻偏;n0(t)為白噪聲。將接收信號(hào)使用相關(guān)運(yùn)算來(lái)進(jìn)行偽碼捕獲,在一個(gè)偽碼周期積分時(shí)間內(nèi),接收機(jī)相關(guān)輸出為[9]
ε)τ]Sa(πfdT)|, 0≤ε<1.
(2)
從式(2)分析可知,只有0≤ε<1,即收為碼信號(hào)與本地偽碼信號(hào)時(shí)延差小于1碼片,才能有一個(gè)明顯的峰值幅度,如果輸入信號(hào)中包含了其他衛(wèi)星的信號(hào)分量,那它們也會(huì)由于相互間低相關(guān)性被減到最低。
而在文獻(xiàn)[6]中,對(duì)“頻域(載波) 并行捕獲法”,即本文所用的并行頻率空間搜索算法在高動(dòng)態(tài)領(lǐng)域的理論仿真實(shí)現(xiàn)做了一個(gè)詳細(xì)的闡述,如圖1所示。
圖1 算法流程圖
其中數(shù)據(jù)長(zhǎng)度Ii決定了捕獲精度。長(zhǎng)度越長(zhǎng),捕獲多普勒頻移的分辨率越高,頻率估計(jì)的柵欄效應(yīng)越小。
Ii=0.5PN[(1+η)(ti-τ)]·PN(ti)·
cos(ωdti+φ0) ,
(3)
式中:PN(t)為偽隨機(jī)碼序列;ωd為帶多普勒頻移的實(shí)際載波頻率;φ0為載波初始相位;τ為本地PN碼與接收到的PN碼的時(shí)延差,多普勒頻移造成碼速率抖動(dòng)的影響為η=ωd/ωc;ωd為載波角頻率。對(duì)序列做FFT變換,即可對(duì)信號(hào)中的實(shí)際接收到的信號(hào)載波頻率做出估計(jì)。
眾所周知GPSL1信號(hào)C/A碼長(zhǎng)1 023位,偽碼長(zhǎng)度屬于GNSS信號(hào)中偽碼長(zhǎng)度最短的信號(hào)。本文基于GPSC/A碼研究,碼長(zhǎng)較短,并且并行頻率空間搜索算法本身適用于大頻偏范圍。故本文僅處理對(duì)高動(dòng)態(tài)下的GPS信號(hào),使用GPU快速捕獲的方法實(shí)現(xiàn)研究。
為凸顯出GPU高性能計(jì)算的高效快速以及滿(mǎn)足高動(dòng)態(tài)捕獲性能,本實(shí)驗(yàn)條件使用了較高的中頻采樣率所獲得大數(shù)據(jù)進(jìn)行處理運(yùn)算。使用38.192MHz中頻采樣1ms所得衛(wèi)星接收數(shù)據(jù),其中包含完整一周期C/A碼信號(hào)。根據(jù)相位調(diào)整公式(4),每個(gè)C/A碼1 023位計(jì)算得到,每次相位調(diào)整跨度為37.3。
p=fIF×Δt/fC/A.
(4)
為了實(shí)現(xiàn)GPU的最大化利用,將一個(gè)RPN碼的所有碼相位保存到一個(gè)線(xiàn)性數(shù)組中。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如圖2所示,共有1 023個(gè)碼相位,每個(gè)碼相位包含有38 192個(gè)數(shù)據(jù),采用這種以空間換時(shí)間的設(shè)計(jì)方法,僅一次運(yùn)算即可完成一顆衛(wèi)星的全部碼相位搜索,大大縮減了反復(fù)調(diào)用內(nèi)核函數(shù)的次數(shù)。
程序中通過(guò)調(diào)用CUFFT庫(kù)函數(shù)進(jìn)行快速傅里葉運(yùn)算以及cublas庫(kù)函數(shù)進(jìn)行峰值查找。為了能更充分利用GPU的高性能計(jì)算,將采用流的方式加速運(yùn)算效率縮短GPU空閑時(shí)間,捕獲操作步驟如圖3所示。程序先讀取bin文件1ms原始數(shù)據(jù),共38 192字節(jié),然后進(jìn)行CUDA初始化操作,這其中包含CUDA內(nèi)存空間初始化、流初始化、FFT及CUBLAS庫(kù)初始化等;初始化完畢程序進(jìn)入32顆衛(wèi)星的循環(huán)遍歷捕獲過(guò)程,首先由C/A碼產(chǎn)生器產(chǎn)生第i顆衛(wèi)星偽碼,并調(diào)用內(nèi)核執(zhí)行1 023次相位擴(kuò)展,使其滿(mǎn)足圖2所示的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。再調(diào)用內(nèi)核函數(shù),將原始數(shù)據(jù)依次與偽碼相乘,所得結(jié)果通過(guò)執(zhí)行cufftExecR2C內(nèi)核函數(shù)進(jìn)行快速FFT變換;通過(guò)執(zhí)行cublasIcamax內(nèi)核函數(shù)進(jìn)行峰值判決,如果存在則表明該顆衛(wèi)星捕獲成功并記錄載波和碼相位數(shù)據(jù),如果沒(méi)有峰值則繼續(xù)進(jìn)行第i+1顆衛(wèi)星的搜索。
圖3 程序設(shè)計(jì)流程圖
在圖2中通過(guò)設(shè)計(jì)并行數(shù)據(jù)結(jié)構(gòu)的方法使得算法執(zhí)行一次循環(huán)就可以完成1顆衛(wèi)星的粗捕獲搜索。其每次數(shù)據(jù)計(jì)算量為:38192×1023×4≈150 MB數(shù)據(jù)。在CUDA中將1 023個(gè)碼片擴(kuò)展到一個(gè)一維數(shù)組中,大大降低了捕獲單星內(nèi)核函數(shù)調(diào)用次數(shù)。實(shí)驗(yàn)所用設(shè)備CPU處理器為i7-4710MQ,GPU處理器為GeForce GTX 850 M。在GPU上并行執(zhí)行此算法與在CPU上串行執(zhí)行此算法所耗費(fèi)時(shí)間,如表1所示。
表中數(shù)據(jù)均是三次運(yùn)行取均值的結(jié)果,其中執(zhí)行單顆衛(wèi)星的捕獲,CPU需要4.15 s時(shí)間,GPU需要1.552 s時(shí)間,其中GPU的耗時(shí)主要消耗在程序初始化以及顯存空間分配上,而CPU上運(yùn)算不存在這個(gè)問(wèn)題,所以在執(zhí)行后面的32顆衛(wèi)星完整捕獲時(shí),GPU耗時(shí)僅需2.925 s.經(jīng)過(guò)換算,其捕獲單顆衛(wèi)星實(shí)際時(shí)間為(2.925s-1.552s)/31≈44 ms.與基于CPU的捕獲相比,基于CUDA的并行頻率捕獲在進(jìn)行衛(wèi)星捕獲運(yùn)算時(shí),捕獲單顆衛(wèi)星擁有近96倍的加速比,而捕獲32顆衛(wèi)星總耗時(shí)擁有46倍的加速比。
表1 函數(shù)執(zhí)行情況表
本文實(shí)現(xiàn)了一種GPU平臺(tái)下的FFT 的并行頻率捕獲方法。其利用GPU的高性能計(jì)算以及高并發(fā)特性,使得在不改變算法原有基本特性的情況下提高運(yùn)算速度,彌補(bǔ)了其捕獲時(shí)間長(zhǎng)的缺點(diǎn),實(shí)驗(yàn)結(jié)果說(shuō)明其加速效果非常明顯。本文是文獻(xiàn)[5]中對(duì)此算法在高動(dòng)態(tài)領(lǐng)域的理論分析進(jìn)行的實(shí)際應(yīng)用拓展,將算法移植到GPU高性能計(jì)算平臺(tái),所以采用此算法不僅能捕獲較大的頻偏并跟蹤一定的頻率變化率,而且捕獲執(zhí)行效率大大提高,較好地平衡了其在高動(dòng)態(tài)擴(kuò)頻信號(hào)捕獲的優(yōu)越性和捕獲耗時(shí)久之間的矛盾。在衛(wèi)星通信中具有廣泛的應(yīng)用前景。
[1] 施榮華,余暢,董健,等. 一種高動(dòng)態(tài)環(huán)境下COMPASS衛(wèi)星信號(hào)快速捕獲算法[J]. 計(jì)算機(jī)應(yīng)用研究,2015(5):1454-1457.
[2] 易維勇,董緒榮,孟凡玉,等. GNSS 單頻軟件接收機(jī)應(yīng)用于編程[M]. 北京:國(guó)防工業(yè)出版社,2010.
[3] IM S H, JEE G L. Software-based real-time GNSS signal generation and processing using a graphic processing unit (GPU)[J].Journal of Positioning, Navigation, and Timing, 2014,3(3):99-105.
[4] 楊靜,劉一霏. 基于GPU的GPS信號(hào)并行捕獲[J]. 中國(guó)慣性技術(shù)學(xué)報(bào),2012(4):430-434.
[5] 程俊仁,劉光斌,張博. 基于CUDA的GPS信號(hào)快速捕獲[J]. 宇航學(xué)報(bào),2010(10):2407-2410.
[6] 任宇飛,程乃平. 高動(dòng)態(tài)擴(kuò)頻信號(hào)快速捕獲技術(shù)研究[J]. 國(guó)外電子測(cè)量技術(shù),2009(7):24-26,29.
[7] SANDERS J, KANDROT E. CUDA by example: An introduction to general-purpose GPU programming[M]. Addison-Wesley Professional, 2010.
[8] 黃健,張德海,孟進(jìn),等. 一種改進(jìn)的高動(dòng)態(tài)擴(kuò)頻信號(hào)捕獲方法[J]. 電子測(cè)量技術(shù),2015(9):116-120.
[9] 方科. 高動(dòng)態(tài)低信噪比下擴(kuò)頻信號(hào)捕獲算法研究[J]. 電視技術(shù),2013,37(13):112-115,152.
Design and Implementation of Rapid Acquisition for High-dynamic Signal Based on GPU
WU Heng, GUO Chengjun, CHENG Yawen
(ResearchInstituteofElectronicScienceandTechnology,UniversityofElectronicScienceandTechnologyofChina,Chengdu611731,China)
Traditional software receiver are implemented by a CPU processor. However, parallel FFT frequency space search acquisition method can capture a large frequency offset and search for a large frequency range for the large doppler frequency problem, but it needs large amount of computation, and takes too long time on CPU. And the traditional method takes too long time. So this paper using high-performance computing platform, designed a rapid acquisition for high-dynamic signal base on GPU by parallel FFT frequency space search acquisition method. It fully inherited the advantages and effectively shorten the time of capture. By taking full use of GPU acceleration, and high-performance parallel computing architecture, the test results showed that: the parallel FFT frequency space search acquisition on GPU platform acceleration time of about 96 times to capture a single satellite signal, and accelerated 46 times to through all satellites.
GPU; high-dynamic; parallel computing; parallel frequency acquisition
2016-07-18
10.13442/j.gnss.1008-9268.2016.06.011
P228.4
1008-9268(2016)06-0055-04
吳衡(1992-),男,碩士生,主要研究方向?yàn)樾l(wèi)星導(dǎo)航。
郭承軍 (1985-),男, 博士研究生,主要研究方向?yàn)樾l(wèi)星導(dǎo)航。
聯(lián)系人:吳衡 E-mail: w._heng@163.com