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