《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 一種FFT逆序輸出整序的時間優(yōu)化方法
一種FFT逆序輸出整序的時間優(yōu)化方法
2015年微型機與應(yīng)用第14期
王 鋒,,彭華仁
(中國電子科技集團公司第四十一研究所,,山東 青島 266555)
摘要: 在數(shù)字信號處理中,F(xiàn)FT運算具有非常重要的作用。傳統(tǒng)FFT算法具有原位計算的特點,,原位FFT算法在自然序輸入時輸出呈逆序狀態(tài),,因此為了得到自然序的結(jié)果數(shù)據(jù),就必須對全部FFT輸出數(shù)據(jù)進行整序,。使用查找表整序是從FFT的逆序輸出結(jié)果中直接讀取自然序結(jié)果數(shù)據(jù),。試驗證明,在獲取全部FFT結(jié)果數(shù)據(jù)時,,查找表整序相比傳統(tǒng)整序在時間效率上可以提高一倍,,并且在連續(xù)FFT分析的情況下,優(yōu)勢會更明顯,。
關(guān)鍵詞: FFT 逆序 整序 查找表
Abstract:
Key words :

  摘  要: 在數(shù)字信號處理中,,FFT運算具有非常重要的作用。傳統(tǒng)FFT算法具有原位計算的特點,,原位FFT算法在自然序輸入時輸出呈逆序狀態(tài),,因此為了得到自然序的結(jié)果數(shù)據(jù),就必須對全部FFT輸出數(shù)據(jù)進行整序,。使用查找表整序是從FFT的逆序輸出結(jié)果中直接讀取自然序結(jié)果數(shù)據(jù),。試驗證明,在獲取全部FFT結(jié)果數(shù)據(jù)時,,查找表整序相比傳統(tǒng)整序在時間效率上可以提高一倍,,并且在連續(xù)FFT分析的情況下,優(yōu)勢會更明顯,。

  關(guān)鍵詞: FFT,;逆序;整序,;查找表

0 引言

  在原位FFT運算過程中,當(dāng)輸入數(shù)據(jù)為自然序時,,由于FFT算法過程對輸入數(shù)據(jù)的多次“奇偶抽取”,,使得輸出數(shù)據(jù)呈逆序狀態(tài),即輸出數(shù)據(jù)的索引和自然序索引的二進制表示呈相互位逆序狀態(tài)[1],。因此必須對輸出數(shù)據(jù)進行整序,,才能得到自然序的結(jié)果。即一次FFT分析包括FFT計算和對FFT逆序輸出的整序,。FFT分析幾乎都在DSP處理器中完成,,DSP處理器通過內(nèi)部CPU逐條執(zhí)行軟件指令來完成各種運算和邏輯功能[2]。因此,,在DSP內(nèi)執(zhí)行一次FFT算法,,必須順序執(zhí)行FFT計算和整序操作[3-5]。研究者為提升整序效率進行了多種改進,有的是對整序過程中的逆序數(shù)計算進行了多種改進,,比如逆序數(shù)生成法[6-7]和分組數(shù)據(jù)交換法[8],,但這些改進只關(guān)注了整序過程中的逆序數(shù)計算這一個方面;有的將逆序數(shù)計算與整序結(jié)合在一起,,比如任意基的快速整序算法[9-10],,但這種方法理解起來很困難[11]。

  在實際應(yīng)用中,,所感興趣的目標(biāo)FFT數(shù)據(jù),,無論是全部FFT數(shù)據(jù)還是部分數(shù)據(jù),都可看作全部自然序的FFT結(jié)果中的一段,,那么可以設(shè)法從FFT逆序輸出中直接獲取這一段目標(biāo)數(shù)據(jù),。即首先明確目標(biāo)數(shù)據(jù)段在整序后的FFT結(jié)果中的位置,計算這些位置索引值的逆序數(shù)并存儲在一個查找表中,,然后根據(jù)此查找表就可以在FFT的逆序輸出數(shù)據(jù)中直接提取目標(biāo)數(shù)據(jù),。采用此算法將逆序數(shù)的計算從整序過程中剝離,簡化整序過程,,提高整序效率,。使用查找表整序的方式易于理解,操作簡單,,并且在需要進行連續(xù)FFT分析的情況下會體現(xiàn)出很大的優(yōu)勢,。

1 FFT算法的原位計算的特點

001.jpg

  圖1是8點的時域抽取基-2的原位FFT算法流程,輸入數(shù)據(jù)是自然序的,,輸出數(shù)據(jù)為逆序狀態(tài)[4],。

  對圖1中FFT的輸入數(shù)據(jù)和輸出數(shù)據(jù)的索引變化在表1中予以反映。

