一種基于cuda的多體制信號頻率快速捕獲實現(xiàn)方法
【專利摘要】一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特點在于:基于高性能PC,利用CUDA架構(gòu),以并行的方式實現(xiàn)多體制信號頻率的快速捕獲;實現(xiàn)步驟包括:設(shè)置多普勒及多普勒變化率分段,確定各GPU內(nèi)核函數(shù)的線程塊數(shù)目和每個線程塊中的線程數(shù)目,將信號數(shù)據(jù)讀入GPU卡全局存儲空間,啟動下變頻和積分模塊,進行并行FFT運算,以并行歸約方式查找最大值譜線及對應(yīng)的多普勒變化率分段和多普勒分段,計算載波頻偏和多普勒變化率估值完成捕獲。本發(fā)明使信號頻率快速捕獲算法符合CUDA架構(gòu)和GPU工作特點,能夠充分發(fā)揮GPU并行計算能力,同時適合多種體制的信號,有效提高捕獲速度且易于實現(xiàn)。
【專利說明】—種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種信號頻率快速捕獲實現(xiàn)方法,特別是一種基于CUDA的多體制信號頻率快速捕獲方法。
【背景技術(shù)】
[0002]信號的快速捕獲是測控通信的關(guān)鍵技術(shù)之一,隨著深空探測技術(shù)的發(fā)展,信號捕獲技術(shù)的難度和復(fù)雜度大大增加,當信號極其微弱且多普勒動態(tài)范圍大、變化率高時,信號捕獲一般采用二維FFT捕獲方法,即首先對多普勒分段,再在每個多普勒頻點對多普勒變化率分段,并在每個分段上進行相關(guān)、積分和FFT運算,查找最大譜線,這使得信號捕獲過程的運算量呈級數(shù)增長。現(xiàn)有的研究中一般采用高性能FPGA來實現(xiàn)這種二維FFT信號頻率快速捕獲算法,這種方式需要開發(fā)專門的硬件板卡,實現(xiàn)復(fù)雜,且FPGA的資源有限,一般一次只能實現(xiàn)一種體制信號的捕獲,通用性差、可擴展性差。
[0003]近年來,隨著商用高性能計算機系統(tǒng)的普及,基于現(xiàn)代高性能PC或服務(wù)器平臺的信號處理技術(shù)成為新的研究熱點,并且,統(tǒng)一計算設(shè)備架構(gòu)(Computer Unified DeviceArchitecture, CUDA)開啟了使用GPU強大計算能力做通用計算的大門,GPU具有強大的并行計算能力,如果能夠通過CUDA架構(gòu)在GPU上實現(xiàn)復(fù)雜的二維FFT信號快速捕獲算法,就能夠大大提高信號捕獲的速度,同時適應(yīng)多種體制,實現(xiàn)手段簡單,可擴展性強。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足之處,提供了種基于CUDA的多體制信號頻率快速捕獲方法,以高性能PC為平臺,基于CUDA架構(gòu),以并行的方式實現(xiàn)多體制信號頻率的快速捕獲;本發(fā)明使信號頻率快速捕獲算法符合CUDA架構(gòu)和GPU工作特點,能夠充分發(fā)揮GPU并行計算能力,同時適合多種體制的信號,有效提高了捕獲速度且易于實現(xiàn)。
[0005]本發(fā)明的技術(shù)解決方案是:一種基于CUDA的多體制信號頻率快速捕獲方法,步驟如下:
[0006](I) CPU通過CUDA架構(gòu)選擇GPU協(xié)處理器并初始化CPU和GPU的運行環(huán)境,同時對運行參數(shù)進行初始化設(shè)置,所述運行參數(shù)包括:信號數(shù)據(jù)文件路徑、信號碼速率、信號采樣頻率、信號載波頻率初始值、信號多普勒范圍、信號多普勒變化率范圍、信號的FFT分析點數(shù)和信號體制;
[0007](2) CPU根據(jù)步驟(I)中設(shè)置的信號數(shù)據(jù)文件路徑將信號數(shù)據(jù)從數(shù)據(jù)文件讀入CPU內(nèi)存中;
[0008](3) CPU根據(jù)步驟(I)中設(shè)置的信號碼速率確定信號的FFT采樣頻率和信號的FFT分析帶寬,然后根據(jù)信號的FFT采樣頻率計算對步驟(I)中設(shè)置的信號多普勒范圍進行分段的步進值,進而確定多普勒分段數(shù),根據(jù)信號的FFT分析帶寬計算對步驟(I)中設(shè)置的信號多普勒變化率范圍進行分段的步進值,進而確定多普勒變化率分段數(shù),最后根據(jù)步驟(I)中設(shè)置的信號采樣頻率和本步驟獲得的信號FFT采樣頻率計算信號的積分長度;
[0009](4) CPU分配GPU全局存儲空間,并初始化已分配的GPU全局存儲空間;
[0010](5)CPU根據(jù)步驟(3)中獲得的信號的積分長度設(shè)置GPU中在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目;
[0011](6)CPU根據(jù)步驟(3)中獲得的多普勒變化率分段數(shù)和步驟(I)中設(shè)置的信號FFT分析點數(shù)設(shè)置并行一維FFT運算的參數(shù),所述并行一維FFT運算的參數(shù)包括并行的一維FFT運算的個數(shù)和每個一維FFT運算的FFT分析點數(shù);
[0012](7)CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和步驟(I)中設(shè)置的信號FFT分析點數(shù)設(shè)置GPU對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,所述二維最大值查找的結(jié)果為一個維度與多普勒變化率分段數(shù)相同的一維數(shù)組,對所有多普勒分段進行二維最大值查找的結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù);
[0013](S)CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和多普勒分段數(shù)設(shè)置GPU對步驟(7)中所述的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù)的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,所述二維最大值查找的結(jié)果為一個維度與多普勒分段數(shù)相同的一維數(shù)組;
[0014](9) CPU根據(jù)步驟(3)獲得的多普勒分段數(shù)設(shè)置GPU對步驟⑶所述的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目;
[0015](1)CPU將步驟⑵中讀入到CPU內(nèi)存中的信號數(shù)據(jù)從CPU內(nèi)存拷貝至步驟(4)確定的GPU全局存儲空間中;
[0016](Il)GPU利用步驟(5)中確定的在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以并行的方式完成對步驟(10)讀入到GPU全局存儲空間中的信號數(shù)據(jù)的下變頻處理,然后以歸約算法進行并行求和,并對并行求和后的結(jié)果進行鑒相處理,將鑒相處理結(jié)果寫回步驟(4)確定的GPU全局存儲空間中,所述每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒變化率分段數(shù),另一個維度為信號的FFT分析點數(shù);
[0017](12)GPU利用步驟(6)中確定的并行一維FFT運算的參數(shù),對步驟(11)中的處理結(jié)果進行并行一維FFT運算,并將結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述并行一維FFT運算結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒變化率分段數(shù),另一個維度為信號的FFT分析點數(shù);
[0018](13)GPU根據(jù)步驟(7)中確定的對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程塊及多個線程并行的方式完成對步驟(12)的并行一維FFT運算結(jié)果分別進行取模獲得FFT模值,并分別對FFT模值以歸約算法并行查找最大值和最大值對應(yīng)的FFT點號,并將獲得的結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的結(jié)果為一個維度與多普勒變化率分段數(shù)相同的一維數(shù)組;
[0019](14)GPU循環(huán)進行步驟(11)至步驟(13),循環(huán)次數(shù)為多普勒分段數(shù),獲得對所有多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的結(jié)果,所述結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù);
[0020](15)GPU根據(jù)步驟(8)中確定的對步驟(14)獲得的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程塊及多個線程并行的方式完成對步驟(14)獲得的二維數(shù)組分別以歸約算法并行查找FFT模值在每一個多普勒分段下所有多普勒變化率范圍內(nèi)的最大值和對應(yīng)的多普勒變化率分段號,并將獲得的結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述對步驟(14)獲得的二維數(shù)組進行二維最大值查找的結(jié)果為一個維度與多普勒分段數(shù)相同的一維數(shù)組;
[0021](16)GPU根據(jù)步驟(9)中確定的對步驟(15)獲得的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程并行的方式完成對步驟(15)獲得的一維數(shù)組以歸約算法并行查找FFT模值在所有多普勒分段中的最大值和對應(yīng)的最大多普勒分段號,并將結(jié)果寫回步驟(4)確定的GPU全局存儲空間;
[0022](17)CPU將步驟(16)中獲得的FFT模值在所有多普勒分段中的最大值及其對應(yīng)的多普勒分段號、所述FFT模值在所有多普勒分段中的最大值在步驟(14)獲得的對應(yīng)的FFT點號和在步驟(15)獲得的對應(yīng)的多普勒變化率分段號從GPU全局存儲空間中拷貝回CPU內(nèi)存,并計算載波頻偏和多普勒變化率。
[0023]所述信號包括BPSK信號和標準TT&C信號。
[0024]所述步驟(3)中,CPU根據(jù)步驟⑴中設(shè)置的信號碼速率確定信號的FFT采樣頻率和信號的FFT分析帶寬,然后根據(jù)信號的FFT采樣頻率計算對步驟(I)中設(shè)置的信號多普勒范圍進行分段的步進值,進而確定多普勒分段數(shù),根據(jù)信號的FFT分析帶寬計算對步驟
(I)中設(shè)置的信號多普勒變化率范圍進行分段的步進值,進而確定多普勒變化率分段數(shù),最后根據(jù)步驟(I)中設(shè)置的信號采樣頻率和本步驟獲得的信號FFT采樣頻率計算信號的積分長度,具體為:
[0025]當信號體制為二相編碼體制,即BPSK時:
[0026]Fs = CodeRate ;
[0027]RBff = Fs/FFTSize ;
[0028]PerDoppler = Fs/4 ;
[0029]PerDopplerRate = 3 X RBff X RBff ;
[0030]Seg = 2 X Doppler/PerDoppler+1 ;
[0031]Segl = 2 X DopplerRate/PerDoppleRate+1 ;
[0032]SumSize = SampleRate/Fs+0.5 ;
[0033]當信號體制為統(tǒng)一測控體制,即標準TT&C時,RBff根據(jù)信號的情況和經(jīng)驗選取:
[0034]Fs = RBffXFFTSize ;
[0035]PerDoppler = Fs/4 ;
[0036]PerDopplerRate = 3 X RBff X RBff ;
[0037]Seg = 2 X Doppler/PerDoppler+1 ;
[0038]Segl = 2 X DopplerRate/PerDoppleRate+1 ;
[0039]SumSize = SampleRate/Fs+0.5 ;
[0040]式中,CodeRate為信號碼速率,F(xiàn)s為FFT采樣頻率,RBff為信號的FFT分析帶寬,Doppler為信號多普勒范圍,DopplerRate為多普勒變化率范圍,PerDoppler為多普勒范圍分段的步進值,Seg為多普勒分段數(shù),PerDopplerRate為多普勒變化率范圍分段的步進值,Segl為多普勒變化率分段數(shù),F(xiàn)FTSize為信號的FFT分析點數(shù),SumSize為積分長度,SampleRate為信號采樣頻率。
[0041]所述步驟(5)中,CPU根據(jù)步驟(3)中獲得的信號的積分長度設(shè)置GPU中在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0042](I)每個線程塊的線程數(shù)目由信號數(shù)據(jù)的積分長度決定,當積分長度小于等于1024時,線程數(shù)目等于積分長度,當積分長度大于1024時,線程數(shù)目等于1024 ;
[0043](2)令線程塊數(shù)目為(X,y,z),其中X為多普勒變化率的分段數(shù),y為FFT運算的分析點數(shù),z值為I。
[0044]所述步驟(7)中,CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和步驟⑴中設(shè)置的信號FFT分析點數(shù)設(shè)置GPU對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0045](I)每個線程塊中的線程數(shù)目由四分之一 FFT分析點數(shù)的值決定,當四分之一 FFT分析點數(shù)的值小于等于1024時,線程數(shù)目等于四分之一FFT分析點數(shù)的值,當四分之一FFT分析點數(shù)的值大于1024時,線程數(shù)目等于1024 ;
[0046](2)線程塊數(shù)目等于多普勒變化率的分段數(shù)。
[0047]所述步驟(8)中,CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和多普勒分段數(shù)設(shè)置GPU對步驟(7)中所述的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù)的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0048](I)每個線程塊中的線程數(shù)目由多普勒變化率分段數(shù)決定,當多普勒變化率分段數(shù)小于等于1024時,線程數(shù)目等于多普勒變化率分段數(shù),當多普勒變化率分段數(shù)大于1024時,線程數(shù)目等于1024;
[0049](2)線程塊數(shù)目等于多普勒的分段數(shù)。
[0050]所述步驟(9)中,CPU根據(jù)步驟(3)獲得的多普勒分段數(shù)設(shè)置GPU對步驟(8)所述的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0051](I)每個線程塊的線程數(shù)目由多普勒分段數(shù)決定,當多普勒分段數(shù)小于等于1024時,線程數(shù)目等于多普勒分段數(shù),當多普勒分段數(shù)大于1024時,線程數(shù)目等于1024 ;
[0052](2)線程塊數(shù)目等于I。
[0053]所述步驟(17)中計算載波頻偏和多普勒變化率,具體為:
[0054]載波頻偏由公式:
[0055]EstCarrFreq = (MaxDopplerID-Seg/2)XPerDoppIer+MaxFFTIDX RBff/2 ;
[0056]給出,式中,MaxDopplerID為FFT模值在所有多普勒分段中最大值對應(yīng)的多普勒分段號,MaxFFTID為FFT模值在所有多普勒分段中最大值對應(yīng)的FFT點號;
[0057]多普勒變化率由公式:
[0058]EstDopplerRate = (MaxDopplerRateID-Segl/2)XPerDopplerRate
[0059]給出,式中MaxDopplerRateID為FFT模值在所有多普勒分段中最大值對應(yīng)的多普勒變化率分段號。
[0060]本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
[0061](I)易于實現(xiàn):基于FPGA的信號頻率快速捕獲方法需要開發(fā)專門的硬件板卡和固件程序,實現(xiàn)難度大,實現(xiàn)周期長,且對硬件的調(diào)試工具有限,手段有限,而本發(fā)明基于CPU+GPU的開發(fā)平臺易于獲取,且利用CUDA架構(gòu),可以在C語言環(huán)境下完成對GPU的調(diào)用,代碼編寫容易,調(diào)試過程簡單。
[0062](2)運行速度快:本發(fā)明將信號頻率快速捕獲算法拆分為多個GPU處理過程,每個處理過程可以通過線程塊和線程兩層并行進行加速,并且本發(fā)明對信號快速捕獲算法的每個處理過程進行了合理的并行優(yōu)化設(shè)計,給出了每個處理過程線程塊數(shù)目和線程數(shù)目的確定方法,充分發(fā)揮了 GPU的并行計算能力,保證了本發(fā)明方法的運行速度。
[0063](3)適用范圍廣,基于CPU+GPU的開發(fā)平臺資源充足,本發(fā)明通過對信號頻率快速捕獲算法的處理過程進行結(jié)構(gòu)優(yōu)化,將BPSK體制和標準TT&C體制信號的頻率快速捕獲過程進行了融合,并且本發(fā)明針對此兩種體制分別給出了運行參數(shù)的確定方法,使本發(fā)明方法能夠同時滿足兩種體制信號頻率快速捕獲的要求。
[0064](4)可擴展性強:基于FPGA的信號頻率快速捕獲方法因為受到硬件自身特點的約束,資源受到限制,當信號的多普勒范圍和多普勒變化率范圍增大,多普勒分段數(shù)和多普勒變化率分段數(shù)增多,信號的FFT分析點數(shù)增大時都可能導(dǎo)致FPGA的資源不夠,從而需要更換FPGA器件并且重新設(shè)計硬件板卡,可擴展性差,而本發(fā)明采用的CPU+GPU的開發(fā)平臺和CUDA架構(gòu)均具有很強的可擴展性,當信號的多普勒范圍和多普勒變化率范圍增大,多普勒分段數(shù)和多普勒變化率分段數(shù)增多,信號的FFT分析點數(shù)增大時只需要根據(jù)本發(fā)明中給出的各處理過程線程塊數(shù)目和線程數(shù)目的確定方法重新確定各處理過程的線程塊數(shù)目和線程數(shù)目即可。
【專利附圖】
【附圖說明】
[0065]圖1是本發(fā)明采用的CUDA架構(gòu)的示意圖;
[0066]圖2是本發(fā)明流程示意圖。
【具體實施方式】
[0067]本發(fā)明采用自動運行的方式實施。實施例使用CUDA架構(gòu)提供的擴展C語言作為開發(fā)工具。
[0068]CUDA架構(gòu)示意如圖1所示,實施例使用高性能PC和新一代基于Ifepler架構(gòu)的GPU協(xié)處理器實施和運行。CUDA架構(gòu)中,高性能PC的CPU與GPU協(xié)同工作,CPU負責進行邏輯性強的事務(wù)處理和串行計算,包括啟動CUDA并行處理過程前進行數(shù)據(jù)準備和設(shè)備初始化的工作,以及在各CUDA并行處理過程間進行串行計算,GPU則專注于執(zhí)行高度線程化的并行處理任務(wù),運行在GPU上的CUDA并行處理過程稱為kernel (內(nèi)核處理過程),一個kernel存在兩個層次的并行,即Grid (線程網(wǎng)格)中的block (線程塊)間并行和block (線程塊)中的thread (線程)間并行。
[0069]實施例中將信號碼速率設(shè)為CodeRate、信號采樣率設(shè)為SampleRate、信號載波頻率初始值設(shè)為CarrFreq、信號多普勒范圍設(shè)為Doppler、信號多普勒變化率范圍設(shè)為DopplerRate、信號的FFT分析點數(shù)設(shè)為FFTSize、信號的FFT采樣頻率設(shè)為Fs、信號的FFT分析帶寬設(shè)為RBW、多普勒范圍分段的步進值設(shè)為PerDoppler、多普勒分段數(shù)設(shè)為Seg、多普勒變化率范圍分段的步進值設(shè)為PerDopplerRate、多普勒變化率分段數(shù)設(shè)為Segl、信號的積分長度設(shè)為SumSize、最大譜線對應(yīng)的多普勒分段號設(shè)為MaxDopplerlD,一次FFT分析所有點中最大值對應(yīng)的FFT點號設(shè)為MaxFFTID、最大譜線對應(yīng)的多普勒變化率分段號設(shè)為MaxDoppIerRateIDο
[0070]如圖2所示,實施例包括以下步驟:
[0071](I) CPU通過調(diào)用CUDA的API函數(shù)cudaSetDevice來選擇使用O號GPU協(xié)處理器并初始化運行環(huán)境,同時從配置文件讀取信號數(shù)據(jù)文件路徑、信號碼速率(CodeRate)、信號采樣率(SampleRate)、信號載波頻率初始值(CarrFreq)、信號多普勒范圍(Doppler)、信號多普勒變化率范圍(DopplerRate)、信號的FFT分析點數(shù)(FFTSize)、信號體制等運行參數(shù);
[0072](2) CPU根據(jù)步驟(I)中設(shè)置的信號數(shù)據(jù)文件路徑將信號數(shù)據(jù)從數(shù)據(jù)文件讀入CPU內(nèi)存中;
[0073](3) CPU根據(jù)步驟(I)中設(shè)置的信號碼速率(CodeRate)確定信號的FFT采樣頻率(Fs)和信號的FFT分析帶寬(RBW),然后根據(jù)信號的FFT采樣頻率(Fs)計算對步驟(I)中設(shè)置的信號多普勒范圍(Doppler)進行分段的步進值(PerDoppler),進而確定多普勒分段數(shù)(Seg),根據(jù)信號的FFT分析帶寬(RBW)計算對步驟(I)中設(shè)置的信號多普勒變化率范圍(DopplerRate)進行分段的步進值(PerDopplerRate),進而確定多普勒變化率分段數(shù)(Segl),最后根據(jù)步驟(I)中設(shè)置的信號采樣頻率(SampleRate)和本步驟獲得的信號FFT采樣頻率(Fs)計算信號的積分長度(SumSize),具體為:
[0074]當信號體制為二相編碼體制(BPSK)時:
[0075]Fs = CodeRate ;
[0076]RBW = Fs/FFTSize ;
[0077]PerDoppler = Fs/4 ;
[0078]PerDopplerRate = 3 X RBWX RBW ;
[0079]Seg = 2 X Doppler/PerDoppler+1 ;
[0080]Segl = 2 X DopplerRate/PerDoppleRate+1 ;
[0081]SumSize = SampleRate/Fs+0.5 ;
[0082]當信號體制為統(tǒng)一測控體制(標準TT&C)時,RBW根據(jù)信號的情況和經(jīng)驗選取,本實施例中RBW選取為10:
[0083]Fs = RBWXFFTSize ;
[0084]PerDoppler = Fs/4 ;
[0085]PerDopplerRate = 3 X RBWX RBW ;
[0086]Seg = 2 X Doppler/PerDoppler+1 ;
[0087]Segl = 2 X DopplerRate/PerDoppleRate+1 ;
[0088]SumSize = SampleRate/Fs+0.5 ;
[0089](4)CPU根據(jù)(3)的計算結(jié)果,分配GPU全局存儲空間,并初始化已分配的GPU全局存儲空間,具體為:
[0090]首先CPU調(diào)用CUDA的API函數(shù)cudaMalloc在GPU全局存儲空間中分配存儲空間,用以存儲步驟(10)將會用到的從CPU內(nèi)存中拷貝至GPU全局存儲空間的信號數(shù)據(jù),該存儲空間的大小等于信號的積分長度(SumSize)和信號的FFT分析點數(shù)(FFTSize)的乘積,然后調(diào)用CUDA的API函數(shù)cudaMemset對已分配好的GPU全局存儲空間進行初始化;
[0091]其二 CPU調(diào)用CUDA的API函數(shù)cudaMalloc在GPU全局存儲空間中分配存儲空間,用以存儲步驟(11)的處理結(jié)果,該存儲空間的大小等于信號的多普勒變化率的分段數(shù)(Segl)與信號的FFT分析點數(shù)(FFTSize)的乘積,然后調(diào)用CUDA的API函數(shù)cudaMemset對已分配好的GPU全局存儲空間進行初始化;
[0092]其三CPU調(diào)用CUDA的API函數(shù)cudaMalloc在GPU全局存儲空間中分配存儲空間,用以存儲步驟(13)的處理結(jié)果,該存儲空間的大小等于信號的多普勒的分段數(shù)(Seg)與信號的多普勒變化率的分段數(shù)(Segl)的乘積,然后調(diào)用CUDA的API函數(shù)cudaMemset對已分配好的GPU全局存儲空間進行初始化;
[0093]其四CPU調(diào)用CUDA的API函數(shù)cudaMalloc在GPU全局存儲空間中分配存儲空間,用以存儲步驟(15)的處理結(jié)果,該存儲空間的大小等于信號的多普勒的分段數(shù)(Seg),然后調(diào)用CUDA的API函數(shù)cudaMemset對已分配好的GPU全局存儲空間進行初始化;
[0094]最后CPU調(diào)用CUDA的API函數(shù)cudaMalloc在GPU全局存儲空間中分配存儲空間,用以存儲步驟(16)的處理結(jié)果,該存儲空間為一個包含4個單精度浮點數(shù)的結(jié)構(gòu)體,然后調(diào)用CUDA的API函數(shù)cudaMemset對已分配好的GPU全局存儲空間進行初始化;
[0095](5)CPU根據(jù)步驟(3)中獲得的信號的積分長度設(shè)置GPU中在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0096]每個線程塊的線程數(shù)目由信號數(shù)據(jù)的積分長度決定,當積分長度小于等于1024時,線程數(shù)目等于積分長度,當積分長度大于1024時,線程數(shù)目等于1024 ;
[0097]令線程塊數(shù)目為(X,y, z),其中X為多普勒變化率的分段數(shù),y為FFT運算的分析點數(shù),z值為I ;
[0098](6) CPU根據(jù)步驟(3)中獲得的多普勒變化率分段數(shù)和步驟(I)中設(shè)置的信號FFT分析點數(shù)設(shè)置并行一維FFT運算的參數(shù),所述并行一維FFT運算的參數(shù)包括并行的一維FFT運算的個數(shù)和每個一維FFT運算的FFT分析點數(shù),本實施例中具體為:
[0099]當信號體制為二相編碼體制(BPSK)時:
[0100]并行的一維FFT運算的個數(shù)等于多普勒變化率分段數(shù);
[0101]每個一維FFT運算的FFT分析點數(shù)等于4096 ;
[0102]當信號體制為統(tǒng)一測控體制(標準TT&C)時:
[0103]并行的一維FFT運算的個數(shù)等于多普勒變化率分段數(shù);
[0104]每個一維FFT運算的FFT分析點數(shù)等于16384 ;
[0105](7)CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和步驟⑴中設(shè)置的信號FFT分析點數(shù)設(shè)置GPU對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0106]每個線程塊中的線程數(shù)目由四分之一 FFT分析點數(shù)的值決定,當四分之一 FFT分析點數(shù)的值小于等于1024時,線程數(shù)目等于四分之一 FFT分析點數(shù)的值,當四分之一 FFT分析點數(shù)的值大于1024時,線程數(shù)目等于1024 ;
[0107]線程塊數(shù)目等于多普勒變化率的分段數(shù);
[0108]本步驟所述二維最大值查找的結(jié)果為一個維度與多普勒變化率分段數(shù)相同的一維數(shù)組,對所有多普勒分段進行本步驟所述二維最大值查找的結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù);
[0109](S)CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和多普勒分段數(shù)設(shè)置GPU對步驟(7)中所述的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù)的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0110]每個線程塊中的線程數(shù)目由多普勒變化率分段數(shù)決定,當多普勒變化率分段數(shù)小于等于1024時,線程數(shù)目等于多普勒變化率分段數(shù),當多普勒變化率分段數(shù)大于1024時,線程數(shù)目等于1024;
[0111]線程塊數(shù)目等于多普勒的分段數(shù);
[0112]本步驟所述二維最大值查找的結(jié)果為一個維度與多普勒分段數(shù)相同的一維數(shù)組;
[0113](9)CPU根據(jù)步驟(3)獲得的多普勒分段數(shù)設(shè)置GPU對步驟⑶所述的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為:
[0114]每個線程塊的線程數(shù)目由多普勒分段數(shù)決定,當多普勒分段數(shù)小于等于1024時,線程數(shù)目等于多普勒分段數(shù),當多普勒分段數(shù)大于1024時,線程數(shù)目等于1024 ;
[0115]線程塊數(shù)目等于I;
[0116](1)CPU將步驟⑵中讀入到CPU內(nèi)存中的信號數(shù)據(jù)從CPU內(nèi)存拷貝至步驟(4)確定的GPU全局存儲空間中;
[0117]具體實施時,CPU調(diào)用CUDA的API函數(shù)cudaMemcpy完成;
[0118](Il)GPU利用步驟(5)中確定的在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以并行的方式完成對步驟(10)讀入到GPU全局存儲空間中的信號數(shù)據(jù)的下變頻處理,然后以歸約算法進行并行求和,并對并行求和后的結(jié)果進行鑒相處理,將鑒相處理結(jié)果寫回步驟(4)確定的GPU全局存儲空間中,所述每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒變化率分段數(shù),另一個維度為信號的FFT分析點數(shù);
[0119]具體實施時當步驟(5)確定的GPU中在每個多普勒分段下所有多普勒變化率分段下對信號進行下變頻和積分處理的每個線程塊中的線程數(shù)目等于步驟(3)計算得到的信號的積分長度時,每個線程塊中的每一個線程對應(yīng)一個信號采樣點的下變頻過程和用歸約算法實現(xiàn)的積分過程,當每個線程塊中的線程數(shù)目小于步驟(3)計算得到的信號的積分長度時,每個線程塊中的每一個線程對應(yīng)多個采樣點的下變頻過程和用歸約算法實現(xiàn)的積分過程;
[0120]具體實施時,當信號體制為二相編碼體制(BPSK)時,下變頻和積分內(nèi)核函數(shù)中保留鑒相處理過程,當信號體制為統(tǒng)一測控體制(標準TT&C)時,下變頻和積分內(nèi)核函數(shù)中屏蔽鑒相處理過程。
[0121](12)GPU利用步驟(6)中確定的并行一維FFT運算的參數(shù),對步驟(11)中的處理結(jié)果進行并行一維FFT運算,并將結(jié)果寫回寫回步驟(4)確定的GPU全局存儲空間,所述并行一維FFT運算結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒變化率分段數(shù),另一個維度為信號的FFT分析點數(shù);
[0122]具體實施時CPU使用GPU廠商NVIDIA提供的基于GPU的通用函數(shù)庫CUFFT,首先根據(jù)步驟(6)中確定的并行一維FFT運算的參數(shù),調(diào)用CUFFT函數(shù)庫中的cufftPlanld函數(shù)創(chuàng)建一個一維CUFFT句柄,然后調(diào)用CUFFT函數(shù)庫中的cufTtExecC2C函數(shù)對步驟(11)的結(jié)果啟動GPU進行并行一批多個一維的FFT運算,運算結(jié)果寫回存放步驟(11)結(jié)果的同一片GPU全局存儲空間;
[0123](13)GPU根據(jù)步驟(7)中確定的對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程塊及多個線程并行的方式完成對步驟(12)的并行一維FFT運算結(jié)果分別進行取模獲得FFT模值,并分別對FFT模值以歸約算法并行查找最大值和最大值對應(yīng)的FFT點號,并將獲得的結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的結(jié)果為一個維度與多普勒變化率分段數(shù)相同的一維數(shù)組;
[0124]具體實施時當步驟(7)確定的GPU對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的每個線程塊中的線程數(shù)目等于四分之一 FFT分析點數(shù)時,每個線程塊中的每一個線程對應(yīng)一個FFT運算結(jié)果的取模和歸約求最大值過程,當每個線程塊中的線程數(shù)目小于四分之一 FFT分析點數(shù)時,每個線程塊中的每一個線程對應(yīng)多個FFT運算結(jié)果的取模和歸約求最大值過程;
[0125](14)GPU循環(huán)進行步驟(11)至步驟(13),循環(huán)次數(shù)為多普勒分段數(shù),獲得對所有多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的結(jié)果,所述結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù);
[0126](15)GPU根據(jù)步驟(8)中確定的對步驟(14)獲得的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程塊及多個線程并行的方式完成對步驟(14)獲得的二維數(shù)組分別以歸約算法并行查找FFT模值在每一個多普勒分段下所有多普勒變化率范圍內(nèi)的最大值和對應(yīng)的多普勒變化率分段號,并將獲得的結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述對步驟(14)獲得的二維數(shù)組進行二維最大值查找的結(jié)果為一個維度與多普勒分段數(shù)相同的一維數(shù)組;
[0127]具體實施時當步驟(8)確定的對步驟(14)獲得的二維數(shù)組進行二維最大值查找的每個線程塊中的線程數(shù)目等于多普勒變化率的分段數(shù)時,每個線程塊中的每一個線程對應(yīng)一個多普勒變化率分段FFT模值的歸約求最大值過程,當每個線程塊中的線程數(shù)目小于多普勒變化率的分段數(shù)時,每個線程塊中的每一個線程對應(yīng)多個多普勒變化率分段FFT模值的歸約求最大值過程;
[0128](16)GPU根據(jù)步驟(9)中確定的對步驟(15)獲得的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程并行的方式完成對步驟(15)獲得的一維數(shù)組以歸約算法并行查找FFT模值在所有多普勒分段中的最大值和對應(yīng)的最大多普勒分段號,并將結(jié)果寫回GPU全局存儲空間;
[0129]具體實施時當步驟(9)確定的對步驟(15)獲得的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的每個線程塊中的線程數(shù)目等于多普勒分段數(shù)時,每個線程塊中的每一個線程對應(yīng)一個多普勒分段最大譜線值的歸約求最大值過程,當每個線程塊中的線程數(shù)目小于多普勒分段數(shù)時,每個線程塊中的每一個線程對應(yīng)多個多普勒分段最大譜線值的歸約求最大值過程;
[0130](17)CPU將步驟(16)中獲得的FFT模值在所有多普勒分段中的最大值及其對應(yīng)的多普勒分段號、所述FFT模值在所有多普勒分段中的最大值在步驟(14)獲得的對應(yīng)的FFT點號和在步驟(15)獲得的對應(yīng)的多普勒變化率分段號從GPU全局存儲空間中拷貝回CPU內(nèi)存,并計算載波頻偏和多普勒變化率,具體為:
[0131]載波頻偏由公式:
[0132]EstCarrFreq = (MaxDopplerID-Seg/2)XPerDoppIer+MaxFFTIDX RBff/2 ;
[0133]給出,式中,MaxDopplerID為FFT模值在所有多普勒分段中最大值對應(yīng)的多普勒分段號,MaxFFTID為FFT模值在所有多普勒分段中最大值對應(yīng)的FFT點號;
[0134]多普勒變化率由公式:
[0135]EstDopplerRate = (MaxDopplerRateID-Segl/2)XPerDopplerRate
[0136]給出,式中MaxDopplerRateID為FFT模值在所有多普勒分段中最大值對應(yīng)的多普勒變化率分段號。
[0137]信號的快速捕獲是測控通信的關(guān)鍵技術(shù)之一,隨著深空探測技術(shù)的發(fā)展,信號捕獲技術(shù)的難度和復(fù)雜度大大增加,當信號極其微弱且多普勒動態(tài)范圍大、變化率高時,信號捕獲一般采用二維FFT捕獲方法,即首先對多普勒分段,再在每個多普勒頻點對多普勒變化率分段,并在每個分段上進行相關(guān)、積分和FFT運算,查找最大譜線,這使得信號捕獲過程的運算量呈級數(shù)增長。現(xiàn)有的研究中一般采用高性能FPGA來實現(xiàn)這種二維FFT信號頻率快速捕獲算法,這種方式需要開發(fā)專門的硬件板卡,實現(xiàn)復(fù)雜,且FPGA的資源有限,一般一次只能實現(xiàn)一種體制信號的捕獲,通用性差、可擴展性差。
[0138]本發(fā)明充分李永樂CUDA架構(gòu)和GPU的工作特點,能夠充分發(fā)揮GPU并行計算能力,同時適合多種體制的信號,有效提高了捕獲速度且易于實現(xiàn),適用于深空探測中測控信號的快速捕獲,尤其是信號極其微弱且多普勒動態(tài)范圍大、變化率高時,可以有效地實現(xiàn)信號頻率的快速捕獲。
[0139]本發(fā)明說明書中未作詳細描述的內(nèi)容屬于本領(lǐng)域技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1.一種基于CUDA的多體制信號頻率快速捕獲方法,其特征在于步驟如下: (1)CPU通過CUDA架構(gòu)選擇GPU協(xié)處理器并初始化CPU和GPU的運行環(huán)境,同時對運行參數(shù)進行初始化設(shè)置,所述運行參數(shù)包括:信號數(shù)據(jù)文件路徑、信號碼速率、信號采樣頻率、信號載波頻率初始值、信號多普勒范圍、信號多普勒變化率范圍、信號的FFT分析點數(shù)和信號體制; (2)CPU根據(jù)步驟(I)中設(shè)置的信號數(shù)據(jù)文件路徑將信號數(shù)據(jù)從數(shù)據(jù)文件讀入CPU內(nèi)存中; (3)CPU根據(jù)步驟(I)中設(shè)置的信號碼速率確定信號的FFT采樣頻率和信號的FFT分析帶寬,然后根據(jù)信號的FFT采樣頻率計算對步驟(I)中設(shè)置的信號多普勒范圍進行分段的步進值,進而確定多普勒分段數(shù),根據(jù)信號的FFT分析帶寬計算對步驟(I)中設(shè)置的信號多普勒變化率范圍進行分段的步進值,進而確定多普勒變化率分段數(shù),最后根據(jù)步驟(I)中設(shè)置的信號采樣頻率和本步驟獲得的信號FFT采樣頻率計算信號的積分長度; (4)CPU分配GPU全局存儲空間,并初始化已分配的GPU全局存儲空間; (5)CPU根據(jù)步驟(3)中獲得的信號的積分長度設(shè)置GPU中在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目; (6)CPU根據(jù)步驟(3)中獲得的多普勒變化率分段數(shù)和步驟⑴中設(shè)置的信號FFT分析點數(shù)設(shè)置并行一維FFT運算的參數(shù),所述并行一維FFT運算的參數(shù)包括并行的一維FFT運算的個數(shù)和每個一維FFT運算的FFT分析點數(shù); (7)CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和步驟(I)中設(shè)置的信號FFT分析點數(shù)設(shè)置GPU對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,所述二維最大值查找的結(jié)果為一個維度與多普勒變化率分段數(shù)相同的一維數(shù)組,對所有多普勒分段進行二維最大值查找的結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù); (8)CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和多普勒分段數(shù)設(shè)置GPU對步驟(7)中所述的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù)的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,所述二維最大值查找的結(jié)果為一個維度與多普勒分段數(shù)相同的一維數(shù)組; (9)CPU根據(jù)步驟(3)獲得的多普勒分段數(shù)設(shè)置GPU對步驟⑶所述的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目; (10)CPU將步驟(2)中讀入到CPU內(nèi)存中的信號數(shù)據(jù)從CPU內(nèi)存拷貝至步驟(4)確定的GPU全局存儲空間中; (11)GPU利用步驟(5)中確定的在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以并行的方式完成對步驟(10)讀入到GPU全局存儲空間中的信號數(shù)據(jù)的下變頻處理,然后以歸約算法進行并行求和,并對并行求和后的結(jié)果進行鑒相處理,將鑒相處理結(jié)果寫回步驟(4)確定的GPU全局存儲空間中,所述每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒變化率分段數(shù),另一個維度為信號的FFT分析點數(shù); (12)GPU利用步驟(6)中確定的并行一維FFT運算的參數(shù),對步驟(11)中的處理結(jié)果進行并行一維FFT運算,并將結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述并行一維FFT運算結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒變化率分段數(shù),另一個維度為信號的FFT分析點數(shù); (13)GPU根據(jù)步驟(7)中確定的對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程塊及多個線程并行的方式完成對步驟(12)的并行一維FFT運算結(jié)果分別進行取模獲得FFT模值,并分別對FFT模值以歸約算法并行查找最大值和最大值對應(yīng)的FFT點號,并將獲得的結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的結(jié)果為一個維度與多普勒變化率分段數(shù)相同的一維數(shù)組; (14)GPU循環(huán)進行步驟(11)至步驟(13),循環(huán)次數(shù)為多普勒分段數(shù),獲得對所有多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的結(jié)果,所述結(jié)果為一個二維數(shù)組,該數(shù)組的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù); (15)GPU根據(jù)步驟(8)中確定的對步驟(14)獲得的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程塊及多個線程并行的方式完成對步驟(14)獲得的二維數(shù)組分別以歸約算法并行查找FFT模值在每一個多普勒分段下所有多普勒變化率范圍內(nèi)的最大值和對應(yīng)的多普勒變化率分段號,并將獲得的結(jié)果寫回步驟(4)確定的GPU全局存儲空間,所述對步驟(14)獲得的二維數(shù)組進行二維最大值查找的結(jié)果為一個維度與多普勒分段數(shù)相同的一維數(shù)組; (16)GPU根據(jù)步驟(9)中確定的對步驟(15)獲得的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,以多個線程并行的方式完成對步驟(15)獲得的一維數(shù)組以歸約算法并行查找FFT模值在所有多普勒分段中的最大值和對應(yīng)的最大多普勒分段號,并將結(jié)果寫回步驟(4)確定的GPU全局存儲空間; (17)CPU將步驟(16)中獲得的FFT模值在所有多普勒分段中的最大值及其對應(yīng)的多普勒分段號、所述FFT模值在所有多普勒分段中的最大值在步驟(14)獲得的對應(yīng)的FFT點號和在步驟(15)獲得的對應(yīng)的多普勒變化率分段號從GPU全局存儲空間中拷貝回CPU內(nèi)存,并計算載波頻偏和多普勒變化率。
2.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述信號包括BPSK信號和標準TT&C信號。
3.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述步驟(3)中,CPU根據(jù)步驟(I)中設(shè)置的信號碼速率確定信號的FFT采樣頻率和信號的FFT分析帶寬,然后根據(jù)信號的FFT采樣頻率計算對步驟(I)中設(shè)置的信號多普勒范圍進行分段的步進值,進而確定多普勒分段數(shù),根據(jù)信號的FFT分析帶寬計算對步驟(I)中設(shè)置的信號多普勒變化率范圍進行分段的步進值,進而確定多普勒變化率分段數(shù),最后根據(jù)步驟(I)中設(shè)置的信號采樣頻率和本步驟獲得的信號FFT采樣頻率計算信號的積分長度,具體為: 當信號體制為二相編碼體制,即BPSK時:
Ps — CodeR&te ;
RBW = Fs/FFTSize ;
PerDoppler = Fs/4 ;
PerDopplerRate = 3 X RBff X RBff ;
Seg = 2 X Doppler/PerDoppler+1 ;
Segl = 2 X DopplerRate/PerDoppleRate+1 ;
SumSize = SampleRate/Fs+0.5 ; 當信號體制為統(tǒng)一測控體制,即標準TT&C時,RBW根據(jù)信號的情況和經(jīng)驗選取:
Fs = RBffXFFTSize ;
PerDoppler = Fs/4 ;
PerDopplerRate = 3 X RBff X RBff ;
Seg = 2 X Doppler/PerDoppler+1 ;
Segl = 2 X DopplerRate/PerDoppleRate+1 ;
SumSize = SampleRate/Fs+0.5 ; 式中,CodeRate為信號碼速率,F(xiàn)s為FFT采樣頻率,RBW為信號的FFT分析帶寬,Doppler為信號多普勒范圍,DopplerRate為多普勒變化率范圍,PerDoppler為多普勒范圍分段的步進值,Seg為多普勒分段數(shù),PerDopplerRate為多普勒變化率范圍分段的步進值,Segl為多普勒變化率分段數(shù),F(xiàn)FTSize為信號的FFT分析點數(shù),SumSize為積分長度,SampleRate為信號采樣頻率。
4.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述步驟(5)中,CPU根據(jù)步驟(3)中獲得的信號的積分長度設(shè)置GPU中在每個多普勒分段下所有多普勒變化率分段對信號進行下變頻和積分處理的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為: (1)每個線程塊的線程數(shù)目由信號數(shù)據(jù)的積分長度決定,當積分長度小于等于1024時,線程數(shù)目等于積分長度,當積分長度大于1024時,線程數(shù)目等于1024 ; (2)令線程塊數(shù)目為(x,y,z),其中X為多普勒變化率的分段數(shù),y為FFT運算的分析點數(shù),z值為I。
5.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述步驟(7)中,CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和步驟(I)中設(shè)置的信號FFT分析點數(shù)設(shè)置GPU對每個多普勒分段下所有多普勒變化率分段的FFT模值進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為: (1)每個線程塊中的線程數(shù)目由四分之一FFT分析點數(shù)的值決定,當四分之一FFT分析點數(shù)的值小于等于1024時,線程數(shù)目等于四分之一 FFT分析點數(shù)的值,當四分之一 FFT分析點數(shù)的值大于1024時,線程數(shù)目等于1024 ; (2)線程塊數(shù)目等于多普勒變化率的分段數(shù)。
6.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述步驟(8)中,CPU根據(jù)步驟(3)獲得的多普勒變化率分段數(shù)和多普勒分段數(shù)設(shè)置GPU對步驟(7)中所述的一個維度為多普勒分段數(shù),另一個維度為多普勒變化率分段數(shù)的二維數(shù)組進行二維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為: (I)每個線程塊中的線程數(shù)目由多普勒變化率分段數(shù)決定,當多普勒變化率分段數(shù)小于等于1024時,線程數(shù)目等于多普勒變化率分段數(shù),當多普勒變化率分段數(shù)大于1024時,線程數(shù)目等于1024; (2)線程塊數(shù)目等于多普勒的分段數(shù)。
7.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述步驟(9)中,CPU根據(jù)步驟(3)獲得的多普勒分段數(shù)設(shè)置GPU對步驟(8)所述的維度與多普勒分段數(shù)相同的一維數(shù)組進行一維最大值查找的線程塊數(shù)目和每個線程塊中的線程數(shù)目,具體為: (1)每個線程塊的線程數(shù)目由多普勒分段數(shù)決定,當多普勒分段數(shù)小于等于1024時,線程數(shù)目等于多普勒分段數(shù),當多普勒分段數(shù)大于1024時,線程數(shù)目等于1024 ; (2)線程塊數(shù)目等于I。
8.根據(jù)權(quán)利要求1所述的一種基于CUDA的多體制信號頻率快速捕獲實現(xiàn)方法,其特征在于:所述步驟(17)中計算載波頻偏和多普勒變化率,具體為: 載波頻偏由公式:
EstCarrFreq = (MaxDopplerID-Seg/2)XPerDoppIer+MaxFFTIDX RBff/2 ; 給出,式中,MaxDopplerID為FFT模值在所有多普勒分段中最大值對應(yīng)的多普勒分段號,MaxFFTID為FFT模值在所有多普勒分段中最大值對應(yīng)的FFT點號; 多普勒變化率由公式:
EstDopplerRate = (MaxDopplerRateID-Segl/2)XPerDopplerRate 給出,式中MaxDoppIerRateID為FFT模值在所有多普勒分段中最大值對應(yīng)的多普勒變化率分段號。
【文檔編號】H04L12/26GK104202209SQ201410381743
【公開日】2014年12月10日 申請日期:2014年8月5日 優(yōu)先權(quán)日:2014年8月5日
【發(fā)明者】陳蓉, 王靜溫 申請人:北京遙測技術(shù)研究所, 航天長征火箭技術(shù)有限公司