摘 要:對FFT處理器的實現算法-頻域抽取基4算法做了介紹。介紹一種以FPGA作為設計載體,設計和實現一套集成于FPGA內部的FFT處理器的方法和設計過程。FFT處理器的硬件試驗結果表明該處理器的運算結果正確,并且具有較高運算速度。該方法具有設計簡單靈活,體積小等優(yōu)點,可用于雷達處理、高速圖像處理和數字通信等應用場合。
關鍵詞:FFT;FPGA;基4算法,硬件實驗結果
中圖分類號:TP368.1 文獻標識碼:B 文章編號:1004-373X(2008)02-074-03
Design and Realization of FFT Processor Based on FPGA
HU Qiming,CAO Naochang,LIU Dongbin
(Engineering College,Air Force Engineering University,Xi′an,710038,China)
Abstract:The paper firstly introduces the arithmetic of FFT processor-Radix-4,and introduces the method and process of design and realizes a FFT processor,which is integrated in FPGA chip,regarding FPGA as design carrier.The result of hardware test of FFT processor shows that the processor works well and has high speed.The design has the advantages of simple ness,agility and small bulk.It can be used in many application situations,such as radar signals process,high speed image process and digital communication.
Keywords:FFT;FPGA;radix-4;algorithm;hardware experiment result
數字信號處理領域中FFT作為時域和頻域轉換的基本運算,是數字譜分析的必要前提。因FFT的超級運算能力,使其在雷達處理、觀測、跟蹤、定時定位處理、高速圖像處理、保密無線通訊和數字通信、匹配濾波等領域中得到極為廣泛地應用。
近年來由于現場可編程門陣列(Field Programmable Gate Array,FPGA)的飛速發(fā)展,他能夠進行并行信號處理,容易實現流水線結構,且升級簡便,非常適合實現FFT算法[1,2]。一些FPGA廠商,如Altera公司和XILINX公司,都研制了相應的FFT IP核。但這些器件價格十分昂貴,不能得到廣泛應用。因此,自主研發(fā)基于FPGA芯片的FFT處理器,把FFT實時化的要求和FPGA芯片設計靈活性結合起來,實現并行算法與硬件結構的優(yōu)化配置,提高 FFT 處理速度,滿足現代信號處理的高速度、高可靠性要求,已經成為了當今數字信號處理的一個研究點。本文正是適應這種趨勢,采用頻率抽取基4算法,設計并實現了一個集成于FPGA內部的FFT處理器。相對于傳統(tǒng)的設計方法,應用FPGA作為算法實現的載體,使得FFT處理器除了具有算法實現準確性高和設備的穩(wěn)定性強等特點外,更有系統(tǒng)集成度高、簡單靈活、體積小、易于升級擴展和成本低廉等優(yōu)點。
1 FFT的基本原理
對一維時域信號進行傅里葉變換,設xn是長為N的復序列,其DFT定義為:
由式(5)中可以注意到一些便于硬件實現的特點:如可以用分組加A+CW2P,BWP+DW3P,A-CW2P,BWP-DW3P,然后再進行2次相加等特點。
3 FFT的整體結構
在對頻率抽樣基4的算法進行介紹后,提出本文設計的FFT處理器的整體結構。本設計應用級聯結構,每一級都使用1個獨立的蝶型運算單元來加以運算。即:第1個蝶型運算單元計算第1列4只蝶型,第2個單元計算第2列。在實現過程中應用Verilog HDL作為系統(tǒng)設計的實體輸入方式,設計了1個集成于FPGA芯片內部的使用基4算法1 024點32位(16位實數,16位虛數)的 FFT 計算單元,如圖1所示。
從圖1中可以看出,該FFT處理器采用5級流水線結構,RAM采用乒乓操作。每組RAM都由地址發(fā)生器進行控制,整個運算單元又接收狀態(tài)發(fā)生器的控制。
4 蝶形單元結構
FFT的核心操作是蝶型運算,蝶型運算的速度直接影響著整個FFT處理器的速度,本文的蝶形單元的結構如圖2所示。
由圖2可以看出,蝶形運算包括復數乘法和加法2個部分,加法實現較為容易,因此只有提高復數乘法的運算速度才能加快蝶形單元的處理速度。鑒于復數乘法硬件實現較困難,計算速度慢。因此本設計采用CORDIC(坐標旋轉數字計算機)算法來實現復數的乘法運算。CORDIC算法不但能夠將復數乘法轉化為硬件易于實現的加減和移位運算,而且根據他的迭代原理,CORDIC單元可以用流水線結構進行表示,可以使向量旋轉并行處理,大大地加快了蝶型運算的速度[3]。
4.1 復數乘法單元
復數乘法單元,簡稱復乘單元,是FFT算法實現過程用來完成復數乘法的單元模塊。在本設計中,應用復乘單元計算出基4算法式(5)中的A,BWP,CW2P,DW3P。
如蝶形單元結構圖所示,按照基4算法的信號處理流程,由于第一級運算只有一個旋轉因子W0,相當于將B,C,D都乘以1,因此第一級運算是不需要復數乘法單元的。
復乘單元CORDIC算法流水線形式如圖3所示。
4.2 后續(xù)單元的設計
后續(xù)單元的主要作用就是將復乘單元的運算輸出結果A,BWP,CW2P,DW3P依次輸入到數據緩沖器中進行數據同步,然后對應式(5)進行復數加法運算,得出最終結果。由于4個復乘結果A,BWP,CW2P,DW3P是依次從 CORDIC 復乘單元中讀出的,所以必須應用數據緩沖器進行數據同步處理,保證4個復乘結果同時輸入到復數加法單元。
5 地址和狀態(tài)發(fā)生器
FFT處理器控制部分主要由地址、狀態(tài)發(fā)生器組成。地址發(fā)生器主要是產生FFT運算過程中用到ROM、RAM的存取地址;狀態(tài)發(fā)生器是整個 FFT 處理器的控制中心,他主要功能如下:
(1) 使能或禁止FFT處理器工作;
(2) 使能或禁止各級存儲模塊工作;
(3) 使能或禁止各級地址發(fā)生器,數據分配器工作;
(4) 將FFT復位,將各級存儲器清零。
在設計好FFT處理器的各個部分后,應用Actel公司開發(fā)的新一款的ILGOOe系列FPGA-AGLE600。他除了具有其他同類產品的基本性能外,更突出的特點是其采用FLASH*Freeze技術,加上其具有低靜態(tài)、動態(tài)功耗,使得此款產品具有其他產品無法比擬的超低功耗性能。設計過程中將FFT處理器的各個部分分別設計輸入,將整個FFT處理器燒錄到AGLE600芯片內,并對FPGA管腳資源進行了配置,最終實現在1片FPGA芯片內部集成了一套FFT處理器系統(tǒng)。
6 硬件試驗
由FFT的運算公式可知,方波經過FFT后應為Sa(ω)。圖4所示是由FFT處理器對一個數據總長度為512點、脈沖寬度為20點方波進行FFT運算,并求模歸一化后的結果。
7 結 語
本文介紹FFT處理器的實現算法,提出一種以FPGA芯片為載體實現FFT處理器的方法,并對處理器的蝶形單元、后續(xù)單元和控制單元做了相關介紹。硬件試驗的結果表明,設計的FFT處理器的運算結果滿足要求,且具有較高的運算速度。
參 考 文 獻
[1]李鐸,黃益莊.應用 FPGA 技術實現FFT[J].電子產品世界,2000(8):58-58.
[2]植強.一種基于FPGA的FFT陣列處理器[J].電子對抗技術,2002,7(6):36-39.
[3]Banerjee Ayan,Sundar Dhar,Anindya.FPGA Realization of a CORDIC-based FFT Processor for Biomedical Signal Processing[J].Microprocessors and Microsystems,2001,25(3):131-142.
[4]胡廣書.數字信號處理理論、算法與實現[M].北京:清華大學出版社,1997.
[5]丁玉美,高西全.數字信號處理[M].2版.西安:西安電子科技大學出版社,2000.
[6]杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設計基礎\\[M\\].西安:西安電子科技大學出版社,2006.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。