004.jpg

  由表1可見,,原位FFT的輸入數(shù)據(jù)為自然序,,輸出數(shù)據(jù)為逆序,并且將自然序索引二進制表示的比特排列順序完全逆過來,,就得到逆序索引的二進制表示[5],。因此為了得到自然序的FFT結(jié)果,就需要對FFT的逆序輸出結(jié)果進行整序,。傳統(tǒng)的整序算法是在原位FFT計算完畢后依自然序遍歷每一個輸出數(shù)據(jù),,先通過“比特倒序”運算計算自然序索引的逆序數(shù),此逆序數(shù)就是輸出數(shù)據(jù)的正確索引值,,再以逆序數(shù)為索引調(diào)整這個FFT數(shù)據(jù)的位置,,最后得到全部自然序的FFT結(jié)果數(shù)據(jù)。在DSP內(nèi)只能使用高級語言編碼實現(xiàn)位逆序時,,傳統(tǒng)做法是利用產(chǎn)生逆序數(shù)的十進制運算規(guī)律,,采用循環(huán)迭代計算逆序數(shù)[4-5]。

  一次傳統(tǒng)的N點原位FFT分析需要計算N個索引值的逆序數(shù)才能得到全部的自然序結(jié)果,進而才能獲取自然序結(jié)果中的某一段目標(biāo)FFT數(shù)據(jù),。對于需要連續(xù)進行FFT分析的情況,,無論是獲取全部FFT數(shù)據(jù)還是一段FFT數(shù)據(jù),每一次N點FFT分析都需要重新計算一遍N個索引值的逆序數(shù),。對于重復(fù)計算,,可以只計算一次,因此可以優(yōu)化FFT分析中的整序過程,。

2 基于查找表整序算法

  無論所需要的目標(biāo)數(shù)據(jù)是全部FFT結(jié)果還是部分FFT結(jié)果,,都可以事先計算目標(biāo)數(shù)據(jù)在整個FFT結(jié)果中位置索引的逆序數(shù),并將這些逆序數(shù)存儲在一個查找表中,,然后根據(jù)此查找表在FFT逆序輸出數(shù)據(jù)中直接提取自然序的目標(biāo)數(shù)據(jù),。在需要對信號進行連續(xù)FFT分析的環(huán)境中,查找表的計算可以在FFT分析前完成,,并且只需計算一次,。這種整序方式可以省去FFT分析過程中計算逆序數(shù)的時間,縮短單次FFT分析時間,,提高單位時間內(nèi)的FFT分析次數(shù),,提高信號分析效率。

  設(shè)N點原位FFT運算,,對目標(biāo)數(shù)據(jù)在全部自然序的FFT結(jié)果中的位置索引進行逆序操作,,由于自然序和逆序索引的二進制表示之間是比特倒置關(guān)系,于是需要將每個自然序索引值二進制表示的最低位移向最高位,,次低位移向次高位直到完成這個自然序索引值的位逆序過程,。將一個索引值的位逆序函數(shù)設(shè)為BitReverse(intiSourceIndex,intiBitNum),,其返回值為一個逆序數(shù),;所獲取的查找表設(shè)為IndexArray。位逆序的計算流程圖如圖2所示,。

002.jpg

  圖2中,,iSourceIndex是待逆序的索引值,iBitNum是FFT計算點數(shù)的二進制位數(shù),,iDesIndex是BitReverse()函數(shù)返回的逆序數(shù)。構(gòu)造FFT結(jié)果的數(shù)據(jù)查找表的流程圖如圖3所示,。

003.jpg

  圖3中,,iStart為目標(biāo)數(shù)據(jù)在整個FFT自然序結(jié)果中的起始位置,iDataLen為目標(biāo)數(shù)據(jù)的長度,,由BitReverse()函數(shù)的返回值iDesIndex構(gòu)成一個位置查找表IndexArray,。于是,通過查找表從位置索引為iDesIndex的FFT逆序輸出中獲取自然序的目標(biāo)結(jié)果數(shù)據(jù)。相比于傳統(tǒng)的整序方式,,使用查找表整序可以省去FFT分析過程中逆序數(shù)的計算過程,。下面的試驗在FFT計算完畢后,統(tǒng)計了傳統(tǒng)整序和使用查找表整序所消耗的時鐘周期個數(shù),,進而比較兩種整序方式的時間效率,。

3 試驗

  試驗環(huán)境是TI公司提供的高效C編譯器和集成開發(fā)環(huán)境Code Composer Studio,選擇C67xx CPU Cycle Accurate Simulator處理器,。在獲得相同整序結(jié)果的前提下,,比較傳統(tǒng)整序和使用查找表整序的耗時情況。試驗中,,N點自然序數(shù)據(jù)作為FFT的輸入,,目標(biāo)數(shù)據(jù)為全部FFT結(jié)果數(shù)據(jù)。在FFT計算完畢后,,對FFT的逆序輸出數(shù)據(jù)采用不同的整序方式得到自然序結(jié)果數(shù)據(jù),,統(tǒng)計兩種整序方式所消耗的時鐘周期數(shù),并通過對比時鐘周期數(shù)得到兩種整序過程在時間效率上的差別,。

  記錄N點FFT中傳統(tǒng)整序和查找表整序所消耗的時鐘周期個數(shù),,并計算后者與前者的百分比以觀察時間效率的改善情況。運行情況記錄如表2所示,。

