基于FPGA高精度浮點(diǎn)運算器的FFT設計與仿真
摘要 基于IEEE浮點(diǎn)表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基于FPGA高精度浮點(diǎn)運算器的FFT的設計。利用VHDL語(yǔ)言描述了蝶形運算過(guò)程及地址產(chǎn)生單元,其仿真波形基本能正確的表示輸出結果。
關(guān)鍵詞 快速傅里葉變換;浮點(diǎn);蝶形運算;VHDL
FFT作為數字信號處理中的重要的手段之一,主要在數字通信、語(yǔ)音信號處理、圖像處理、功率譜估計、仿真、系統分析、雷達理論、光學(xué)、醫學(xué)、地震以及數值分析等方面得到廣泛應用?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/FPGA">FPGA實(shí)現FFT,具有軟件編程的靈活性及電路擴展性強等優(yōu)點(diǎn)。隨著(zhù)集成電路技術(shù)進(jìn)步和制造工藝水平的提高,FPGA芯片具有的功能越來(lái)越強,成為快速實(shí)時(shí)實(shí)現FFT的重要手段。采用基2法完成基于FPGA浮點(diǎn)運算器的FFT。
1 基于FPGA浮點(diǎn)運算器的FFT
1.1 浮點(diǎn)的IEEE標準格式
設計采用單精度浮點(diǎn)運算,IEEE定義的二進(jìn)制浮點(diǎn)格式為32位。結構表示如圖1所示。
將32位分為3部分:31位為符號位S,S為0時(shí)表示正數,為1時(shí)表示負數;30~23為指數E,是一個(gè)0~255之間的八位二進(jìn)制數,其實(shí)際的指數是E-127,所表示的指數范圍是2-127~2128;22~0表示尾數F,小數點(diǎn)前還隱藏了一位‘1’,單精度尾數可表示最大數為2(23+1)=16 777 216。因為10716 777 216108,所以單精度浮點(diǎn)數的有效位數是7位,即浮點(diǎn)數的精度為10-6。為方便FFT的運算,文中采用原碼存儲。
1.2 基2的DIT-FFT算法
在蝶形運算中采用復數形式表示數據。對于一個(gè)2點(diǎn)的蝶形運算,輸入復數為A=x+jX,B=y+jY;經(jīng)運算,輸出復數A’=(x+ycosφ+ Ysinφ)+j(X+Ycosφ-ysinφ),B’=[x-(ycosφ+Ysinφ)]+j[X-(Ycosφ-ysinφ)]。
設計主要針對8點(diǎn)FFT進(jìn)行設計,8點(diǎn)FFT算法的原理圖如圖2所示。
整個(gè)FFT過(guò)程中共有三級蝶形運算,每級蝶形運算有4個(gè)蝶形運算單元。在數據輸入時(shí)按照自然順序輸入,最后倒序輸出。
1.3 FFT處理器
FFT處理器主要對數據進(jìn)行蝶形運算及數據存取。設計采用基2蝶形運算器,包括存儲器ROM和RAM,控制器及地址產(chǎn)生單元等。其FFT的結構模型如圖3所示。
fpga相關(guān)文章:fpga是什么
評論