專利名稱:一種實(shí)現(xiàn)fft/ifft變換的電路及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字信號(hào)處理領(lǐng)域,具體涉及一種實(shí)現(xiàn)FFT/IFFT變換(快速傅立葉變 換/快速傅立葉反變換)的電路及方法。
背景技術(shù):
在數(shù)字信號(hào)處理中,經(jīng)常需要對(duì)數(shù)據(jù)進(jìn)行時(shí)域到頻域的轉(zhuǎn)換,此時(shí)一般使用FFT 變換,從頻域到時(shí)域轉(zhuǎn)換時(shí)則使用IFFT變換。FFT可以大大減少DFT (離散傅立葉變換)的計(jì)算量,對(duì)于N點(diǎn)DFT變換,其計(jì)算量 為N2,基2的FFT的計(jì)算量為Nlog2N0FFT變換有多種形式,如時(shí)域抽取/頻域抽取,基2/基4/基8/分裂基等多種組合 形式。FFT變換一般需要多次迭代才能完成,比如基2時(shí)域抽取64點(diǎn)FFT變換需要6次迭 代。而對(duì)于每級(jí)迭代,又有不同的迭代方法。基2變換最常見(jiàn)的迭代形式為每個(gè)蝶形運(yùn)算的輸入數(shù)據(jù)和輸出數(shù)據(jù)的存儲(chǔ)地址 相同,即同址迭代,如附圖1所示。在硬件實(shí)現(xiàn)時(shí),同址迭代可以節(jié)省RAM空間,但每級(jí)迭代 形式不同,控制復(fù)雜。而其關(guān)鍵缺點(diǎn)是FFT前后RAM內(nèi)數(shù)據(jù)的存儲(chǔ)順序不同,要參與下次 FFT/IFFT時(shí),參與首次迭代蝶形運(yùn)算的兩個(gè)數(shù)據(jù)不能同時(shí)讀出,要花兩個(gè)時(shí)鐘分別讀取,寫 入數(shù)據(jù)時(shí)也是如此,這浪費(fèi)了時(shí)間資源。另一種改進(jìn)的基2迭代形式為每級(jí)的迭代形式相同,如附圖2所示,它降低了控 制的復(fù)雜程度,但不是同址操作。它也有前者的缺點(diǎn),即FFT前后RAM內(nèi)數(shù)據(jù)的存儲(chǔ)順序不 同,它需要對(duì)數(shù)據(jù)重新進(jìn)行排序,或者與前者一樣,每?jī)蓚€(gè)時(shí)鐘讀取一次蝶形運(yùn)算的數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種新型的實(shí)現(xiàn)FFT/IFFT變換的硬件電路, 以及實(shí)現(xiàn)FFT/IFFT變換的方法,降低電路的復(fù)雜度,保持變換前后RAM內(nèi)數(shù)據(jù)的存儲(chǔ)順序 相同,從而減少額外的時(shí)間消耗。為解決上述技術(shù)問(wèn)題,本發(fā)明采用以下解決方案一種實(shí)現(xiàn)FFT/IFFT變換的電路,包括第一多路選擇器,第二多路選擇器,第一 RAM存儲(chǔ)器,第二 RAM存儲(chǔ)器,ROM存儲(chǔ)器,第三多路選擇器,第四多路選擇器,復(fù)數(shù)乘法器, 第一復(fù)數(shù)加法器,第二復(fù)數(shù)加法器;本電路包括兩個(gè)數(shù)據(jù)輸出端和兩個(gè)數(shù)據(jù)輸入端,所述兩 個(gè)數(shù)據(jù)輸出端分別為第三多路選擇器和第四多路選擇器的輸出端,或者第一 RAM存儲(chǔ)器和 第二 RAM存儲(chǔ)器的輸出端;第一多路選擇器的兩個(gè)輸入端分別與本電路的一個(gè)數(shù)據(jù)輸入端和第一復(fù)數(shù)加法 器的輸出端連接;第二多路選擇器的兩個(gè)輸入端分別與本電路的另一個(gè)數(shù)據(jù)輸入端和第二 復(fù)數(shù)加法器的輸出端連接;第一多路選擇器的輸出端與第一 RAM存儲(chǔ)器的數(shù)據(jù)輸入端連 接;第二多路選擇器的輸出端與第二 RAM存儲(chǔ)器的數(shù)據(jù)輸入端連接;第三多路選擇器的兩 個(gè)輸入端分別與第一 RAM存儲(chǔ)器的輸出端以及0. 5倍的第一 RAM存儲(chǔ)器的輸出端連接;第四多路選擇器的兩個(gè)輸入端分別與第二 RAM存儲(chǔ)器的輸出端以及0. 5倍的第二 RAM存儲(chǔ)器 的輸出端連接;復(fù)數(shù)乘法器的兩個(gè)輸入端分別與第三多路選擇器的輸出端和ROM存儲(chǔ)器的 輸出端連接;第一復(fù)數(shù)加法器的兩個(gè)輸入端分別與第四多路選擇器的輸出端以及-1倍的 復(fù)數(shù)乘法器的輸出;第二復(fù)數(shù)加法器的輸入為第四多路選擇器的輸出以及復(fù)數(shù)乘法器的輸
出o其中,所述第一多路選擇器、第二多路選擇器、第三多路選擇器、第四多路選擇器 均為2選1的多路選擇器。一種實(shí)現(xiàn)FFT/IFFT變換的電路,包括第一多路選擇器,第二多路選擇器,第一 RAM存儲(chǔ)器,第二 RAM存儲(chǔ)器,ROM存儲(chǔ)器,第三多路選擇器,第四多路選擇器,復(fù)數(shù)乘法器, 第一復(fù)數(shù)加法器,第二復(fù)數(shù)加法器;本電路包括兩個(gè)數(shù)據(jù)輸出端和兩個(gè)數(shù)據(jù)輸入端,所述兩 個(gè)數(shù)據(jù)輸出端分別為第三多路選擇器和第四多路選擇器的輸出端,或者第一 RAM存儲(chǔ)器和 第二 RAM存儲(chǔ)器的輸出端;第一多路選擇器的兩個(gè)輸入端分別與本電路的一個(gè)數(shù)據(jù)輸入端和第三多路選擇 器的輸出端連接;第二多路選擇器的兩個(gè)輸入端分別與本電路的另一個(gè)數(shù)據(jù)輸入端和第四 多路選擇器的輸出端連接;第一多路選擇器的輸出端與第一 RAM存儲(chǔ)器的輸入端連接;第 二多路選擇器的輸出端與第二 RAM存儲(chǔ)器的輸入端連接;復(fù)數(shù)乘法器的兩個(gè)輸入端分別與 第一 RAM存儲(chǔ)器的輸出端以及ROM存儲(chǔ)器的輸出端連接;第一復(fù)數(shù)加法器的兩個(gè)輸入端分 別與第二 RAM存儲(chǔ)器的輸出端及-1倍的復(fù)數(shù)乘法器的輸出端連接;第二復(fù)數(shù)加法器的兩個(gè) 輸入端分別與為復(fù)數(shù)乘法器的輸出端及第二 RAM存儲(chǔ)器的輸出端連接;第三多路選擇器的 兩個(gè)輸入端分別與第一復(fù)數(shù)加法器的輸出端及0. 5倍的第一復(fù)數(shù)加法器的輸出端連接;第 四多路選擇器的兩個(gè)輸入端為第二復(fù)數(shù)加法器的輸出端及0. 5倍的第二復(fù)數(shù)加法器的輸 出端連接。其中,所述第一多路選擇器、第二多路選擇器、第三多路選擇器、第四多路選擇器 均為2選1的多路選擇器。一種實(shí)現(xiàn)FFT/IFFT變換的方法,包括(1)根據(jù)FFT/IFFT變換的輸入數(shù)據(jù)的長(zhǎng)度n,確定需要的迭代次數(shù)m、第一 RAM存 儲(chǔ)器和第二 RAM存儲(chǔ)器的深度dl、ROM存儲(chǔ)器的深度d2 ;(2)將所述FFT/IFFT變換的輸入數(shù)據(jù)的前n/2部分存入第二 RAM存儲(chǔ)器中,后n/2 部分存入第一 RAM存儲(chǔ)器中;(3)進(jìn)行m次迭代蝶形運(yùn)算其中,在第1次迭代中,讀取第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器時(shí),采用倒位序的順序進(jìn) 行讀取;迭代結(jié)果寫回第一RAM存儲(chǔ)器和第二RAM存儲(chǔ)器,其中偶數(shù)次蝶形運(yùn)算結(jié)果寫入第 一 RAM存儲(chǔ)器,奇數(shù)次蝶形運(yùn)算結(jié)果寫入第二 RAM存儲(chǔ)器;在第2次到第m-1次迭代中,讀取第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器時(shí),采用正常 位序的順序進(jìn)行讀?。粚懟氐谝?RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器的方式與第一次迭代相同;
在第m次迭代中,讀取第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器時(shí),采用正常位序進(jìn)行讀 取;寫回第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器的位置與讀取位置相同。 其中,所述步驟(1)中,所述迭代次數(shù)m為彡log2(n)的最小整數(shù);第一 RAM存儲(chǔ) 器和第二 RAM存儲(chǔ)器的深度dl = n ;ROM存儲(chǔ)器的深度d2 = n/2或者n*m/2。
其中,所述步驟⑵中,所述FFT/IFFT變換的輸入數(shù)據(jù)的前ηΛ部分/后n/2部 分寫入第二 RAM存儲(chǔ)器/第一 RAM存儲(chǔ)器的高區(qū)間或者低區(qū)間。其中,所述步驟(3)中,在第1次至第m-1次迭代過(guò)程中,若本次迭代數(shù)據(jù)從第二 RAM存儲(chǔ)器/第一 RAM存儲(chǔ)器的高區(qū)間讀出,則本次的迭代結(jié)果寫入相應(yīng)RAM存儲(chǔ)器的低區(qū) 間;若本次迭代數(shù)據(jù)從第二 RAM存儲(chǔ)器/第一 RAM存儲(chǔ)器的低區(qū)間讀出,則本次的迭代結(jié)果 寫入相應(yīng)RAM存儲(chǔ)器的高區(qū)間。本發(fā)明具有以下有益效果1) 一般的FFT變換電路,變換前后,數(shù)據(jù)在RAM中的排列順序方式不同,比如輸 入正常序,輸出倒位序;或輸入倒位序,輸出正常序。硬件在處理這些數(shù)據(jù)時(shí),需要額外進(jìn)行 數(shù)據(jù)的排序,浪費(fèi)了時(shí)間資源。而本發(fā)明在變換前后,數(shù)據(jù)在RAM中的存儲(chǔ)順序相同,即輸 入輸出都是正常序,不需要再進(jìn)行排序,節(jié)省了時(shí)間消耗。2)采用本發(fā)明的電路,輸入數(shù)據(jù)、中間迭代數(shù)據(jù)、輸出數(shù)據(jù)可存放于同一個(gè)RAM 中,不需要使用多個(gè)RAM分別存儲(chǔ),節(jié)省了 RAM消耗。在IC芯片中,RAM會(huì)占用大量的面積, 減少芯片面積可以降低IC的成本。3)本電路在每級(jí)迭代時(shí),可以控制是否要進(jìn)行數(shù)據(jù)右移,即除以2,這不僅可適應(yīng) FFT/IFFT兩種模式,而且可以根據(jù)算法精度需要,做到中間運(yùn)算位寬最低。減少運(yùn)算位寬有 許多好處,比如可以減少加法器、乘法器、RAM的大小,降低電路規(guī)模的消耗,節(jié)省芯片面積。4)節(jié)省芯片面積還有附加的好處降低功率消耗。目前不止終端芯片對(duì)功耗要求 非常苛刻,隨著系統(tǒng)集成度的不斷提高,系統(tǒng)側(cè)對(duì)功耗的要求也越來(lái)越高。5)FFT每級(jí)迭代的關(guān)鍵在于RAM的讀寫地址控制。如果每級(jí)的迭代形式不同,則 每級(jí)的讀寫地址控制都不同。對(duì)于128點(diǎn)FFT來(lái)講,需要7級(jí)迭代,則需要7種控制模式。 本發(fā)明只有最后一級(jí)迭代方式與其他級(jí)的迭代不同,因此只有兩種控制模式,這顯著降低 了電路的復(fù)雜度。6)對(duì)于已有的技術(shù)來(lái)講,將數(shù)據(jù)從正常序排列為倒位序,或?qū)⒌刮恍蚺帕袨檎?序,不止要消耗額外的時(shí)間,也需要額外的電路來(lái)處理。由于本電路不需要這做這個(gè)工作, 因此也不需要額外的電路,這也降低了電路的復(fù)雜度。
圖1為基2同址迭代FFT示意圖;圖2為基2各級(jí)相同迭代FFT示意圖;圖3為本發(fā)明的一種電路結(jié)構(gòu)框圖;圖4為本發(fā)明的另一種電路結(jié)構(gòu)框圖;圖5為本發(fā)明的FFT迭代示意圖;圖6為本發(fā)明的方法流程圖;圖7為具體實(shí)施例128點(diǎn)FFT數(shù)據(jù)輸入存儲(chǔ)示意圖;圖8為具體實(shí)施例128點(diǎn)FFT中間迭代數(shù)據(jù)時(shí)序圖;圖9為具體實(shí)施例128點(diǎn)FFT中間迭代數(shù)據(jù)存儲(chǔ)示意圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明請(qǐng)參閱圖3,該圖所示為本發(fā)明的實(shí)現(xiàn)FFT/IFFT變換的電路,包括多路選擇器 (A),多路選擇器(B),RAM存儲(chǔ)器1 (C),RAM存儲(chǔ)器0 (D),ROM存儲(chǔ)器(E),多路選擇器(F), 多路選擇器(G),復(fù)數(shù)乘法器(H),復(fù)數(shù)加法器(J),復(fù)數(shù)加法器⑷;本電路的輸出為多路選 擇器(F)和多路選擇器(G)的數(shù)據(jù)輸出,或者RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)的數(shù)據(jù) 輸出;本電路有兩個(gè)數(shù)據(jù)輸入端,分別連接到多路選擇器(A)和多路選擇器(B);其中,F(xiàn)FT/IFFT的一個(gè)數(shù)據(jù)輸入端和復(fù)數(shù)加法器(J)的輸出端分別與多路選擇器 (A)的兩個(gè)輸入端相連;FFT/IFFT的另一個(gè)數(shù)據(jù)輸入端和復(fù)數(shù)加法器(K)的輸出端分別與 多路選擇器(B)的兩個(gè)輸入端相連;多路選擇器(A)的輸出端連接RAM存儲(chǔ)器I(C)的數(shù)據(jù) 輸入端;多路選擇器(B)的輸出端連接RAM存儲(chǔ)器O(D)的數(shù)據(jù)輸入端;RAM存儲(chǔ)器I(C)的 輸出端以及0. 5倍的RAM存儲(chǔ)器1 (C)的輸出端分別與多路選擇器(F)的兩個(gè)輸入端相連; RAM存儲(chǔ)器O(D)的輸出端以及0.5倍的RAM存儲(chǔ)器O(D)的輸出端分別與多路選擇器(G) 的兩個(gè)輸入端相連;多路選擇器(F)的輸出端和ROM存儲(chǔ)器(E)的輸出端分別與復(fù)數(shù)乘法 器(H)的兩個(gè)輸入端相連;多路選擇器(G)的輸出端以及-1倍的復(fù)數(shù)乘法器(H)的輸出端 分別與復(fù)數(shù)加法器(J)的兩個(gè)輸入端相連;多路選擇器(G)的輸出端以及復(fù)數(shù)乘法器(H) 的輸出端分別與復(fù)數(shù)加法器(K)的兩個(gè)輸入端相連。該電路中,多路選擇器(F)和多路選擇器(G)也可放在復(fù)數(shù)加法器(J)和復(fù)數(shù)加 法器(K)后面,如附圖4所示。采用圖3或圖4所示電路實(shí)現(xiàn)的FFT迭代如圖5所示。圖 3和圖4中,2選1的多路選擇器為優(yōu)選方式。請(qǐng)參閱圖6,該圖所示為本發(fā)明的實(shí)現(xiàn)FFT/IFFT變換的方法,具體包括以下步驟步驟601、根據(jù)FFT/IFFT變換的長(zhǎng)度n,確定需要迭代的次數(shù)m以及RAM存儲(chǔ)器 1 (C),RAM存儲(chǔ)器0⑶的深度dl和ROM存儲(chǔ)器(E)的深度d2。m為彡Iog2 (η)的最小整數(shù)。dl等于η,即RAM存儲(chǔ)器1 (C)和RAM存儲(chǔ)器0 (D)進(jìn) 行乒乓存儲(chǔ)。ROM(E)中存儲(chǔ)每級(jí)迭代需要的旋轉(zhuǎn)因子。ROM(E)的深度d2可以為n/2,此時(shí) 每級(jí)迭代讀取ROM(E)時(shí),地址生成會(huì)復(fù)雜一些;ROM(E)的深度d2也可以為n*m/2,即分別 保存各級(jí)迭代的旋轉(zhuǎn)因子,此時(shí)每級(jí)迭代讀取ROM(E)時(shí),地址生成很簡(jiǎn)單。步驟602、將FFT/IFFT輸入數(shù)據(jù)的前η/2部分存入RAM存儲(chǔ)器0 (D)中,后η/2部 分存入RAM存儲(chǔ)器1 (C)中,存儲(chǔ)順序分別為0,1,2, ,n/2-l,和η/2, n/2+l, ,η_1。該步驟中,F(xiàn)FT/IFFT輸入數(shù)據(jù)的前η/2部分和后η/2部分可分別存入RAM存儲(chǔ)器0 (D) 和RAM存儲(chǔ)器1 (C)的高區(qū)間,也可分別存入RAM存儲(chǔ)器0⑶和RAM存儲(chǔ)器1 (C)的低區(qū)間,還 可分別存入RAM存儲(chǔ)器0⑶的高區(qū)間/低區(qū)間和RAM存儲(chǔ)器1 (C)的低區(qū)間/高區(qū)間。步驟603、第一次迭代中,讀取RAM存儲(chǔ)器1 (C)和RAM存儲(chǔ)器0 (D)時(shí),采用倒位序 的順序進(jìn)行讀??;迭代結(jié)果寫回MM存儲(chǔ)器1(C)和RAM存儲(chǔ)器0 (D),其中0,2,4,...等偶 數(shù)次蝶形運(yùn)算結(jié)果寫入RAM存儲(chǔ)器1(C),1,3,5,...等奇數(shù)次蝶形運(yùn)算結(jié)果寫入RAM存儲(chǔ) 器0(D)。如果本次迭代數(shù)據(jù)從高區(qū)間讀出,則迭代結(jié)果寫入低區(qū)間,反之則寫入高區(qū)間。步驟604、第2次到第m-1次迭代中,讀取RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)時(shí), 采用正常位序,即地址從0,1,2,3,4...,一直遞增進(jìn)行讀取;寫回RAM存儲(chǔ)器I(C)和RAM存 儲(chǔ)器O(D)的方式與步驟603相同。如果本次迭代數(shù)據(jù)從高區(qū)間讀出,則迭代結(jié)果寫入低區(qū)間,反之則寫入高區(qū)間。步驟605、最后一次迭代m中,讀取RAM存儲(chǔ)器1 (C)和RAM存儲(chǔ)器0 (D)時(shí),采用正 常位序進(jìn)行讀??;寫回RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)的位置與讀取位置相同。本次 迭代由于是原址變換,則迭代結(jié)果可寫入原區(qū)間,也可寫入另外一個(gè)區(qū)間。經(jīng)過(guò)m次迭代后,F(xiàn)FT/IFFT變換結(jié)果即存儲(chǔ)于RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)
中。
下面以128點(diǎn)FFT為例,詳細(xì)講解本發(fā)明的實(shí)現(xiàn)方法。IFFT變換的原理與FFT相同,只是每級(jí)迭代結(jié)果或輸入數(shù)據(jù)除以2。對(duì)于128點(diǎn) IFFT來(lái)講,7級(jí)迭代,共需除以128。在實(shí)際應(yīng)用時(shí),可以跟FFT結(jié)合起來(lái)運(yùn)用,將部分除以2 的處理移動(dòng)到FFT中,比如在128點(diǎn)FFT的7級(jí)迭代的3次迭代中除以2,則只需要在IFFT 的4次迭代中除以2。這樣處理的好處是可以減小數(shù)據(jù)中間運(yùn)算的位寬。在本實(shí)例中,η = 128,所以RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)的深度dl為128, m = log2 (η) = log2(128) = 7,ROM 存儲(chǔ)器(E)的深度 d2 優(yōu)選為 n*m/2 = 128X7/2 = 448。輸入數(shù)據(jù)的前64個(gè)數(shù)據(jù)存入RAM存儲(chǔ)器O(D)中,后64個(gè)數(shù)據(jù)存入RAM存儲(chǔ)器 I(C)中,存儲(chǔ)順序分別為0,1,2, ,63,和64,65, ,127。此處以都存儲(chǔ)于低區(qū)間為例。如 附圖7所示。第一次迭代中,讀取RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)時(shí),采用倒位序進(jìn)行讀取; 迭代結(jié)果寫回RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)的高區(qū)間,其中0,2,4,...等偶數(shù)次蝶 形運(yùn)算結(jié)果寫入RAM存儲(chǔ)器1 (C),1,3,5,...等奇數(shù)次蝶形運(yùn)算結(jié)果寫入RAM存儲(chǔ)器0 (D)。 倒位序讀取時(shí),地址仍先按0,1,2, 的方式遞增,然后將其高低bit逆排,送給RAM存儲(chǔ)器 即可。其實(shí)現(xiàn)時(shí)序如附圖8所示。第2次到第6次迭代中,讀取RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)時(shí),采用正常位 序進(jìn)行讀??;寫回RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)的方式與第一次迭代相同。注意的 是數(shù)據(jù)讀出和寫入的空間不同,要進(jìn)行乒乓切換。讀取RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D) 的順序如圖9所示,每個(gè)時(shí)鐘在RAM存儲(chǔ)器1 (C)和RAM存儲(chǔ)器0 (D)中各讀取一個(gè)數(shù)據(jù)。最后一次迭代,即第7次迭代中,讀取RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器0 (D)時(shí),采 用正常位序進(jìn)行讀??;寫回RAM存儲(chǔ)器I(C)和RAM存儲(chǔ)器O(D)的位置與讀取位置相同,即 可以寫入低區(qū)間的原位置,也可寫入到高區(qū)間的相應(yīng)位置上。本次迭代后,F(xiàn)FT的輸出結(jié)果 寫入RAM存儲(chǔ)器0和RAM存儲(chǔ)器1中。這些輸出數(shù)據(jù)在RAM存儲(chǔ)0和RAM存儲(chǔ)器1中的存 儲(chǔ)順序與FFT變換前輸入數(shù)據(jù)的存儲(chǔ)順序相同。對(duì)于這7次迭代來(lái)講,RAM存儲(chǔ)器的讀寫地址控制總結(jié)如下讀取時(shí),第一次迭代 采用倒位序讀取,其他6次迭代采用正常位序讀取。寫入時(shí),前6次迭代的寫入方式相同, 最后一次迭代與前6次不同。ROM(E)中保存了各級(jí)迭代的旋轉(zhuǎn)因子,每級(jí)迭代讀取ROM(E)時(shí),第一次迭代讀取 地址0 63,第二次迭代讀取64 127,...,第7次讀取384 447即可。在實(shí)際應(yīng)用中, ROM(E)也可以用RAM替代,由軟件配置旋轉(zhuǎn)因子。在本實(shí)例中,選擇在第2/4/6級(jí)迭代中,對(duì)輸入數(shù)據(jù)除以2,則在對(duì)應(yīng)的IFFT中,可 以在1/3/5/7級(jí)迭代中除以2。同時(shí)可以根據(jù)算法精度需要選擇在任意級(jí)除以2。
通過(guò)上面的操作,經(jīng)過(guò)7次迭代后,F(xiàn)FT變換的結(jié)果存儲(chǔ)于RAM存儲(chǔ)器1 (C)和RAM 存儲(chǔ)器O(D)中。當(dāng)然也可以在第7次迭代中,直接輸出給其他模塊。 以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,僅僅參照較佳實(shí)施例對(duì)本發(fā) 明進(jìn)行了詳細(xì)說(shuō)明。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改 或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范 圍當(dāng)中。
權(quán)利要求
一種實(shí)現(xiàn)FFT/IFFT變換的電路,其特征在于,包括第一多路選擇器,第二多路選擇器,第一RAM存儲(chǔ)器,第二RAM存儲(chǔ)器,ROM存儲(chǔ)器,第三多路選擇器,第四多路選擇器,復(fù)數(shù)乘法器,第一復(fù)數(shù)加法器,第二復(fù)數(shù)加法器;本電路包括兩個(gè)數(shù)據(jù)輸出端和兩個(gè)數(shù)據(jù)輸入端,所述兩個(gè)數(shù)據(jù)輸出端分別為第三多路選擇器和第四多路選擇器的輸出端,或者第一RAM存儲(chǔ)器和第二RAM存儲(chǔ)器的輸出端;第一多路選擇器的兩個(gè)輸入端分別與本電路的一個(gè)數(shù)據(jù)輸入端和第一復(fù)數(shù)加法器的輸出端連接;第二多路選擇器的兩個(gè)輸入端分別與本電路的另一個(gè)數(shù)據(jù)輸入端和第二復(fù)數(shù)加法器的輸出端連接;第一多路選擇器的輸出端與第一RAM存儲(chǔ)器的數(shù)據(jù)輸入端連接;第二多路選擇器的輸出端與第二RAM存儲(chǔ)器的數(shù)據(jù)輸入端連接;第三多路選擇器的兩個(gè)輸入端分別與第一RAM存儲(chǔ)器的輸出端以及0.5倍的第一RAM存儲(chǔ)器的輸出端連接;第四多路選擇器的兩個(gè)輸入端分別與第二RAM存儲(chǔ)器的輸出端以及0.5倍的第二RAM存儲(chǔ)器的輸出端連接;復(fù)數(shù)乘法器的兩個(gè)輸入端分別與第三多路選擇器的輸出端和ROM存儲(chǔ)器的輸出端連接;第一復(fù)數(shù)加法器的兩個(gè)輸入端分別與第四多路選擇器的輸出端以及-1倍的復(fù)數(shù)乘法器的輸出;第二復(fù)數(shù)加法器的輸入為第四多路選擇器的輸出以及復(fù)數(shù)乘法器的輸出。
2.如權(quán)利要求1所述的實(shí)現(xiàn)FFT/IFFT變換的電路,其特征在于,所述第一多路選擇器、 第二多路選擇器、第三多路選擇器、第四多路選擇器均為2選1的多路選擇器。
3.一種實(shí)現(xiàn)FFT/IFFT變換的電路,其特征在于,包括第一多路選擇器,第二多路選 擇器,第一 RAM存儲(chǔ)器,第二 RAM存儲(chǔ)器,ROM存儲(chǔ)器,第三多路選擇器,第四多路選擇器,復(fù) 數(shù)乘法器,第一復(fù)數(shù)加法器,第二復(fù)數(shù)加法器;本電路包括兩個(gè)數(shù)據(jù)輸出端和兩個(gè)數(shù)據(jù)輸入 端,所述兩個(gè)數(shù)據(jù)輸出端分別為第三多路選擇器和第四多路選擇器的輸出端,或者第一 RAM 存儲(chǔ)器和第二 RAM存儲(chǔ)器的輸出端;第一多路選擇器的兩個(gè)輸入端分別與本電路的一個(gè)數(shù)據(jù)輸入端和第三多路選擇器的 輸出端連接;第二多路選擇器的兩個(gè)輸入端分別與本電路的另一個(gè)數(shù)據(jù)輸入端和第四多路 選擇器的輸出端連接;第一多路選擇器的輸出端與第一 RAM存儲(chǔ)器的輸入端連接;第二多 路選擇器的輸出端與第二 RAM存儲(chǔ)器的輸入端連接;復(fù)數(shù)乘法器的兩個(gè)輸入端分別與第一 RAM存儲(chǔ)器的輸出端以及ROM存儲(chǔ)器的輸出端連接;第一復(fù)數(shù)加法器的兩個(gè)輸入端分別與 第二 RAM存儲(chǔ)器的輸出端及-1倍的復(fù)數(shù)乘法器的輸出端連接;第二復(fù)數(shù)加法器的兩個(gè)輸入 端分別與為復(fù)數(shù)乘法器的輸出端及第二 RAM存儲(chǔ)器的輸出端連接;第三多路選擇器的兩個(gè) 輸入端分別與第一復(fù)數(shù)加法器的輸出端及0. 5倍的第一復(fù)數(shù)加法器的輸出端連接;第四多 路選擇器的兩個(gè)輸入端為第二復(fù)數(shù)加法器的輸出端及0. 5倍的第二復(fù)數(shù)加法器的輸出端 連接。
4.如權(quán)利要求3所述的實(shí)現(xiàn)FFT/IFFT變換的電路,其特征在于,所述第一多路選擇器、 第二多路選擇器、第三多路選擇器、第四多路選擇器均為2選1的多路選擇器。
5.一種實(shí)現(xiàn)FFT/IFFT變換的方法,其特征在于,包括(1)根據(jù)FFT/IFFT變換的輸入數(shù)據(jù)的長(zhǎng)度n,確定需要的迭代次數(shù)m、第一RAM存儲(chǔ)器 和第二 RAM存儲(chǔ)器的深度dl、ROM存儲(chǔ)器的深度d2 ;(2)將所述FFT/IFFT變換的輸入數(shù)據(jù)的前n/2部分存入第二RAM存儲(chǔ)器中,后n/2部 分存入第一 RAM存儲(chǔ)器中;(3)進(jìn)行m次迭代蝶形運(yùn)算其中,在第1次迭代中,讀取第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器時(shí),采用倒位序的順序進(jìn)行讀取;迭代結(jié)果寫回第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器,其中偶數(shù)次蝶形運(yùn)算結(jié)果寫入第一 RAM存儲(chǔ)器,奇數(shù)次蝶形運(yùn)算結(jié)果寫入第二 RAM存儲(chǔ)器;在第2次到第m-1次迭代中,讀取第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器時(shí),采用正常位序 的順序進(jìn)行讀取;寫回第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器的方式與第一次迭代相同;在第m次迭代中,讀取第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器時(shí),采用正常位序進(jìn)行讀取; 寫回第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器的位置與讀取位置相同。
6.如權(quán)利要求5所述的實(shí)現(xiàn)FFT/IFFT變換的方法,其特征在于,所述步驟(1)中,所 述迭代次數(shù)m為彡Iog2 (η)的最小整數(shù);第一 RAM存儲(chǔ)器和第二 RAM存儲(chǔ)器的深度dl = η ; ROM存儲(chǔ)器的深度d2 = η/2或者n*m/2。
7.如權(quán)利要求5或6所述的實(shí)現(xiàn)FFT/IFFT變換的方法,其特征在于,所述步驟⑵中, 所述FFT/IFFT變換的輸入數(shù)據(jù)的前η/2部分/后η/2部分寫入第二 RAM存儲(chǔ)器/第一 RAM 存儲(chǔ)器的高區(qū)間或者低區(qū)間。
8.如權(quán)利要求7所述的實(shí)現(xiàn)FFT/IFFT變換的方法,其特征在于,所述步驟(3)中,在 第1次至第m-1次迭代過(guò)程中,若本次迭代數(shù)據(jù)從第二 RAM存儲(chǔ)器/第一 RAM存儲(chǔ)器的高 區(qū)間讀出,則本次的迭代結(jié)果寫入相應(yīng)RAM存儲(chǔ)器的低區(qū)間;若本次迭代數(shù)據(jù)從第二RAM存 儲(chǔ)器/第一 RAM存儲(chǔ)器的低區(qū)間讀出,則本次的迭代結(jié)果寫入相應(yīng)RAM存儲(chǔ)器的高區(qū)間。
全文摘要
本發(fā)明公開(kāi)了一種實(shí)現(xiàn)FFT/IFFT變換的電路及方法,方法為1)確定迭代次數(shù)m、第一和第二RAM的深度d1、ROM存儲(chǔ)器的深度d2;2)將待變換的輸入數(shù)據(jù)的前和后n/2部分分別存入第二和第一RAM;3)進(jìn)行m次迭代蝶形運(yùn)算第1次迭代中,讀取第一和第二RAM時(shí)采用倒位序讀取,偶數(shù)次蝶形運(yùn)算結(jié)果寫入第一RAM,奇數(shù)次蝶形運(yùn)算結(jié)果寫入第二RAM;在第2次到第m-1次迭代中,采用正常位序讀取第一和第二RAM,寫回RAM的方式與第一次相同;在第m次迭代中,采用正常位序讀取第一和第二RAM,寫回RAM的位置與讀取位置相同。采用本發(fā)明,可降低電路的復(fù)雜度,保持變換前后RAM內(nèi)數(shù)據(jù)的存儲(chǔ)順序相同,減少額外的時(shí)間消耗。
文檔編號(hào)H03K19/003GK101847986SQ20091010619
公開(kāi)日2010年9月29日 申請(qǐng)日期2009年3月27日 優(yōu)先權(quán)日2009年3月27日
發(fā)明者溫子瑜 申請(qǐng)人:中興通訊股份有限公司