于 建,霍永華,焦利彬,楊 楊
(1.河北民族師范學院 物理與電子工程學院,河北 承德 067000;2.中國電子科技集團公司第五十四研究所, 河北 石家莊 050081;3.北京郵電大學, 北京 100876)
快速傅里葉變換(Fast Fourier Transform,FFT)是基于正交頻分復用(Orthogonal Frequency Division Multiplexing,OFDM)傳輸方式通信系統(tǒng)中的關鍵性技術,用于傳輸數(shù)據(jù)在時域與頻域之間的轉(zhuǎn)化[1]。OFDM作為使用最廣泛的多載波調(diào)制技術,已成為多種通信領域的規(guī)范基礎[2],如長期演進(Long Term Evolution,LTE)、無線局域網(wǎng)(Wireless Local Area Network,WLAN)以及全球微波互聯(lián)接入(Worldwide Interoperability Microwave Access,WiMAX)等[3],同時,OFDM在5G通信系統(tǒng)中仍然是最為主要的調(diào)制技術[4]。在OFDM系統(tǒng)中的物理層,F(xiàn)FT處理器是最為復雜的運算模塊,消耗大量的硬件資源[5],因此大量的研究都聚焦于FFT算法與硬件實現(xiàn)架構(gòu)的優(yōu)化,達到降低其所消耗的硬件成本。
算法方面,基-2庫里圖基FFT 算法最為著名[6-7],它擁有簡單的蝶形單元,非常適合硬件的實現(xiàn),但所需的復數(shù)乘法運算量大?;?2kFFT算法[8]解決了基-2算法復數(shù)乘法運算量過大的問題,同時還能夠保持與基-2算法一樣簡單的蝶形單元,因此非常適合用于FFT處理器的硬件實現(xiàn)。基-2k算法根據(jù)k值的不同可分為基-22算法、基-23算法、基-24算法和基-25算法等。
硬件實現(xiàn)架構(gòu)方面,由于流水線架構(gòu)(Pipelined Architecture,PA)[9]具有適中的硬件資源消耗與更高的數(shù)據(jù)吞吐量,常被用于FFT處理器的硬件實現(xiàn)。PA架構(gòu)又分為前向反饋與負反饋2種風格[10],由于負反饋風格中的SDF架構(gòu)需要更少的寄存器以及更簡單的控制邏輯,常被用于低硬件成本FFT處理器的設計。
考慮到基-2k算法不但擁有與基-2算法一樣簡單的蝶形架構(gòu),還能夠減少旋轉(zhuǎn)因子的運算復雜度,因此本文采用基-2k算法用于1 024點FFT處理器的設計。
不同k值的基-2k算法針對1 024點FFT計算一共包含9個旋轉(zhuǎn)因子計算階段,只是k值的不同會導致旋轉(zhuǎn)因子不同。表1所示為不同k值的基-2k算法在計算1 024點FFT時旋轉(zhuǎn)因子的詳細分布情況。
表1 1024點基-2k算法旋轉(zhuǎn)因子運算分布Tab.1 Distribution of twiddle factor at each stage to compute 1024-point FFT for radix-2k algorithm
圖1所示為基-25算法SDF架構(gòu)1 024點FFT處理器的整體結(jié)構(gòu)圖。圖1中,BF2I與BF2II模塊為基本的I型與II型蝶形單元,主要用于輸入復數(shù)序列的加法與減法運算,II型蝶形單元除了進行基本的加減法運算還要處理額外的‘-j’運算[14];蝶形單元上方的矩形塊為不同容量的延遲緩沖單元,主要為蝶形單元的輸入提供恰當?shù)臄?shù)據(jù)并對數(shù)據(jù)進行整理;‘?’代表復數(shù)乘法運算單元,輸入序列通過復數(shù)乘法單元運算后,就會得到與相應階段旋轉(zhuǎn)因子相乘的結(jié)果,計算后的結(jié)果會直接進入下一階段的蝶形運算中;‘CLK’為控制時鐘,由10位計數(shù)器產(chǎn)生,用于切換蝶形單元的類型并為復數(shù)乘法單元提供合適的控制邏輯。
圖1 基-25算法1024點SDF FFT結(jié)構(gòu)圖Fig.1 Block diagram of radix-25 1024-point SDF FFT
2.1.1 旋轉(zhuǎn)因子拆分原理
圖2所示為截取基-25算法64點FFT第5階段旋轉(zhuǎn)因子運算的信號流圖。
圖2 第5階段基-25算法64點FFT信號流圖Fig.2 SFG of radix-25 for 64-point FFT of the 5th stage
邏輯模塊
(b) 改良后的蝶形單元圖3 內(nèi)嵌模塊的蝶形單元Fig.3 Butterfly unit with embedded
2.1.2 兩階段CSD常數(shù)乘法單元
表2 8區(qū)域中旋轉(zhuǎn)因子對應的映射Tab.2 Eight symmetric region mapping of twiddle factor
(1)
CSE1=din+din>>2
CSE2=din-din>>2
CSE3=din+din>>3
CSE4=din-din>>3
CSE5=din-din>>4。
(2)
表3 12位字長16組常數(shù)值CSD數(shù)值表示Tab.3 CSD representation of sixteen constant values with 12-bit word-length
表4 7常數(shù)值CSD表示Tab.4 CSD representation of seven constant values
(a) 適配于旋轉(zhuǎn)因子兩階段CSD常數(shù)乘法單元邏輯模塊
(b) 兩階段復數(shù)乘法及控制邏輯圖解圖4 適配于旋轉(zhuǎn)因子兩階段CSD乘法單元整體架構(gòu)詳解Fig.4 Detailed overall architecture of two-stage CSD multiplied unit for twiddle factor
(a) CSD常數(shù)乘法單元通用架構(gòu)
(b) 適配于與邏輯模塊圖與乘法單元Fig.5 CSD multiplied unit for
采用Verilog HDL對所設計的1 024點FFT處理器進行建模,利用QUARTUS PRIME開發(fā)平臺對設計進行綜合評估,器件選擇Intel FPGA CYCLONE家族的10CL055YU484I7G。表5所示為本文的設計方案與其他已存在的設計方案在1 024點FFT處理器設計方面的比較,為了更加直觀地評估各個方案的硬件資源消耗,對設計所消耗的LEs與MBs進行了標準化處理,設定本文方案的所消耗的LEs與MBs為1。
圖6所示為基于Matlab計算出的結(jié)果與QUARTUS PRIME平臺仿真工具MODELSIM-ALTERA得出結(jié)果之間的比較(設輸入序列的實部與虛部取值范圍為1~1 024),其中‘*’代表Matlab計算結(jié)果,‘△’代表MOELSIM仿真結(jié)果。
圖6中FFT點數(shù)的輸出結(jié)果表明,MODELSIM仿真結(jié)果與Matlab計算結(jié)果完全吻合,驗證了所提出設計方案的有效性。
(a) 計算結(jié)果比較(FFT點數(shù)取值范圍0~50)
(b) 計算結(jié)果比較(FFT點數(shù):取值范圍300~350)
(c) 計算結(jié)果比較(FFT點數(shù):取值范圍600~650)
(d) 計算結(jié)果比較(FFT點數(shù):取值范圍970~1 023)圖6 MODELSIM結(jié)果與Matlab計算結(jié)果比較Fig.6 Comparison between MODELSIM simulation result and Matlab calculation result
由表5可知,對比已存在的設計方案,本文的設計方案至少能夠節(jié)約28%的LEs與48%的MBs,工作頻率為120 MHz時功耗為12.6 mW。本文的設計方案內(nèi)部字長設定為24 bit,SQNR達到了57.6 dB,同時本文無需布斯乘法器參與復數(shù)乘法運算,全部采用硬件資源消耗低的CSD常數(shù)乘法器來完成。
表5 不同方案1 024點FFT處理器性能比較Tab.5 Performance of the proposed 1 024-point FFT processoras compared with existing schemes
本文基于Intel FPGA設計了一種緊湊型1 024點FFT處理器,為了減少旋轉(zhuǎn)因子的復雜度,采用了基-25算法,考慮到硬件實現(xiàn)的難易度和硬件成本問題,使用了SDF流水線架構(gòu)。在此基礎上提出了一種旋轉(zhuǎn)因子的分解方案,使得所有復數(shù)乘法運算全部由CSD常數(shù)乘法單元完成,大幅度地降低了硬件成本。基于QUARTUS PRIME綜合結(jié)果顯示,對比已有的方案能夠至少節(jié)約28%LEs和48%MBs的使用量,SQNR達到了57.6 dB,工作頻率為120 MHz時,功耗為12.6 mW,本文所設計的1 024點FFT處理器非常適合對硬件成本和功耗要求苛刻的應用場景。