基于FPGA的可擴展高速FFT處理器的設計與實現

2012年05月25日 10:18 來源:互聯網 作者:秩名 我要評論(0)

標簽:FFT(71)FPGA(1779)可擴展(9)

  一、引言

  DFT(離散傅里葉變換)作為將信號從時域轉換到頻域的基本運算,在各種數字信號處理中起著核心作用,其快速算法FFT(快速傅里葉變換)在無線通信、語音識別、圖像處理和頻譜分析等領域有著廣泛的應用。用大規模集成電路FPGA(現場可編程門陣列)來實現FFT算法時,需要重點考慮的不再是算法運算量,而是算法的復雜性、規整性和模塊化,因為算法的簡單性和規整性將更適合大規模集成,更方便于版圖設計,而算法的模塊化更有利于FFT處理器的靈活擴展。組合數FFT算法和CORDIC(坐標旋轉數字計算機)算法結合起來,在計算長點數、可擴展FFT時具有較大的優越性[1,2]。而面向高速、大容量數據流的FFT的實時處理,可以通過VLSI(超大規模集成電路)器件的并行處理或多級流水線處理等來達到。特別是多級流水線處理的FFT結構使得基于FPGA器件的FFT處理器完成不同點數的FFT計算時可以通過增減模塊級數很容易地實現。

  二、組合數N=r1r2點混合基FFT原理

  計算N點DFT:

  計算N點DFT

  式中k=0,1,…,N-1。

  若N=r1r2的組合數,可將n(n<N)表示為

  若N

  式(2)的意

  義在于,計算組合數N=r1r2點DFT,等價于先求出r?2組r?1點的DFT,其結果經過對應旋轉因子的相位旋轉后,再計算r1組r2點的DFT。實際應用中,DFT往往用它的快速算法FFT實現,因而式(2)中的r1點DFT和r2點DFT都用r1點FFT和r2點FFT實現。

  三、可擴展FFT處理器實現結構

  根據式(2)的FFT算法原理設計FFT處理器的可擴展結構如圖1所示。

  采用流水線模塊化級聯結構,把FFT處理器劃分成短點數FFT、級間混序RAM和相位旋轉等功能模塊,設計的各功能模塊可以重復利用,通過復用或增減各功能模塊可以靈活改變FFT處理器的計算規模,而且不增加設計量。在圖1結構中,當Li=1時,就演變成了基2 FFT;當Li=2時,就演變成了基4 FFT;同理,當Li≠Lj時,就演變成了高組合數的混合基FFT。

  可擴展結構

  1.短點數FFT陣列結構

  短點數FFT陣列結構

  -Tukey算法結構實現時,有大量的復數乘法實際上轉化為加減運算,所以用陣列結構實現不但具有速度快的優點,而且所用器件資源也減少很多,通過對陣列結構短點數FFT進行時分復用,可以提高運算單元的使用效率。

  2.相位旋轉運算單元

  實現短點數FFT級間相位旋轉,采用ROM存儲旋轉因子與數據復乘的傳統方法,不僅涉及乘法運算,而且會消耗大量存儲器資源。

  利用CORDIC算法實現組合數FFT級間數據的相位旋轉,把乘法轉化成加減法運算,適合FPGA的大規模集成。可以設計出統一結構的CORDIC處理器模塊,重復利用于不同級間實現相位旋轉,而且其控制邏輯非常簡單。

  (1)CORDIC算法原理

  如果旋轉角度θ可以分解成n個小角度φi之和,即:

  CORDIC算法原理

  公式:

  CORDIC算法原理

  (2)CORDIC處理器結構設計

  本文提出了一種流水線CORDIC處理器結構的解決方案。實現式子(4)的迭代運算時采用補碼移位和補碼加減運算,可以減少大量求補運算,其迭代結構如圖2所示。

  迭代結構

  迭代結構

  前者在于左移補零的位數的不同,這樣,只需要改變n0k0的放大倍數(改變左移低位補零的位數),就可以把同一方向向量功能模塊級聯到圖1 FFT處理器的不同級間來計算CORDIC處理器的MSBi,這就大大地減小了重復設計,其迭代結構如圖3所示。

  迭代結構

12下一頁