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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

          作者: 時間:2008-12-05 來源:網(wǎng)絡(luò) 收藏

            近年來, 隨著數(shù)字信號處理(DSP) 和超大規(guī)模集成電路(VLSI) 技術(shù)的發(fā)展, 正交頻分復(fù)用(Orthogonal Frequency Division Multiplexing)技術(shù)的應(yīng)用有了長足的進步和廣闊的發(fā)展前景。IEEE802.11a中就將正交頻分復(fù)用作為物理層的傳輸技術(shù);歐盟在數(shù)字音頻廣播(DAB)、地面數(shù)字視頻廣播(DVB2T)、高清晰度電視(HDTV)以及2003年4月公布的無線城域網(wǎng)(WMAN)802.16a等研究中都使用了正交頻分復(fù)用技術(shù)作為信道的傳輸手段。在正交頻分復(fù)用技術(shù)逐漸成熟的今天, 如何降低通信系統(tǒng)的成本, 使之更廣泛地應(yīng)用于數(shù)傳系統(tǒng)中, 已成為正交頻分復(fù)用研究的熱點。本文基于802.16a協(xié)議的原理架構(gòu),本著小成本、高效率的設(shè)計思想,建立了一個基于的可實現(xiàn)流水化運行的系統(tǒng)的硬件平臺,包括模擬前端及調(diào)制器及OFDM 解調(diào)器,用來實現(xiàn)OFDM的遠距離無線傳輸系統(tǒng)。

            1 模擬前端

            模擬前端主要包括發(fā)送端DA模塊、接收端AD模塊和射頻模塊。

            發(fā)送端DA模塊主要由XILINX公司的-XC2V1000芯片和數(shù)模轉(zhuǎn)換芯片AD9765、濾波器和放大器構(gòu)成,基帶處理調(diào)制后數(shù)據(jù)在控制時鐘同步下送入進行降峰均比等算法的處理,然后經(jīng)過交織將其送入AD9765進行數(shù)模轉(zhuǎn)換并上變頻到70MHz,輸出的模擬信號再經(jīng)聲表濾波器后放大進入下一級射頻模塊。發(fā)送端DA模塊硬件結(jié)構(gòu)框圖如圖1所示。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            接收端AD模塊主要由增益放大器、帶通濾波、采樣芯片AD9238和數(shù)字下變頻器GC1012構(gòu)成。AD模塊的主要功能是完成中頻信號的采樣和數(shù)字下變頻,在FPGA XC2V1000中完成符號同步算法,其輸出送OFDM解調(diào)器。接收端AD模塊硬件結(jié)構(gòu)框圖如圖2所示。

            射頻模塊工作在70MHz中頻上,射頻模塊的功能是將完成調(diào)制的中頻信號搬移到射頻波段上,或者將空中的接收信號下變頻到模擬前端所需的中頻波段上。

            2 OFDM 調(diào)制器實現(xiàn)架構(gòu)

            在OFDM系統(tǒng)中,OFDM調(diào)制器主要完成OFDM數(shù)據(jù)的調(diào)制。圖3為OFDM調(diào)制器的結(jié)構(gòu)框圖。OFDM的調(diào)制器采用N=120個數(shù)據(jù)子信道,8個導(dǎo)頻信道。120個數(shù)據(jù)子信道都采用 QPSK的信道調(diào)制,8個導(dǎo)頻信道采用BPSK的信道調(diào)制。為了使用基帶傳輸,進行添零處理(添加128個0),使頻帶擴展1倍。經(jīng)過逆序處理后,采用256點的IFFT進行 OFDM調(diào)制。系統(tǒng)時鐘為80MHz,用 FPGA 完成數(shù)據(jù)的編碼和調(diào)制,最后以讀時鐘為500kHz的速率送往 D/A。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            在FPGA中,按照具體的參數(shù)要求實現(xiàn)了OFDM系統(tǒng)中的調(diào)制功能,其工作流程為:數(shù)據(jù)發(fā)生器(M序列產(chǎn)生器)發(fā)送數(shù)據(jù),串并轉(zhuǎn)換后存儲在 256×2位的RAM_in中,當(dāng)接收夠一幀數(shù)據(jù)所需要的信息量后,從RAM_in中讀取數(shù)據(jù)進行QPSK映射、過采樣添零,隨后插入導(dǎo)頻模塊。與此同時,IFFT模塊接收QPSK映射、過采樣添零和插入導(dǎo)頻模塊發(fā)送出的數(shù)據(jù);當(dāng) QPSK、添零、共軛模塊處理完1個數(shù)據(jù)包的數(shù)據(jù)后,IFFT 模塊開始計算,進行OFDM的IFFT調(diào)制,經(jīng)IFFT 模塊計算后的數(shù)據(jù)輪換存入RAM_ou1或者RAM_ou2;控制模塊發(fā)出使能信號,先從數(shù)據(jù)輸出模塊中讀取同步頭發(fā)送,同步頭發(fā)送完成后,再從RAM_ou1或者RAM_ou2中讀取循環(huán)前綴和數(shù)據(jù)塊;當(dāng) IFFT 模塊計算完的數(shù)據(jù)全部送出后,控制模塊判斷開始處理下一包數(shù)據(jù),處理到第10包數(shù)據(jù),則通知外部控制器一幀數(shù)據(jù)處理完成。[next]

            3 OFDM 解調(diào)器實現(xiàn)架構(gòu)

            在OFDM系統(tǒng)中,解調(diào)器主要是對接收 A/D 采樣來的數(shù)據(jù)進行解調(diào)。圖4為OFDM解調(diào)器的結(jié)構(gòu)框圖。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            在FPGA中,按照參數(shù)要求實現(xiàn):將從A/D以500kHz的速率采樣來的數(shù)據(jù)存入 RAM 當(dāng)中,當(dāng)接收到第64個幀頭數(shù)據(jù)時,開始計算局部自相關(guān)函數(shù)基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn);每接收到一個幀頭數(shù)據(jù),取出8位(最高位無效,剩余7位為巴克碼),計算一次x(i)*x(i+j),并存儲、判斷,是否有相關(guān)最大值,如果有,則判斷計數(shù)器加1,在一個幀頭短前導(dǎo)字部分中,共有10個短前導(dǎo)字片,每一片為64個采樣點;當(dāng)接收到第640個數(shù)據(jù)后,判斷累加器是否超過了門限值640×3,如果累加門限值達到1920,則認為有幀到達,整體控制模塊產(chǎn)生使能信號,表示粗同步結(jié)束,準(zhǔn)備接受長前導(dǎo)字,進行細同步和頻偏估計計算,否則,將累加計數(shù)器清零,重新開始接受幀頭;幀到達檢測和幀同步過程完成后,再將接收到的數(shù)據(jù)存入到解幀模塊的數(shù)據(jù)RAM中;當(dāng)數(shù)據(jù)RAM中存滿256點的數(shù)據(jù)后,整體控制模塊發(fā)出讀使能信號、解幀使能信號和FFT的START信號,從RAM中讀取數(shù)據(jù),送往FFT 進行OFDM的解調(diào);然后去除循環(huán)前綴,去除添加的零和導(dǎo)頻信息;最后經(jīng)過QPSK的反映射和并串轉(zhuǎn)換后,還原成原始數(shù)據(jù)讀出,并等下一幀數(shù)據(jù)的接收。

            4 系統(tǒng)調(diào)試與性能分析

            采用OFDM技術(shù)的無線城域網(wǎng)通信系統(tǒng)是一個比較復(fù)雜的系統(tǒng)。利用Matlab仿真完成系統(tǒng)可行性論證后,需要考慮如何利用FPGA完成這個算法流程,這需要考慮采用特定FPGA進行運算時有限字長以及浮點運算的特點和系統(tǒng)所占用的FPGA資源,以保證系統(tǒng)的規(guī)模不至于過大而超過特定FPGA計算的存儲能力。經(jīng)過在硬件設(shè)備上的調(diào)試,最終完成采用OFDM技術(shù)的城域網(wǎng)系統(tǒng)。

            通過仿真完成可行性論證后,在以Altera公司的EP1C6Q240C8芯片為基礎(chǔ)的FPGA硬件平臺上,實現(xiàn)了以QPSK為調(diào)制形式,以FFT/IFFT變換為主的OFDM技術(shù)的城域網(wǎng)系統(tǒng)。

            4.1 IFFT模塊

            發(fā)送端系統(tǒng)的主時鐘頻率設(shè)計為80MHz,整體采用同步時序邏輯。發(fā)送端M序列的產(chǎn)生速率設(shè)定為80Mbps。送往D/A的數(shù)據(jù)速率設(shè)定為500kHz。在數(shù)據(jù)接收模塊,數(shù)據(jù)收到后立刻存儲,占用時間即為PC發(fā)送數(shù)據(jù)的時間。在QPSK、添零、導(dǎo)頻插入模塊,由于沒有中間存儲器,從RAM讀出數(shù)據(jù),經(jīng)過映射后就直接輸出,整個模塊需要256個時鐘周期。IFFT 模塊采用流水線結(jié)構(gòu)的算法,計算256點 IFFT需要128×8個蝶型單元,合計需要40 960個時鐘,加上輸入輸出所占用的時間,總共約需要41 216個時鐘周期(中間有一些狀態(tài)的跳轉(zhuǎn),合計512μs)。在數(shù)據(jù)輸出模塊,其輸入是 IFFT 模塊的輸出,它的輸出速率由 D/A控制。在FPGA中,OFDM調(diào)制器的邏輯單元的使用情況見表1,OFDM解調(diào)器的邏輯單元的使用情況見表2, IFFT的運算結(jié)果見圖5。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            在表1和表2中,調(diào)制器和解調(diào)器中所含有的引腳數(shù)過多,主要原因是在這些引腳中還含有很多用于調(diào)試和測量的引腳,在整個系統(tǒng)調(diào)試時,可以將調(diào)試和測量用的引腳去掉,只留有數(shù)據(jù)、地址和控制引腳。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            在解調(diào)器中需要用到大量的存儲單元,但考慮到Cyclone系列的存儲單元有限,而邏輯單元豐富的情況,故在解調(diào)器中,在幾乎耗盡EAB單元時,用邏輯單元來構(gòu)造所需的存儲器,可以實現(xiàn)正常的存儲功能。[next]

            在開發(fā)工程中,主要用到的開發(fā)工具由 Altera 公司的QuartusII 及Mathworks 公司的 Matlab。

            驗證過程如下:

            ·Matlab隨機生成一組128個復(fù)數(shù),然后按照 OFDM 幀格式插入0得到256復(fù)數(shù)點的一個符號,并寫入文件(如 datain.dat);

            在QuartusII中生成 IFFT 的仿真波形文件(ifft.vwf),另存為 ifft.tbl,并刪除其余信號,僅保留 IQ(輸入數(shù)據(jù),24bit);

            在UltraEdit中打開ifftt.tbl、datain.dat,用datain.dat 中的隨機數(shù)代替ifft.tbl 中的 IQ 數(shù)據(jù),保存ifft.tbl;

            在QuartusII中打開 ifft.tbl,將IQ復(fù)制到 ifft.vwf 中,開始運行仿真;

            ·將仿真結(jié)果另存為dataout.tbl,用Matlab讀取與原數(shù)據(jù)在Matlab下的IFFT變換結(jié)果進行比較分析。

            給出一組隨機數(shù)據(jù)輸入,經(jīng)過FPGA中的IFFT模塊變換得到時域幅度如圖6(實部)、圖7(虛部)所示。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            而將同樣的隨機數(shù)經(jīng)過MATLAB變換,得到的時域幅度如圖8(實部)、圖9(虛部)所示。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            實際測量與仿真計算的方差分析如圖10(實部)、圖11(虛部)所示。兩者結(jié)果基本一致。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            4.2 幀到達檢測同步模塊

            對于幀到達檢測同步系統(tǒng),要求盡可能在較短的時間內(nèi)建立同步,并且在幀同步建立后應(yīng)有較強的抗干擾能力。通常用漏同步概率P1、假同步概率P2和同步平均建立時間ts三個性能指標(biāo)來表示同步性能的優(yōu)劣。在本文的幀同步信號提取電路的建模與設(shè)計中,是以7位巴克碼識別器作為幀同步碼組的。在同步系統(tǒng)處于捕獲階段時,設(shè)置自動判決門限為7;在幀同步建立以后,則把判決門限降為6,這樣做的目的一方面是減少假同步的概率,另一方面是為了減少漏同步的概率。

            漏同步概率P1:

            假設(shè)系統(tǒng)的誤碼率為P,7位碼全部正確的概率是(1-P)7,因此判決門限電平為7時的漏同步概率為P1=1-(1-P)7。若將判決門限改為6,此時允許有一位錯碼,出現(xiàn)一位錯碼的概率為C71P1(1-P)6。漏同步概率為P1=1-[(1-P)7+C71P1(1-P)6]。一般地,設(shè)幀同步碼組數(shù)目為n,判決器容幀同步碼組中最大的錯碼數(shù)為m,則漏同步概率為:

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            從前面的幀同步系統(tǒng)的設(shè)計可以了解到,識別器只能被動地識別與幀同步碼組相同的碼組,如果在信息碼組中也出現(xiàn)了與幀同步碼組相同的碼組,這時識別器會把它誤認為幀同步碼組而出現(xiàn)假同步。

          基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)

            比較式(1)和式(2)可以看出,當(dāng)m增大時,P1減小,P2增大,兩者是矛盾的,另外還可以看出,當(dāng)n增大時,P1增大,而P2減小,兩者也是矛盾的。因此m和n的選擇要兼顧P1和P2的要求。

            平均同步建立時間ts:

            假設(shè)漏同步和假同步都不發(fā)生,即P1=0,P2=0。在最壞的情況下,實現(xiàn)幀同步最多需要一幀的時間。若一幀的碼元為N,碼元寬度為Tb,則最長的幀時間為NTb。如果同時出現(xiàn)漏同步和假同步,需要額外的同步建立時間,由此得到幀同步平均建立時間為:

            ts=(1+P1+P2)×NTb

            4.3 數(shù)據(jù)傳輸速率評價

            經(jīng)過實際測試,針對256點結(jié)合QPSK調(diào)制,每解調(diào)出一個符號平均所需要的指令周期為41 216個時鐘周期,即512μs。對此實際調(diào)試情況,分析其實測參數(shù)數(shù)據(jù)如下:

            一個OFDM符號內(nèi)包含的比特數(shù)為:1/2(卷積碼)×2bit(QPSK)×120(用戶子載波)+2bit(BPSK)×8(導(dǎo)頻子載波數(shù))=136bit,則除去導(dǎo)頻開銷,能夠用于數(shù)據(jù)傳輸?shù)目罩袛?shù)據(jù)率為基于FPGA的OFDM系統(tǒng)設(shè)計與實現(xiàn)。

            由此可見,實際測試的數(shù)據(jù)傳輸速率達到本系統(tǒng)要求(150kbps),表明此OFDM基帶處理系統(tǒng)的數(shù)據(jù)傳輸性能充分滿足所制定的標(biāo)準(zhǔn)。

            本文建立的基于FPGA的可實現(xiàn)流水化運行的OFDM系統(tǒng)的硬件平臺,經(jīng)系統(tǒng)調(diào)試和性能評價,符合設(shè)計要求,該硬件平臺的實現(xiàn)使得低成本高速OFDM調(diào)制設(shè)備的實現(xiàn)成為可能。

            參考文獻

            [1] 黃志偉,王彥. FPGA系統(tǒng)設(shè)計與實現(xiàn)[M]. 北京:電子工業(yè)出版社,2005.1.

            [2] 蔡云巖,李思敏. OFDM調(diào)制算法與FPGA實現(xiàn)[J].桂林電子工業(yè)學(xué)院學(xué)報,2002,(6).

            [3] 潘松,黃繼業(yè). EDA技術(shù)與VHDL[M]. 北京:清華大學(xué)出版社,2005.7.



          關(guān)鍵詞: FPGA OFDM 無線通信

          評論


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