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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于循環(huán)前綴ML估計的同步分析及FPGA實現(xiàn)

          基于循環(huán)前綴ML估計的同步分析及FPGA實現(xiàn)

          作者:重慶郵電大學通信學院 重慶重郵信科公司 孫霞 盧彬 時間:2008-09-10 來源:中電網(wǎng) 收藏

            引言

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

            正交頻分復用(OrthogonalFrequency Division Multiplexing,)技術(shù)已經(jīng)成為第四代移動通信研究的熱點,同時,同步又是的關(guān)鍵技術(shù),研究OFDM同步技術(shù)的目的就是為了防止碼間干擾和載波干擾。當前OFDM同步的算法是根據(jù)OFDM原理提出的基于數(shù)據(jù)符號方法,它的優(yōu)點是捕獲快、精度高,適合分組數(shù)據(jù)通信,具體的實現(xiàn)是在分組數(shù)據(jù)包的包頭加一個專門用來做定時、頻偏的OFDM塊。基于數(shù)據(jù)符號的算法又可以分為兩類:基于訓練符號(導頻碼)的方法和基于循環(huán)前綴(CP)的方法。其中基于循環(huán)前綴的方法是在OFDM符號中插入保護間隔,保護間隔取符號尾部最后若干個樣點的復制,當其中的任何一個位于保護間隔內(nèi)時,另-個與它相同,兩者的相關(guān)性較強;當不在保護間隔內(nèi)時,這兩個樣點是獨立的。利用保護間隔的這些特性可以完成OFDM系統(tǒng)中符號定時偏差和載波頻偏估計。

            基于循環(huán)前綴的同步算法

            本文要討論的基于ML(最大似然估計)時頻同步算法是vande Beek等人提出來的,這是一個利用CP所攜帶的信息完成定時同步和載波同步的最大似然估計算法。它利用OFDM系統(tǒng)循環(huán)冗佘擴展的循環(huán)前綴攜帶的信息進行同步估計,避免了基于導頻碼的同步估計帶來的頻率和功率資源的浪費。

            如圖1所示,假設(shè)觀察接收信號r(n)的連續(xù)2N+NCP個樣值。在這些樣值中必然包含了一個長為N+NCP的OFDM符號。由于無法知道符號的開始位置,只能將其設(shè)為變量。定義兩個索引集合(Indexsets):

            其中,I表示的是OFDM符號最后NCP個樣值,I′表示的是循環(huán)前綴的樣值。將觀察區(qū)間內(nèi)的2N+NCP個樣值作為一個集合,可表示為:


           
            由于循環(huán)前綴是OFDM符號后一段的復制,所以集合和集合中的元素是相同的。


            式(4)中同時使用了一維和二維概率密度函數(shù)。其中乘積項是對所有2N+NCP點求乘積,所以與符號起點εt兀關(guān),如果假設(shè)信息是獨立同分布的,即r(n)的實部和虛部是互相獨立的,則也與εf無關(guān),所以可以忽略。據(jù)此式(4)可以被化簡為:

           
            根據(jù)集合I的范圍,式(5)也可以寫作:

           
            通過一系列代數(shù)運算之后,可被簡化為:

           
            其中∠表示取復數(shù)的角度,且:

           
            r(n)和r(n+N)的相關(guān)系數(shù)的幅度用ρ表示。

            對于頻偏εf而言,要使式(6)最大,即使余弦項達到最大值1,即:
           

            其中k為整數(shù)。由于余弦函數(shù)有周期性,所以根據(jù)k的不同會得到很多個最大值。如果考慮|εf|<0.5,則k=0。這樣就得到εf的極大似然估計值:

           
            要估計出頻偏就必須對符號精確定時。由此繼續(xù)簡化可得到:

           
            由于式(11)只與時偏有關(guān),所以可以得到的極大似然估計值為:

            圖2顯示了極大似然估計算法的方框圖。它增加了能量部分,能量部分是通過極大似然準則推導出來的,能量部分的引入彌補了單純利用循環(huán)前綴相關(guān)性算法的缺點,使得定時更準確。

            算法的實現(xiàn)

            圖3所示是同步算法實現(xiàn)框圖,設(shè)計采用512抽樣點,最大保護間隔按照NCP=512×1/4=128計算。工作過程大致如下:

            512位復數(shù)數(shù)據(jù)通過寫地址存儲到延時寄存器,存滿以后通過讀地址讀出前128位復數(shù),同時和后面的直接輸入128位數(shù)據(jù)送到后級模塊,兩路數(shù)據(jù)分別做共軛乘。延時寄存器模塊可用一個512×16的雙端口 RAM,RAM的讀寫地址分別為128位計數(shù)器和512位計數(shù)器。共軛乘后的復數(shù)數(shù)據(jù)流送給兩路移動求和模塊,求功率后的值送給一路移動求和模塊??刂破鲗奂悠髑辶悖瑫r控制RAM的讀寫和使能信號的產(chǎn)生。累加器采用16位二進制數(shù)累加,兩路16位的數(shù)據(jù)移動求和之后去求符號平均,然后再和另一路移動求和的結(jié)果運算歸一化,求相關(guān)峰最人值,若出現(xiàn)相關(guān)峰的最大值,就表明同步的到來,這時標記該數(shù)據(jù)的地址,然后讓控制器發(fā)出標志位置高指令,通知從該數(shù)據(jù)開始就可以進行FFT解調(diào)處理。如果沒有相關(guān)峰最大值的出現(xiàn),系統(tǒng)再循環(huán)讀出后128位地址數(shù)據(jù),重復前面的運算,直到找到最大相關(guān)峰。

            在求歸一化相關(guān)峰最大位置模塊中,先求出平均移動和的實虛部絕對值之和,再除以功率,得歸一化相關(guān)值。南于歸一化值為小數(shù),故需給結(jié)果乘以一因子,這里取2。由于ML同步脈沖是在最大值后持續(xù)ML窗寬時間輸出,這期間最大值對應(yīng)的相關(guān)和實、虛部保持不變,故求頻偏模塊可順序計算,只須用ML同步脈沖將求頻偏模塊輸出的頻偏鎖定輸出。

            經(jīng)過QuartusII 5.0工具的設(shè)計、編譯、綜合等一系列步驟,基于PN序列同步系統(tǒng)融合成一個整體模塊,如圖4所示。仿真結(jié)果如圖5所示。

            結(jié)語

            上述實現(xiàn)的是基于數(shù)據(jù)符號的OFDM系統(tǒng)同步算法,采用Altera公司的芯片EPlS25102015進行試驗仿真,該芯片有25660個邏輯單元,1944576個存儲模塊單元,80個模塊單元,707個輸出引腳。

            基于循環(huán)前綴的同步算法占用芯片資源適中,但是占用了27%的芯片引腳,另外,時鐘頻率也較低,設(shè)計電路較難,但是它達到更高的同步精度還要結(jié)合其他同步方式,它也可以應(yīng)用于無線信道通信中。綜合算法設(shè)計占用芯片資源以及相關(guān)情況的分析,算法在FPGA中的實現(xiàn)是可行且可靠的,充分發(fā)揮了FPGA芯片集成密度大、速度快、功耗低、通用性好、適應(yīng)性強和重復編程的特點。通常,可編程邏輯芯片都能提供人容量的邏輯和存儲單元,因此,芯片預留資源都是有富余的,信號處理的實時性和可靠性是關(guān)注的重點,當然成本也是考慮的一個因素,與此同時,也要考慮電路的設(shè)計復雜程度,因為它會影響數(shù)據(jù)處理的速度。



          關(guān)鍵詞: OFDM FPGA DSP I/O

          評論


          相關(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); })();