005.jpg

  由表2可見,,單獨就整序過程而言,使用查找表整序比傳統(tǒng)的整序在時間效率上可以提高一倍多,。如果僅需要得到某一段FFT結(jié)果數(shù)據(jù),,傳統(tǒng)整序首先要對N點FFT的全部逆序輸出進行整序,然后再截取目標(biāo)數(shù)據(jù),,而使用查找表整序則可以從FFT逆序輸出數(shù)據(jù)中直接獲取任意長度的目標(biāo)數(shù)據(jù),,并且目標(biāo)數(shù)據(jù)的長度越短,查找表長度越短,,獲取目標(biāo)數(shù)據(jù)的時間效率就越高,。

  對于N點原位FFT運算,傳統(tǒng)整序需要計算N點索引的逆序數(shù),。使用查找表進行整序,,假設(shè)目標(biāo)數(shù)據(jù)長度為M(M≤N),則查找表內(nèi)索引個數(shù)為M,,索引數(shù)據(jù)類型設(shè)為32 bit整型,,那么所需分配的空間為M×32 bit。計算查找表時可以在FFT分析前進行,,這部分時間不占用FFT分析時間,。對于單次FFT分析,,增加M(M≤N)點數(shù)據(jù)空間可以為FFT計算節(jié)省N次逆序數(shù)的計算時間;對于連續(xù)FFT分析,,不妨設(shè)連續(xù)分析n次,,可以節(jié)省n×N次逆序數(shù)的計算時間。

4 結(jié)論

  本文在充分理解原位FFT的計算特點后,,在FFT分析前,,對目標(biāo)數(shù)據(jù)在全部FFT結(jié)果中的位置索引計算逆序數(shù),并將計算結(jié)果存儲為一個查找表,,然后通過此查找表從FFT的逆序輸出中獲得自然序結(jié)果,。試驗結(jié)果證明,相比于傳統(tǒng)的整序,,使用查找表整序時間高效并且簡單實用,,具有普遍的實用價值。比如,,在軟件無線電領(lǐng)域,,一般的無線電信號帶寬比較窄,頻率范圍比較寬,,通常使用帶通采樣,,因此對無線電信號進行FFT計算時,只關(guān)心某一段結(jié)果數(shù)據(jù),;并且在需要對無線電信號進行連續(xù)監(jiān)測的環(huán)境中,,系統(tǒng)希望快速獲取每一次的FFT分析結(jié)果,在這種情況下,,使用查找表整序處理FFT的逆序輸出就具有很大的優(yōu)勢,。于是,使用查找表整序節(jié)省了FFT分析的整序時間,,從而提高了FFT分析的時間效率,。

參考文獻

  [1] 方志紅,張長耀,,俞根苗.利用逆序循環(huán)實現(xiàn)FFT運算中倒序算法的優(yōu)化[J].信號處理,,2004,20(5):533-535.

  [2] 劉衛(wèi)新.實現(xiàn)FFT整序方法的研究[D].南京:南京理工大學(xué),,2003.

  [3] 高麗,,劉衛(wèi)新,張學(xué)智.FFT標(biāo)準(zhǔn)移序算法的優(yōu)化[J].探測與控制學(xué)報,,2004,,26(2):62-64.

  [4] 丁玉美,高西全.數(shù)字信號處理[M].西安:西安電子科技大學(xué)出版社,,1995.

  [5] 姚天任.數(shù)字信號處理[M].北京:清華大學(xué)出版社,,2011.

  [6] 張學(xué)智,蔡暉.快速實現(xiàn)FFT的逆序方法[J].探測與控制學(xué)報,,2001,,23(2):62-64.

  [7] 喬春明,朱冰蓮.快速傅里葉變換中逆序數(shù)計算的一種快速算法[J].信息技術(shù),,2011(8):164-165.

  [8] 張學(xué)智,,毛俊.無須逆序數(shù)的FFT整序的一個新方法[J].探測與控制學(xué)報,2002,,24(2):61-63.

  [9] 林水生,,黃順吉.一種實現(xiàn)任意基的快速整序算法[J].電子科技大學(xué)學(xué)報,1998,,27(4):343-346.

  [10] 林水生,,黃順吉.改進的任意基FFT整序算法[J].信號處理,1999,,15(2):163-165.

  [11] 賈淵,,王俊波,姬長英.FFT快速整序算法的對比,、改進及實現(xiàn)[J].電子科技大學(xué)學(xué)報,,2009,38(2):292-295.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。