在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于VHDL和高精度浮點運算器的基2 FFT在FPGA上的設(shè)計仿真

            基于VHDL和高精度浮點運算器的基2 FFT在FPGA上的設(shè)計仿真

            作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

            作為數(shù)字信號處理中的重要的手段之一,主要在數(shù)字通信、語音信號處理、圖像處理、功率譜估計、仿真、系統(tǒng)分析、雷達理論、光學(xué)、醫(yī)學(xué)、地震以及數(shù)值分析等方面得到廣泛應(yīng)用。基于實現(xiàn),具有軟件編程的靈活性及電路擴展性強等優(yōu)點。隨著集成電路技術(shù)進步和制造工藝水平的提高,芯片具有的功能越來越強,成為快速實時實現(xiàn)的重要手段。采用基2法完成基于浮點運算器的FFT。

            本文引用地址:http://www.biyoush.com/article/201706/349067.htm

            1 基于FPGA浮點運算器的FFT

            1.1 浮點的IEEE標準格式

            設(shè)計采用單精度浮點運算,IEEE定義的二進制浮點格式為32位。結(jié)構(gòu)表示如圖1所示。

            將32位分為3部分:31位為符號位S,S為0時表示正數(shù),為1時表示負數(shù);30~23為指數(shù)E,是一個0~255之間的八位二進制數(shù),其實際的指數(shù)是E-127,所表示的指數(shù)范圍是2-127~2128;22~0表示尾數(shù)F,小數(shù)點前還隱藏了一位‘1’,單精度尾數(shù)可表示最大數(shù)為2(23+1)=16 777 216。因為10716 777 216108,所以單精度浮點數(shù)的有效位數(shù)是7位,即浮點數(shù)的精度為10-6。為方便FFT的運算,文中采用原碼存儲。

            1.2 基2的DIT-FFT算法

            中采用復(fù)數(shù)形式表示數(shù)據(jù)。對于一個2點的,輸入復(fù)數(shù)為A=x+jX,B=y+jY;經(jīng)運算,輸出復(fù)數(shù)A’=(x+ycosφ+ Ysinφ)+j(X+Ycosφ-ysinφ),B’=[x-(ycosφ+Ysinφ)]+j[X-(Ycosφ-ysinφ)]。

            設(shè)計主要針對8點FFT進行設(shè)計,8點FFT算法的原理圖如圖2所示。

            整個FFT過程中共有三級,每級蝶形運算有4個蝶形運算單元。在數(shù)據(jù)輸入時按照自然順序輸入,最后倒序輸出。

            1.3 FFT處理器

            FFT處理器主要對數(shù)據(jù)進行蝶形運算及數(shù)據(jù)存取。設(shè)計采用基2蝶形運算器,包括存儲器ROM和RAM,控制器及地址產(chǎn)生單元等。其FFT的結(jié)構(gòu)模型如圖3所示。



            1.3.1 蝶形處理單元

            蝶形處理單元是整個FFT的中心環(huán)節(jié),采用復(fù)數(shù)表示,將實部與虛部分別存儲,利用基2的DIT-FFT算法實現(xiàn)運算。

            蝶形運算過程包括一個乘法運算和一個加/減法運算。數(shù)據(jù)的讀取由時鐘單元的信號來控制:當時鐘為c0時,讀取y;c1時,讀取Y;c2時,讀取x;c3時,讀取X。經(jīng)蝶形運算后得到x’=x+(ycosφ+Ysinφ),X’=X+(Ycosφ-ysinφ),y’=x-(ycosφ+Ysinφ),Y’=X-(Ycosφ-ysinφ)然后將數(shù)據(jù)寫入同樣地址的RAM中,至此,2點的蝶形運算單元完成。在蝶形運算共需一個乘法器和兩個加法器。

            (1)浮點乘法器。乘法過程對浮點數(shù)的符號位、指數(shù)以及尾數(shù)分別進行計算,符號異或,指數(shù)相加再減127,尾數(shù)加入隱含的‘1’后再進行乘法運算,如果尾數(shù)相乘的結(jié)果有溢出則指數(shù)加1尾數(shù)取前23位,若無溢出,則取最高位后的23位。但若輸入的數(shù)據(jù)有一個是0,則輸出為0。

            圖5的波形為兩浮點數(shù)的乘法運算,輸入以16進制表示,分別將不同類型的數(shù)據(jù)搭配進行測試,結(jié)果表示仿真正確。


            (2)浮點加法器。加法運算是將兩數(shù)指數(shù)比較,存儲較大的指數(shù),將指數(shù)小的尾數(shù)移位,再進行加減操作,規(guī)格化后輸出。加法過程由多個模塊組合實現(xiàn),包括比較模塊,右移模塊、加/減法模塊、前導(dǎo)零檢測模塊、左移模塊和結(jié)果整合輸出模塊。

            比較模塊主要對指數(shù)操作,判斷指數(shù)的大小,較大的指數(shù)暫作結(jié)果的指數(shù),較小指數(shù)的數(shù)做移位操作,其階差為移位量。以下程序采用for循環(huán)來實現(xiàn)移位,S(5 downto 0)存儲階差,最大值是32。

            然后尾數(shù)經(jīng)加減運算后規(guī)格化并輸出,為了以標準浮點格式輸出,規(guī)格化需要前導(dǎo)零檢測。

            然后進行移位操作,最后將規(guī)格化后的數(shù)據(jù)整合輸出,就完成兩個浮點數(shù)的加法運算。

            圖6的波形為兩個輸入浮點數(shù)的加法運算數(shù)據(jù),以16進制表示。上述數(shù)據(jù)分別將不同類型的數(shù)據(jù)搭配運算,數(shù)據(jù)表明該仿真結(jié)果正確。

            1.3.2 地址產(chǎn)生單元

            地址產(chǎn)生單元主要是跟蹤FFT運算進度,進而更好地調(diào)配存儲單元,及控制各相關(guān)模塊的運行。

            (1)通過計數(shù)器來跟蹤記錄FFT計算的狀況。為方便對存儲單元操作,采用計數(shù)器來記錄FFT的計算情況。8點的FFT,每個單元包括4個數(shù)據(jù),所以用一個4位計數(shù)器Butterfly表示全部的運算狀態(tài)。一個2位級計數(shù)器Stage表示三級蝶形單元。當Butterfly計數(shù)為4時,級計數(shù)器Stage加1,當Stage計數(shù)為3時,表示FFT的計算操作完成。當Butterfly計數(shù)為15時,輸入輸出信號置‘1’,反饋回控制器輸入輸出操作完成。

            (2)ROM讀取的地址。旋轉(zhuǎn)因子存儲在ROM中,由實部cos(2×k×π/8)和虛部sin(2×k×π/8)兩部分組成,讀取由時鐘單元的信號控制。由圖2可以看出每一級參加蝶形運算的旋轉(zhuǎn)因子不同。

            (3)RAM數(shù)據(jù)地址。在整個地址單元中,分配RAM中數(shù)據(jù)的地址是重點,8點蝶形運算共需16個存儲單元,數(shù)據(jù)地址的產(chǎn)生遵循一定規(guī)則。例如,Butterfly的信號為“a3a2a1a0”,則x,y的地址產(chǎn)生規(guī)則如表1所示。

            數(shù)據(jù)的讀取靠時鐘信號來控制。

            1.4 FFT仿真結(jié)果分析

            圖7中輸入8點數(shù)據(jù)為[-l,1,2,-0.5,-3,-1,2,0]。仿真結(jié)果經(jīng)轉(zhuǎn)換后,用10進制表示的最后結(jié)果為[0,3.76775-1.06065i,-8-0.5i,0.23225-1.06065i,0.5,0.23225+1.06065i,-8+0.5i.3.76775+1.06065i]。Matlab仿真后結(jié)果為[-0.5000,3.7678-1.0607i,-0.8000-0.5000i,0.2322-1.0607i,0.5000,0.2322+1.0607i,-0.8000+0.5000i,3.7678+1.0607i]兩結(jié)果很接近,誤差較小,仿真結(jié)果正確。


            2 結(jié)束語

            文中在分析了FFT算法后,描述了運算的蝶形單元,地址生成單元及FFT的實現(xiàn)過程。從實際設(shè)計出發(fā),完成了基于FPGA的單精度浮點運算器的FFT設(shè)計,精度達到10-6。其輸出結(jié)果與Matlab仿真結(jié)果相近,達到了利用FPGA實現(xiàn)FFT的目的。



            關(guān)鍵詞: 蝶形運算 FFT FPGA

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