基于FPGA的可擴展高速FFT處理器的設計與實現
2012年05月25日 10:18 來源:互聯網 作者:秩名 我要評論(0)
一、引言
DFT(離散傅里葉變換)作為將信號從時域轉換到頻域的基本運算,在各種數字信號處理中起著核心作用,其快速算法FFT(快速傅里葉變換)在無線通信、語音識別、圖像處理和頻譜分析等領域有著廣泛的應用。用大規模集成電路FPGA(現場可編程門陣列)來實現FFT算法時,需要重點考慮的不再是算法運算量,而是算法的復雜性、規整性和模塊化,因為算法的簡單性和規整性將更適合大規模集成,更方便于版圖設計,而算法的模塊化更有利于FFT處理器的靈活擴展。組合數FFT算法和CORDIC(坐標旋轉數字計算機)算法結合起來,在計算長點數、可擴展FFT時具有較大的優越性[1,2]。而面向高速、大容量數據流的FFT的實時處理,可以通過VLSI(超大規模集成電路)器件的并行處理或多級流水線處理等來達到。特別是多級流水線處理的FFT結構使得基于FPGA器件的FFT處理器完成不同點數的FFT計算時可以通過增減模塊級數很容易地實現。
二、組合數N=r1r2點混合基FFT原理
計算N點DFT:
式中k=0,1,…,N-1。
若N=r1r2的組合數,可將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陣列結構
-Tukey算法結構實現時,有大量的復數乘法實際上轉化為加減運算,所以用陣列結構實現不但具有速度快的優點,而且所用器件資源也減少很多,通過對陣列結構短點數FFT進行時分復用,可以提高運算單元的使用效率。
2.相位旋轉運算單元
實現短點數FFT級間相位旋轉,采用ROM存儲旋轉因子與數據復乘的傳統方法,不僅涉及乘法運算,而且會消耗大量存儲器資源。
利用CORDIC算法實現組合數FFT級間數據的相位旋轉,把乘法轉化成加減法運算,適合FPGA的大規模集成。可以設計出統一結構的CORDIC處理器模塊,重復利用于不同級間實現相位旋轉,而且其控制邏輯非常簡單。
(1)CORDIC算法原理
如果旋轉角度θ可以分解成n個小角度φi之和,即:
公式:
(2)CORDIC處理器結構設計
本文提出了一種流水線CORDIC處理器結構的解決方案。實現式子(4)的迭代運算時采用補碼移位和補碼加減運算,可以減少大量求補運算,其迭代結構如圖2所示。
前者在于左移補零的位數的不同,這樣,只需要改變n0k0的放大倍數(改變左移低位補零的位數),就可以把同一方向向量功能模塊級聯到圖1 FFT處理器的不同級間來計算CORDIC處理器的MSBi,這就大大地減小了重復設計,其迭代結構如圖3所示。
上周熱點文章排行榜
上周資料下載排行榜
論壇熱帖
熱門博文
創新實用技術專題
熱評
- LM3S9B96開發板手冊及原理圖
- STM32F103ZET6紅牛電路圖
- 高通發布全新設計DragonBoard板
- NI推出Single-Board RIO嵌入式介面
- protel99se正式漢化版免費下載
- hi3515海思原版原理圖
- matlab 7.0軟件下載(免費破解版)
- TX-1C型單片機開發板原理圖
- 三菱A500變頻器原理圖
- 三相IGBT全橋隔離驅動電源設計
博文
- 問什么郵箱激活不了
- 八成大學生認同先就業后擇業
- 我的心路
- 為什么郵箱激活不了
- 你是否曾這樣傷害過一個人?
- 2012.5.12 第一個DS18B20程序
- 到底有多少人在校園里浪費青春
- 到底有多少人在校園里浪費青春
- 藍牙技術越來越雞肋
- 【博客分享季】 我的單片機入門
用戶評論
查看全部 條評論
查看全部 條評論>>