<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 一種跳頻MSK信號檢測算法及FPGA 實現(xiàn)

          一種跳頻MSK信號檢測算法及FPGA 實現(xiàn)

          作者: 時間:2011-06-06 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/191179.htm

            采用 調(diào)制的通信具有主瓣能量集中、旁瓣衰落滾降快、頻譜利用率高和抗干擾能力強(qiáng)等優(yōu)點(diǎn),在軍事通信中應(yīng)用廣泛。如美軍現(xiàn)役的聯(lián)合戰(zhàn)術(shù)信息分發(fā)系統(tǒng)采用的通信信號,工作帶寬969~1 206 MHz,速率為70000 多跳/ s, 單個頻點(diǎn)駐留時間約為13 s,信號持續(xù)時間* s, 總共有51個間隔為3 MHz 的信道,碼速率為5 MHz。已知在該工作頻段內(nèi)主要還存在單頻、窄帶調(diào)幅和線性調(diào)頻等信號。為了準(zhǔn)確截獲并識別目標(biāo)信號,針對此信號環(huán)境設(shè)計了一種 信號檢測識別方法,并使用 進(jìn)行了設(shè)計實現(xiàn)。

            1 設(shè)計

            1.1 寬帶信號實時檢測

            用現(xiàn)代技術(shù)來實現(xiàn)寬帶數(shù)字化接收的一個實用的方法是通過信道化技術(shù),實現(xiàn)信道化通常的方法是采用快速傅里葉變換(FFT)。利用FFT技術(shù)比用單個濾波器設(shè)計法更容易實現(xiàn),因為FFT所需要的運(yùn)算量更少。

            某個由FFT運(yùn)算輸出的頻率分量,可以看成輸入信號與某個脈沖函數(shù)的卷積。因此可以把FFT的每個輸出看成濾波器的脈沖響應(yīng)函數(shù)與輸入信號的卷積。為了處理一個連續(xù)的輸入信號。必須在不同時刻對各段數(shù)據(jù)進(jìn)行FFT處理。通常,起始點(diǎn)記為n = 0,數(shù)據(jù)段可以滑動M點(diǎn),相應(yīng)的FFT可以寫成:

           M 的值必須隨著輸入信號連續(xù)變化,這種運(yùn)算也叫作短時傅里葉變換(STFT)。

            FFT的長度和重疊點(diǎn)數(shù)是非常重要的參數(shù),這些參數(shù)與最小脈寬和頻率分辨率有關(guān),它們決定了接收機(jī)的靈敏度。若FFT的長度為N,信號的采樣頻率為f s,那么經(jīng)FFT計算后,信號的頻率分辨率為:

            數(shù)據(jù)重疊點(diǎn)數(shù)決定了時間分辨率和處理的最短脈寬,數(shù)據(jù)重疊率越高,則時間分辨率越高。

            本設(shè)計中使用STFT 的方法實現(xiàn)一個粗測頻引導(dǎo)數(shù)字接收機(jī),為覆蓋整個跳頻帶寬,采用700 MHz采樣率對目標(biāo)信號進(jìn)行采樣,粗測頻引導(dǎo)精度在1 MHz以內(nèi),因此FFT長度選擇為1 024 點(diǎn),數(shù)據(jù)重疊率50%,保證時間分辨率在1 s 之內(nèi)。

            利用粗測頻接收單元的檢測結(jié)果去引導(dǎo)一個精測單元,可以對目標(biāo)信號進(jìn)行更為精確的測量和識別。精測單元采用數(shù)字正交下變頻的實現(xiàn)方法,數(shù)字本振頻率隨粗測引導(dǎo)結(jié)果而設(shè)置,變頻后的帶寬依據(jù)目標(biāo)信號而確定。

            1.2 信號識別

            MSK 信號可以寫成:

            式中,Tb 為碼元周期,θk 是第k 個碼元的相位常數(shù),取值為nπ, Pk 為二進(jìn)制雙極性碼元,取值為 1,所以MSK 信號相位分段線性變化,每個碼元周期內(nèi)相對前*元載波相位上升或下降π/2

            根據(jù)三角函數(shù)展開,設(shè)θk 起始參考值為0,得:


            又根據(jù)Ik= 1, Qk= 1, 令f L= f c-14Tb, f H=f c+14Tb,MSK 信號經(jīng)過平方環(huán)可得:

            可知,MSK 信號經(jīng)過平方運(yùn)算后,含有2f L 和2fH兩個離散頻率分量,反映在FFT幅度譜上,在這2 個頻點(diǎn)上存在2 個明顯的譜峰,2 個譜峰的距離為1 個碼元速率,并且距離2 倍載頻處均為碼元速率的一半。這些特征是此頻段內(nèi)其他信號不具備的,可以根據(jù)這些特征對MSK 進(jìn)行有效的識別。因此,將經(jīng)過正交下變頻的信號進(jìn)行平方運(yùn)算,確定信號出現(xiàn)后對其平方的結(jié)果進(jìn)行FFT處理計算幅度譜,再對譜峰點(diǎn)進(jìn)行分析即可完成MSK 信號的識別。

            2 算法的 實現(xiàn)

            2.1 算法實現(xiàn)

            跳頻MSK 信號檢測識別的實現(xiàn)框圖如圖1 所示,采用 實現(xiàn),包括短時傅里葉變換(STFT) 粗測頻引導(dǎo)、數(shù)字正交下變頻、平方運(yùn)算和幅度譜分析等主要模塊。STFT 粗測頻引導(dǎo)在寬帶條件下進(jìn)行實時的信號檢測和頻率粗測,測量的結(jié)果引導(dǎo)數(shù)字正交下變頻模塊,對信號進(jìn)行變頻、濾波和抽取,得到低采樣速率的零中頻數(shù)據(jù),平方運(yùn)算模塊對零中頻數(shù)據(jù)進(jìn)行平方處理,在確定存在信號后,對平方運(yùn)算模塊的輸出進(jìn)行FFT運(yùn)算得到信號的幅度譜,通過幅度譜分析模塊得到最終的識別結(jié)果。


            2.2 高速STFT 實現(xiàn)

            為了覆蓋整個跳頻帶寬,中頻信號的采樣率設(shè)為700MHz, 而FPGA 無法直接處理這樣高速率的數(shù)據(jù),因此需要采用多路并行處理,即將中頻采樣信號分成4 路,每路175 MHz, 這使得在FPGA 中運(yùn)算成為可能。相應(yīng)的FFT運(yùn)算也需要多個運(yùn)算模塊并行處理,這樣的代價便是增加了硬件資源消耗。數(shù)據(jù)接收及FFT處理的實現(xiàn)框圖如圖2 所示。

            要實現(xiàn)50%的數(shù)據(jù)重疊處理,需要2 個圖2 所示的模塊,這樣粗測頻引導(dǎo)模塊就需要8 個1 024 點(diǎn)FFT運(yùn)算單元,在FPGA 中使用FFT的IP 核實現(xiàn)。

            完成FFT處理后需要進(jìn)行幅度譜計算和譜峰提取,通過對譜峰的能量檢測進(jìn)行是否存在信號的判斷,并根據(jù)譜峰位置得到粗測頻結(jié)果,以此引導(dǎo)正交下變頻模塊。

            2.3 數(shù)字正交下變頻的實現(xiàn)

            數(shù)字正交下變頻模塊根據(jù)前面得到的引導(dǎo)信息,設(shè)置合適的數(shù)字本振頻率值,將信號搬移到零中頻,并對信號進(jìn)行低通濾波和抽取,得到低采樣率的零中頻數(shù)據(jù),以方便后續(xù)處理。數(shù)字正交下變頻采用基于多相抽取濾波器的多路并行結(jié)構(gòu),實現(xiàn)如圖3所示。


          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA MSK 跳頻 算法

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();