專利名稱:多粒度并行fft計算裝置的制作方法
技術領域:
本發(fā)明涉及集成電路設計領域中的快速傅立葉變換(FFT)數(shù)據(jù)的并行存儲、并行讀寫及并行計算。
背景技術:
信號處理系統(tǒng)經(jīng)常需要將信號內(nèi)容在時域和頻域進行轉(zhuǎn)換,快速傅立葉變換算法 (FFT)可進行時域和頻域間的信號轉(zhuǎn)換。相對于其它轉(zhuǎn)換算法來說,快速傅立葉變換算法具有結構統(tǒng)一、計算量少的優(yōu)點,因此廣泛應用于信號處理系統(tǒng)中。FFT算法輸入N個數(shù)據(jù),輸出N個數(shù)據(jù);一般稱時域至頻域的變換為正向變換,而頻域至時域的變換變逆向變換。FFT算法有多種實現(xiàn)方式,但都由庫利-圖基算法演變而來。對于N個數(shù)據(jù)點,基2的庫利-圖基算法包括Iog2N個計算級。每個計算級輸入N個數(shù),輸出N個數(shù);前一計算級的輸出經(jīng)過一定的排序后作為后一計算級的輸入。第一級輸入為原始數(shù)據(jù),最后一級輸出為FFT計算結果,如圖1所示。圖1中假定數(shù)據(jù)點長度為8,整個計算過程需要計算三個計算級103 :S0、S1、S2。每個計算級103由N/2個蝶形(102)組成,蝶形計算的計算結構如圖2所示。每個蝶形計算輸入兩個數(shù)據(jù)點A和B,以及一個旋轉(zhuǎn)因子W,得到兩個計算結果A+BW和A-BW。 在每個蝶形計算中,輸入數(shù)據(jù)A和B的序號具有確定的對應關系,該對應關系由蝶形所在的計算級以及輸入數(shù)據(jù)A或B的序號來確定;同時,旋轉(zhuǎn)因子W的值由當前蝶形所在的計算級 103、輸入數(shù)據(jù)A或B的序號以及FFT的數(shù)據(jù)長度確定。例如在圖1中,SO計算級中的第1 個數(shù)據(jù)必定與第0個數(shù)據(jù)構成一蝶形,并且第0個數(shù)據(jù)為蝶形輸入的A,第1個數(shù)據(jù)為蝶形輸入的B,而W的值為1。而Sl計算級中的第1個數(shù)據(jù)必定與第3個數(shù)據(jù)構成一蝶形,并且第1個數(shù)據(jù)為蝶形輸入的A,第3個數(shù)據(jù)為蝶形輸入的B,而W的值為1。蝶形計算的計算級之間存在數(shù)據(jù)相關,后一計算級必須等待前一計算級完成以后才能開始計算。因此,每級計算完成后都需要將結果存放在存儲器中,下一級計算從存儲器中讀取上一級的計算結果作為本計算級計算的輸入。計算級內(nèi)的蝶形相互獨立,蝶形的計算順序不影響計算結果,但每個蝶形所讀取的數(shù)據(jù)A、B和旋轉(zhuǎn)因子W必須滿足內(nèi)在的對應關系。在并行FFT計算中,運算部件從多粒度并行存儲器中讀取多個蝶形所需數(shù)據(jù)及對應的旋轉(zhuǎn)因子,并行計算多個、多級蝶形,然后將計算結果并行寫入存儲器,以便進行一下級計算,如圖3所示。圖3中,假定數(shù)據(jù)長度為64,并行粒度為4,即多粒度并行存儲器300 —次可讀寫 4個數(shù)據(jù)。此時,兩相鄰計算級中存在數(shù)據(jù)相關的4個蝶形303構成一個蝶形組302,兩相鄰計算級中的蝶形組構成一計算節(jié)301。在蝶形組302中,每個蝶形的輸入A、B、W仍必須滿足其內(nèi)在的對應關系,因此,并行FFT算法中必須考慮計算數(shù)據(jù)和旋轉(zhuǎn)因子在存儲器中的分布,以及每個蝶形組302的讀寫地址和讀寫方式,以保證蝶形計算裝置每次都能并行讀取所需數(shù)據(jù)和旋轉(zhuǎn)因子。
4
大部分并行FFT算法相關的專利都著重討論如何將長序列的FFT數(shù)據(jù)分解成多個短序列的FFT,利用多個處理器并行計算各個短序列的FFT,最后對多個短序列的FFT進行交織計算,得到最終的長序列FFT結果。如美國專利 US 6,792,441 B2 (Parallel Multiprocessing For Fast Fourier Transform With Pipeline Architecture)。這一類算法都沒考慮多個處理單元同時訪問存儲器時的沖突問題,以及多個處理器如何交織多個短序列FFT結果。而實際應用中,存儲器訪問沖突以及處理器之間的同步和通信效率將嚴重影響FFT的計算效率。美國專利US 6,304,887 Bl (FFT-Based Parallel System For Array Processing With Low Latency)討論了 FFT算法中數(shù)據(jù)并行讀寫的問題,該專利將FFT數(shù)據(jù)存放在多個存儲器中,利用多個數(shù)據(jù)緩沖區(qū)、多個選擇器對數(shù)據(jù)進行排序,以保證每次讀寫的數(shù)據(jù)分布在不同的存儲器中,實現(xiàn)并行讀寫。但該專利需要專用的存儲器、數(shù)據(jù)緩沖區(qū)和選擇器,讀寫地址計算復雜,難以實現(xiàn)不同數(shù)據(jù)長度、不同讀寫粒度的并行FFT算法。
發(fā)明內(nèi)容
(一)要解決的技術問題本發(fā)明要解決的技術問題實現(xiàn)對不同數(shù)據(jù)算度、不同讀寫粒度的FFT計算的支持,并提高FFT計算裝置的計算效率,。(二)技術方案本發(fā)明提出的一種多粒度并行FFT計算裝置包括第一存儲器、第二存儲器、第三存儲器、蝶形計算裝置、狀態(tài)控制單元、數(shù)據(jù)反序網(wǎng)絡和第一選擇器,所述第一存儲器、第二存儲器用于存儲蝶形組數(shù)據(jù),所述第三存儲器用于存儲與蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子;所述蝶形計算裝置的輸入端分別與第三存儲器和第一選擇器的輸出端相連接,根據(jù)從第一選擇器輸出的蝶形組數(shù)據(jù)和從第三存儲器輸出的與該蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子,完成一個蝶形組的計算,并將計算結果寫回第一存儲器或第二存儲器;所述狀態(tài)控制單元用于根據(jù)當前計算節(jié)和計算級,生成第一、第二和第三存儲器的讀寫地址和讀寫控制信號;所述數(shù)據(jù)反序網(wǎng)絡用于蝶形組組內(nèi)數(shù)據(jù)的反序排列;第一選擇器的兩個輸入端分別接收原始輸入數(shù)據(jù)和經(jīng)數(shù)據(jù)反序網(wǎng)絡位反序排列后的數(shù)據(jù);如果當前處于計算節(jié)0,第一選擇器選擇位反序排列后的數(shù)據(jù),否則選擇原始數(shù)據(jù)。所述第一、第二和第三存儲器為多粒度并行存儲器,均連接于所述狀態(tài)控制單元并接受狀態(tài)控制單元的讀寫控制。所述狀態(tài)控制單元用于根據(jù)當前計算節(jié)和計算級,生成第一、第二和第三存儲器的讀寫地址和讀寫控制信號。所述狀態(tài)控制單元包括第一計算器、第二計算器和第三計算器,分別用于計算當前計算節(jié)號S、當前邏輯Bank號i和當前存儲行號j。所述狀態(tài)控制單元還包括第一地址產(chǎn)生單元、第二地址產(chǎn)生單元和第三地址產(chǎn)生單元,分別用于產(chǎn)生旋轉(zhuǎn)因子讀取地址、數(shù)據(jù)寫地址和數(shù)據(jù)讀地址。所述第一地址產(chǎn)生單元根據(jù)第一、第二、第三計算器分別計算得到的當前計算節(jié)號S、當前邏輯Bank號i和當前存儲行號j產(chǎn)生旋轉(zhuǎn)因子讀取地址,并將該地址輸出到第三存儲器。
所述第二地址產(chǎn)生單元根據(jù)第二、第三計算器分別計算得到的當前邏輯Bank號i 和當前存儲行號j產(chǎn)生數(shù)據(jù)寫地址,并輸出到地址分發(fā)器。
所述狀態(tài)控制單元還包括第二選擇器和地址分發(fā)器;所述第三地址產(chǎn)生單元根據(jù)第二、第三計算器分別計算得到的當前邏輯Bank號i 和當前存儲行號j產(chǎn)生數(shù)據(jù)讀地址,并輸出到地址反序邏輯和第二選擇器;所述第二選擇器的輸入端分別接收原始讀地址和經(jīng)過位反序后的讀地址,并根據(jù)當前計算節(jié)號s進行選擇,以輸出到地址分發(fā)器。如果當前處理計算節(jié)號為0,則該第二選擇器選擇位反序后的讀地址,否則該第二選擇器選擇原始讀地址。所述地址分發(fā)器根據(jù)當前計算節(jié)號s的值確定讀地址輸出到第一存儲器還是第二存儲器,以及確定寫地址輸出到第一存儲器還是第二存儲器。(三)有益效果本發(fā)明提出的多粒度并行FFT計算裝置可實現(xiàn)自然序列數(shù)據(jù)輸入,自然序列數(shù)據(jù)輸出,并且實現(xiàn)了一次讀寫、多級計算,最大程度上減少存儲器訪問次數(shù),以減少芯片功耗; 本發(fā)明還可根據(jù)需要具體指定并行粒度;本發(fā)明利用特定的讀寫粒度,可從多粒度并行存儲器中并行讀取蝶形組數(shù)據(jù)和對應的旋轉(zhuǎn)因子,讀取過程中不會產(chǎn)生存儲器沖突,也不需要額外的步驟再對讀寫數(shù)據(jù)進行排序;同時,可以在讀取的同時實現(xiàn)位反序操作,因此,原始數(shù)據(jù)可以以自然序存放在存儲器中。
圖1是數(shù)據(jù)長度為8時,按時間抽取的基2的FFT算法流程圖;圖2是基本蝶形結構的示意圖;圖3是蝶形計算中的蝶形、蝶形組、計算級、計算節(jié)的示意圖;圖4是本發(fā)明的多粒度并行FFT計算裝置的一個具體實施例的結構示意圖;圖5是本發(fā)明的多粒度并行存儲器的邏輯結構示意圖;圖6是本發(fā)明的的多粒度并行存儲器在不同讀寫粒度下,存儲器的編址方式和邏輯Bank劃分的示意圖;圖7是本發(fā)明的多料度并行FFT蝶形計算裝置的結構示意圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,以下結合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。在本說明書中,為描述方便,我們首先介紹本發(fā)明的多粒度并行FFT計算裝置的整體結構,然后對其中包括的各個部件分別進行描述。多粒度并行FFT計算裝置圖4是本發(fā)明的多粒度并行FFT計算裝置的一個具體實施例的結構示意圖,其中包括三個多粒度并行存儲器、蝶形計算裝置404、狀態(tài)控制單元405、數(shù)據(jù)反序網(wǎng)絡406和第一選擇器407。在此,三個多粒度并行存儲器分別稱為第一存儲器401、第二存儲器402、第三存儲器403。
其中,第一、第二存儲器401、402用于存儲蝶形組數(shù)據(jù),第三存儲器403用于存儲與蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子。所述第一、第二和第三存儲器401-403均連接于所述狀態(tài)控制單元405并接受狀態(tài)控制單元405的讀寫控制。數(shù)據(jù)反序網(wǎng)絡406可實現(xiàn)自然序列的位反序排列。數(shù)據(jù)反序網(wǎng)絡406用于蝶形組組內(nèi)數(shù)據(jù)的反序排列。當多粒度并行FFT計算裝置的并行粒度為2n時,數(shù)據(jù)反序網(wǎng)絡406 的讀數(shù)據(jù)線420上的輸入數(shù)據(jù)的個數(shù)為2n,輸出端上的輸出數(shù)據(jù)的個數(shù)也為2n。如果定義輸入數(shù)據(jù)向量為X,從左至右的索引值為i (0 < i < n),X[i]表示第i個輸入數(shù)據(jù);輸出數(shù)據(jù)向量為Y,從左至右的索引值為j (0 ^ j < η), Y[j]表示第j個輸出數(shù)據(jù);br (i)表示對 i進行鏡像位反序,則數(shù)據(jù)反序網(wǎng)絡406中X與Y的對應關系為Y[i] = X[br(i)]第一選擇器407的兩個輸入端分別為原始數(shù)據(jù)和經(jīng)數(shù)據(jù)反序網(wǎng)絡406位反序排列后的數(shù)據(jù)。如果當前處于計算節(jié)0,第一選擇器407選擇位反序排列后的數(shù)據(jù),否則選擇原始數(shù)據(jù)。所述蝶形計算裝置404為多粒度并行FFT蝶形計算裝置,其輸入端分別與第三存儲器403和第一選擇器407的輸出端相連接,根據(jù)從第一選擇器407輸出的蝶形組數(shù)據(jù)422 和從第三存儲器403輸出的與該蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子423,完成一個蝶形組的計算, 并將計算結果寫回第一存儲器401或第二存儲器402。具體來說,如果計算時從第一存儲器 401中讀取數(shù)據(jù),那么計算結果寫回第二存儲器402 ;如果計算時從第二存儲器402中讀取數(shù)據(jù),那么計算將結果寫回第一存儲器401。所述狀態(tài)控制單元405用于根據(jù)當前計算節(jié)和計算級,生成第一、第二和第三存儲器401-403的讀寫地址和讀寫控制信號。具體來說,該狀態(tài)控制器的輸出包括第一存儲器401的讀寫地址、第二存儲器402的讀寫地址425、第三存儲器403的讀寫地址429、第一存儲器401的讀寫粒度、第二存儲器402的讀寫粒度424以及第三存儲器403的讀寫粒度 428。所述狀態(tài)控制單元405包括三個計算器408-410,分別用于計算當前計算節(jié)號S、 當前邏輯Bank號i和當前存儲行號j。在此,將該三個計算器分別稱為第一計算器408、第二計算器409和第三計算器410。所述狀態(tài)控制單元405還包括三個地址產(chǎn)生單元、地址反序邏輯414、第二選擇器 415和地址分發(fā)器416。三個地址產(chǎn)生單元分別用于產(chǎn)生旋轉(zhuǎn)因子讀取地址、數(shù)據(jù)寫地址和數(shù)據(jù)讀地址。在此,為方便描述,將其稱為第一地址產(chǎn)生單元411、第二地址產(chǎn)生單元412和第三地址產(chǎn)生單元413。所述第一地址產(chǎn)生單元411根據(jù)第一、第二、第三計算器408-410分別計算得到的當前計算節(jié)號s、當前邏輯Bank號i和當前存儲行號j產(chǎn)生旋轉(zhuǎn)因子讀取地址429,并將該地址輸出到第三存儲器403。所述第二地址產(chǎn)生單元412根據(jù)第二、第三計算器409、410分別計算得到的當前邏輯Bank號i和當前存儲行號j產(chǎn)生數(shù)據(jù)寫地址430,并輸出到地址分發(fā)器416 ;所述第三地址產(chǎn)生單元413根據(jù)第二、第三計算器409、410分別計算得到的當前邏輯Bank號i和當前存儲行號j產(chǎn)生數(shù)據(jù)讀地址430,并輸出到地址反序邏輯414和第二選擇器415。
所述地址反序邏輯414接收第三地址產(chǎn)生單元413的輸入,對輸入的讀地址的比特位進行鏡像反序。所述第二選擇器415的輸入端分別接收原始讀地址433和經(jīng)過位反序后的讀地址,并根據(jù)當前計算節(jié)號s進行選擇,以輸出到地址分發(fā)器416。具體來說,如果當前處理計算節(jié)號為0,該第二選擇器415選擇位反序后的讀地址,否則該第二選擇器415選擇原始讀地址433。第二選擇器415輸出讀地址431到地址分發(fā)器416。所述地址分發(fā)器416根據(jù)當前計算節(jié)號s的值確定讀地址431輸出到第一存儲器 401還是第二存儲器402,以及確定寫地址430輸出到第一存儲器401還是第二存儲器402。 假定原始自然序數(shù)據(jù)存放在第一存儲器401中,則在當前計算節(jié)號s為偶數(shù)時,地址分發(fā)器 416將讀地址431輸出到第二存儲器402,將寫地址430送入第一存儲器401 ;在當前計算節(jié)號s為奇數(shù)時,地址分發(fā)器416將讀地址431輸出到第一存儲器,將寫地址430輸出到第二存儲器402。多粒度并行存儲器如上所述,第一存儲器401、第二存儲器402、第三存儲器403均為多粒度并行存儲器,以下參照圖5和圖6具體描述本發(fā)明的多粒度并行存儲器。為便于說明,各個數(shù)據(jù)位寬以存儲單元為單位來度量,存儲單元定義為存儲器的編址單位,也是存儲器可讀寫的最小數(shù)據(jù)位寬。描述過程中出現(xiàn)包含“位寬為W”的語句都需要理解成W個存儲單元的比特位(bit)。如存儲單元為8bit的字節(jié)類型時,讀寫端口位寬為4的存儲器實際位寬為4X8 = 32bit。同時,所有對象從0開始,從左至右編號。另外,如前所述,“粒度”是指地址連續(xù)的存儲單元的個數(shù)。在以下的描述過程中,約定以下符號■ W 存儲器讀寫端口位寬,必須為2的冪次方(即W為2的η次方,η為自然數(shù));■ K :K = Iog2W, Κ+1表示存儲器支持的讀寫粒度種類;■ k 存儲器讀寫粒度參數(shù),為自然數(shù),且0彡k彡K,實際讀寫粒度為g = 2k ;■ g :g = 2k,存儲器讀寫粒度,1 ^ g^W ;■ N:—個存儲塊的大小。本發(fā)明示意圖中均假定W = 4,但本發(fā)明適用于W為2的冪次方的其它情況。如圖5所示,多粒度并行存儲器由W個存儲塊505和一個數(shù)據(jù)選通網(wǎng)絡502構成。 每個存儲塊505是由存儲單元503構成的二維陣列,該陣列中的存儲行504必須包含W個存儲單元503,每個存儲塊一次可讀寫一個存儲行504。數(shù)據(jù)選通網(wǎng)絡502在邏輯上根據(jù)讀寫地址和讀寫粒度從W個存儲塊505中選擇W 個存儲單元503作為讀寫對象。本發(fā)明的存儲器支持多種讀寫粒度,在不同的讀寫粒度下,每個存儲塊505的起始地址各不相同。我們以參數(shù)k來表征不同的讀寫粒度,實際的讀寫粒度g = 2k。圖6示出了 W = 4時,存儲器在不同讀寫粒度下每個存儲塊605的編址。對于讀寫粒度g,每g個相鄰的存儲塊605拼接成一個邏輯Bank 606,所有邏輯Bank 606的起始地址相同;邏輯Bank 606內(nèi)的存儲塊605起始地址前后相接,每個邏輯Bank 606的尋址范圍為0 gN-Ι,整個存儲器的尋址范圍為0 gN-1。
存儲器在進行讀操作時,將讀寫地址和讀寫粒度發(fā)送給每個邏輯Bank 606,每個邏輯Bank 606讀取g個存儲單元并通過數(shù)據(jù)選通網(wǎng)絡502傳遞給存儲器讀寫端口 501,W/ g個邏輯Bank 606所讀取的數(shù)據(jù)按從左到右的順序拼接成位寬為W的輸出數(shù)據(jù)。存儲器在進行寫操作時,將存儲器讀寫端口 501傳遞過來的數(shù)據(jù)拆分成g份,每份數(shù)據(jù)位寬為W/g,通過數(shù)據(jù)選通網(wǎng)絡502將第i份數(shù)據(jù)發(fā)送給第i個邏輯Bank 606(0 ( i <g),同時將讀寫地址和讀寫粒度發(fā)送給每個邏輯Bank 606。每個邏輯Bank 606寫入g 個存儲單元。蝶形計算裝置如前所述,本發(fā)明的多粒度并行FFT計算裝置中包括的蝶形計算裝置404為多粒度并行FFT蝶形計算裝置,以下參照圖7具體描述本發(fā)明的蝶形計算裝置。并行粒度2l(L為正整數(shù))并行粒度是指從緩沖器中并行讀取并且可獨立進行蝶形計算的數(shù)據(jù)個數(shù),其中L為并行粒度因子。蝶形組開始計算級Rq 表征當前蝶形組開始的計算級,當N點FFT為平衡組時, 即N = Lk,其中,k為正整數(shù),每個蝶形組均有L級蝶形,Rq始終為0 ;當為非平衡組時,即 N Φ Lk,最后計算節(jié)中蝶形組不需要L級蝶形,根據(jù)N點不同設置Rq為1 (L_l),即從第 Rq級蝶形開始計算,也即表示當前FFT蝶形組計算所需要的蝶形計算級數(shù)為L-Rq。FFT的一個基本蝶形計算結果表示為A士B*W,其中A、B分別表示FFT蝶形計算所需的第一、二個數(shù)據(jù),W表示旋轉(zhuǎn)因子。如圖7所示,本發(fā)明的蝶形計算裝置包括一數(shù)據(jù)輸入緩沖器701、一旋轉(zhuǎn)因子緩沖器703、一數(shù)據(jù)重排緩沖器704、一計數(shù)器705、4個數(shù)據(jù)選通模塊702、4個蝶形計算模塊 706、一寫回控制模塊707、一數(shù)據(jù)輸出緩沖器710,每一個數(shù)據(jù)選通模塊702和一個對應的蝶形計算模塊706組合起來對一組輸入數(shù)據(jù)進行處理。數(shù)據(jù)輸入緩沖器701用于存放蝶形組開始計算時所需要的數(shù)據(jù);旋轉(zhuǎn)因子緩沖器703用于存放蝶形組每級蝶形計算所需要的旋轉(zhuǎn)因子;計數(shù)器705用于標識蝶形計算的級數(shù),該計數(shù)器為遞減計數(shù)器,其初始值為L-Rq, 當一級蝶形計算完成后該計數(shù)器的值減1 ;數(shù)據(jù)選通模塊702用于根據(jù)計數(shù)器705的數(shù)值選擇讀入數(shù)據(jù)輸入緩沖器701中的數(shù)據(jù)或是數(shù)據(jù)重排緩沖器704中的數(shù)據(jù),也就是說,數(shù)據(jù)選通模塊702的選通信號來自計數(shù)器705。當計數(shù)器705的值為L-Rq時,數(shù)據(jù)選通模塊702選擇數(shù)據(jù)輸入緩沖器701中的8 點數(shù)據(jù)進入蝶形計算模塊706,否則選擇數(shù)據(jù)重排緩沖器704中的8點數(shù)據(jù),每一個數(shù)據(jù)選通模塊702輸入2個數(shù)據(jù)。每一蝶形計算模塊706用于對于輸入數(shù)據(jù)進行蝶形計算;蝶形計算模塊進一步包括數(shù)據(jù)分解模塊708和蝶形計算單元709,其中數(shù)據(jù)分解模塊708用于對參與蝶形計算的數(shù)據(jù)進行實部和虛部的分解;蝶形計算單元709用于基于分解完成后的數(shù)據(jù)進行多級蝶形計算,蝶形計算所需的旋轉(zhuǎn)因子來自旋轉(zhuǎn)因子緩沖器703,每一級蝶形計算完成后均把計算結果寫入數(shù)據(jù)重排緩沖器704中。數(shù)據(jù)重排緩沖器704用于存放當前級蝶形計算的結果,并對當前級的蝶形計算結果進行重排,以滿足下一級蝶形計算的順序讀入要求。
寫回控制模塊707用于控制是否需要將數(shù)據(jù)重排緩沖器704中的數(shù)據(jù)寫入到數(shù)據(jù)輸出緩沖器710中,其控制信號來自計數(shù)器705,當計數(shù)器705的值為0時表示當前的蝶形組各級并行計算已完成,需要把數(shù)據(jù)重排緩沖器704中的數(shù)據(jù)寫入到數(shù)據(jù)輸出緩沖器710 中,以輸出該蝶形組的蝶形計算結果。以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種多粒度并行FFT計算裝置,包括第一存儲器001)、第二存儲器002)、第三存儲器003)、蝶形計算裝置004)、狀態(tài)控制單元005)、數(shù)據(jù)反序網(wǎng)絡(406)和第一選擇器 (407),其特征在于:所述第一存儲器G01)、第二存儲器(40 用于存儲蝶形組數(shù)據(jù),所述第三存儲器 (403)用于存儲與蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子;所述蝶形計算裝置(404)的輸入端分別與第三存儲器(40 和第一選擇器(407)的輸出端相連接,根據(jù)從第一選擇器(407)輸出的蝶形組數(shù)據(jù)(42 和從第三存儲器(403)輸出的與該蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子,完成一個蝶形組的計算,并將計算結果寫回第一存儲器(401)或第二存儲器002);所述狀態(tài)控制單元(40 用于根據(jù)當前計算節(jié)和計算級,生成第一、第二和第三存儲器001-403)的讀寫地址和讀寫控制信號;所述數(shù)據(jù)反序網(wǎng)絡(406)用于蝶形組組內(nèi)數(shù)據(jù)的反序排列;第一選擇器(407)的兩個輸入端分別接收原始輸入數(shù)據(jù)和經(jīng)數(shù)據(jù)反序網(wǎng)絡(406)位反序排列后的數(shù)據(jù);如果當前處于計算節(jié)0,第一選擇器(407)選擇位反序排列后的數(shù)據(jù),否則選擇原始數(shù)據(jù)。
2.如權利要求1所述的多粒度并行FFT計算裝置,其特征在于,所述第一、第二和第三存儲器(401-40 為多粒度并行存儲器,均連接于所述狀態(tài)控制單元G05)并接受狀態(tài)控制單元G05)的讀寫控制。
3.如權利要求2所述的多粒度并行FFT計算裝置,其特征在于,所述狀態(tài)控制單元(40 用于根據(jù)當前計算節(jié)和計算級,生成第一、第二和第三存儲器001-403)的讀寫地址和讀寫控制信號。
4.如權利要求3所述的多粒度并行FFT計算裝置,其特征在于,所述狀態(tài)控制單元 (405)包括第一計算器(408)、第二計算器(409)和第三計算器010),分別用于計算當前計算節(jié)號s、當前邏輯Bank號i和當前存儲行號j。
5.如權利要求4所述的多粒度并行FFT計算裝置,其特征在于,所述狀態(tài)控制單元 (405)還包括第一地址產(chǎn)生單元011)、第二地址產(chǎn)生單元(41 和第三地址產(chǎn)生單元 G13),分別用于產(chǎn)生旋轉(zhuǎn)因子讀取地址、數(shù)據(jù)寫地址和數(shù)據(jù)讀地址。
6.如權利要求5所述的多粒度并行FFT計算裝置,其特征在于,所述第一地址產(chǎn)生單元(411)根據(jù)第一、第二、第三計算器(408-410)分別計算得到的當前計算節(jié)號S、當前邏輯Bank號i和當前存儲行號j產(chǎn)生旋轉(zhuǎn)因子讀取地址(429),并將該地址輸出到第三存儲器003)。
7.如權利要求5所述的多粒度并行FFT計算裝置,其特征在于,所述第二地址產(chǎn)生單元(41 根據(jù)第二、第三計算器(409、410)分別計算得到的當前邏輯Bank號i和當前存儲行號j產(chǎn)生數(shù)據(jù)寫地址(430),并輸出到地址分發(fā)器(416)。
8.如權利要求5所述的多粒度并行FFT計算裝置,其特征在于,所述狀態(tài)控制單元(40 還包括第二選擇器(41 和地址分發(fā)器016);所述第三地址產(chǎn)生單元(41 根據(jù)第二、第三計算器(409、410)分別計算得到的當前邏輯Bank號i和當前存儲行號j產(chǎn)生數(shù)據(jù)讀地址(430),并輸出到地址反序邏輯(414)和第二選擇器G15);所述第二選擇器G15)的輸入端分別接收原始讀地址和經(jīng)過位反序后的讀地址,并根據(jù)當前計算節(jié)號s進行選擇,以輸出到地址分發(fā)器(416)。
9.如權利要求8所述的多粒度并行FFT計算裝置,其特征在于,如果當前處理計算節(jié)號為0,則該第二選擇器(415)選擇位反序后的讀地址,否則該第二選擇器(415)選擇原始讀地址。
10.如權利要求9所述的多粒度并行FFT計算裝置,其特征在于,所述地址分發(fā)器(416)根據(jù)當前計算節(jié)號s的值確定讀地址輸出到第一存儲器(401) 還是第二存儲器002),以及確定寫地址(430)輸出到第一存儲器(401)還是第二存儲器 (402)。
全文摘要
本發(fā)明公開了一種多粒度并行FFT計算裝置,包括三個存儲器、蝶形計算裝置、狀態(tài)控制單元、數(shù)據(jù)反序網(wǎng)絡和第一選擇器,三個存儲器均為多粒度并行存儲器,用于存儲蝶形組數(shù)據(jù)以及與蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子。蝶形計算裝置根據(jù)從第一選擇器輸出的蝶形組數(shù)據(jù)和從一個存儲器輸出的與該蝶形組數(shù)據(jù)對應的旋轉(zhuǎn)因子完成一個蝶形組的計算,并將計算結果寫回其它兩個存儲器。本發(fā)明利用特定的讀寫粒度,可從多粒度并行存儲器中并行讀取蝶形組數(shù)據(jù)和對應的旋轉(zhuǎn)因子,讀取過程中不會產(chǎn)生存儲器沖突,也不需要額外的步驟再對讀寫數(shù)據(jù)進行排序。
文檔編號G06F17/14GK102411557SQ20111045990
公開日2012年4月11日 申請日期2011年12月31日 優(yōu)先權日2011年12月31日
發(fā)明者尹磊祖, 林嘯, 汪濤, 王東琳, 蒿杰, 謝少林 申請人:中國科學院自動化研究所