新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的移位寄存器流水線結(jié)構(gòu)FFT處理器

基于FPGA的移位寄存器流水線結(jié)構(gòu)FFT處理器

作者: 時(shí)間:2010-07-19 來源:網(wǎng)絡(luò) 收藏

  3.2 蝶形運(yùn)算模塊

  蝶算模塊由一個(gè)復(fù)數(shù)加法器,一個(gè)復(fù)數(shù)減法器和一個(gè)旋轉(zhuǎn)因子的復(fù)數(shù)乘法器構(gòu)成,如圖6所示。

蝶形運(yùn)算單元

  旋轉(zhuǎn)因子乘法器通常由4次實(shí)數(shù)乘法和2次加/減法運(yùn)算實(shí)現(xiàn),但因?yàn)閏os和sin的值可以預(yù)先存儲(chǔ),通過下面的算法可以簡化復(fù)數(shù)乘法器:

 ?。?)存儲(chǔ)如下三個(gè)系數(shù):C,C+S,C-S

 ?。?)計(jì)算:E=X-Y和Z=C*E=C*(X-Y)

  (3)用R=(C-S)*Y+Z,I=(C+S)*X-Z,

  得到需要的結(jié)果。

  這種算法使用了3次乘法,1次加法和2次減法,但是需要使用存儲(chǔ)3個(gè)表的ROM資源。

  設(shè)計(jì)中數(shù)據(jù)的輸入為16位復(fù)數(shù),所以將旋轉(zhuǎn)因子cos(2kπ/N),sin(2kπ/N)量化成帶符號(hào)數(shù)的16位二進(jìn)制數(shù)后,存儲(chǔ)到ROM中,由于值域不同,需要注意C+S和C-S的表要比C表多1位精度。

  運(yùn)算后的結(jié)果需要除以量化時(shí)乘以的倍數(shù)16b011111llllllllll。具體實(shí)現(xiàn)時(shí)由于除法運(yùn)算在器件需要消耗較多的資源,設(shè)計(jì)中采用二進(jìn)制數(shù)移位的方法來實(shí)現(xiàn)除法運(yùn)算。為了防止數(shù)據(jù)溢出,設(shè)計(jì)對(duì)輸出結(jié)果除以2。圖7為蝶形運(yùn)算模塊的RTL級(jí)結(jié)構(gòu)圖。

蝶形運(yùn)算模塊的RTL級(jí)結(jié)構(gòu)圖

  3.3 倒序輸出模塊

  由頻域抽取的基-2算法可知,運(yùn)算結(jié)果需要倒序輸出。可以先將結(jié)果存儲(chǔ)到RAM中,然后使用O~255的二進(jìn)制數(shù)倒序產(chǎn)生RAM讀取地址,依次將結(jié)果讀出,其中實(shí)現(xiàn)一個(gè)8位二進(jìn)制數(shù)倒序的算法如下:

  (1)將8位數(shù)字的相鄰兩位交換位置;

  (2)將相鄰的兩位看作1組,相鄰兩組交換位置;

  (3)將相鄰的4位看作1組,相鄰兩組交換位置。

  經(jīng)過這樣的交換位置后,輸出即為原來8位二進(jìn)制數(shù)的倒序。

  舉例對(duì)于8位二進(jìn)制數(shù)10110110來說,第一次交換位置的結(jié)果是01111001,第二次交換位置的結(jié)果是11010110,最后交換位置的結(jié)果是01101101??梢娬檬窃瓉頂?shù)字的倒序。



關(guān)鍵詞: FPGA FFT 移位寄存器

評(píng)論


相關(guān)推薦

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

關(guān)閉