摘要:本文設計了一個OFDM系統,選擇按頻率抽取基2的快速傅里葉算法對用于OFDM傳輸數據調制和解調的快速傅里葉處理器進行設計,用VHDL語言進行硬件描述,通過Quartus II軟件平臺進行編譯、綜合、仿真,仿真顯示系統正常工作。
關鍵詞:FFT FP GA OFDM
0 引言
OFDM利用快速傅里葉變換和其反變換代替多載波的調制與解調,是一種無線環境下的高效高速率多載波調制技術。此外,OFDM還具有利用率高、抗干擾能力強、抗頻率選擇性衰弱能力強等優點。數字信號處理技術的發展尤其是FFT算法在硬件上的實現,很大程度上促進了OFDM的發展;而FPGA、DSP等具有大規模的可編程邏輯控制器研發,使得OFDM具有了理論到實踐的轉變,也解決了FFT的實現問題。
1 FFT算法數學理論分析
設x(n)是一個長度為M的有限長序列,則N點離散時間復數序列x(n)的離散傅立葉變換,由n=0,1,…N-1可以定義為
(1)
這里WN=2-j2π/N稱為旋轉因子。
離散傅立葉逆變換(IDFT)公式為:
(2)
這里 。
經過改進FFT算法基本上分為兩大類:時域抽取法FFT(Decimation-In-Time FFT,簡稱DIT-FFT)和頻域抽取法FFT(Decimation-In-Frequency FFT,簡稱DIF-FFT)。
在頻域抽取法(DIF)FFT算法中,算式(1)已被分解為奇數頻率分量和偶數頻率分量:
(3)
(4)
基2 FFT算法是使用最小的變換或蝶形單元(基本計算單元),即用2點DFT來計算的。基2 FFT算法蝶形單元運算過程如圖2所示:
2 OFDM系統原理介紹
OFDM具有很好的信號穿透能力和抗干擾性,穩定性高,抗衰能力強,即將成為第四代移動通信系統。OFDM傳輸信號表達式為:
(5)
在IFFT與FFT調制與解調模塊中,對傳輸信號的數據序列{dn}其中dn=an+jbn用IFFT運算進行調制:
(6)
OFDM原理為:在發射機鏈,數據通過發送端進行了編碼與交織操作,,通過數字調制,將數字信號轉化為帶有幅度和相位信號。通過串并轉換,再對信號進行快速傅里葉反變換IFFT運算將信號由頻譜表達式轉變為時域表達。通過加循環前綴,它能消除了碼間串擾,保持子載波正交狀態。再進行加窗處理,將每個子載波數據截短變為有限長的序列。最后進行D/A轉換,將數字信號轉換為模擬信號通過無線發射器發送射頻RF(Radio Frequency)信號與基帶信號。
在接收機鏈,接收機將基帶信號與射頻信號進行了混頻處理,經過A/D轉換,經過了定時頻率同步和去循環前綴處理,再用FFT運算將信號進行解調由時域表達狀態轉回頻譜表達式狀態,得到各個子載波的幅度、相位等信息。然后進行并串轉換,將并行數據轉化為串行數據。在進行信道校正、星座解調、解交織與解擾碼之后,數據被目標所接收。
3 FFT處理器結構設計
FFT處理器是OFDM的核心部分。根據FFT處理器的功能,可以把FFT處理器分為:蝶形運算模塊、雙口RAM模塊、ROM存儲器模塊、控制模塊和地址產生模塊。它的總體結構設計如圖3所示:
FFT處理器工作原理為,當啟動信號從控制單元發出之后,FFT處理器由停止狀態進入了工作狀態。輸入數據單元被啟動,發出了寫操作和寫數據地址的使能信號。原始輸入數據經過選擇器倒序地被存入到RAM1中,數據的地址則被存入ROM中。在進行蝶形運算時,數據的地址、讀使能信號和旋轉因子的相關信息由ROM讀出到蝶形運算單元,數據也由RAM1讀出到蝶形運算單元。在使能信號作用下,蝶形運算單元被啟動進行運算操作,運算的結果經過數據選擇單元,將所選的數據存回至取數據的地址中,從而一次蝶形運算完成了。然后再通過并串轉換操作,將并行運算的結果轉化為串行數據,以此作為新的輸入數據來進行下一次的蝶形運算。當最后一級蝶形運算完成后,蝶形運算單元向RAM2傳輸了輸出使能信號、輸出數據地址。利用輸出數據地址,可以從RAM中讀出結果。這是一組數據的傳輸流動過程。
對N點進行基2的FFT處理,需要log2N級蝶形運算,每一級蝶形運算需要N/2個蝶形運算單元,所以需要log2N次蝶形運算。所以在本設計中,對512個點進行FFT處理,需要9級蝶形運算,每一級需要256個蝶形運算單元,總共需要進行2304次蝶形運算。設計采用雙口RAM,乒乓操作,流水線結構處理,這樣處理無線傳輸數據做到了無縫處理。采用了三塊ROM分別用來存儲旋轉因子的實部、旋轉因子實部與虛部的和、旋轉因子實部與虛部的差這三類參數,這些參數是可以預先計算出來。地址產生單元生成兩類地址:蝶形運算單元向RAM讀(寫)操作所尋的地址和從ROM因子表里讀出的地址。我們可以生成地址查找表,以蝶形運算的序列數作為查找表的地址,從地址中可以讀出輸入數據和旋轉因子的信息。控制單元模塊是整個FFT處理器系統的時序控制中心,通過對雙口RAM的讀寫操作,系統時鐘脈沖,輸入輸出數據,地址產生單元和蝶形運算單元發出使能信號,來控制整個系統的運行。因為狀態機是按預想的設定狀態按順序執行各種控制操作非常符合此設計的要求,狀態機還具有控制靈活、結構簡單、性能優良等特點,所以此設計采用有限狀態機來進行控制單元模塊的實現過程。
4 系統實驗結果仿真分析
通過Quartus II軟件,建立了波形激勵文件,對所設計的FFT處理器進行了時序仿真。時序仿真如下圖所示:
其中clk為時鐘脈沖,reset是系統的復位功能按鈕,當開始進行FFT處理時,復位端瞬間輸出為“1”,系統自動復位。fft_in_en與fft_out_en分別是FFT處理器的輸入和輸出使能端,它們控制著輸入輸出信號。當進行FFT處理時,使能端一直保持高電平輸出。fft_datain_start是FFT處理器數據輸入開始端,當它為“1”時,FFT處理器開始對輸入數據進行蝶形運算。這個端口的信號相當于書簽的作用,我們可以通過它知道FFT處理器何時進行蝶形運算。data_real_in與data_imag_in是輸入數據的實部和虛部。fft_out_vaild是FFT處理器輸出數據的有效端口,當它為“1”時,FFT處理器開始輸出數據,它也起到了書簽的作用。fft_real_out與fft_imag_out是FFT處理器輸出數據的實部和虛部。
5 結論
通過激勵文件,連續發出了5個512點的數據包,第一個數據包輸入的時間為0秒,經過蝶形運算,這個數據包開始輸出的時間為108.5μs。所以由此看出,本次設計的512點的基2 DIF-FFT處理器運算時間為108.5μs。通過資料比較,此系統設計已經達到了高速處理。
參考文獻:
[1]丁玉美,高西全.數字信號處理[M].西安電子科技大學出版社,2001,68.
[2]姜進東,高速FFT的FPGA實現[D].西安電子科技大學學位論文,2009.
[3]常歡.OFDM同步的系統仿真和符號同步的硬件設計[D].西安理工大學學位論文,2008.
[4]全子一,周利清,門愛東.數字信號處理基礎[M].北京:人民郵電出版社,1998:67-83.
[5]吳鎮揚.數字信號處理的原理與實現[M].南京:東南大學出版社,2002:78-96.