基于FPGA的24點離散傅里葉變換結(jié)構(gòu)設(shè)計
摘要 基于Good—Thomas映射算法和ISE快速傅里葉變換IP核,設(shè)計了一種易于FPGA實現(xiàn)的24點離散傅里葉變換,所設(shè)計的24點DFT模塊采用流水線結(jié)構(gòu),主要由3個8點FFT模塊和1個3點DFT模塊級聯(lián)而成,并且兩級運算之間不需要旋轉(zhuǎn)因子,整個DFT模塊僅僅需要14個實數(shù)乘法器,布局布線后仿真工作時鐘頻率可達200 MHz。首先根據(jù)Good—Thomas算法將并行的24路輸入信號分成3組,每組8路信號,并進行并/串轉(zhuǎn)換,得到3路串行信號;其次,將3路串行信號分別輸入至3個FFT IP核模塊進行8點FFT運算;然后,將上述3個FFT IP核模塊同一時刻輸出的3路信號進行3點DFT變換;最后,將得到的3路并行輸出信號分別進行串/并轉(zhuǎn)換,得到24路DFT輸出信號。此外,設(shè)計的24點DFT結(jié)構(gòu)還具有很好的擴展性,通過修改FFT IP核變換點數(shù)參數(shù)便可實現(xiàn)長度N=3×2n點DFT。
關(guān)鍵詞 24點DFT;FPGA;Good—Thomas映射算法;FFT IP核
由于具有高集成度、高速、可編程等優(yōu)點,現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)已經(jīng)廣泛用于多種高速信號實時處理領(lǐng)域中。離散傅里葉變換(Discrete Fourier Transform,DFT),尤其對應的快速傅里葉變換(Fast Fourier Transform,F(xiàn)FT),是數(shù)字信號處理中的一種基本變換?;贔PGA的FFT設(shè)計和實現(xiàn)是眾多應用中的一個重要環(huán)節(jié),是眾多FPGA芯片廠商和研究工作者一直致力研究的內(nèi)容。
目前,Altera和Xilinx公司都提供了可塑性很強的FFT IP核,只要改動相應的參數(shù)設(shè)置,就可以應用于不同產(chǎn)品中。國內(nèi)不少大學及研究所也已經(jīng)采用FPGA芯片設(shè)計開發(fā)具有自主知識產(chǎn)權(quán)的FFT。然而,目前絕大多數(shù)基于FPGA的FFT主要采用Cooley—Tukey映射算法實現(xiàn)基2和基4結(jié)構(gòu)的點FFT。這在實際應用中存在以下問題:1)某些場合中所采用的DFT變換點數(shù)不一定滿足,例如24點、48點等DFT無法采用上述FFT結(jié)構(gòu)實現(xiàn);2)采用Cooley—Tukey映射算法將高點數(shù)的DFT分解成若干個低點數(shù)DFT過程中,采用多級流水線結(jié)構(gòu)實現(xiàn)FFT,但每一級輸出結(jié)果需要乘以相應旋轉(zhuǎn)因子后再進入下一級運算,從而增加了復數(shù)乘法器資源的使用。
以Xilinx公司Virtex IV芯片為硬件平臺,結(jié)合Xilinx公司ISE10.1軟件提供的FFT IP核,提出一種適合FPGA實現(xiàn)的基于Good-Thomas算法的24點DFT結(jié)構(gòu)。相對于已有的FFT結(jié)構(gòu),設(shè)計的DFT結(jié)構(gòu)不僅能夠充分利用FFT IP核優(yōu)良特性,還能大大節(jié)約復數(shù)乘法器資源的使用。同時,該結(jié)構(gòu)還能擴展至變換長度N滿足N=3×2n的DFT。
1 24點DFT實現(xiàn)原理
1.1 Good—Thomas映射算法
基于Cooley—Tukey映射算法和Good-Thomas映射算法的FFT均可以將長度為N=N1N2的DFT分解成N2個N1點DFT和N1個N2點DFT級聯(lián)的形式。尤其基于Cooley—Tukey映射的FFT是最為通用的FFT算法,能夠適應于任意N1和N2長度下的DFT。相對基于Cooley-Tukey映射的FFT,基于Good —Thomas映射的FFT只能適應于N1和N2互質(zhì)情況下的DFT,但N1點DFT與N2點DFT之間的中間結(jié)果不需要采用旋轉(zhuǎn)因子進行調(diào)制,從而能夠大幅節(jié)約復數(shù)乘法器的使用。
假設(shè)輸入序列x(n)長度為N=N1N2,其中N1和N2互質(zhì),則基于Good—Thomas映射的FFT實現(xiàn)步驟如下:
從以上步驟可以看出,基于Good—Thomas映射的FFT,雖然與基于Cooley—Tukey映射的FFT實現(xiàn)原理相似,但輸入/輸出索引映射不同,而且沒有旋轉(zhuǎn)因子。
1.2 24點DFT實現(xiàn)結(jié)構(gòu)
根據(jù)基于Good-Thomas映射的FFT適應條件,長度N=24的DFT可以按照N1=8和N2=3進行計算,其中,根據(jù)式(1),輸入序列按照n=mod(3n1+ 8n2,24)進行索引映射,如表1所示;根據(jù)式(4),輸出結(jié)果按照k=mod(9k1+16k2,24)進行索引映射,如表2所示。
根據(jù)表1和表2的索引結(jié)果,圖1給出了24點DFT實現(xiàn)結(jié)構(gòu)示意圖。如圖1所示,24點DFT變換分兩級實現(xiàn),第一級由3個8點DFT構(gòu)成,第二級由8個3點DFT構(gòu)成,兩級之間不需要旋轉(zhuǎn)因子調(diào)制。
2 基于FPGA的24點DFT設(shè)計
為簡化設(shè)計,假設(shè)所設(shè)計24點DFT模塊輸入/輸出信號均為24路并行信號。如圖1所示,采用Good—Thomas映射算法,可將24點DFT分解成3個8點DFT和8個3點DFT模塊構(gòu)成。由于ISF10.1軟件提供的FFT IP核模塊輸入/輸出信號均為串行形式,并且每一個時刻3個8點FFT IP核模塊輸出的數(shù)據(jù)恰為1個3點DFT的輸入信號。因此,為進一步節(jié)約資源,提出一種適合FPGA實現(xiàn)的24點DFT實現(xiàn)結(jié)構(gòu),如圖2所示。相對于圖1,改進后的24點DFT只需要3個8點FFT IP核模塊和1個3點DFT模塊,從而能夠大幅節(jié)約資源。同時,只需相應修改FFT IP核模塊相應參數(shù)以及串并轉(zhuǎn)換和并串轉(zhuǎn)換的路數(shù),就可以實現(xiàn)長度為N=3×2n點的DFT。
如圖2所示,除了FFT IP核模塊,3點DFT模塊也是實現(xiàn)24點及N=3×2n點DFT關(guān)鍵模塊。如果根據(jù)3點DFT變換的定義直接實現(xiàn),則至少需要4個復數(shù)乘法器。為減少乘法器的使用,根據(jù)式(5)~式(7),3點DFT可以按照如圖3所示的結(jié)構(gòu)實現(xiàn),其中,x(0),x(1)和x(2)表示3點DFT輸入信號,y(0),y(1)和y(2)表3點DFT運算結(jié)果。在圖3中,數(shù)據(jù)乘以0.5可以用右移1位的方式實現(xiàn),而乘以復數(shù)時可以采用兩個實數(shù)乘法器實現(xiàn),因此設(shè)計的3點DFT僅需要兩個實數(shù)乘法器,從而節(jié)約了乘法器資源。同時,該結(jié)構(gòu)采用流水線操作方式,也提高了實現(xiàn)效率。
3 仿真驗證
在ISE10.1環(huán)境下,采用VHDL完成了24點DFT模塊的開發(fā),并采用Modelsim 6.2 b軟件進行仿真驗證。同時,為驗證設(shè)計的24點DFT模塊的正確性,將Modelsim仿真結(jié)果與Maltab定點仿真程序結(jié)果進行了對比。輸入信號包括24路并行數(shù)據(jù)信號、1路時鐘信號和1路復位信號,輸出信號包括24路并行數(shù)據(jù)信號、1路輸出數(shù)據(jù)有效信號。圖4給出了某一路輸出信號的Matlab定點仿真結(jié)果與Modelsim仿真結(jié)果對比圖,其中紅色表示Modelsim仿真結(jié)果數(shù)據(jù),藍色表示Matlab定點仿真結(jié)果。從圖4可以看出,該路Modelsim仿真結(jié)果與Matlab定點仿真結(jié)果一樣。其他路輸出信號Modelsim仿真結(jié)果與Matlab定點仿真結(jié)果也一樣。從而得出設(shè)計的DFT模塊完全正確。該模塊共占用6個Block RAM,14個乘法器,時序仿真結(jié)果表明最高工作頻率可達200 MHz,該模塊已經(jīng)成功應用于某一數(shù)字分路項目。
4 結(jié)束語
基于Good-Thomas映射算法,并結(jié)合ISE10.1軟件提供的FFT IP核,提出了一種易于FPGA實現(xiàn)的24點DFT設(shè)計結(jié)構(gòu),設(shè)計的24點DFT模塊主要由3個8點FFT IP核模塊和1個3點DFT模塊構(gòu)成,并且只需要14個實數(shù)乘法器。同時,24點DFT模塊采用流水線結(jié)構(gòu),最高工作時鐘頻率可達200 MHz。該結(jié)構(gòu)還具有良好的擴展性,只需修改FFT IP核模塊相應的變換點數(shù)參數(shù),就可以實現(xiàn)長度為點的DFT。