基于FPGA的可配置FFT_IFFT處理器的設(shè)計與實現(xiàn)
目前,正交頻分復用OFDM(Orthogonal Frequency Division Multiplexing)技術(shù)已經(jīng)成為未來寬帶無線接入系統(tǒng)的基本實現(xiàn)技術(shù)之一,其抗多徑衰落和高頻帶利用率的優(yōu)點被廣泛應(yīng)用于無線通信系統(tǒng)中,是解決高速數(shù)據(jù)在無線信道中傳輸?shù)氖走x方案[1]。
式(4) 表明首先對X[k] 取共軛, 然后對其進行FFT變換, 對其結(jié)果再取一次共軛, 乘因子1/N, 這樣就實現(xiàn)了IFFT 與FFT 處理模塊的復用。
2 可配置FFT/IFFT 處理器設(shè)計
2.1 FFT/IFFT 處理器整體結(jié)構(gòu)
可配置FFT/IFFT 處理器整體結(jié)構(gòu)如圖1 所示。圖中, 基4 蝶形單元主要完成輸入的4 路并行計算。OFDM數(shù)字基帶數(shù)據(jù)流需要高速連續(xù)處理[3], 故FFT 處理系統(tǒng)在輸入、輸出均采用了乒乓處理, 共需要4 組存儲單元,一組存儲單元需要4 塊RAM;RAM 地址產(chǎn)生單元主要
生成存儲單元寫入及讀出數(shù)據(jù)的地址, 數(shù)據(jù)選擇模塊主要完成了乒乓操作RAM 的數(shù)據(jù)選擇;ROM 及其地址產(chǎn)生單元主要在控制單元的控制下將旋轉(zhuǎn)因子送入蝶形單元, 配置單元控制不同點數(shù)的數(shù)據(jù)流操作及其相應(yīng)地址配置。
FFT_IFFT處理器是OFDM系統(tǒng)中數(shù)據(jù)處理的核心單元,是OFDM系統(tǒng)中數(shù)據(jù)正交調(diào)制和解調(diào)的關(guān)鍵。本文設(shè)計實現(xiàn)了一種用于P2P移動無線通信手持終端產(chǎn)品,采用單碟形4路并行結(jié)構(gòu),兼容802.11g協(xié)議,可配置FFT_IFFT處理器,在處理速度、實現(xiàn)面積、功耗方面均滿足802.11g系統(tǒng)及手持移動無線通信終端的要求。
2.2 FFT/IFFT可配置方案
由基4算法分析可知,要分別完成1 024、256、64點的FFT計算,需要的迭代級數(shù)分別為5、4、3級。由于1 024點的FFT運算可分解為4個256點的FFT運算,而256點的FFT運算又可分為4個64點的FFT運算,64點的FFT運算經(jīng)過3級迭代就可求出??梢酝ㄟ^簡單的模式控制實現(xiàn)多點數(shù)的配置,如圖2所示。其中5級蝶形計算單元,每級蝶形單元結(jié)構(gòu)一致,采用順序蝶形計算,當選擇模式0時,數(shù)據(jù)直接送入第一級,進行1 024點的5級運算;選擇模式1時,數(shù)據(jù)通過選擇器跳過第1級,數(shù)據(jù)送入第2級,從而完成256點的4級迭代運算;選擇模式2時,數(shù)據(jù)通過選擇器跳過第1級和第2級,數(shù)據(jù)送入第3級,從而完成64點的三級迭代運算。這樣就可以正確簡單地實現(xiàn)系統(tǒng)要求的配置要求。
2.3 基本蝶形運算單元設(shè)計
蝶形運算單元的設(shè)計是整個FFT/IFFT處理器設(shè)計的關(guān)鍵。完成蝶形運算的一次復數(shù)乘法包含4次實數(shù)乘法和2次實數(shù)加、減法,如果將乘數(shù)擴大1位,可將計算化簡為3次實數(shù)乘和5次實數(shù)加/減法。為了提高處理速度,本設(shè)計采用四級流水線處理方式,有效地減小了關(guān)鍵路徑時延。蝶形單元的數(shù)據(jù)從RAM輸入及輸出到RAM需要2個時鐘周期,這里引入2級流水;對輸入數(shù)據(jù)的實部和虛部分開并行計算,一次復數(shù)乘法只需3個乘法累加器即可完成,用4個加法器及4個減法器即可完成基4蝶形單元后續(xù)數(shù)據(jù)處理,再次引入二級流水。整個蝶形單元處理時間為4個周期,采用四級流水線結(jié)構(gòu)后,以較小的資源代價有效提高了處理器的時鐘頻率。
2.4 乒乓RAM設(shè)計
為了滿足無線移動通信要求,實現(xiàn)對連續(xù)數(shù)據(jù)流和突發(fā)數(shù)據(jù)流的處理,本文設(shè)計的FFT/IFFT處理器采用了輸入、輸出雙乒乓結(jié)構(gòu),保證了系統(tǒng)高吞吐率的要求。設(shè)計共使用4組RAM(RAM0~RAM3),每組RAM劃分為4塊存儲器。輸入數(shù)據(jù)寫入RAM0組中的4塊存儲器,寫完后開始寫入RAM1,與此同時,從RAM0組中讀出數(shù)據(jù)送入蝶形單元進行計算,其結(jié)果按照同址計算規(guī)則寫回相應(yīng)的地址,直到M級蝶形運算完成后,最終的計算結(jié)果寫入RAM2。RAM2寫滿后,即可從RAM2讀出計算結(jié)果,同時RAM1組中的數(shù)據(jù)將被讀出送入蝶形單元進行運算,其運算結(jié)果按照同址運算規(guī)律送回RAM1存儲,M級蝶形運算完成后,最終結(jié)果寫入RAM3組,RAM3寫滿后即可從中讀出運算結(jié)果。
2.5 無沖突并行地址設(shè)計[4]
4路并行數(shù)據(jù)處理結(jié)構(gòu)需要保證每次讀取的一組數(shù)據(jù)分別存儲在不同的RAM中,否則在數(shù)據(jù)讀取時會產(chǎn)生地址沖突[5]。本設(shè)計中RAM地址采用二維地址,其中地址x表示每塊RAM中數(shù)據(jù)地址,y表示數(shù)據(jù)來自RAM塊的標號。
3 FPGA實現(xiàn)及測試分析
本文FFT/IFFT處理器采用Verilg硬件語言描述,在Mentor公司的Modelsim仿真平臺上進行了RTL功能仿真及時序仿真,其結(jié)果與Matlab仿真結(jié)果進行比較顯示正確。處理器采用了Xilinx 公司Virtex-Ⅱ xc22v500 芯片進行了驗證,在SMIC COMS 0.18 ?滋m工藝下對設(shè)計的處理器進行了綜合仿真。結(jié)果顯示:完成64點16 bit符號數(shù)復數(shù)FFT運算只需要50個時鐘周期,完成256點FFT運算需要256個時鐘周期,最大時鐘頻率可以達到167 MHz,處理器的單元核心面積為1.4 mm2。設(shè)計完全滿足了無線移動手持終端設(shè)備高速小面積的設(shè)計要求。