国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種點(diǎn)數(shù)可變的混合基fft/ifft實(shí)現(xiàn)裝置及其方法

      文檔序號(hào):6433009閱讀:602來(lái)源:國(guó)知局
      專利名稱:一種點(diǎn)數(shù)可變的混合基 fft/ifft實(shí)現(xiàn)裝置及其方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置及其方法。
      背景技術(shù)
      離散傅里葉變換(DFT)是數(shù)字信號(hào)處理領(lǐng)域最為基本也是最為常用的運(yùn)算,我們可以利用DFT對(duì)信號(hào)做數(shù)字譜分析或者實(shí)現(xiàn)數(shù)字濾波,此外,在各種數(shù)字系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)中也都會(huì)用到DFT。然而,在DFT運(yùn)算提出初期,并沒有一種很優(yōu)的算法隨之提出,因此, 完成N點(diǎn)數(shù)據(jù)DFT的計(jì)算復(fù)雜度為0(N2);直到1965年,Cooley和Tukey在《Mathematics of Computation〉〉上發(fā)表了“Analgorithm for the machine computation of complex Fourier series” 一文,標(biāo)志著快速傅里葉變換(FFT)算法的正式誕生。FFT算法的提出被視為數(shù)字信號(hào)處理發(fā)展史上一個(gè)重要的里程碑,它將DFT的計(jì)算復(fù)雜度由0(N2)降到了 0(N Iog2 N),解決了數(shù)字信號(hào)處理實(shí)現(xiàn)和應(yīng)用的瓶頸,具有很強(qiáng)的理論和工程意義。在目前數(shù)字信號(hào)處理的各個(gè)應(yīng)用領(lǐng)域中,F(xiàn)FT算法仍然起著舉足輕重的作用例如,F(xiàn)FT算法作為時(shí)域和頻域轉(zhuǎn)換的基本算法,是我們進(jìn)行數(shù)字譜分析的必備前提,在數(shù)字通信、語(yǔ)音信號(hào)分析、圖像處理、雷達(dá)以及生物醫(yī)學(xué)工程等方面都有著極其廣泛的應(yīng)用;又如,在數(shù)字語(yǔ)音編碼、數(shù)字濾波、射電干涉陣等情況下,都需要使用專用的FFT設(shè)備來(lái)處理這種實(shí)時(shí)快速的運(yùn)算;特別是,近年來(lái)由于現(xiàn)場(chǎng)可編程門陣列(FPGA)的飛速發(fā)展,使得FPGA非常適合用來(lái)實(shí)現(xiàn)FFT算法,如FPGA廠商Altera和Xlinx都開發(fā)了相應(yīng)的 FFT IP核,且價(jià)格非常昂貴,無(wú)法廣泛應(yīng)用,因此在實(shí)際工程應(yīng)用中,開發(fā)一個(gè)基于FGPA的 FFT實(shí)現(xiàn)方法顯得尤為重要。目前,已有的各種各樣的DFT計(jì)算快速算法大致可以分為兩類一類是將DFT轉(zhuǎn)變?yōu)榫矸e,利用計(jì)算卷積的方法計(jì)算,其代表是Winograd算法和素因子算法;另一類是遞歸型算法,是將一維DFT轉(zhuǎn)化為容易計(jì)算的二維或者多維DFT,且這個(gè)過程可以重復(fù),具有代表性的算法有Cooley-Tukey算法、Rader-Brermer算法和分裂基算法。上述兩類算法相比較而言,前者在運(yùn)算量上占優(yōu),乘法器的使用比后者少,但是控制邏輯較復(fù)雜,控制單元實(shí)現(xiàn)起來(lái)相對(duì)較為麻煩。

      發(fā)明內(nèi)容
      本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置及其方法。點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置包括模塊輸入數(shù)據(jù)變換模塊、存儲(chǔ)模塊A、 數(shù)據(jù)選擇器、蝶形運(yùn)算模塊、溢出檢測(cè)模塊、存儲(chǔ)模塊B、移位模塊、輸出數(shù)據(jù)變換模塊以及控制模塊,輸入數(shù)據(jù)變換模塊與存儲(chǔ)模塊A、數(shù)據(jù)選擇器、蝶形運(yùn)算模塊、溢出檢測(cè)模塊、存儲(chǔ)模塊B、移位模塊依次連接,存儲(chǔ)模塊B與輸出數(shù)據(jù)變換模塊相連,移位模塊與數(shù)據(jù)選擇器相連;在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或IFFT,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后存儲(chǔ)到存儲(chǔ)模塊A,然后控制模塊控制存儲(chǔ)模塊A中所有數(shù)據(jù)完成第一級(jí)蝶形運(yùn)算,蝶形運(yùn)算結(jié)果經(jīng)過溢出檢測(cè)模塊完成溢出檢測(cè),同時(shí)將蝶形運(yùn)算結(jié)果存入存儲(chǔ)模塊B ;當(dāng)存儲(chǔ)模塊A中所有數(shù)據(jù)均完成了第一級(jí)蝶形運(yùn)算后,控制模塊向外給出存儲(chǔ)模塊A空閑可用的標(biāo)志信號(hào),預(yù)示著下一次運(yùn)算數(shù)據(jù)可以輸入,同時(shí)控制模塊控制移位模塊、存儲(chǔ)模塊B、 蝶形運(yùn)算模塊以及溢出檢測(cè)模塊完成接下來(lái)的所有蝶形運(yùn)算;當(dāng)所有蝶形運(yùn)算全部完成之后,控制模塊控制存儲(chǔ)模塊B、輸出數(shù)據(jù)變換模塊,根據(jù)本次運(yùn)算為FFT或IFFT,將存儲(chǔ)模塊 B中的數(shù)據(jù)串行讀出、進(jìn)行實(shí)部虛部變換,然后經(jīng)過移位得到最終的塊浮點(diǎn)運(yùn)算結(jié)果,當(dāng)存儲(chǔ)模塊B中數(shù)據(jù)全部輸出后,輸出數(shù)據(jù)變換模塊向控制模塊給出存儲(chǔ)模塊B空閑可用標(biāo)志信號(hào),新一次FFT/IFFT運(yùn)算開始進(jìn)行。所述的蝶形運(yùn)算模塊包括相連接的旋轉(zhuǎn)因子存儲(chǔ)模塊、乘法器模塊和加法器模塊。點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法包括如下步驟1)根據(jù)本次運(yùn)算為FFT或者IFFT,在控制模塊的控制下,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后按照分塊倒序方式存入存儲(chǔ)模塊A ;2)串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換并全部寫入存儲(chǔ)模塊A后,控制模塊控制存儲(chǔ)模塊A、蝶形運(yùn)算模塊、和溢出檢測(cè)模塊,從存儲(chǔ)模塊A中讀取四個(gè)數(shù)據(jù)完成一次基-4蝶形運(yùn)算;對(duì)蝶形運(yùn)算結(jié)果數(shù)據(jù)做溢出檢測(cè)后,按原址存儲(chǔ)到存儲(chǔ)模塊B中,當(dāng)存儲(chǔ)模塊A中的所有數(shù)據(jù)均完成第一級(jí)蝶形運(yùn)算,控制模塊向外給出信號(hào),下一次FFT或者IFFT運(yùn)算的數(shù)據(jù)流進(jìn)入存儲(chǔ)模塊A ;3)將FFT或者IFFT運(yùn)算的點(diǎn)數(shù)記為N,且N = 2L,L為大于或等于3的正整數(shù)若 L為偶數(shù),則蝶形運(yùn)算級(jí)數(shù)為L(zhǎng)/2 ;若L為奇數(shù),則蝶形運(yùn)算級(jí)數(shù)為(L+1) /2,在控制模塊的控制下,L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第(L-I) /2級(jí)的每一次蝶形運(yùn)算均從存儲(chǔ)模塊B中讀取四個(gè)數(shù)據(jù),經(jīng)過移位模塊移位之后完成一次基-4 蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B ;當(dāng)L為奇數(shù)時(shí),第(L+l)/2級(jí)蝶形運(yùn)算按照每次從存儲(chǔ)模塊B中讀取兩個(gè)數(shù)據(jù),在控制模塊下進(jìn)行基-2蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B中;4)所有蝶形運(yùn)算完成之后,在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或者IFFT,將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出,經(jīng)過移位和實(shí)部虛部變換后得到輸入數(shù)據(jù)的FFT或者IFFT 塊浮點(diǎn)運(yùn)算結(jié)果,將該結(jié)果與最后輸出的塊浮點(diǎn)指數(shù)組合即為實(shí)際FFT或者IFFT結(jié)果。所述的根據(jù)本次運(yùn)算為FFT或者IFFT,在控制模塊的控制下,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后按照分塊倒序方式存入存儲(chǔ)模塊A的步驟包括1) FFT/IFFT變換的輸入數(shù)據(jù)為復(fù)數(shù),點(diǎn)數(shù)為N,N = 2L, L為大于或等于3的正整數(shù),若輸入數(shù)據(jù)要求進(jìn)行FFT運(yùn)算,則輸入復(fù)數(shù)數(shù)據(jù)不需做處理;若輸入數(shù)據(jù)要求進(jìn)行IFFT 運(yùn)算,則輸入復(fù)數(shù)數(shù)據(jù)實(shí)部不變,虛部取反;2)存儲(chǔ)模塊A包括四個(gè)大小相同的子存儲(chǔ)模塊,分別為Al、A2、A3、A4,每個(gè)子存儲(chǔ)模塊的大小為2XbXN/4比特,b為輸入復(fù)數(shù)的實(shí)部或者虛部的位寬比特?cái)?shù),串行輸入的N點(diǎn)處理后數(shù)據(jù)為x(n),其中n = 0,l,2,……,N-Ux(O) χ(N/4-1)、χ(N/4) χ(2Ν/4-1),χ(2Ν/4) χ(3Ν/4_1)和 χ(3Ν/4) χ(Ν_1)分別按照倒序存入 Al、Α2、A3、Α4 中;3)當(dāng)輸入數(shù)據(jù)點(diǎn)數(shù)達(dá)到N時(shí),控制模塊給出FFT/IFFT運(yùn)算啟動(dòng)信號(hào)。
      所述的串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換并全部寫入存儲(chǔ)模塊A后,控制模塊控制存儲(chǔ)模塊A、蝶形運(yùn)算模塊和溢出檢測(cè)模塊,從存儲(chǔ)模塊A中讀取四個(gè)數(shù)據(jù)完成一次基-4蝶形運(yùn)算;對(duì)蝶形運(yùn)算結(jié)果數(shù)據(jù)做溢出檢測(cè)后,按原址存儲(chǔ)到存儲(chǔ)模塊B中,當(dāng)存儲(chǔ)模塊A中的所有數(shù)據(jù)均完成第一級(jí)蝶形運(yùn)算,控制模塊向外給出信號(hào),下一次FFT或者IFFT運(yùn)算的數(shù)據(jù)流可以進(jìn)入存儲(chǔ)模塊A的步驟包括1)從子存儲(chǔ)模塊A1、A2、A3、A4中分別讀出一個(gè)數(shù)據(jù),經(jīng)過三次復(fù)數(shù)乘法和八次復(fù)數(shù)加法,完成一次基-4蝶形運(yùn)算;2)對(duì)每次蝶形運(yùn)算的結(jié)果做溢出檢測(cè),記下該運(yùn)算結(jié)果中最大值的溢出比特?cái)?shù);3)存儲(chǔ)模塊B也由四個(gè)子存儲(chǔ)模塊組成,分別為子存儲(chǔ)模塊B1、B2、B3、B4,每次蝶形運(yùn)算結(jié)束將四個(gè)數(shù)據(jù)寫入子存儲(chǔ)模塊Bi、B2、B3、B4,寫地址等于子存儲(chǔ)模塊Al、A2、A3、 A4的讀地址;4)重復(fù)上述三個(gè)步驟,直至存儲(chǔ)模塊A中所有數(shù)據(jù)完成蝶形運(yùn)算,此時(shí)最大的溢出比特?cái)?shù)即為該級(jí)蝶形運(yùn)算結(jié)果最終的溢出比特?cái)?shù);5)當(dāng)存儲(chǔ)模塊A中所有數(shù)據(jù)完成第一級(jí)蝶形運(yùn)算后,控制模塊向外給出標(biāo)志信號(hào),表明下一次FFT/IFFT的數(shù)據(jù)流串行進(jìn)入存儲(chǔ)模塊A等待。所述的將FFT或者IFFT運(yùn)算的點(diǎn)數(shù)記為N,且N = 2L,L為大于或等于3的正整數(shù) 若L為偶數(shù),則蝶形運(yùn)算級(jí)數(shù)為L(zhǎng)/2;若L為奇數(shù),則蝶形運(yùn)算級(jí)數(shù)為(L+l)/2。在控制模塊的控制下,L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第(L-I) /2 級(jí)的每一次蝶形運(yùn)算均從存儲(chǔ)模塊B中讀取四個(gè)數(shù)據(jù),經(jīng)過移位模塊移位之后完成一次基-4蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B ;當(dāng)L為奇數(shù)時(shí),第(L+l)/2級(jí)蝶形運(yùn)算按照每次從存儲(chǔ)模塊B中讀取兩個(gè)數(shù)據(jù),在控制模塊下進(jìn)行基-2蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B中的步驟包括1)L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第 (L-I)/2級(jí)蝶形運(yùn)算,在控制模塊的控制下,每次分別從子存儲(chǔ)模塊Bi、B2、B3、B4中各讀取一個(gè)數(shù)據(jù),移位模塊按照前一級(jí)蝶形運(yùn)算后溢出檢測(cè)結(jié)果進(jìn)行移位,移位結(jié)果完成一次基-4蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)同時(shí)按照原址寫入子存儲(chǔ)模塊Bi、B2、B3、B4 ;2)當(dāng)L為奇數(shù)時(shí),第(L+1)/2級(jí)蝶形運(yùn)算為基-2蝶形運(yùn)算,在控制模塊的控制下, 首先從子存儲(chǔ)模塊Bl和B3中分別讀出一個(gè)數(shù)據(jù),移位之后完成一次基-2蝶形運(yùn)算,結(jié)果經(jīng)溢出檢測(cè)后按原址存入子存儲(chǔ)模塊Bl和B3,如此循環(huán)直至子存儲(chǔ)模塊Bi、B3中所有數(shù)據(jù)均完成蝶形運(yùn)算;之后,將子存儲(chǔ)模塊B2和B4組合,完成與子存儲(chǔ)模塊Bl和B3相同的操作;3)此時(shí),我們就順利完成了 N點(diǎn)數(shù)據(jù)FFT/IFFT運(yùn)算的所有蝶形運(yùn)算,結(jié)果存儲(chǔ)在子存儲(chǔ)模塊B1、B2、B3、B4中。所述的所有蝶形運(yùn)算完成之后,在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或者 IFFT,將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出,經(jīng)過移位和實(shí)部虛部變換后得到輸入數(shù)據(jù)的FFT或者IFFT塊浮點(diǎn)運(yùn)算結(jié)果,將該結(jié)果與最后輸出的塊浮點(diǎn)指數(shù)組合即為實(shí)際FFT或者IFFT 結(jié)果的步驟包括1)在控制模塊控制下,將數(shù)據(jù)從子存儲(chǔ)模塊B1、B2、B3、B4中按照一定的順序串行輸出,并根據(jù)本次運(yùn)算為FFT或者IFFT作如下處理若為FFT,則實(shí)部和虛部均不變;若為IFFT,則實(shí)部不變,虛部取反;2)完成實(shí)部和虛部轉(zhuǎn)換后,按照最后一級(jí)蝶形運(yùn)算的溢出檢測(cè)結(jié)果,將串行輸出數(shù)據(jù)做相應(yīng)移位后即可輸出,輸出的結(jié)果即為輸入N點(diǎn)復(fù)數(shù)數(shù)據(jù)的FFT/IFFT塊浮點(diǎn)運(yùn)算結(jié)果,當(dāng)N點(diǎn)數(shù)據(jù)全部輸出后,向控制模塊給出標(biāo)志信號(hào),表明存儲(chǔ)模塊B可用,可以進(jìn)行新一次的FFT/IFFT運(yùn)算;3)實(shí)際的 FFT/IFFT 結(jié)果為,X(k) =X' (k),k = 0,1,…,N_l,N 為輸入數(shù)據(jù)點(diǎn)數(shù),其中X(k)為實(shí)際FFT/IFFT結(jié)果,V (k)為FFT/IFFT塊浮點(diǎn)運(yùn)算結(jié)果,exp為塊浮點(diǎn)指數(shù)。所述的實(shí)際的FFT/IFFT 結(jié)果為X(k) =X' (k)*2_exp,k = 0,1,...,N_1,N 為輸入數(shù)據(jù)點(diǎn)數(shù),其中X(k)為實(shí)際FFT/IFFT結(jié)果,V (k)為FFT/IFFT塊浮點(diǎn)運(yùn)算結(jié)果,exp 為塊浮點(diǎn)指數(shù)的步驟包括1)當(dāng)運(yùn)算類型為FFT時(shí),exp初值為0,當(dāng)運(yùn)算類型為IFFT時(shí),exp初值為10&N ;2)每一級(jí)蝶形運(yùn)算之后,exp等于在該級(jí)蝶形運(yùn)算開始之前的值減去本級(jí)蝶形運(yùn)算的溢出比特?cái)?shù),當(dāng)所有蝶形運(yùn)算完成之后,所得到的exp即為最終的塊浮點(diǎn)指數(shù);3)通過最后的塊浮點(diǎn)結(jié)果X' (k)和塊浮點(diǎn)指數(shù)exp即可得到實(shí)際的FFT/IFFT 結(jié)果 X(k),X(k) = X' (k)*2_exp,k = 0,1,…,N-l,N 為輸入數(shù)據(jù)點(diǎn)數(shù)。本發(fā)明為FFT和IFFT兩用系統(tǒng),將欲完成變換數(shù)據(jù)的點(diǎn)數(shù)送給控制器,可以實(shí)現(xiàn)點(diǎn)數(shù)可配;在變換過程中使用兩塊存儲(chǔ)RAM,其中一塊用來(lái)存儲(chǔ)輸入數(shù)據(jù),這樣在每一次 FFT/IFFT運(yùn)算完成其第一級(jí)蝶形運(yùn)算時(shí),該RAM可以用來(lái)接受下次運(yùn)算的數(shù)據(jù),在實(shí)現(xiàn)連續(xù)多次FFT/IFFT運(yùn)算時(shí),節(jié)省了時(shí)間;另外使用了基-4和基-2相結(jié)合的方法實(shí)現(xiàn)任意2 的L次冪(L為大于或等于3的正整數(shù))點(diǎn)數(shù)的FFT和IFFT運(yùn)算,在蝶形運(yùn)算時(shí),使用塊浮點(diǎn)運(yùn)算,即對(duì)蝶形運(yùn)算的結(jié)果做溢出檢測(cè)判斷處理,解決了蝶形運(yùn)算過程中乘法和加法造成的數(shù)據(jù)位寬的擴(kuò)大,節(jié)省了存儲(chǔ)空間,同時(shí)對(duì)該結(jié)果做原址存儲(chǔ)操作,實(shí)現(xiàn)近似的蝶形運(yùn)算級(jí)間流水。


      圖1是本發(fā)明的全部模塊以及連接框圖;圖2是本發(fā)明中蝶形運(yùn)算模塊的電路框圖;圖3是本發(fā)明中塊浮點(diǎn)機(jī)制的比特?cái)?shù)變化圖;圖4是本發(fā)明中塊浮點(diǎn)操作流程圖。
      具體實(shí)施例方式如圖1所示,點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置包括模塊輸入數(shù)據(jù)變換模塊、 存儲(chǔ)模塊A、數(shù)據(jù)選擇器、蝶形運(yùn)算模塊、溢出檢測(cè)模塊、存儲(chǔ)模塊B、移位模塊、輸出數(shù)據(jù)變換模塊以及控制模塊,輸入數(shù)據(jù)變換模塊與存儲(chǔ)模塊A、數(shù)據(jù)選擇器、蝶形運(yùn)算模塊、溢出檢測(cè)模塊、存儲(chǔ)模塊B、移位模塊依次連接,存儲(chǔ)模塊B與輸出數(shù)據(jù)變換模塊相連,移位模塊與數(shù)據(jù)選擇器相連;在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或IFFT,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后存儲(chǔ)到存儲(chǔ)模塊A,然后控制模塊控制存儲(chǔ)模塊A中所有數(shù)據(jù)完成第一級(jí)蝶形運(yùn)算,蝶形運(yùn)算結(jié)果經(jīng)過溢出檢測(cè)模塊完成溢出檢測(cè),同時(shí)將蝶形運(yùn)算結(jié)果存入存儲(chǔ)模塊B ;當(dāng)存儲(chǔ)模塊A中所有數(shù)據(jù)均完成了第一級(jí)蝶形運(yùn)算后,控制模塊向外給出存儲(chǔ)模塊A 空閑可用的標(biāo)志信號(hào),預(yù)示著下一次運(yùn)算數(shù)據(jù)可以輸入,同時(shí)控制模塊控制移位模塊、存儲(chǔ)模塊B、蝶形運(yùn)算模塊以及溢出檢測(cè)模塊完成接下來(lái)的所有蝶形運(yùn)算;當(dāng)所有蝶形運(yùn)算全部完成之后,控制模塊控制存儲(chǔ)模塊B、輸出數(shù)據(jù)變換模塊,根據(jù)本次運(yùn)算為FFT或IFFT, 將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出、進(jìn)行實(shí)部虛部變換,然后經(jīng)過移位得到最終的塊浮點(diǎn)運(yùn)算結(jié)果,當(dāng)存儲(chǔ)模塊B中數(shù)據(jù)全部輸出后,輸出數(shù)據(jù)變換模塊向控制模塊給出存儲(chǔ)模塊B空閑可用標(biāo)志信號(hào),新一次FFT/IFFT運(yùn)算開始進(jìn)行。如圖2所示,蝶形運(yùn)算模塊包括相連接的旋轉(zhuǎn)因子存儲(chǔ)模塊、乘法器模塊和加法器模塊。點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法包括如下步驟1)根據(jù)本次運(yùn)算為FFT或者IFFT,在控制模塊的控制下,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換按照分塊倒序方式存入存儲(chǔ)模塊A ;2)串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換并全部寫入存儲(chǔ)模塊A后,控制模塊控制存儲(chǔ)模塊A、蝶形運(yùn)算模塊、和溢出檢測(cè)模塊,從存儲(chǔ)模塊A中讀取四個(gè)數(shù)據(jù)完成一次基-4蝶形運(yùn)算;對(duì)蝶形運(yùn)算結(jié)果數(shù)據(jù)做溢出檢測(cè)后,按原址存儲(chǔ)到存儲(chǔ)模塊B中,當(dāng)存儲(chǔ)模塊A中的所有數(shù)據(jù)均完成第一級(jí)蝶形運(yùn)算,控制模塊向外給出信號(hào),下一次FFT或者IFFT運(yùn)算的數(shù)據(jù)流進(jìn)入存儲(chǔ)模塊A ;3)將FFT或者IFFT運(yùn)算的點(diǎn)數(shù)記為N,且N = 2L,L為大于或等于3的正整數(shù)若 L為偶數(shù),則蝶形運(yùn)算級(jí)數(shù)為L(zhǎng)/2 ;若L為奇數(shù),則蝶形運(yùn)算級(jí)數(shù)為(L+1) /2,在控制模塊的控制下,L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第(L-I) /2級(jí)的每一次蝶形運(yùn)算均從存儲(chǔ)模塊B中讀取四個(gè)數(shù)據(jù),經(jīng)過移位模塊移位之后完成一次基-4 蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B ;當(dāng)L為奇數(shù)時(shí),第(L+l)/2級(jí)蝶形運(yùn)算按照每次從存儲(chǔ)模塊B中讀取兩個(gè)數(shù)據(jù),在控制模塊下進(jìn)行基-2蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B中;4)所有蝶形運(yùn)算完成之后,在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或者IFFT,將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出,經(jīng)過移位和實(shí)部虛部變換后得到輸入數(shù)據(jù)的FFT或者IFFT 塊浮點(diǎn)運(yùn)算結(jié)果,將該結(jié)果與最后輸出的塊浮點(diǎn)指數(shù)組合即為實(shí)際FFT或者IFFT結(jié)果。所述的根據(jù)本次運(yùn)算為FFT或者IFFT,在控制模塊的控制下,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后按照分塊倒序方式存入存儲(chǔ)模塊A的步驟包括1) FFT/IFFT變換的輸入數(shù)據(jù)為復(fù)數(shù),點(diǎn)數(shù)為N,N = 2L, L為大于或等于3的正整數(shù),若輸入數(shù)據(jù)要求進(jìn)行FFT運(yùn)算,則輸入復(fù)數(shù)數(shù)據(jù)不需做處理;若輸入數(shù)據(jù)要求進(jìn)行IFFT 運(yùn)算,則輸入復(fù)數(shù)數(shù)據(jù)實(shí)部不變,虛部取反;在實(shí)施例中,我們根據(jù)實(shí)際應(yīng)用的需求,L的取值范圍設(shè)定為5 14,即點(diǎn)數(shù) N的范圍為32 16384之間為2的正整數(shù)次冪的數(shù),輸入的N點(diǎn)復(fù)數(shù)數(shù)據(jù)為x(n)= I(n)+jQ(n)n = 0,1,2,-,N-I (1)式⑴中的I (η)為輸入數(shù)據(jù)的實(shí)部,Q(η)為輸入數(shù)據(jù)的虛部,N點(diǎn)輸入數(shù)據(jù)的FFT和IFFT運(yùn)算的表達(dá)式分別為Χρρτ{^ = ^χ{η)β 1N =YJ[l{n) + jQ{n)\ cos-7sin ^ Λ
      權(quán)利要求
      1.一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置,其特征在于,包括模塊輸入數(shù)據(jù)變換模塊、存儲(chǔ)模塊A、數(shù)據(jù)選擇器、蝶形運(yùn)算模塊、溢出檢測(cè)模塊、存儲(chǔ)模塊B、移位模塊、輸出數(shù)據(jù)變換模塊以及控制模塊,輸入數(shù)據(jù)變換模塊與存儲(chǔ)模塊A、數(shù)據(jù)選擇器、蝶形運(yùn)算模塊、 溢出檢測(cè)模塊、存儲(chǔ)模塊B、移位模塊依次連接,存儲(chǔ)模塊B與輸出數(shù)據(jù)變換模塊相連,移位模塊與數(shù)據(jù)選擇器相連;在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或IFFT,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后存儲(chǔ)到存儲(chǔ)模塊A,然后控制模塊控制存儲(chǔ)模塊A中所有數(shù)據(jù)完成第一級(jí)蝶形運(yùn)算,蝶形運(yùn)算結(jié)果經(jīng)過溢出檢測(cè)模塊完成溢出檢測(cè),同時(shí)將蝶形運(yùn)算結(jié)果存入存儲(chǔ)模塊B ;當(dāng)存儲(chǔ)模塊A中所有數(shù)據(jù)均完成了第一級(jí)蝶形運(yùn)算后,控制模塊向外給出存儲(chǔ)模塊A空閑可用的標(biāo)志信號(hào),預(yù)示著下一次運(yùn)算數(shù)據(jù)可以輸入,同時(shí)控制模塊控制移位模塊、存儲(chǔ)模塊B、蝶形運(yùn)算模塊以及溢出檢測(cè)模塊完成接下來(lái)的所有蝶形運(yùn)算;當(dāng)所有蝶形運(yùn)算全部完成之后,控制模塊控制存儲(chǔ)模塊B、輸出數(shù)據(jù)變換模塊,根據(jù)本次運(yùn)算為FFT或 IFFT,將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出進(jìn)行實(shí)部虛部變換,然后經(jīng)過移位得到最終的塊浮點(diǎn)運(yùn)算結(jié)果,當(dāng)存儲(chǔ)模塊B中數(shù)據(jù)全部輸出后,輸出數(shù)據(jù)變換模塊向控制模塊給出存儲(chǔ)模塊B空閑可用標(biāo)志信號(hào),新一次FFT/IFFT運(yùn)算開始進(jìn)行。
      2.根據(jù)權(quán)利要求1所述的一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置,其特征在于,所述的蝶形運(yùn)算模塊包括相連接的旋轉(zhuǎn)因子存儲(chǔ)模塊、乘法器模塊和加法器模塊。
      3.一種使用如權(quán)利要求1所述裝置的點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法,其特征在于包括如下步驟1)根據(jù)本次運(yùn)算為FFT或者IFFT,在控制模塊的控制下,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后按照分塊倒序方式存入存儲(chǔ)模塊A ;2)串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換并全部寫入存儲(chǔ)模塊A后,控制模塊控制存儲(chǔ)模塊 A、蝶形運(yùn)算模塊、和溢出檢測(cè)模塊,從存儲(chǔ)模塊A中讀取四個(gè)數(shù)據(jù)完成一次基-4蝶形運(yùn)算; 對(duì)蝶形運(yùn)算結(jié)果數(shù)據(jù)做溢出檢測(cè)后,按原址存儲(chǔ)到存儲(chǔ)模塊B中,當(dāng)存儲(chǔ)模塊A中的所有數(shù)據(jù)均完成第一級(jí)蝶形運(yùn)算,控制模塊向外給出信號(hào),下一次FFT或者IFFT運(yùn)算的數(shù)據(jù)流進(jìn)入存儲(chǔ)模塊A ;3)將FFT或者IFFT運(yùn)算的點(diǎn)數(shù)記為N,且N= 2L,L為大于或等于3的正整數(shù)若L為偶數(shù),則蝶形運(yùn)算級(jí)數(shù)為L(zhǎng)/2 ;若L為奇數(shù),則蝶形運(yùn)算級(jí)數(shù)為(L+1)/2,在控制模塊的控制下,L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第(L-I)/2級(jí)的每一次蝶形運(yùn)算均從存儲(chǔ)模塊B中讀取四個(gè)數(shù)據(jù),經(jīng)過移位模塊移位之后完成一次基-4蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B ;當(dāng)L為奇數(shù)時(shí),第(L+l)/2級(jí)蝶形運(yùn)算按照每次從存儲(chǔ)模塊B中讀取兩個(gè)數(shù)據(jù),在控制模塊下進(jìn)行基-2蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B中;4)所有蝶形運(yùn)算完成之后,在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或者IFFT,將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出,經(jīng)過移位和實(shí)部虛部變換后得到輸入數(shù)據(jù)的FFT或者IFFT塊浮點(diǎn)運(yùn)算結(jié)果,將該結(jié)果與最后輸出的塊浮點(diǎn)指數(shù)組合即為實(shí)際FFT或者IFFT結(jié)果。
      4.根據(jù)權(quán)利要求3所述的一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法,其特征在于,所述的根據(jù)本次運(yùn)算為FFT或者IFFT,在控制模塊的控制下,將串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換后按照分塊倒序方式存入存儲(chǔ)模塊A的步驟包括1) FFT/IFFT變換的輸入數(shù)據(jù)為復(fù)數(shù),點(diǎn)數(shù)為N,N = 2L, L為大于或等于3的正整數(shù),若輸入數(shù)據(jù)要求進(jìn)行FFT運(yùn)算,則輸入復(fù)數(shù)數(shù)據(jù)不需做處理;若輸入數(shù)據(jù)要求進(jìn)行IFFT運(yùn)算, 則輸入復(fù)數(shù)數(shù)據(jù)實(shí)部不變,虛部取反;2)存儲(chǔ)模塊A包括四個(gè)大小相同的子存儲(chǔ)模塊,分別為A1、A2、A3、A4,每個(gè)子存儲(chǔ)模塊的大小為2XbXN/4比特,b為輸入復(fù)數(shù)的實(shí)部或者虛部的位寬比特?cái)?shù),串行輸入的N點(diǎn)處理后數(shù)據(jù)為 x(n),其中 η = 0,1,2,……,N-Ijfx(O) χ (Ν/4-1)、χ (Ν/4) ~χ(2Ν/4-1), χ (2Ν/4) χ(3Ν/4-1)和 χ(3Ν/4) χ(Ν_1)分別按照倒序存入 Al、Α2、A3、Α4 中;3)當(dāng)輸入數(shù)據(jù)點(diǎn)數(shù)達(dá)到N時(shí),控制模塊給出FFT/IFFT運(yùn)算啟動(dòng)信號(hào)。
      5.根據(jù)權(quán)利要求3所述的一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法,其特征在于,所述的串行輸入數(shù)據(jù)經(jīng)過實(shí)部虛部變換并全部寫入存儲(chǔ)模塊A后,控制模塊控制存儲(chǔ)模塊Α、 蝶形運(yùn)算模塊和溢出檢測(cè)模塊,從存儲(chǔ)模塊A中讀取四個(gè)數(shù)據(jù)完成一次基-4蝶形運(yùn)算;對(duì)蝶形運(yùn)算結(jié)果數(shù)據(jù)做溢出檢測(cè)后,按原址存儲(chǔ)到存儲(chǔ)模塊B中,當(dāng)存儲(chǔ)模塊A中的所有數(shù)據(jù)均完成第一級(jí)蝶形運(yùn)算,控制模塊向外給出信號(hào),下一次FFT或者IFFT運(yùn)算的數(shù)據(jù)流可以進(jìn)入存儲(chǔ)模塊A的步驟包括1)從子存儲(chǔ)模塊Α1、Α2、Α3、Α4中分別讀出一個(gè)數(shù)據(jù),經(jīng)過三次復(fù)數(shù)乘法和八次復(fù)數(shù)加法,完成一次基-4蝶形運(yùn)算;2)對(duì)每次蝶形運(yùn)算的結(jié)果做溢出檢測(cè),記下該運(yùn)算結(jié)果中最大值的溢出比特?cái)?shù);3)存儲(chǔ)模塊B也由四個(gè)子存儲(chǔ)模塊組成,分別為子存儲(chǔ)模塊Bi、Β2、Β3、Β4,每次蝶形運(yùn)算結(jié)束將四個(gè)數(shù)據(jù)寫入子存儲(chǔ)模塊Bi、Β2、Β3、Β4,寫地址等于子存儲(chǔ)模塊Al、Α2、A3、Α4 的讀地址;4)重復(fù)上述三個(gè)步驟,直至存儲(chǔ)模塊A中所有數(shù)據(jù)完成蝶形運(yùn)算,此時(shí)最大的溢出比特?cái)?shù)即為該級(jí)蝶形運(yùn)算結(jié)果最終的溢出比特?cái)?shù);5)當(dāng)存儲(chǔ)模塊A中所有數(shù)據(jù)完成第一級(jí)蝶形運(yùn)算后,控制模塊向外給出標(biāo)志信號(hào),表明下一次FFT/IFFT的數(shù)據(jù)流串行進(jìn)入存儲(chǔ)模塊A等待。
      6.根據(jù)權(quán)利要求3所述的一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法,其特征在于,所述的將FFT或者IFFT運(yùn)算的點(diǎn)數(shù)記為N,且N = 2S L為大于或等于3的正整數(shù)若L為偶數(shù),則蝶形運(yùn)算級(jí)數(shù)為L(zhǎng)/2;若L為奇數(shù),則蝶形運(yùn)算級(jí)數(shù)為(L+l)/2。在控制模塊的控制下,L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第(L-I)/2級(jí)的每一次蝶形運(yùn)算均從存儲(chǔ)模塊B中讀取四個(gè)數(shù)據(jù),經(jīng)過移位模塊移位之后完成一次基-4蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B ;當(dāng)L為奇數(shù)時(shí),第(L+l)/2級(jí)蝶形運(yùn)算按照每次從存儲(chǔ)模塊B中讀取兩個(gè)數(shù)據(jù),在控制模塊下進(jìn)行基-2蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)后按原址存入存儲(chǔ)模塊B中的步驟包括1)L為偶數(shù)情況下的第二級(jí)到第L/2級(jí)或者L為奇數(shù)情況下的第二級(jí)到第(L-I)/2級(jí)蝶形運(yùn)算,在控制模塊的控制下,每次分別從子存儲(chǔ)模塊B1、B2、B3、B4中各讀取一個(gè)數(shù)據(jù), 移位模塊按照前一級(jí)蝶形運(yùn)算后溢出檢測(cè)結(jié)果進(jìn)行移位,移位結(jié)果完成一次基-4蝶形運(yùn)算,結(jié)果經(jīng)過溢出檢測(cè)同時(shí)按照原址寫入子存儲(chǔ)模塊Bi、B2、B3、B4 ;2)當(dāng)L為奇數(shù)時(shí),第(L+1)/2級(jí)蝶形運(yùn)算為基-2蝶形運(yùn)算,在控制模塊的控制下,首先從子存儲(chǔ)模塊Bl和B3中分別讀出一個(gè)數(shù)據(jù),移位之后完成一次基-2蝶形運(yùn)算,結(jié)果經(jīng)溢出檢測(cè)后按原址存入子存儲(chǔ)模塊Bl和B3,如此循環(huán)直至子存儲(chǔ)模塊Bi、B3中所有數(shù)據(jù)均完成蝶形運(yùn)算;之后,將子存儲(chǔ)模塊B2和B4組合,完成與子存儲(chǔ)模塊Bl和B3相同的操作;3)此時(shí),我們就順利完成了 N點(diǎn)數(shù)據(jù)FFT/IFFT運(yùn)算的所有蝶形運(yùn)算,結(jié)果存儲(chǔ)在子存儲(chǔ)模塊B1、B2、B3、B4中。
      7.根據(jù)權(quán)利要求3所述的一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法,其特征在于,所述的所有蝶形運(yùn)算完成之后,在控制模塊控制下,根據(jù)本次運(yùn)算為FFT或者IFFT,將存儲(chǔ)模塊B中的數(shù)據(jù)串行讀出,經(jīng)過移位和實(shí)部虛部變換后得到輸入數(shù)據(jù)的FFT或者IFFT塊浮點(diǎn)運(yùn)算結(jié)果,將該結(jié)果與最后輸出的塊浮點(diǎn)指數(shù)組合即為實(shí)際FFT或者IFFT結(jié)果的步驟包括1)在控制模塊控制下,將數(shù)據(jù)從子存儲(chǔ)模塊Bi、B2、B3、B4中按照一定的順序串行輸出,并根據(jù)本次運(yùn)算為FFT或者IFFT作如下處理若為FFT,則實(shí)部和虛部均不變;若為 IFFT,則實(shí)部不變,虛部取反;2)完成實(shí)部和虛部轉(zhuǎn)換后,按照最后一級(jí)蝶形運(yùn)算的溢出檢測(cè)結(jié)果,將串行輸出數(shù)據(jù)做相應(yīng)移位后即可輸出,輸出的結(jié)果即為輸入N點(diǎn)復(fù)數(shù)數(shù)據(jù)的FFT/IFFT塊浮點(diǎn)運(yùn)算結(jié)果, 當(dāng)N點(diǎn)數(shù)據(jù)全部輸出后,向控制模塊給出標(biāo)志信號(hào),表明存儲(chǔ)模塊B可用,可以進(jìn)行新一次的FFT/IFFT運(yùn)算;3)實(shí)際的FFT/IFFT結(jié)果為X(k)=X' (k)*2_卿,k = 0,1,…,N_l,N為輸入數(shù)據(jù)點(diǎn)數(shù),其中X(k)為實(shí)際FFT/IFFT結(jié)果,X' (k)為FFT/IFFT塊浮點(diǎn)運(yùn)算結(jié)果,exp為塊浮點(diǎn)指數(shù)。
      8.根據(jù)權(quán)利要求7所述的一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)方法,其特征在于,所述的實(shí)際的FFT/IFFT結(jié)果為X(k) =V (k)*2_exp,k = 0,1,…,N_1,N為輸入數(shù)據(jù)點(diǎn)數(shù), 其中X(k)為實(shí)際FFT/IFFT結(jié)果,X' (k)為FFT/IFFT塊浮點(diǎn)運(yùn)算結(jié)果,exp為塊浮點(diǎn)指數(shù)的步驟包括1)當(dāng)運(yùn)算類型為FFT時(shí),exp初值為0,當(dāng)運(yùn)算類型為IFFT時(shí),exp初值為10&N;2)每一級(jí)蝶形運(yùn)算之后,exp等于在該級(jí)蝶形運(yùn)算開始之前的值減去本級(jí)蝶形運(yùn)算的溢出比特?cái)?shù),當(dāng)所有蝶形運(yùn)算完成之后,所得到的exp即為最終的塊浮點(diǎn)指數(shù);3)通過最后的塊浮點(diǎn)結(jié)果X'(k)和塊浮點(diǎn)指數(shù)exp即可得到實(shí)際的FFT/IFFT結(jié)果 X(k),X(k)=X' (k)*2_卿,k = 0,1,…,N-l,N 為輸入數(shù)據(jù)點(diǎn)數(shù)。
      全文摘要
      本發(fā)明公開了一種點(diǎn)數(shù)可變的混合基FFT/IFFT實(shí)現(xiàn)裝置及其方法。本發(fā)明為FFT和IFFT兩用系統(tǒng),實(shí)現(xiàn)了點(diǎn)數(shù)可配;在變換過程中使用兩塊RAM,一塊只存儲(chǔ)輸入數(shù)據(jù),在每一次運(yùn)算完成其第一級(jí)蝶形運(yùn)算時(shí),該RAM可以用來(lái)接受下次運(yùn)算的數(shù)據(jù),在完成連續(xù)多次運(yùn)算時(shí),節(jié)省了時(shí)間;另外使用了基4和基2相結(jié)合的方法實(shí)現(xiàn)2的L次冪(L為大于或等于3的正整數(shù))點(diǎn)數(shù)的FFT和IFFT運(yùn)算,在蝶形運(yùn)算時(shí),使用塊浮點(diǎn)運(yùn)算,解決了蝶形運(yùn)算過程中乘法和加法造成的數(shù)據(jù)位寬擴(kuò)大,節(jié)省了存儲(chǔ)空間,同時(shí)對(duì)該結(jié)果做原址存儲(chǔ)操作,實(shí)現(xiàn)近似的級(jí)間流水。該方法和裝置具有控制簡(jiǎn)單,實(shí)現(xiàn)高效,配置靈活,可擴(kuò)展性良好等特點(diǎn)。
      文檔編號(hào)G06F17/14GK102298570SQ20111026921
      公開日2011年12月28日 申請(qǐng)日期2011年9月13日 優(yōu)先權(quán)日2011年9月13日
      發(fā)明者侯維瑋, 李云飛, 李立言, 王勇松, 王悅, 趙民建 申請(qǐng)人:浙江大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1