專利名稱:一種傅立葉變換的實現(xiàn)裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無線通信領(lǐng)域,尤其涉及一種實現(xiàn)快速傅立葉變換(Fast FourierTransform,簡稱 FFT)及快速傅立葉逆變換(Inverse Fast FourierTransform,簡稱 IFFT)的實現(xiàn)裝置。
背景技術(shù):
LTE系統(tǒng)是一種標(biāo)準(zhǔn)化的新一代無線通信技術(shù),其上行鏈路采用基于DFT (Discrete Fourier Transform,離散傅立葉變換)的SC-FDMA (單載波頻分復(fù)用多址接A )方案,下行鏈路采用基于FFT的OFDMA (正交頻分多址接入)方案。其中SC-FDMA是一 種基于離散傅立葉變換擴(kuò)展的正交頻分復(fù)用(DFT-S 0FDM)多址接入方案。兩種方案的共同點都是將調(diào)制數(shù)據(jù)進(jìn)行串-并轉(zhuǎn)換,轉(zhuǎn)換后的每路并行數(shù)據(jù)分別映射到一個相應(yīng)的子(副)載波進(jìn)行傳輸。因此變點數(shù)的FFT運算在數(shù)字信號處理領(lǐng)域中被廣泛應(yīng)用,但是一般都是2點和4點DFT運算,局限性較大,使用范圍受限。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種實現(xiàn)快速傅立葉變換及快速傅立葉逆變換的裝置,實現(xiàn)混合基變點數(shù)FFT運算,節(jié)約硬件資源。為解決上述技術(shù)問題,本發(fā)明提供了一種傅里葉變換的實現(xiàn)裝置,用于實現(xiàn)混合基傅里葉計算,支持輸入點數(shù)=2nX3nX4nX5n的運算,所述裝置包括快速傅里葉變換(FFT)控制模塊、m個算數(shù)邏輯單元(ALU)模塊、m組隨機(jī)存取存儲器(RAM)控制模塊、旋轉(zhuǎn)因子產(chǎn)生模塊,m彡1,其中所述FFT控制模塊,用于在接收到待運算數(shù)據(jù)和輸入點數(shù)后向各模塊發(fā)送啟動命令,向每個ALU模塊發(fā)送待運算數(shù)據(jù)并根據(jù)輸入點數(shù)向每個ALU模塊發(fā)送基數(shù)選擇信號,以及所述旋轉(zhuǎn)因子產(chǎn)生模塊生成的旋轉(zhuǎn)因子,向每個RAM控制模塊和旋轉(zhuǎn)因子產(chǎn)生模塊發(fā)送當(dāng)前的FFT點數(shù);用于控制迭代狀態(tài),基于當(dāng)前迭代狀態(tài)控制每個ALU模塊的運算、每個RAM控制模塊的讀寫以及所述旋轉(zhuǎn)因子產(chǎn)生模塊的旋轉(zhuǎn)因子生成;所述ALU模塊,用于在接收到啟動命令后,根據(jù)所述FFT控制模塊發(fā)送的基數(shù)選擇信號、當(dāng)前的迭代狀態(tài)以及旋轉(zhuǎn)因子對待運算數(shù)據(jù)進(jìn)行基數(shù)為2或3或4或5的蝶形運算,在運算結(jié)束后,向所述FFT控制模塊發(fā)送運算結(jié)束信號;所述RAM控制模塊,用于在接收到啟動命令后,基于所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)以及當(dāng)前FFT點數(shù),進(jìn)行m路讀寫操作;所述旋轉(zhuǎn)因子產(chǎn)生模塊,用于在接收到啟動命令后,根據(jù)當(dāng)前FFT點數(shù)和當(dāng)前迭代狀態(tài)從用于存儲旋轉(zhuǎn)因子的RAM中讀出數(shù)據(jù),生成旋轉(zhuǎn)因子,將生成的旋轉(zhuǎn)因子發(fā)送給所述FFT控制模塊。進(jìn)一步地,所述FFT控制模塊中的迭代狀態(tài)包括7級。進(jìn)一步地,所述ALU模塊包括ALU控制單元、離散傅立葉變換(DFT)單元、旋轉(zhuǎn)因子調(diào)整單元,其中所述ALU控制單元,用于接收所述FFT控制模塊發(fā)送的啟動命令、基數(shù)選擇信號和當(dāng)前迭代狀態(tài) ,根據(jù)所述基數(shù)選擇信號選擇相應(yīng)的蝶形運算,以及用于在所述旋轉(zhuǎn)因子調(diào)整單元計算結(jié)束后,向所述FFT控制模塊發(fā)送運算結(jié)束信號;所述DFT單元,用于接收所述FFT控制模塊發(fā)送的待運算數(shù)據(jù),根據(jù)所述ALU控制單元選擇的蝶形運算對所述待運算數(shù)據(jù)進(jìn)行DFT運算,將運算后的數(shù)據(jù)輸入所述旋轉(zhuǎn)因子調(diào)整單元;所述旋轉(zhuǎn)因子調(diào)整單元,用于將所述FFT控制模塊發(fā)送的旋轉(zhuǎn)因子和所述DFT單元輸出的數(shù)據(jù)進(jìn)行乘法運算,完成旋轉(zhuǎn)因子的調(diào)整,將計算后的數(shù)據(jù)返回給所述FFT控制模塊。進(jìn)一步地,所述RAM控制模塊包括RAM邏輯控制單元、RAM讀控制信號產(chǎn)生單元和RAM寫控制信號產(chǎn)生單元,其中所述RAM邏輯控制單元,用于接收所述FFT控制模塊發(fā)送的啟動命令,基于所述RAM讀控制信號產(chǎn)生單元發(fā)送的讀使能信號和讀地址從用于存儲數(shù)據(jù)的RAM中讀出數(shù)據(jù)輸出至所述FFT控制模塊,以及基于所述RAM寫控制信號產(chǎn)生單元發(fā)送的寫使能信號和寫地址將從所述FFT控制模塊輸入的數(shù)據(jù)寫入用于存儲數(shù)據(jù)的RAM ;所述RAM讀控制信號產(chǎn)生單元,用于根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號;所述RAM寫控制信號產(chǎn)生單元,用于根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成寫地址并向用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號。進(jìn)一步地,所述RAM讀控制信號產(chǎn)生單元,用于采用以下方式根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號根據(jù)所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)判斷此時是否執(zhí)行讀操作,如果進(jìn)行讀操作,則根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài)生成片選信號,選擇相應(yīng)的用于存儲數(shù)據(jù)的RAM,并生成讀地址并向所述用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號。進(jìn)一步地,所述RAM讀控制信號產(chǎn)生單元采用以下公式生成片選信號,選擇相應(yīng)的 RAM Pi = Aq mod7,其中,i為RAM的序號,Aq為序列分解的先驗信息;每個RAM中的讀
地址根據(jù)公式Mi = ^ $產(chǎn)生。
7進(jìn)一步地,所述RAM寫控制信號產(chǎn)生單元采用以下方式生成最終數(shù)據(jù)的寫地址outputaddr - DFT — mod— countl * DFT 一 P0 他 +
— —DFT _ mod IDFT mod countl *-DFT_point-+
——DFT _ mod I * DFT _ mod 2
Mm 1 ^ ^ DFT point「00251 DFT mod count3 *-=--1-......+
—-DFT _modl^ DFT _mod2^ DFT _mod3
「 nj , *DFT point
「00261 Db I mod countn ^-二-
——DFT moA\^DFT mod2*.......^DFT mod/7
其中DFT_mod_countl DFT_mod_countn為N點DFT迭代時的迭代點數(shù)計數(shù)器值,DFT_point為當(dāng)前的輸入點數(shù),DFTjnodn為輸入點數(shù)對n取模的結(jié)果。進(jìn)一步地,所述RAM寫控制信號產(chǎn)生單元,用于采用以下方式根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成寫地址并向用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號根據(jù)所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)判斷此時是否執(zhí)行寫操作,如果進(jìn)行寫操作,則根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài)生成片選信號,選擇相應(yīng)的用于存儲數(shù)據(jù)的RAM,并生成寫地址并向所述用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號。 進(jìn)一步地,所述RAM寫控制信號產(chǎn)生單元采用以下公式生成片選信號,選擇相應(yīng)的 RAM Pi = Aq mod7,其中,i為RAM的序號,Aq為序列分解的先驗信息;每個RAM中的寫
地址根據(jù)公式Mi = ^ $產(chǎn)生。
7進(jìn)一步地,所述旋轉(zhuǎn)因子產(chǎn)生模塊包括控制單元、讀控制信號產(chǎn)生單元以及旋轉(zhuǎn)因子產(chǎn)生單元,其中所述控制單元,用于接收所述FFT控制模塊發(fā)送的啟動命令,向所述讀控制信號產(chǎn)生單元和旋轉(zhuǎn)因子產(chǎn)生單元發(fā)送控制信號;所述讀控制信號產(chǎn)生單元,用于基于所述控制單元發(fā)送的控制信號,接收所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲旋轉(zhuǎn)因子的RAM發(fā)送讀使能信號;所述旋轉(zhuǎn)因子產(chǎn)生單元,用于基于所述控制單元發(fā)送的控制信號,接收所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài),以及接收從用于存儲旋轉(zhuǎn)因子的RAM讀出的旋轉(zhuǎn)因子,采用迭代運算計算在旋轉(zhuǎn)因子調(diào)整過程中所需的旋轉(zhuǎn)因子,輸出至所述FFT控制模塊。采用本發(fā)明所述裝置,可以實現(xiàn)輸入點數(shù)為2n,3n,4n* 5n的FFT運算,且實現(xiàn)方式較為簡單。另外,本發(fā)明裝置還可實現(xiàn)硬件并行度為2的FFT運算,即一次計算兩路FFT運算。并且本發(fā)明在實現(xiàn)兩路FFT運算時,合理地復(fù)用硬件資源,減少了硬件面積開銷,將FFT/IFFT的運算速度提高了一倍。
圖I為變點FFT裝置的結(jié)構(gòu)框圖;圖2為FFT控制模塊狀態(tài)機(jī)示意圖;圖3為ALU運算模塊結(jié)構(gòu)圖;圖4為RAM控制模塊結(jié)構(gòu)圖;圖5為旋轉(zhuǎn)因子產(chǎn)生模塊的一種結(jié)構(gòu)圖;圖6為旋轉(zhuǎn)因子產(chǎn)生模塊的一種具體結(jié)構(gòu)圖。
具體實施例方式下文中將結(jié)合附圖對本發(fā)明的實施例進(jìn)行詳細(xì)說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。實施例I 本實施例提供的傅里葉變換的實現(xiàn)裝置,用于實現(xiàn)混合基傅里葉計算,支持輸入點數(shù)=2nX3nX4nX5n的運算,所述裝置包括FFT控制模塊、m個算數(shù)邏輯單元(ALU)模塊、m組隨機(jī)存取存儲器(RAM)控制模塊(每組RAM對應(yīng)一路FFT處理)、旋轉(zhuǎn)因子產(chǎn)生模塊,m彡1,其中所述FFT控制模塊,用于在接收到待運算數(shù)據(jù)和輸入點數(shù)后向各模塊發(fā)送啟動命令,向每個ALU模塊發(fā)送待運算數(shù)據(jù)并根據(jù)輸入點數(shù)向每個ALU模塊發(fā)送基數(shù)選擇信號,以及所述旋轉(zhuǎn)因子產(chǎn)生模塊生成的旋轉(zhuǎn)因子,向每個RAM控制模塊和旋轉(zhuǎn)因子產(chǎn)生模塊發(fā)送當(dāng)前的FFT點數(shù);用于控制迭代狀態(tài),基于當(dāng)前迭代狀態(tài)控制每個ALU模塊的運算、每個RAM控制模塊的讀寫以及所述旋轉(zhuǎn)因子產(chǎn)生模塊的旋轉(zhuǎn)因子生成;所述ALU模塊,用于在接收到啟動命令后,根據(jù)所述FFT控制模塊發(fā)送的基數(shù)選擇信號、當(dāng)前的迭代狀態(tài)以及旋轉(zhuǎn)因子對待運算數(shù)據(jù)進(jìn)行基數(shù)為2或3或4或5的蝶形運算,在運算結(jié)束后,向所述FFT控制模塊發(fā)送運算結(jié)束信號;所述RAM控制模塊,用于在接收到啟動命令后,基于所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)以及當(dāng)前FFT點數(shù),進(jìn)行m路讀寫操作;所述旋轉(zhuǎn)因子產(chǎn)生模塊,用于在接收到啟動命令后,根據(jù)當(dāng)前FFT點數(shù)和當(dāng)前迭代狀態(tài)從用于存儲旋轉(zhuǎn)因子的RAM中讀出數(shù)據(jù),生成旋轉(zhuǎn)因子,將生成的旋轉(zhuǎn)因子發(fā)送給所述FFT控制模塊。輸入點數(shù)例如可以是以下點數(shù)中的任意一種12、24、36、48、60、72、96、108、120、144、180、192、216、240、288、300、324、360、384、432、480、540、576、600、648、720、768、864、900、960、972、1080、1152、1200、1296。優(yōu)選地,該ALU模塊包括ALU控制單元、DFT單元、旋轉(zhuǎn)因子調(diào)整單元,其中ALU控制單元,用于接收FFT控制模塊發(fā)送的啟動命令、基數(shù)選擇信號和當(dāng)前迭代狀態(tài),根據(jù)所述基數(shù)選擇信號選擇相應(yīng)的蝶形運算,以及用于在所述旋轉(zhuǎn)因子調(diào)整單元計算結(jié)束后,向FFT控制模塊發(fā)送運算結(jié)束信號;DFT單元,用于接收FFT控制模塊發(fā)送的待運算數(shù)據(jù),根據(jù)ALU控制單元選擇的蝶形運算對待運算數(shù)據(jù)進(jìn)行DFT運算(基數(shù)為2或3或4或5),將運算后的數(shù)據(jù)輸入旋轉(zhuǎn)因子調(diào)整單元;旋轉(zhuǎn)因子調(diào)整單元,用于將FFT控制模塊發(fā)送的旋轉(zhuǎn)因子和DFT單元輸出的數(shù)據(jù)進(jìn)行乘法運算,完成旋轉(zhuǎn)因子的調(diào)整,將計算后的數(shù)據(jù)返回給FFT控制模塊。優(yōu)選地,該RAM控制模塊包括RAM邏輯控制單元、RAM讀控制信號產(chǎn)生單元和RAM寫控制信號產(chǎn)生單元,其中RAM邏輯控制單元,用于接收FFT控制模塊發(fā)送的啟動命令,基于RAM讀控制信號產(chǎn)生單元發(fā)送的讀使能信號和讀地址從用于存儲數(shù)據(jù)的RAM中讀出數(shù)據(jù)輸出至FFT控制模塊,以及基于RAM寫控制信號產(chǎn)生單元發(fā)送的寫使能信號和寫地址將從FFT控制模塊輸入的數(shù)據(jù)寫入用于存儲數(shù)據(jù)的RAM ;RAM讀控制信號產(chǎn)生單元,用于根據(jù)FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號;
RAM寫控制信號產(chǎn)生單元,用于根據(jù)FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成寫地址并向用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號。優(yōu)選地,該RAM讀控制信號產(chǎn)生單元,用于采用以下方式根據(jù)FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號根據(jù)FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)判斷此時是否執(zhí)行讀操作,如果進(jìn)行讀操作,則根據(jù)FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài)生成片選信號,選擇相應(yīng)的用于存儲數(shù)據(jù)的RAM,并生成讀地址并向所述用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號。優(yōu)選地,該RAM寫控制信號產(chǎn)生單元,用于采用以下方式根據(jù)FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成寫地址并向用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號根據(jù)FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)判斷此時是否執(zhí)行寫操作,如果進(jìn)行寫操作,則根據(jù)FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài)生成片選信號,選擇相應(yīng)的用于存儲數(shù)據(jù)的RAM, 并生成寫地址并向所述用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號。優(yōu)選地,該旋轉(zhuǎn)因子產(chǎn)生模塊包括控制單元、讀控制信號產(chǎn)生單元以及旋轉(zhuǎn)因子產(chǎn)生單元,其中控制單元,用于接收FFT控制模塊發(fā)送的啟動命令,向讀控制信號產(chǎn)生單元和旋轉(zhuǎn)因子產(chǎn)生單元發(fā)送控制信號;讀控制信號產(chǎn)生單元,用于基于控制單元發(fā)送的控制信號,接收FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲旋轉(zhuǎn)因子的RAM發(fā)送讀使能信號;旋轉(zhuǎn)因子產(chǎn)生單元,用于基于控制單元發(fā)送的控制信號,接收FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài),以及接收從用于存儲旋轉(zhuǎn)因子的RAM讀出的旋轉(zhuǎn)因子,采用迭代運算計算在旋轉(zhuǎn)因子調(diào)整過程中所需的旋轉(zhuǎn)因子,輸出至FFT控制模塊。應(yīng)用示例本實施例以FFT控制模塊提供7級迭代狀態(tài)為例進(jìn)行說明。硬件裝置如圖I所示,包括FFT控制模塊、2個ALU (Arithmetic Logic Unit,算數(shù)邏輯單元)運算模塊、2組RAM (Random Access Memory,隨機(jī)存取存儲器)控制單元、旋轉(zhuǎn)因子產(chǎn)生模塊。由于本實施例中FFT控制模塊需要支持多種輸入點數(shù)FFT運算,若按照每種輸入點數(shù)設(shè)計狀態(tài)機(jī)會導(dǎo)致狀態(tài)轉(zhuǎn)換異常復(fù)雜且容易出錯。故此處狀態(tài)機(jī)的設(shè)計思想為無論輸入的FFT點數(shù)為多少,將狀態(tài)機(jī)分為7個部分idle (閑置)狀態(tài),第一次DFT迭代狀態(tài),第二次DFT迭代狀態(tài),第三次DFT迭代狀態(tài),第四次DFT迭代狀態(tài),第五次DFT迭代狀態(tài),第六次DFT迭代狀態(tài),當(dāng)系統(tǒng)復(fù)位時,狀態(tài)轉(zhuǎn)向idle態(tài),如圖2所示。每次迭代所需要進(jìn)行的操作由輸入的點數(shù)來決定,且迭代的次數(shù)也是由輸入的點數(shù)控制,即每次迭代的操作由外部控制,狀態(tài)機(jī)只關(guān)注迭代次數(shù)的轉(zhuǎn)換。整個狀態(tài)機(jī)的設(shè)計中只關(guān)注每次迭代狀態(tài)的轉(zhuǎn)移,而每次迭代具體執(zhí)行的點數(shù)及每次迭代的具體情況均由狀態(tài)機(jī)外的多路選擇決定,下面詳細(xì)給出多路選擇的操作情況當(dāng)FFT控制模塊檢測到輸入的當(dāng)前FFT點數(shù)后,便將2n或3n或4n或5n點DFT迭代的次數(shù)由FFT控制模塊內(nèi)部的多路選擇器確定下來,即確定附圖2中狀態(tài)機(jī)每次基于N(N= 2n*3n*4n*5n)點迭代。整體迭代情況確定完之后需要確定每次迭代狀態(tài)的內(nèi)部點數(shù)運算控制,此時根據(jù)多路選擇器的結(jié)果結(jié)合輸入的FFT點數(shù)來進(jìn)行每次迭代的中間數(shù)據(jù)計算控制。無論輸入點數(shù)是多少,狀態(tài)機(jī)均經(jīng)過6種迭代狀態(tài)。若某些小點數(shù)FFT只需要經(jīng)過少于6次的迭代就能完成FFT運算,那此時將其剩余狀態(tài)設(shè)置為數(shù)據(jù)直通狀態(tài)。附圖3為ALU運算單元結(jié)構(gòu)圖。每個ALU運算單元包括兩個子單元控制邏輯子單元(即ALU控制單元),可配置計算子單元(包括DFT單元和旋轉(zhuǎn)因子調(diào)整單元)I)控制邏輯子單元用于接到FFT控制模塊的啟動信號后,啟動ALU模塊,再利用FFT控制模塊傳來的基數(shù)選擇信號對所需進(jìn)行的蝶形運算公式進(jìn)行選擇,以控制信號的方式向可配置運算子單元輸出選擇結(jié)果,將可配置運算子單元運算之后的數(shù)據(jù)輸出,并在可配置運算子單元計算結(jié)束后給出ALU運算結(jié)束信號。2)可配置運算子單元根據(jù)控制邏輯子單元輸入的控制信號進(jìn)行相應(yīng)運算。其中可配置運算子單元又分為DFT運算子單元和旋轉(zhuǎn)因子調(diào)整計算子單元。DFT運算子單元(簡稱DFT單元)用于對從FFT控制模塊中輸入的數(shù)據(jù)先進(jìn)行2n或3n或4n或5n點的DFT計算;旋轉(zhuǎn)因子調(diào)整計算子單元用于將進(jìn)行過DFT運算之后的數(shù)據(jù)與相應(yīng)旋轉(zhuǎn)因子相乘, 進(jìn)行旋轉(zhuǎn)因子的調(diào)整,將計算后的數(shù)據(jù)返回給FFT控制模塊。附圖4為RAM控制模塊結(jié)構(gòu)圖。I組RAM控制模塊對應(yīng)一路FFT處理。其中RAM控制模塊中的模塊總體控制邏輯檢測到FFT控制模塊輸入的啟動信號為高時開啟RAM控制模塊操作。然后根據(jù)FFT控制模塊輸入的當(dāng)前迭代狀態(tài)信號判斷此時該執(zhí)行讀/寫操作,并根據(jù)輸入的當(dāng)前FFT點數(shù)信號結(jié)合當(dāng)前迭代狀態(tài)信號產(chǎn)生RAM片選信號,選中其中相應(yīng)用于存儲數(shù)據(jù)的RAM,并產(chǎn)生讀/寫使能,讀/寫地址。從而將數(shù)據(jù)讀出/存入相應(yīng)用于存儲數(shù)據(jù)的RAM中。下面將FFT運算數(shù)據(jù)存儲問題分成2個部分來描述中間過程數(shù)據(jù)操作和最終數(shù)據(jù)操作。中間數(shù)據(jù)存儲方式如下在中間計算過程中首先要從7個RAM中選中5或4或3或2個作為本次操作的工作RAM。選RAM的片選信號根據(jù)公式Pi = Aq mod7產(chǎn)生,其中i為RAM的序號i = 0,1,2,3,4,5,6 ;Aq為序列分解的先驗信息,q = 0,1,2,3,4。其中每個RAM中讀/寫地址根據(jù)公
式= 產(chǎn)生。Ai為生成地址和片選信號的參數(shù)計數(shù)器,Aq的值在初始值的基礎(chǔ)上每
個時鐘(elk)加I。Aq共有5個分別為Atl, A1, A2, A3, A4,不同的迭代級數(shù)Atl, A1, A2, A3, A4的初始值各不相同。采用上述方式存儲可以保證尋址不沖突且占用RAM資源最小。最終輸出數(shù)據(jù)存儲地址產(chǎn)生最后一級運算結(jié)果是亂序的存儲在工作RAM中的,在DFT最終輸出的時候需要按照一定的地址公式順序的將數(shù)據(jù)順序輸出,DFT最終輸出地址公式如下outputaddr = DFT — mod— countl * U — P0 int +
— —DFT _ mod IDFT mod ^ countl *-DFT — po int-+
——DFT _ mod I * DFT _ mod 2
M m 1 ^ ^ DFT po int「00801 DFT mod e count3 *-=--1-......+
—-DFT _modl^ DFT _mod2^ DFT _mod3
「 n T^irA士免DFT point
「00811 Dh I mod ^ countn ^-—-
——DFT _ mod I * DFT _ mod 2 *.......* DFT _ mod n上述公式中DFT—mod—countl到DFT—mod—countn為N點DFT迭代時的迭代點數(shù)計數(shù)器,若當(dāng)前狀態(tài)為4點DFT迭代則DFT_m0de_C0unt為O 3計數(shù),計數(shù)器每個elk加I。DFT_point為當(dāng)前的輸入點數(shù)。DFTjnodl到DFTjnodn為輸入點數(shù)分別經(jīng)過的DFT迭代狀態(tài)的點數(shù),具體地可理解為DFTjnodn為輸入點數(shù)對n取模的結(jié)果。上述公式為一個通用的公式,具體輸入的點數(shù)只要根據(jù)DFT_point (前級模塊輸A DFT點數(shù)信息)和DFTjnodn (最后一次DFT迭代狀態(tài)的點數(shù))來決定進(jìn)行乘加運算的級數(shù)。本實施例中FFT運算所需要的旋轉(zhuǎn)因子是通過存儲加上計算所得。在用于存儲旋轉(zhuǎn)因子的RAM中存儲極少數(shù)的旋轉(zhuǎn)因子,利用旋轉(zhuǎn)因子的可約性,利用讀出的極少數(shù)旋轉(zhuǎn)因子計算出其他FFT運算中旋轉(zhuǎn) 因子調(diào)整過程所需旋轉(zhuǎn)因子。圖5為旋轉(zhuǎn)因子產(chǎn)生模塊結(jié)構(gòu)圖。其中旋轉(zhuǎn)因子產(chǎn)生模塊中的總體控制邏輯檢測到FFT控制單元輸入的啟動信號為高之后啟動旋轉(zhuǎn)因子產(chǎn)生模塊操作。然后根據(jù)輸入的當(dāng)前迭代狀態(tài)值產(chǎn)生讀取地址、使能,讀出相應(yīng)旋轉(zhuǎn)因子。再根據(jù)FFT點數(shù),當(dāng)前迭代狀態(tài)結(jié)合讀出的旋轉(zhuǎn)因子,根據(jù)迭代運算算出旋轉(zhuǎn)因子調(diào)整過程中所需旋轉(zhuǎn)因子。最后將結(jié)束信號拉高表征旋轉(zhuǎn)因子產(chǎn)生模塊操作結(jié)束。模塊總體控制邏輯主要完成模塊的啟動和結(jié)束操作。其中計算旋轉(zhuǎn)因子調(diào)整過程中所需旋轉(zhuǎn)因子電路圖如附圖6所示。首先判斷輸入的當(dāng)前迭代狀態(tài)、FFT總點數(shù)的值,若這些信號所對應(yīng)的計算行數(shù)和存儲在RAM中旋轉(zhuǎn)因子的行數(shù)一致,則可以將讀出的旋轉(zhuǎn)因子直接用于蝶形運算。若不一致,則將讀出的旋轉(zhuǎn)因子再進(jìn)行迭代運算得到最終的旋轉(zhuǎn)因子。旋轉(zhuǎn)因子產(chǎn)生的迭代運算電路結(jié)構(gòu)是帶負(fù)反饋結(jié)構(gòu)的復(fù)數(shù)乘運算,如圖6所示,即將上次迭代結(jié)果與本次RAM讀出的FFT輸入點數(shù)對應(yīng)的第一行FFT旋轉(zhuǎn)因子相乘。該旋轉(zhuǎn)因子產(chǎn)生模塊可以同時實現(xiàn)兩路FFT的計算,即復(fù)用該旋轉(zhuǎn)因子產(chǎn)生模塊,產(chǎn)生一套旋轉(zhuǎn)因子通過兩個硬件接口送給兩個模塊。本發(fā)明實施例還可用于IFFT變換,IFFT變換和FFT —樣只是在輸入和輸出時對數(shù)據(jù)取共軛。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關(guān)硬件完成,所述程序可以存儲于計算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應(yīng)地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。當(dāng)然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種傅里葉變換的實現(xiàn)裝置,用于實現(xiàn)混合基傅里葉計算,支持輸入點數(shù)=2nX3nX4nX5n的運算,所述裝置包括快速傅里葉變換(FFT)控制模塊、m個算數(shù)邏輯單元(ALU)模塊、m組隨機(jī)存取存儲器(RAM)控制模塊、旋轉(zhuǎn)因子產(chǎn)生模塊,m彡1,其中 所述FFT控制模塊,用于在接收到待運算數(shù)據(jù)和輸入點數(shù)后向各模塊發(fā)送啟動命令,向每個ALU模塊發(fā)送待運算數(shù)據(jù)并根據(jù)輸入點數(shù)向每個ALU模塊發(fā)送基數(shù)選擇信號,以及所述旋轉(zhuǎn)因子產(chǎn)生模塊生成的旋轉(zhuǎn)因子,向每個RAM控制模塊和旋轉(zhuǎn)因子產(chǎn)生模塊發(fā)送當(dāng)前的FFT點數(shù);用于控制迭代狀態(tài),基于當(dāng)前迭代狀態(tài)控制每個ALU模塊的運算、每個RAM控制模塊的讀寫以及所述旋轉(zhuǎn)因子產(chǎn)生模塊的旋轉(zhuǎn)因子生成; 所述ALU模塊,用于在接收到啟動命令后,根據(jù)所述FFT控制模塊發(fā)送的基數(shù)選擇信號、當(dāng)前的迭代狀態(tài)以及旋轉(zhuǎn)因子對待運算數(shù)據(jù)進(jìn)行基數(shù)為2或3或4或5的蝶形運算,在運算結(jié)束后,向所述FFT控制模塊發(fā)送運算結(jié)束信號; 所述RAM控制模塊,用于在接收到啟動命令后,基于所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)以及當(dāng)前FFT點數(shù),進(jìn)行m路讀寫操作; 所述旋轉(zhuǎn)因子產(chǎn)生模塊,用于在接收到啟動命令后,根據(jù)當(dāng)前FFT點數(shù)和當(dāng)前迭代狀態(tài)從用于存儲旋轉(zhuǎn)因子的RAM中讀出數(shù)據(jù),生成旋轉(zhuǎn)因子,將生成的旋轉(zhuǎn)因子發(fā)送給所述FFT控制模塊。
2.如權(quán)利要求I所述的裝置,其特征在于, 所述FFT控制模塊中的迭代狀態(tài)包括7級。
3.如權(quán)利要求I所述的裝置,其特征在于, 所述ALU模塊包括ALU控制單元、離散傅立葉變換(DFT)單元、旋轉(zhuǎn)因子調(diào)整單元,其中 所述ALU控制單元,用于接收所述FFT控制模塊發(fā)送的啟動命令、基數(shù)選擇信號和當(dāng)前迭代狀態(tài),根據(jù)所述基數(shù)選擇信號選擇相應(yīng)的蝶形運算,以及用于在所述旋轉(zhuǎn)因子調(diào)整單元計算結(jié)束后,向所述FFT控制模塊發(fā)送運算結(jié)束信號; 所述DFT單元,用于接收所述FFT控制模塊發(fā)送的待運算數(shù)據(jù),根據(jù)所述ALU控制單元選擇的蝶形運算對所述待運算數(shù)據(jù)進(jìn)行DFT運算,將運算后的數(shù)據(jù)輸入所述旋轉(zhuǎn)因子調(diào)整單元; 所述旋轉(zhuǎn)因子調(diào)整單元,用于將所述FFT控制模塊發(fā)送的旋轉(zhuǎn)因子和所述DFT單元輸出的數(shù)據(jù)進(jìn)行乘法運算,完成旋轉(zhuǎn)因子的調(diào)整,將計算后的數(shù)據(jù)返回給所述FFT控制模塊。
4.如權(quán)利要求I所述的裝置,其特征在于, 所述RAM控制模塊包括RAM邏輯控制單元、RAM讀控制信號產(chǎn)生單元和RAM寫控制信號產(chǎn)生單元,其中 所述RAM邏輯控制單元,用于接收所述FFT控制模塊發(fā)送的啟動命令,基于所述RAM讀控制信號產(chǎn)生單元發(fā)送的讀使能信號和讀地址從用于存儲數(shù)據(jù)的RAM中讀出數(shù)據(jù)輸出至所述FFT控制模塊,以及基于所述RAM寫控制信號產(chǎn)生單元發(fā)送的寫使能信號和寫地址將從所述FFT控制模塊輸入的數(shù)據(jù)寫入用于存儲數(shù)據(jù)的RAM ; 所述RAM讀控制信號產(chǎn)生單元,用于根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號; 所述RAM寫控制信號產(chǎn)生單元,用于根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成寫地址并向用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號。
5.如權(quán)利要求4所述的裝置,其特征在于, 所述RAM讀控制信號產(chǎn)生單元,用于采用以下方式根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號 根據(jù)所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)判斷此時是否執(zhí)行讀操作,如果進(jìn)行讀操作,則根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài)生成片選信號,選擇相應(yīng)的用于存儲數(shù)據(jù)的RAM,并生成讀地址并向所述用于存儲數(shù)據(jù)的RAM發(fā)送讀使能信號。
6.如權(quán)利要求5所述的裝置,其特征在于, 所述RAM讀控制信號產(chǎn)生單元采用以下公式生成片選信號,選擇相應(yīng)的RAM Pi = Aqmod7,其中,i為RAM的序號,Aq為序列分解的先驗信息; 每個RAM中的讀地址根據(jù)公式Mi = Aq P'產(chǎn)生。
7
7.如權(quán)利要求4所述的裝置,其特征在于, 所述RAM寫控制信號產(chǎn)生單元采用以下方式生成最終數(shù)據(jù)的寫地址
8.如權(quán)利要求4所述的裝置,其特征在于, 所述RAM寫控制信號產(chǎn)生單元,用于采用以下方式根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)以及當(dāng)前迭代狀態(tài),生成寫地址并向用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號 根據(jù)所述FFT控制模塊發(fā)送的當(dāng)前迭代狀態(tài)判斷此時是否執(zhí)行寫操作,如果進(jìn)行寫操作,則根據(jù)所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài)生成片選信號,選擇相應(yīng)的用于存儲數(shù)據(jù)的RAM,并生成寫地址并向所述用于存儲數(shù)據(jù)的RAM發(fā)送寫使能信號。
9.如權(quán)利要求7所述的裝置,其特征在于, 所述RAM寫控制信號產(chǎn)生單元采用以下公式生成片選信號,選擇相應(yīng)的RAM Pi = Aqmod7,其中,i為RAM的序號,Aq為序列分解的先驗信息;每個RAM中的寫地址根據(jù)公式從;=^ $產(chǎn)生。 7
10.如權(quán)利要求I所述的裝置,其特征在于, 所述旋轉(zhuǎn)因子產(chǎn)生模塊包括控制單元、讀控制信號產(chǎn)生單元以及旋轉(zhuǎn)因子產(chǎn)生單元,其中 所述控制單元,用于接收所述FFT控制模塊發(fā)送的啟動命令,向所述讀控制信號產(chǎn)生單元和旋轉(zhuǎn)因子產(chǎn)生單元發(fā)送控制信號;所述讀控制信號產(chǎn)生單元,用于基于所述控制單元發(fā)送的控制信號,接收所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài),生成讀地址并向用于存儲旋轉(zhuǎn)因子的RAM發(fā)送讀使能信號; 所述旋轉(zhuǎn)因子產(chǎn)生單元,用于基于所述控制單元發(fā)送的控制信號,接收所述FFT控制模塊發(fā)送的FFT點數(shù)和當(dāng)前迭代狀態(tài),以及接收從用于存儲旋轉(zhuǎn)因子的RAM讀出的旋轉(zhuǎn)因子,采用迭代運算計算在旋轉(zhuǎn)因子調(diào)整過程中所需的旋轉(zhuǎn)因子,輸出至所述FFT控制模塊。
全文摘要
本發(fā)明公開了一種實現(xiàn)快速傅立葉變換及快速傅立葉逆變換的裝置,實現(xiàn)混合基變點數(shù)FFT運算,節(jié)約硬件資源。該裝置可實現(xiàn)混合基傅里葉計算,支持輸入點數(shù)=2n×3n×4n×5n的運算,包括FFT控制模塊、m個ALU模塊、m組RAM控制模塊、旋轉(zhuǎn)因子產(chǎn)生模塊FFT控制模塊用于向各模塊發(fā)送啟動命令,向每個ALU模塊發(fā)送待運算數(shù)據(jù)、基數(shù)選擇信號以及旋轉(zhuǎn)因子,向每個RAM控制模塊和旋轉(zhuǎn)因子產(chǎn)生模塊發(fā)送當(dāng)前的FFT點數(shù);控制迭代狀態(tài),控制每個ALU模塊進(jìn)行基數(shù)為2或3或4或5的蝶形運算、每個RAM控制模塊的讀寫以及所述旋轉(zhuǎn)因子產(chǎn)生模塊的旋轉(zhuǎn)因子生成。本發(fā)明裝置實現(xiàn)簡單,同時提高運行速度、減少硬件開銷。
文檔編號G06F17/14GK102810087SQ20111014242
公開日2012年12月5日 申請日期2011年5月30日 優(yōu)先權(quán)日2011年5月30日
發(fā)明者王經(jīng)緯 申請人:中興通訊股份有限公司