• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > OFDM信道調制解調的仿真及其FPGA設計

    OFDM信道調制解調的仿真及其FPGA設計

    作者: 時間:2015-02-09 來源:網絡 收藏

      (正交頻分復用)是一種高效的多載波調制技術,其最大的特點是傳輸速率高,具有很強的抗碼間干擾和信道選擇性衰落能力。最初用于高速MODEM、數字移動通信和無線調頻信道上的寬帶數據傳輸,隨著IEEE802.11a協議、BRAN(Broadband Radio Access Network)和多媒體的發展,數字音頻廣播(DAB)、地面數字視頻廣播((DVB-T)和高清晰度電視((HDTV)都應用了技術。

    本文引用地址:http://www.czjhyjcfj.com/article/269688.htm

      OFDM利用離散傅立葉反變換/離散傅立葉變換(IDFT/DFT)代替多載波調制和解調,調制解調的核心是快速傅立葉運算單元,在進行蝴蝶運算時,不可避免的要進行大量的乘法運算。由于具有強大的并行處理和計算能力,以及豐富的存儲資源和邏輯運算資源,因此在器件上實現OFDM調制解調結構,具有很好的通用性和靈活性。

      OFDM與系統框圖

      OFDM的多個載波相互正交,一個信號內包含整數個載波周期,每個載波的頻點和相鄰載波零點重疊,這種載波間的部分重疊提高了頻帶利用率。OFDM每個子信道的頻譜均為sinx/x形,各子信道頻譜相互交疊,但在每個子信道載頻的位置來自其他子信道的干擾為零,如圖1所示。

      

     

      OFDM系統如圖2所示,OFDM系統的調制和解調分別由IFFT和FFT完成。首先將串行輸入數據d0,d1...,d(N-1)變換成并行數據,接下來進行編碼和星座圖映射,得到頻域數據。經過IFFT后相當于調制到正交的N個f0,f1,...,fN-1子載波,完成正交頻分復用。接下來加入循環前綴,進行并/串轉換,數/模轉換,再調制到高頻載波上發送。如果是基帶傳輸,則不需要進行載波調制。

      在接收端進行相反的操作,使用N個相同的子載波進行N路解調,再將這N路解調信號并串輸出,復現發送的原始信號。經過FFT變換后的數據相當于將時域數據再轉換成頻域數據,即完成了OFDM信號的解調。

      OFDM調制原理雖然是用N個正交的載波分別調制N路子信道碼元序列,但實際中很難獨立產生N個正交的載波。所以OFDM多采用VLSI技術,用FFT代替多載波調制和解調。當子信道數目比較多的時候,采用FFT可以大大減少系統的復雜度。而的并行乘法器和加法器結構容易硬件實現OFDM的核心運算,有效地提高了OFDM調制解調速度。

      軟件仿真與設計

      隨著FPGA和VLSI的發展,大量的EAB(嵌入式陣列塊)、LE(邏輯單元)、內嵌乘法器和高速FIFO存儲器帶來了OFDM/COFDM的實用化,為OFDM提供了硬件支持。軟件上可以采用MATLAB、硬件描述語言VHDL、QuartusⅡ等軟件進行仿真與設計。

      仿真過程中采用了隨機信號作為輸入信號,經過4QAM編碼映射后進行再IFFT調制,然后進入信道進行數據傳輸,每幀信號為512點;同時采用簡單的11點數字離散信道,其值為:[0.05 -0.063 0.088 -0.126 -0.25 0.9047 0.25 0 0.126 0.038 0.088]。

      在一般OFDM系統中為使IFFT和FFT前后的信號功率保持不變,當N=2m(m為正整數)時,作如下定義:

      

     

      采用16位定點算法,這便意味著要考慮溢出問題。對于基-2 FFT,為了防止溢出,可以采用以下辦法:將每一個蝶算后的數據右移1bit,即相當于將該數做除2處理。這樣,加入總衰減比例因子,將比例因子分散到各步計算中。這種情況下,輸出不是原來定義的離散傅里葉變換,而是它的。而對于基-2 IFFT,這個比例因子正是公式中需要的,所以FPGA實現的IFFT便是最終結果。

      圖3和圖4分別是信道h(n)的FFT值(倒數)和第二幀輸入數據(迭代次數10)。

      

     

      調制過程中Matlab的IFFT結果同FPGA結果比較如表1所示。

      

     

      表1 IFFT結果比較

      經過FPGA的IFFT在非主頻率點上有一些小的誤差。這是因為在計算IFFT的時候,同樣因為舍入問題,在本該為零的點產生一些極小的數值,從而在信號顯示時出現這些毛刺。

      對于表1,FFT峰值結果的誤差,是因為FPGA采用的是16bit定點算法,在程序中有很多舍位處理帶來的誤差。至于Sine信號峰值的不同,那是因為將FPGA實現的IFFT結果再進行Matlab的fft()計算,而IFFT的那些毛刺,必然在時域上產生影響。

      在FPGA實現時,一般是在完成IFFT以后將結果暫時存放在RAM中,然后在從RAM里讀出數據時,采取部分重復讀取的方式,將一部分數據重復復制,從而形成循環前綴。這樣可以對連續的數據流進行變換處理,滿足系統的實時性要求。

      

     

      解調過程中Matlab的FFT結果同FPGA結果比較如表2所示。

      表2 FFT結果比較

      從表2可以看出,FPGA的結果同Matlab的結果基本相同,只是FFT峰值有些不同。這也因為FPGA采用的是16bit定點算法,在程序中有很多舍位處理。但 FPGA的結果是將原小數信號變成整數后再進行處理的,當最后再轉換成小數后,結果將是一致的。

      

     

      結語

      OFDM信道調制解調的關鍵是一對離散傅里葉變換。程序可以由Verilog HDL模塊進行設計,用相應的模塊仿真程序TESTBENCH進行功能仿真,經過波形仿真和結果驗證后,將程序下載到FPGA中實現。同時,Verilog HDL仿真結果與MATLAB中函數fft()以及ifft()的輸出結果進行比較(采用的是浮點運算),得出圖形和數據的比較結果。

      結果表明,用FPGA實現OFDM信道調制解調與MATLAB仿真結果基本一致,具有良好的性能和較高的效率。

    fpga相關文章:fpga是什么




    關鍵詞: OFDM FPGA

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 沂源县| 凤庆县| 中宁县| 元江| 大渡口区| 高阳县| 东光县| 定日县| 新疆| 乌兰察布市| 政和县| 峨山| 沁源县| 章丘市| 天柱县| 潼关县| 阜新市| 泸州市| 朔州市| 阜南县| 镇巴县| 定州市| 济阳县| 日照市| 周宁县| 台前县| 英吉沙县| 县级市| 永清县| 都江堰市| 上思县| 门源| 孝义市| 嘉定区| 葵青区| 信丰县| 嘉祥县| 格尔木市| 百色市| 淳化县| 九龙城区|