基于FPGA高精度浮點(diǎn)運(yùn)算器的FFT設(shè)計(jì)與仿真
1.3.1 蝶形處理單元
蝶形處理單元是整個(gè)FFT的中心環(huán)節(jié),采用復(fù)數(shù)表示,將實(shí)部與虛部分別存儲(chǔ),利用基2的DIT-FFT算法實(shí)現(xiàn)運(yùn)算。本文引用地址:http://butianyuan.cn/article/190672.htm
蝶形運(yùn)算過(guò)程包括一個(gè)乘法運(yùn)算和一個(gè)加/減法運(yùn)算。數(shù)據(jù)的讀取由時(shí)鐘單元的信號(hào)來(lái)控制:當(dāng)時(shí)鐘為c0時(shí),讀取y;c1時(shí),讀取Y;c2時(shí),讀取x;c3時(shí),讀取X。經(jīng)蝶形運(yùn)算后得到x’=x+(ycosφ+Ysinφ),X’=X+(Ycosφ-ysinφ),y’=x-(ycosφ+Ysinφ),Y’=X-(Ycosφ-ysinφ)然后將數(shù)據(jù)寫(xiě)入同樣地址的RAM中,至此,2點(diǎn)的蝶形運(yùn)算單元完成。在蝶形運(yùn)算共需一個(gè)乘法器和兩個(gè)加法器。
(1)浮點(diǎn)乘法器。乘法過(guò)程對(duì)浮點(diǎn)數(shù)的符號(hào)位、指數(shù)以及尾數(shù)分別進(jìn)行計(jì)算,符號(hào)異或,指數(shù)相加再減127,尾數(shù)加入隱含的‘1’后再進(jìn)行乘法運(yùn)算,如果尾數(shù)相乘的結(jié)果有溢出則指數(shù)加1尾數(shù)取前23位,若無(wú)溢出,則取最高位后的23位。但若輸入的數(shù)據(jù)有一個(gè)是0,則輸出為0。
圖5的波形為兩浮點(diǎn)數(shù)的乘法運(yùn)算,輸入以16進(jìn)制表示,分別將不同類(lèi)型的數(shù)據(jù)搭配進(jìn)行測(cè)試,結(jié)果表示仿真正確。
(2)浮點(diǎn)加法器。加法運(yùn)算是將兩數(shù)指數(shù)比較,存儲(chǔ)較大的指數(shù),將指數(shù)小的尾數(shù)移位,再進(jìn)行加減操作,規(guī)格化后輸出。加法過(guò)程由多個(gè)模塊組合實(shí)現(xiàn),包括比較模塊,右移模塊、加/減法模塊、前導(dǎo)零檢測(cè)模塊、左移模塊和結(jié)果整合輸出模塊。
比較模塊主要對(duì)指數(shù)操作,判斷指數(shù)的大小,較大的指數(shù)暫作結(jié)果的指數(shù),較小指數(shù)的數(shù)做移位操作,其階差為移位量。以下程序采用for循環(huán)來(lái)實(shí)現(xiàn)移位,S(5 downto 0)存儲(chǔ)階差,最大值是32。
fpga相關(guān)文章:fpga是什么
評(píng)論