穆文爭 王啟智 朱子平
(中國電子科技集團公司第三十八研究所 合肥 230088)
在雷達信號處理中,FFT作為是頻域脈壓和譜分析的基礎,是較為常用的一種變換,一般由數字信號處理器完成。在工程應用中,當需要做FFT變換時,設計師可以調用開發環境自帶的庫函數,也可以將FFT做成公用基礎模塊,供設計者調用。此類模塊一般采用匯編語言設計,針對所使用處理器的結構特征進行優化,具有較高的運算效率。但是當需要變換的FFT點數較大時,該類模塊不再適用,因為輸入數據和中間緩存都要占據很大的內存空間,而一般DSP的內存空間有限且被劃分為多個不連續的block,這就破壞了該類模塊的并行運算結構,降低了運算效率,如果采用與外部存儲器交換數據的辦法,由于與外存交換數據的速度較慢,也會降低運算效率。因此,在工程上需要做大點數FFT的場合,就要考慮如何實現的問題。
本文首先介紹了大點數FFT變換的數學原理,即將一維FFT拆成二維FFT實現的算法原理,然后以96K點為例,介紹其在通用處理器ADSP-TS201上的實現過程。
設有限長序列x(n)的長度為N,則其DFT為

令N=N1N2,可以將x(n)分解為N2個長度為N1的序列,將這些序列用陣列x'表示,則

令n和k的序號映射定義如下:

則N點DFT可以表示為:

令

則G(n2,k1)為序列x(N2n1+n2)的N1點 DFT,即上式二維陣列N2行元素的DFT。計算陣列x'每一行N1點DFT就得到另一個矩陣:

矩陣的元素為復數G(n2,k1)。因n2行的數據在計算完x(N2n1+n2)的N1點DFT后不再需要,所以G(n2,k1)可以存儲在同一行。計算X(k),還應乘以旋轉因子Wk1n2N形成新的陣列……p>