專利名稱:Fft結(jié)構(gòu)和方法
技術(shù)領(lǐng)域:
本公開(kāi)內(nèi)容涉及信號(hào)處理領(lǐng)域,具體涉及用于實(shí)現(xiàn)快速傅立葉變換(FFT)的裝置和方法。
背景技術(shù):
傅立葉變換可用于將時(shí)域信號(hào)映射至其頻域?qū)?yīng)部分。相反地,傅立葉反變換可用于將頻域信號(hào)映射至其時(shí)域?qū)?yīng)部分。傅立葉變換對(duì)于時(shí)域信號(hào)的頻譜分析尤其有用。此外,通信系統(tǒng),如實(shí)現(xiàn)正交頻分復(fù)用(OFDM)的系統(tǒng),可利用傅立葉變換的性質(zhì),從多個(gè)線性分布的音調(diào)生成多個(gè)時(shí)域符號(hào),并從這些符號(hào)中恢復(fù)出頻率。
采樣數(shù)據(jù)系統(tǒng)可實(shí)現(xiàn)離散傅立葉變換(DFT),以使處理器對(duì)預(yù)定數(shù)目的采樣進(jìn)行變換。然而,DFT計(jì)算強(qiáng)度大,要求大量的處理能力。進(jìn)行N點(diǎn)DFT所要求的計(jì)算量級(jí)是N2,表示為O(N2)。很多系統(tǒng)中,專用于進(jìn)行DFT的處理能力量會(huì)減小可用于進(jìn)行其他系統(tǒng)操作的處理能力量。此外,實(shí)時(shí)操作的系統(tǒng),在分配用于計(jì)算的時(shí)間內(nèi),可能沒(méi)有足夠的處理能力來(lái)進(jìn)行預(yù)期大小的DFT。
快速傅立葉變換(FFT)是傅立葉變換的離散實(shí)現(xiàn),和DFT實(shí)現(xiàn)相比,其以運(yùn)算明顯相對(duì)較少的方法來(lái)實(shí)現(xiàn)傅立葉變換。依賴于具體實(shí)現(xiàn),進(jìn)行基r的FFT所要求的計(jì)算量通常量級(jí)為N×logr(N),表示為O(Nlogr(N))。
過(guò)去,執(zhí)行FFT的系統(tǒng)可采用通用處理器或單獨(dú)的數(shù)字信號(hào)處理器(DSP)來(lái)進(jìn)行FFT運(yùn)算。然而,系統(tǒng)逐步結(jié)合專門用于實(shí)現(xiàn)系統(tǒng)所要求的大部分功能的專用集成電路(ASIC)。在ASIC上實(shí)現(xiàn)系統(tǒng)功能使結(jié)合多個(gè)集成電路所需的芯片數(shù)目和粘合邏輯都最小化。減少的芯片數(shù)目通常使得設(shè)備有較小的物理封裝,而不犧牲任何功能。
ASIC管芯內(nèi)的面積有限,所以,在ASIC上實(shí)現(xiàn)的功能塊需要在大小、速度和功率方面都進(jìn)行優(yōu)化,以提高ASIC總體設(shè)計(jì)的功能。專用于FFT的資源量應(yīng)該最少化,以限制專用于FFT的可用資源的百分比。然而,需要將足夠的資源專用于FFT,以保證進(jìn)行變換的速度足以支持系統(tǒng)需求。此外,F(xiàn)FT模塊消耗的功率量需要降到最低,以使供電需求和相關(guān)的散熱最小。因此,需要優(yōu)化在集成電路如ASIC中實(shí)現(xiàn)的FFT結(jié)構(gòu)。
發(fā)明內(nèi)容
FFT硬件實(shí)現(xiàn)和方法,提供了高效的FFT處理,同時(shí)使集成電路(IC)上所需的管芯面積最小。該FFT硬件可用于實(shí)現(xiàn)N點(diǎn)FFT,其中N=rn是基數(shù)(r)的函數(shù)。該硬件實(shí)現(xiàn)包括一個(gè)采樣存儲(chǔ)器,該采樣存儲(chǔ)器有N/r行,每行存儲(chǔ)r個(gè)采樣。用于存儲(chǔ)旋轉(zhuǎn)因子的存儲(chǔ)器每行有k個(gè)旋轉(zhuǎn)因子,其中0<k<r表示可用的復(fù)數(shù)旋轉(zhuǎn)乘法器的數(shù)目。一個(gè)FFT模塊從存儲(chǔ)器讀取r行(行地址是FFT級(jí)的函數(shù)),對(duì)每行的采樣進(jìn)行同址r點(diǎn)復(fù)數(shù)FFT,然后進(jìn)行旋轉(zhuǎn)乘法(最后一級(jí)除外),并將結(jié)果寫入大小為r×r的矩陣存儲(chǔ)器(寄存器庫(kù))。大小為r×r的矩陣存儲(chǔ)器的內(nèi)容,以轉(zhuǎn)置的次序,或者也可以選擇不轉(zhuǎn)置,寫回到采樣存儲(chǔ)器。對(duì)每一級(jí)重復(fù)這一操作N/r2次,然后對(duì)n級(jí)進(jìn)行重復(fù),以產(chǎn)生N點(diǎn)FFT。
一方面,公開(kāi)了一種用于確定rn點(diǎn)、以r為基數(shù)的FFT的方法。該方法包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器,所述存儲(chǔ)器每行有r個(gè)采樣;從所述存儲(chǔ)器讀取r行;確定r次以r為基數(shù)的部分FFT,以產(chǎn)生r2個(gè)部分FFT值;對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子,以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值;將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊;對(duì)所述寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值;將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器;根據(jù)存儲(chǔ)器的內(nèi)容,確定FFT值。
另一方面,公開(kāi)了一種用于確定rn點(diǎn)、以r為基數(shù)的FFT的方法。該方法包括將要進(jìn)行變換的采樣寫入每行r個(gè)采樣的存儲(chǔ)器,初始化一個(gè)級(jí)值,初始化一個(gè)塊值,處理一個(gè)FFT級(jí),重復(fù)處理FFT級(jí)n次,根據(jù)存儲(chǔ)器的內(nèi)容確定FFT的值。該處理FFT級(jí)包括a)根據(jù)級(jí)值確定塊數(shù),b)從存儲(chǔ)器獲取r行,c)確定r個(gè)r基部分FFT以產(chǎn)生r2個(gè)部分FFT值,d)對(duì)r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子以產(chǎn)生r2個(gè)加權(quán)的部分FFT值,e)對(duì)寄存器塊中的r2個(gè)加權(quán)的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置的值,f)將轉(zhuǎn)置的值寫入存儲(chǔ)器,g)根據(jù)塊和級(jí)的值重復(fù)步驟b)到f),并增加級(jí)的值。
另一方面,公開(kāi)了一種用于確定rn點(diǎn)、以r為基數(shù)。該方法包括將要進(jìn)行變換的采樣寫入每行r個(gè)采樣的存儲(chǔ)器,a)初始化一個(gè)級(jí)計(jì)數(shù)器,b)初始化一個(gè)塊計(jì)數(shù)器以及一個(gè)部分FFT計(jì)數(shù)器,c)根據(jù)級(jí)、塊和部分FFT計(jì)數(shù)器的值,從存儲(chǔ)器獲取r行,d)確定r個(gè)r基部分FFT以產(chǎn)生r2個(gè)部分FFT值,e)對(duì)r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子以產(chǎn)生r2個(gè)加權(quán)的部分FFT值,f)將r2個(gè)加權(quán)的部分FFT值寫入寄存器塊,g)對(duì)寄存器塊中的r2個(gè)加權(quán)的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置的值,i)將轉(zhuǎn)置的值寫入存儲(chǔ)器,j)更新部分FFT計(jì)數(shù)器和塊計(jì)數(shù)器,k)根據(jù)塊計(jì)數(shù)器和部分FFT計(jì)數(shù)器的值重復(fù)步驟c)到j(luò)),l)更新級(jí)計(jì)數(shù)器的值,m)根據(jù)級(jí)計(jì)數(shù)器的值重復(fù)步驟b)到k),以及根據(jù)存儲(chǔ)器的內(nèi)容確定FFT的值。
另一方面,公開(kāi)了一種rn點(diǎn)、以r為基數(shù)的FFT裝置。該裝置包括,存儲(chǔ)器,用于存儲(chǔ)每個(gè)存儲(chǔ)器行r個(gè)采樣的rn個(gè)采樣;FFT引擎,用于對(duì)來(lái)自存儲(chǔ)器的r行個(gè)采樣進(jìn)行r個(gè)r點(diǎn)FFT部分FFT;寄存器庫(kù),其有r2個(gè)r行r列的寄存器,用于接收來(lái)自FFT引擎的輸出;以及轉(zhuǎn)置模塊,用于對(duì)寄存器庫(kù)中的值進(jìn)行轉(zhuǎn)置,并將轉(zhuǎn)置后的值寫入存儲(chǔ)器中FFT引擎處理的r行。
本公開(kāi)內(nèi)容的特點(diǎn)、目的和優(yōu)點(diǎn)通過(guò)以下結(jié)合附圖和具體實(shí)施例的詳細(xì)描述將變得顯而易見(jiàn),其中相同的組件有相同的參考編號(hào)圖1是8點(diǎn)、以為2基數(shù)的FFT的流程圖。
圖2是FFT模塊的實(shí)施例的功能框圖。
圖3A-3D是FFT過(guò)程的實(shí)施例流程圖。
圖4是8點(diǎn)、以為2基數(shù)的FFT的一個(gè)實(shí)施例的多級(jí)的存儲(chǔ)器內(nèi)容的功能框圖。
圖5A-5B是采用這里公布的FFT模塊的OFDM系統(tǒng)組件的功能框圖。
具體實(shí)施例方式
本申請(qǐng)公布了一種適用于FFT或反向FFT(IFFT)的硬件結(jié)構(gòu),集成有該FFT模塊的設(shè)備,以及執(zhí)行FFT或IFFT的方法。該FFT結(jié)構(gòu)是通用的,從而能夠?qū)崿F(xiàn)任何基數(shù)的FFT。該FFT結(jié)構(gòu)使得用于執(zhí)行FFT的循環(huán)數(shù)目最小,同時(shí)保持小的芯片面積。具體而言,該FFT結(jié)構(gòu)配置存儲(chǔ)器和寄存器空間,以便于對(duì)執(zhí)行同址(in place)FFT時(shí)所進(jìn)行的存儲(chǔ)器存取進(jìn)行優(yōu)化。該FFT結(jié)構(gòu)提供額外的實(shí)施靈活性,根據(jù)具體的設(shè)計(jì)限制,允許不同的基數(shù)和復(fù)數(shù)乘法器數(shù)目。在對(duì)速度敏感而對(duì)管芯面積不甚敏感的實(shí)施中,該FFT結(jié)構(gòu)可用額外的復(fù)數(shù)乘法器和較高的基數(shù)來(lái)實(shí)現(xiàn)。在對(duì)管芯面積較敏感的實(shí)施中,可以降低基數(shù)和復(fù)數(shù)乘法器的數(shù)目。
該FFT結(jié)構(gòu)包括一個(gè)采樣存儲(chǔ)器,其存儲(chǔ)器行寬足以存儲(chǔ)數(shù)量等于FFT基數(shù)的采樣。因此,該采樣寄存器有N/r行,每行r個(gè)采樣,其中N表示FFT的大小,r表示FFT的基數(shù)。一個(gè)FFT塊用于從存儲(chǔ)器獲取多行,并對(duì)每行的采樣進(jìn)行r點(diǎn)FFT。FFT塊獲取數(shù)量等于FFT基數(shù)的行,但是對(duì)每單個(gè)行的采樣進(jìn)行r點(diǎn)FFT。
FFT塊將r點(diǎn)FFT的結(jié)果寫入一個(gè)寄存器庫(kù),其用于存儲(chǔ)r2個(gè)采樣。和寄存器庫(kù)以及旋轉(zhuǎn)因子存儲(chǔ)器相連的復(fù)數(shù)乘法器用合適的旋轉(zhuǎn)因子對(duì)FFT結(jié)果進(jìn)行加權(quán)。加權(quán)后的因子返回同一寄存器。
先對(duì)寄存器庫(kù)的內(nèi)容進(jìn)行轉(zhuǎn)置,然后將其寫入采樣存儲(chǔ)器中原來(lái)的行。寄存器庫(kù)中數(shù)值的轉(zhuǎn)置使得FFT可同址進(jìn)行,其通過(guò)保持采樣存儲(chǔ)器中同一行的FFT采樣的關(guān)系來(lái)實(shí)現(xiàn)。采樣存儲(chǔ)器中的采樣經(jīng)過(guò)獲取、處理并返回給采樣存儲(chǔ)器,這個(gè)過(guò)程持續(xù)的級(jí)數(shù)足以進(jìn)行N點(diǎn)FFT變換。
首先,在討論所公開(kāi)的結(jié)構(gòu)中基于硬件的折衷前,有必要對(duì)不同F(xiàn)FT算法的算術(shù)復(fù)雜度進(jìn)行研究。我們研究了基數(shù)為2、4、8、16的庫(kù)利-圖基(Cooley-Tukey)算法和分裂基算法。沒(méi)有考慮基于質(zhì)因子(prime factor)的算法,因?yàn)槠浣Y(jié)構(gòu)是不規(guī)則的,并且對(duì)量化更敏感,但是,這種算法的復(fù)雜度可能低于基于庫(kù)利-圖基的算法。
在此,依據(jù)所需的實(shí)際實(shí)數(shù)乘法和加法的次數(shù),來(lái)估計(jì)算法的復(fù)雜度。假定復(fù)數(shù)乘法等于四次實(shí)數(shù)乘法和兩次實(shí)數(shù)加法。
基數(shù)為r的算法所需的實(shí)數(shù)乘法和加法的次數(shù)可以這樣確定,這種算法把rn點(diǎn)DFT分裂為r個(gè)rn-1點(diǎn)DFT,為此要進(jìn)行(rn-1-1)·(r-1)次旋轉(zhuǎn)乘法,并由rn-1次r點(diǎn)FFT作進(jìn)一步處理。圖1是示范該結(jié)構(gòu)的8點(diǎn)、以2為基數(shù)的FFT的信號(hào)流示例。
用Mnr表示rn點(diǎn)FFT所需的實(shí)數(shù)乘法次數(shù),用Anr表示其所需的實(shí)數(shù)加法次數(shù),則處理復(fù)雜度由下面的遞歸式定義Mnr=rMn-1r+(rn-1-1)·(r-1)·4+rn-1·M1r]]>Anr=rAn-1r+(rn-1-1)·(r-1)·2+rn-1·A1r]]>初始條件為M14=0,M18=4,M116=24]]>M12=M22=0,M32=4]]>A12=4,A14=16,A18=52,A116=144]]>用類似的方式估計(jì)分裂基算法的復(fù)雜度。分裂基算法把N點(diǎn)FFT分裂為一個(gè)大小為N/2的FFT和兩個(gè)大小為N/4的FFT,為此必須計(jì)算一些旋轉(zhuǎn)乘法。該算法的復(fù)雜度由下面遞歸式定義Mns=Mn-1s+2Mn-2s+(2n-1-1)·4+4]]>Ans=Mns2+n·2n+1]]>
M1s=M2s=0]]>根據(jù)這些遞歸式,可以列出和比較幾種常用FFT算法的復(fù)雜度。表1和表2匯總了常用FFT算法的復(fù)雜度。這兩個(gè)表中空的單元格表示未進(jìn)行估計(jì)的配置。
表1不同F(xiàn)FT算法的實(shí)數(shù)乘法
表2不同F(xiàn)FT算法的實(shí)數(shù)加法
表1和2所示的算術(shù)復(fù)雜度不能完全反映用不同算法實(shí)現(xiàn)FFT的硬件要求。還需要考慮從存儲(chǔ)器存取數(shù)據(jù)和旋轉(zhuǎn)因子及將數(shù)據(jù)寫入存儲(chǔ)器的要求。下表示出了基數(shù)大小不同的不同算法所要求的存儲(chǔ)器存取次數(shù)(只計(jì)算數(shù)據(jù)存取)。數(shù)據(jù)存取的次數(shù)計(jì)算方式如下對(duì)于N點(diǎn)FFT/IFFT的基數(shù)r實(shí)現(xiàn),總的級(jí)數(shù)是logr(N),每級(jí)需要2N次讀和寫操作,結(jié)果是,2Nlogr(N)次存儲(chǔ)器復(fù)數(shù)采樣存取操作。
表3不同F(xiàn)FT算法的存儲(chǔ)器存取
對(duì)FFT硬件實(shí)現(xiàn)的分析表明,循環(huán)方面主要的運(yùn)算開(kāi)支花在了存儲(chǔ)器存取上。存儲(chǔ)器存取的次數(shù)隨著基數(shù)的增加而減小。然而,對(duì)許多應(yīng)用而言,存取一個(gè)復(fù)數(shù)采樣/循環(huán)可能不夠。一個(gè)簡(jiǎn)單的例子說(shuō)明了潛在的問(wèn)題。
考慮在符號(hào)周期為4μs、時(shí)鐘速率為40MHZ的正交頻分復(fù)用(OFDM)系統(tǒng)中實(shí)現(xiàn)64點(diǎn)FFT這一問(wèn)題。這樣的系統(tǒng)可以是,例如,時(shí)鐘為40MHZ的IEEE 802.11a系統(tǒng)。4μs的OFDM符號(hào)周期和40MHZ時(shí)鐘速率結(jié)合意味著符號(hào)間有160個(gè)循環(huán)。
首先,研究用基數(shù)為2的算法實(shí)現(xiàn)64點(diǎn)FFT所需的運(yùn)算量。如上表所示,所需的總存儲(chǔ)器存取次數(shù)是768。因此,使用每個(gè)循環(huán)只有一次采樣讀和寫的存儲(chǔ)器來(lái)實(shí)現(xiàn)基數(shù)為2的算法最少需要768個(gè)循環(huán),這大約是可用于計(jì)算的循環(huán)的5倍。分裂基算法也有同樣的問(wèn)題,其需要的存儲(chǔ)器存取次數(shù)與基數(shù)為2的算法相當(dāng)。
然而,對(duì)于使用基數(shù)為4的64點(diǎn)FFT,存儲(chǔ)器存取的次數(shù)是384。這種情況較好,但是仍遠(yuǎn)大于可用的循環(huán)數(shù)。進(jìn)一步增加FFT算法的基數(shù),隨著FFT的級(jí)數(shù)下降,所需的存儲(chǔ)器存取次數(shù)減少。
可以通過(guò)使用具備并行讀寫能力的存儲(chǔ)器來(lái)獲得任何基數(shù)算法的高速實(shí)現(xiàn)。對(duì)一個(gè)特定的基數(shù)為r的算法,在一個(gè)周期可存取(無(wú)論是讀還是寫)r個(gè)值的存儲(chǔ)器結(jié)構(gòu)會(huì)提高算法的吞吐量。概念上而言,并行存取可以理解成RAM每行有r個(gè)字。然而,為了獲得這種存儲(chǔ)器結(jié)構(gòu)的最大益處,計(jì)算r點(diǎn)FFT所需的r個(gè)采樣,在算法的每一級(jí),都必須位于同一行。這可以如下實(shí)現(xiàn)讀取采樣存儲(chǔ)器的r行,計(jì)算r個(gè)r點(diǎn)FFT,將結(jié)果轉(zhuǎn)置后寫入采樣存儲(chǔ)器。轉(zhuǎn)置操作可以在有r2個(gè)寄存器的矩陣存儲(chǔ)器中進(jìn)行。隨著基數(shù)r的增加,F(xiàn)FT引擎的大小和矩陣存儲(chǔ)器的大小也增加。對(duì)于特定的實(shí)現(xiàn),可以在面積大小和速度間進(jìn)行折衷。
圖2是FFT模塊200的實(shí)施例的功能框圖。FFT模塊200可以通過(guò)很小的改變而作為IFFT模塊使用,這是因?yàn)檎儞Q和反變換具有對(duì)稱性。FFT模塊200可以實(shí)現(xiàn)在單個(gè)IC管芯上,也可以作為ASIC的一部分實(shí)現(xiàn)?;蛘撸現(xiàn)FT模塊200可以用若干個(gè)相互通信的組件實(shí)現(xiàn)。此外,F(xiàn)FT模塊200不限于特定的FFT結(jié)構(gòu)。例如,F(xiàn)FT模塊200可用于進(jìn)行時(shí)間抽取或頻率抽取FFT。
FFT模塊包括存儲(chǔ)器210,其用于存儲(chǔ)要進(jìn)行變換的采樣。此外,因?yàn)镕FT模塊用于進(jìn)行同址計(jì)算的變換,所以,存儲(chǔ)器210用于存儲(chǔ)FFT每級(jí)的結(jié)果和FFT模塊200的輸出。
存儲(chǔ)器210的大小可部分地基于FFT的大小和FFT的基數(shù)的大小來(lái)選擇。對(duì)于以r為基數(shù)的N點(diǎn)FFT,其中N=rn,存儲(chǔ)器210的大小選擇為在rn-1行存儲(chǔ)N個(gè)采樣,每行r個(gè)采樣。存儲(chǔ)器210可配置為寬度等于每個(gè)采樣的比特?cái)?shù)乘以每行的采樣數(shù)。存儲(chǔ)器210通常以實(shí)部和虛部的形式存儲(chǔ)采樣。因此,對(duì)于基數(shù)為2的FFT,存儲(chǔ)器配置為每行存儲(chǔ)兩個(gè)采樣,并且可把采樣存儲(chǔ)為第一采樣的實(shí)部、第一采樣的虛部、第二采樣的實(shí)部、第二采樣的虛部。如果給采樣的每個(gè)部分分配10比特,則存儲(chǔ)器210每行使用40比特。存儲(chǔ)器可以是速度足夠以支持模運(yùn)算的隨機(jī)存取存儲(chǔ)器(RAM)。
存儲(chǔ)器210和FFT引擎220連接,F(xiàn)FT引擎220用于進(jìn)行r點(diǎn)FFT。FFT模塊200可以用于執(zhí)行和圖1所示的結(jié)構(gòu)相似的FFT,其中,使用旋轉(zhuǎn)因子的加權(quán)在部分FFT后進(jìn)行,故也稱為蝶形FFT。這樣的結(jié)構(gòu)使得FFT引擎220可以使用最小數(shù)目的乘法器,因此降低了FFT引擎220的大小和復(fù)雜度。FFT引擎220可以從存儲(chǔ)器210獲得一行,并對(duì)該行的采樣進(jìn)行FFT。因此,F(xiàn)FT引擎220可在一個(gè)循環(huán)中讀取所有采樣,以進(jìn)行r點(diǎn)FFT。例如,F(xiàn)FT引擎220可以是流水線式的FFT引擎,并能夠在不同的時(shí)鐘相位上操作行內(nèi)的值。
FFT引擎220的輸出端和寄存器庫(kù)230連接。寄存器庫(kù)230根據(jù)FFT的基數(shù),存儲(chǔ)若干個(gè)數(shù)值。在一個(gè)實(shí)施例中,存儲(chǔ)器庫(kù)230可存儲(chǔ)r2個(gè)值。和采樣的情況一樣,存儲(chǔ)器庫(kù)中存儲(chǔ)的值通常是復(fù)數(shù)值,其具有實(shí)部和虛部。
寄存器庫(kù)230用于臨時(shí)存儲(chǔ),但是其可快速存取,提供了無(wú)需通過(guò)地址線訪問(wèn)的專有存儲(chǔ)區(qū)域。例如,存儲(chǔ)器庫(kù)230的一個(gè)存儲(chǔ)器中的每個(gè)比特可用觸發(fā)器來(lái)實(shí)現(xiàn),因此,和大小相當(dāng)?shù)拇鎯?chǔ)器位置相比,寄存器使用了更多的管芯面積。因?yàn)樵L問(wèn)寄存器空間實(shí)際上沒(méi)有循環(huán)代價(jià),特殊的FFT模塊200的實(shí)現(xiàn)可以犧牲速度來(lái)獲得管芯面積,其通過(guò)控制寄存器庫(kù)230和存儲(chǔ)器210的大小來(lái)實(shí)現(xiàn)。
寄存器庫(kù)230的大小可以優(yōu)選為可存儲(chǔ)r2個(gè)值,因此,對(duì)值的轉(zhuǎn)置可以直接進(jìn)行,例如,通過(guò)按行寫入值和按列讀出值來(lái)實(shí)現(xiàn),或者反之。值轉(zhuǎn)置用于對(duì)FFT的各級(jí)維持存儲(chǔ)器210中的FFT值的行對(duì)準(zhǔn)。
第二存儲(chǔ)器240用于存儲(chǔ)對(duì)FFT引擎220的輸出進(jìn)行加權(quán)的旋轉(zhuǎn)因子。在一些實(shí)施例中,F(xiàn)FT引擎220可以在計(jì)算部分FFT輸出(蝶形FFT)時(shí)直接使用旋轉(zhuǎn)因子??梢詫?duì)任何FFT預(yù)先確定旋轉(zhuǎn)因子。因此,第二存儲(chǔ)器240可以是只讀存儲(chǔ)器(ROM)、非揮發(fā)性存儲(chǔ)器、非揮發(fā)性RAM或者可編程閃存,但第二存儲(chǔ)器240也可以是RAM或其他類型的存儲(chǔ)器。第二存儲(chǔ)器240的大小可選擇為存儲(chǔ)N點(diǎn)FFT的N×(n-1)個(gè)復(fù)數(shù)旋轉(zhuǎn)因子,其中N=rn。一些旋轉(zhuǎn)因子,如1、-1、j或-j可以從第二存儲(chǔ)器240中省略。此外,同一個(gè)值的副本也可以從第二存儲(chǔ)器240中省略。因此,第二存儲(chǔ)器240中的旋轉(zhuǎn)因子的數(shù)目可以小于N×(n-1)。一種高效的實(shí)現(xiàn)可以利用這樣一個(gè)事實(shí),F(xiàn)FT所有級(jí)的旋轉(zhuǎn)因子都是FFT第一級(jí)或最后一級(jí)使用的旋轉(zhuǎn)因子的子集,這取決于FFT用頻率還是時(shí)間算法來(lái)實(shí)現(xiàn)抽取。
復(fù)數(shù)乘法器250a-250b連接到寄存器庫(kù)與第二存儲(chǔ)器240。復(fù)數(shù)乘法器250a-250b用來(lái)自第二存儲(chǔ)器240的合適旋轉(zhuǎn)因子,對(duì)存儲(chǔ)在寄存器庫(kù)230中的FFT引擎220的輸出進(jìn)行加權(quán)。圖2所示的實(shí)施例包括兩個(gè)復(fù)數(shù)乘法器250a和250b,然而,可以根據(jù)管芯面積和速度的折衷來(lái)選擇FFT模塊200中包括的復(fù)數(shù)乘法器(如250a)的數(shù)目。為了加快FFT運(yùn)算,可以在管芯上實(shí)現(xiàn)較大數(shù)目的復(fù)數(shù)乘法器。然而,增大速度是以犧牲管芯面積為代價(jià)的。如果管芯面積很重要,可以減少?gòu)?fù)數(shù)乘法器數(shù)目。通常,當(dāng)實(shí)現(xiàn)r點(diǎn)FFT引擎220時(shí),所采用的復(fù)數(shù)乘法器的數(shù)目不會(huì)大于r-1,這是因?yàn)閞-1個(gè)復(fù)數(shù)乘法器足以并行地將所有非無(wú)關(guān)緊要旋轉(zhuǎn)因子應(yīng)用于FFT引擎220的輸出。舉例來(lái)說(shuō),用于進(jìn)行8點(diǎn)、以2為基數(shù)的FFT的FFT模塊200,如圖1所示的FFT模塊,可以實(shí)現(xiàn)兩個(gè)復(fù)數(shù)乘法器,然而也可以只實(shí)現(xiàn)一個(gè)復(fù)數(shù)乘法器。
每個(gè)復(fù)數(shù)乘法器,如250a,在每次乘法運(yùn)算期間,對(duì)來(lái)自寄存器庫(kù)230的單個(gè)值和存儲(chǔ)在第二存儲(chǔ)器240中相應(yīng)的旋轉(zhuǎn)因子進(jìn)行運(yùn)算。如果復(fù)數(shù)乘法器的數(shù)目小于要進(jìn)行的復(fù)數(shù)乘法的次數(shù),則復(fù)數(shù)乘法器就對(duì)來(lái)自寄存器庫(kù)230的多個(gè)FFT值進(jìn)行運(yùn)算。
復(fù)數(shù)乘法器(例如250a)的輸出寫入寄存器庫(kù)230,通常所寫的位置和為復(fù)數(shù)乘法器提供輸入的位置相同。因此,在復(fù)數(shù)乘法以后,寄存器庫(kù)的內(nèi)容表示FFT級(jí)輸出,無(wú)論復(fù)數(shù)乘法器是在FFT引擎220中實(shí)現(xiàn),還是與如圖2所示的寄存器庫(kù)相關(guān),這一輸出都是相同的。
轉(zhuǎn)置模塊232和寄存器庫(kù)230連接,用來(lái)對(duì)寄存器庫(kù)230中的內(nèi)容進(jìn)行轉(zhuǎn)置。轉(zhuǎn)置模塊232可以通過(guò)重新排列寄存器的值來(lái)對(duì)寄存器內(nèi)容進(jìn)行轉(zhuǎn)置。或者,裝置模塊232也可以在從寄存器庫(kù)230中讀出其內(nèi)容時(shí)轉(zhuǎn)置寄存器塊230的內(nèi)容。寄存器塊230的內(nèi)容在寫回為FFT引擎220提供輸入的存儲(chǔ)器210中的行之前進(jìn)行轉(zhuǎn)置。對(duì)寄存器庫(kù)230值進(jìn)行轉(zhuǎn)置維持FFT所有級(jí)的FFT輸入的行結(jié)構(gòu)。
處理器262和指令存儲(chǔ)器264相結(jié)合,可以用于處理模塊間的數(shù)據(jù)流,并可進(jìn)行圖2所示的一個(gè)或多個(gè)塊中的一些或全部操作。例如,指令存儲(chǔ)器264可以將一個(gè)或多個(gè)處理器可用指令作為軟件存儲(chǔ),從而控制處理器262操作FFT模塊200中的數(shù)據(jù)。
處理器262和指令存儲(chǔ)器264可以作為FFT模塊200的一部分來(lái)實(shí)現(xiàn),也可以外置于FFT模塊200?;蛘?,處理器262可以外置于FFT模塊200,但指令存儲(chǔ)器264作為FFT模塊200的一部分,例如,也可以共用用于采樣的存儲(chǔ)器210,或者存儲(chǔ)旋轉(zhuǎn)因子的第二存儲(chǔ)器240。
圖2示出的實(shí)施例給出了在算法的基數(shù)變化時(shí)在速度和面積間的折衷。對(duì)于實(shí)現(xiàn)N=rv點(diǎn)FFT,所需要的循環(huán)數(shù)可以估計(jì)如下Ncycles≈(Nr2·v)·r·NFFT]]>其中, rNFFT=rX對(duì)r個(gè)元素的矢量進(jìn)行一次讀出、FFT、旋轉(zhuǎn)乘法和寫入所花費(fèi)的時(shí)間。
假定NFFT是不依賴于基數(shù)的常數(shù)。循環(huán)次數(shù)以1/r(O(1/r))的量級(jí)遞減。隨著轉(zhuǎn)置所需的寄存器數(shù)增加到r2,實(shí)現(xiàn)需要的面積以O(shè)(r2)的量級(jí)遞增。寄存器的數(shù)目和實(shí)現(xiàn)寄存器所需的面積支配N比較大時(shí)的面積。
可以選擇提供期望速度的最小基數(shù),來(lái)實(shí)現(xiàn)不同情況下的FFT。如果模塊的速度足夠,那么,使基數(shù)最小,會(huì)使得用于實(shí)現(xiàn)模塊的管芯面積最小。
圖3A-3D是FFT過(guò)程300的實(shí)施例流程圖。例如,過(guò)程300處理可以用如圖2所示的FFT模塊200來(lái)實(shí)現(xiàn)?;蛘?,過(guò)程300可以實(shí)現(xiàn)為一個(gè)或多個(gè)處理器可用指令,并由處理器結(jié)合存儲(chǔ)器來(lái)執(zhí)行。在其他實(shí)施例中,過(guò)程300的一些部分可由硬件實(shí)現(xiàn),而其他部分由軟件實(shí)現(xiàn)。
過(guò)程300從塊302開(kāi)始,在此,利用如一個(gè)處理器的FFT模塊,把要進(jìn)行變換的數(shù)據(jù)寫入一個(gè)存儲(chǔ)器,該存儲(chǔ)器的寬度足以至少存儲(chǔ)與FFT基數(shù)相等數(shù)目的采樣。例如,如果FFT模塊要進(jìn)行如圖1所示的8點(diǎn)、以2為基數(shù)的FFT,則存儲(chǔ)器設(shè)置為4行2列,每列可以存儲(chǔ)兩個(gè)復(fù)數(shù)采樣。處理器可以,例如,從第一列開(kāi)始,將采樣按列寫入存儲(chǔ)器,第一列寫滿后繼續(xù)到第二列。
一旦采樣數(shù)據(jù)寫入存儲(chǔ)器后,F(xiàn)FT模塊就轉(zhuǎn)到塊304,這里處理器對(duì)級(jí)計(jì)數(shù)器進(jìn)行初始化。如前文所述及圖1所示,N=rn點(diǎn)FFT包括n級(jí)。在FFT的開(kāi)始時(shí),處理器將級(jí)計(jì)數(shù)器初始化為1。級(jí)計(jì)數(shù)器初始化完成后,F(xiàn)FT模塊轉(zhuǎn)到塊310,處理器初始化部分FFT和塊計(jì)數(shù)器。例如,可以將部分FFT和塊計(jì)數(shù)器初始化為0。
如圖1的例子所示,在FFT的每一級(jí)進(jìn)行的部分FFT的次數(shù)是常數(shù),但是,記錄每次FFT運(yùn)算所涉及的采樣標(biāo)號(hào)的計(jì)數(shù)器根據(jù)級(jí)而改變。
部分FFT和塊計(jì)數(shù)器初始化完成后,F(xiàn)FT模塊轉(zhuǎn)到塊312,在此,處理器初始化行地址指針。行地址指針確定由FFT引擎操作的存儲(chǔ)器的行。例如,處理器可以將行地址指針的值確定為prow=ck·rn-k+fk。
FFT模塊轉(zhuǎn)到塊314,并根據(jù)行地址指針的值從采樣存儲(chǔ)器讀出行。例如,處理器可以從采樣存儲(chǔ)器中讀出行,并將其寫入FFT引擎中的位置。處理器可以讀取由地址指針確定的行αi=prow+i.rn-k-1,i=0…(r-1),其中n表示總級(jí)數(shù),k表示級(jí)計(jì)數(shù)器。
一旦將行讀入到FFT引擎后,F(xiàn)FT模塊就轉(zhuǎn)到塊320,并計(jì)算所獲得的采樣的r點(diǎn)FFT。該實(shí)施例中FFT引擎進(jìn)行的r點(diǎn)FFT次數(shù)等于從存儲(chǔ)器讀取的行數(shù),并等于基數(shù)r。FFT引擎的輸出寫入到r×r的寄存器庫(kù)中。
FFT模塊轉(zhuǎn)到塊322,將存儲(chǔ)在旋轉(zhuǎn)因子存儲(chǔ)器中的旋轉(zhuǎn)因子應(yīng)用于FFT的輸出值,從而用旋轉(zhuǎn)因子對(duì)輸出值進(jìn)行加權(quán)。旋轉(zhuǎn)因子可用一個(gè)或多個(gè)乘法器施加,乘法器可以是復(fù)數(shù)乘法器。用旋轉(zhuǎn)因子加權(quán)后,乘法器在步驟324把結(jié)果寫入r×r寄存器庫(kù)中。
然后,F(xiàn)FT模塊轉(zhuǎn)到步驟330,將寄存器庫(kù)中的值的次序轉(zhuǎn)置。在一個(gè)實(shí)施例中,處理器可以將寄存器庫(kù)中存儲(chǔ)的值的次序轉(zhuǎn)置。在另一個(gè)實(shí)施例中,轉(zhuǎn)置可以在從寄存器庫(kù)中讀數(shù)時(shí)進(jìn)行。例如,乘法器的輸出以行方式寫入寄存器庫(kù)并以列方式從寄存器庫(kù)中讀出,這樣就以較少的處理進(jìn)行了轉(zhuǎn)置。
圖3A和3B中所示的連接器A 331用于連接兩個(gè)圖頁(yè)中示出的流程圖的部分,其并不是過(guò)程300的實(shí)際部分。FFT模塊通過(guò)連接器A 331轉(zhuǎn)到步驟332,并將轉(zhuǎn)置后的結(jié)果從寄存器庫(kù)寫入到采樣存儲(chǔ)器中。寄存器庫(kù)中轉(zhuǎn)置后的結(jié)果寫入塊314中確定的地址指針?biāo)_定的行。如果轉(zhuǎn)置通過(guò)列到行變換進(jìn)行,則FFT模塊可利用處理器讀取寄存器庫(kù)的列并將結(jié)果按行寫入由地址指針確定的地址。
FFT模塊轉(zhuǎn)到塊334,并更新部分FFT和塊計(jì)數(shù)器。如前文所述,F(xiàn)FT的每級(jí)作為基r部分FFT的一個(gè)或多個(gè)塊進(jìn)行。在步驟334,F(xiàn)FT模塊更新部分FFT和塊計(jì)數(shù)器。處理器可以更新,例如,部分FFT計(jì)數(shù)器fk=(fk+1)mod(rn-k-1),如果部分FFT計(jì)數(shù)器為0,則增加計(jì)數(shù)器的值。
FFT模塊轉(zhuǎn)到判斷塊340,確定是否已經(jīng)計(jì)算了所有的部分FFT和塊。如果塊計(jì)數(shù)器小于該級(jí)的塊數(shù),ck<rn-1,則尚未計(jì)算晚全部的部分FFT。如果尚未計(jì)算全部的部分FFT和塊,則FFT模塊轉(zhuǎn)到塊342,更新部分FFT和塊計(jì)數(shù)器,以處理附加的部分FFT。然后,F(xiàn)FT模塊通過(guò)連接器C 343繞回到塊310,繼續(xù)處理當(dāng)前或下一個(gè)FFT塊的部分FFT。連接器C 343不是過(guò)程300的一個(gè)實(shí)際部分,其僅僅用于連接不同頁(yè)間的流程圖。
如果在判斷塊340中FFT模塊確定已經(jīng)計(jì)算了當(dāng)前級(jí)的所有塊,則FFT模塊轉(zhuǎn)到判斷塊350,確定是否已經(jīng)處理了n-1級(jí)。如否,F(xiàn)FT模塊轉(zhuǎn)到塊352,更新級(jí)計(jì)數(shù)器并通過(guò)連接器B 353返回塊310。連接器B 353不是過(guò)程300的一個(gè)實(shí)際部分,其僅僅用于連接不同頁(yè)間的流程圖。
如果FFT模塊在塊350中確定已經(jīng)處理了n-1級(jí),則FFT模塊通過(guò)連接器D 351轉(zhuǎn)而處理FFT的最后一級(jí)。FFT模塊可以用不同的實(shí)施例來(lái)實(shí)現(xiàn)FFT的最后一級(jí)。圖3C示出了FFT模塊實(shí)現(xiàn)FFT最后一級(jí)的一個(gè)實(shí)施例。圖3D示出了實(shí)現(xiàn)FFT最后一級(jí)的另一個(gè)實(shí)施例。因此,F(xiàn)FT模塊可以從圖3B的連接器D 351轉(zhuǎn)到圖3C或3D上的連接器D 351,但不能同時(shí)轉(zhuǎn)到兩個(gè),因?yàn)閳D3C和3D示出了同一個(gè)FFT最后一級(jí)的不同實(shí)施例。
在一個(gè)實(shí)施例中,F(xiàn)FT模塊可以實(shí)現(xiàn)圖3C所示的最后一級(jí)FFT過(guò)程。在圖3C所示的最后一級(jí)過(guò)程中,F(xiàn)FT模塊連續(xù)取行,但是在部分FFT后不進(jìn)行任何轉(zhuǎn)置。從而,F(xiàn)FT結(jié)果每列有單獨(dú)的采樣,這和FFT第一級(jí)一樣,但是行是以基數(shù)的逆序存儲(chǔ)的。如果在FFT后有IFFT,這種排序是有益的。存取FFT結(jié)果時(shí),F(xiàn)FT模塊可以考慮基逆序,或者,如果期望得到順序結(jié)果,則可以執(zhí)行重新排行引擎以重新排列行。
要進(jìn)行圖3C所示的最后一級(jí)處理,F(xiàn)FT模塊從圖3B的連接器D351轉(zhuǎn)到圖3C的連接器D 351。FFT模塊轉(zhuǎn)到塊362,初始化行地址指針。行地址指針可以初始化為prow=cn·r,其中cn初始被設(shè)定為0,r是FFT基數(shù)。
然后,F(xiàn)FT處理最后一級(jí)FFT,其方式和處理前級(jí)的方式相同。在塊364,F(xiàn)FT模塊從存儲(chǔ)器讀取由地址行指針確定的行,其計(jì)算如下αi=prow+i,i=0…(r-1)。
FFT模塊轉(zhuǎn)到塊366,計(jì)算所讀取的行中的值的部分FFT。FFT引擎對(duì)讀取的值計(jì)算r次不同r點(diǎn)部分FFT。
FFT模塊轉(zhuǎn)到塊368,將部分FFT輸出值寫入寄存器庫(kù)。FFT模塊轉(zhuǎn)到塊370,將寄存器庫(kù)的值寫入采樣存儲(chǔ)器,該采樣存儲(chǔ)器給FFT引擎提供了數(shù)據(jù)。在塊370中,F(xiàn)FT模塊增加計(jì)數(shù)器Cn。
FFT模塊轉(zhuǎn)到判斷塊372,確定最后一塊中所有的部分FFT是否都已經(jīng)過(guò)處理。如果否,F(xiàn)FT模塊返回塊362,繼續(xù)處理采樣存儲(chǔ)器中的行。如果最后一級(jí)的所有部分FFT都已經(jīng)過(guò)處理,則FFT模塊從判斷塊372轉(zhuǎn)到可選的行重新排序塊374,在此FFT模塊進(jìn)行行重新排序。然后,F(xiàn)FT模塊轉(zhuǎn)到塊399,N點(diǎn)FFT結(jié)束。
在FFT最后一級(jí)的另一個(gè)例子中,F(xiàn)FT模塊也可以執(zhí)行圖3D中所示的過(guò)程。在圖3D流程圖所示的FFT最后一級(jí)中,F(xiàn)FT模塊根據(jù)FFT的第一級(jí)所用的同樣順序從行中獲得采樣。結(jié)果是順序采樣的行,但行是部分基數(shù)的逆序。此外,部分基數(shù)逆序只有當(dāng)FFT級(jí)數(shù)大于3時(shí)才會(huì)出現(xiàn)。盡管以部分基數(shù)逆序排列行,但該最后一級(jí)過(guò)程也是有益的,因?yàn)槊啃兄械牟蓸邮沁B續(xù)的。
要進(jìn)行圖3D中的最后一級(jí)處理,F(xiàn)FT模塊從圖3B的連接器D351轉(zhuǎn)到圖3D中的連接器D 351。FFT模塊轉(zhuǎn)到塊382,使用FFT的第一級(jí)所用的同樣算法設(shè)定行地址指針。
FFT模塊轉(zhuǎn)到塊384,讀取由指針確定的行,轉(zhuǎn)到塊386,對(duì)行進(jìn)行部分FFT。然后,F(xiàn)FT模塊轉(zhuǎn)到塊388,將部分FFT的結(jié)果寫入寄存器庫(kù)。然后,F(xiàn)FT模塊轉(zhuǎn)到塊390,對(duì)寄存器庫(kù)中的值的順序進(jìn)行轉(zhuǎn)置。
然后,F(xiàn)FT模塊轉(zhuǎn)到塊392,將轉(zhuǎn)置后的值寫回采樣存儲(chǔ)器。然后,F(xiàn)FT模塊轉(zhuǎn)到判斷塊396,確定是否已經(jīng)計(jì)算了最后一級(jí)塊的所有部分FFT。如否,F(xiàn)FT模塊返回塊382,更新指針,以進(jìn)行下一次部分FFT。
如果FFT模塊在判斷塊396中確定最后一級(jí)的所有部分FFT都已計(jì)算,則FFT模塊轉(zhuǎn)到塊398,對(duì)行重新排列。和圖3C所示的前一個(gè)最后一級(jí)實(shí)施例一樣,對(duì)行重新排列是可選的。如果不重新排列行,或進(jìn)行了可選的行重新排列后,F(xiàn)FT模塊轉(zhuǎn)到塊399,F(xiàn)FT結(jié)束。
圖4是根據(jù)圖3A-3B的過(guò)程進(jìn)行8點(diǎn)、基數(shù)為2的FFT實(shí)施例的存儲(chǔ)器內(nèi)容和寄存器內(nèi)容的功能框圖。8點(diǎn)FFT使用4行2列的采樣存儲(chǔ)器。寄存器塊為r×r的矩陣,這種情況下是2×2的矩陣。
采樣存儲(chǔ)器410中的初始內(nèi)容排列成兩列412和414。采樣存儲(chǔ)器可按列寫入,在第一列412中寫值,寫滿后,在第二列414中寫值。采樣存儲(chǔ)器的每一行包括進(jìn)行初始2點(diǎn)FFT的正確采樣值。
行a0和a2最初從采樣存儲(chǔ)器獲得,F(xiàn)FT對(duì)存儲(chǔ)在這兩行中的值進(jìn)行FFT。用合適的旋轉(zhuǎn)因子對(duì)結(jié)果進(jìn)行加權(quán),并將結(jié)果寫入寄存器庫(kù)422。然后,對(duì)寄存器庫(kù)422的值進(jìn)行轉(zhuǎn)置,并寫回采樣存儲(chǔ)器。同樣,從存儲(chǔ)器獲取行a1和a3,在FFT引擎進(jìn)行處理,用合適的旋轉(zhuǎn)因子加權(quán),寫入寄存器庫(kù)424。424中的寄存器值覆蓋已經(jīng)轉(zhuǎn)置并寫入存儲(chǔ)器的422寄存器的值。對(duì)新的寄存器塊值424進(jìn)行轉(zhuǎn)置并寫入存儲(chǔ)器。
采樣存儲(chǔ)器430顯示完成第一級(jí)和第一次轉(zhuǎn)置后的內(nèi)容。數(shù)據(jù)依然是兩列432和434的格式,但是值根據(jù)轉(zhuǎn)置進(jìn)行了調(diào)整,以保持要共同進(jìn)行處理的采樣的行關(guān)系。
行a0和a1最初取自采樣存儲(chǔ)器,對(duì)這些行中存儲(chǔ)的值進(jìn)行了FFT。用合適的旋轉(zhuǎn)因子對(duì)結(jié)果進(jìn)行加權(quán),并將結(jié)果寫入寄存器庫(kù)442。然后對(duì)寄存器庫(kù)422的值進(jìn)行轉(zhuǎn)置,并寫回采樣存儲(chǔ)器。同樣,從存儲(chǔ)器獲得行a2和a3,在FFT引擎進(jìn)行處理,用合適的旋轉(zhuǎn)因子加權(quán),寫入寄存器庫(kù)444。這些值被轉(zhuǎn)置并寫入采樣存儲(chǔ)器。
采樣存儲(chǔ)器450顯示完成第二級(jí)和第二次轉(zhuǎn)置后的內(nèi)容。從第三采樣存儲(chǔ)器的結(jié)構(gòu)中,行a0和a1最初來(lái)自采樣存儲(chǔ)器并對(duì)行中存儲(chǔ)的值進(jìn)行了FFT。用合適的旋轉(zhuǎn)因子對(duì)結(jié)果進(jìn)行加權(quán),并將結(jié)果寫入寄存器庫(kù)462。然后,對(duì)寄存器庫(kù)462的值進(jìn)行轉(zhuǎn)置,并寫回采樣存儲(chǔ)器。同樣,從存儲(chǔ)器獲得行a2和a3,在FFT引擎處理,用合適的旋轉(zhuǎn)因子加權(quán),寫入寄存器庫(kù)464。這些值被轉(zhuǎn)置并寫入采樣存儲(chǔ)器。轉(zhuǎn)置后寫入采樣存儲(chǔ)器470的結(jié)果代表8點(diǎn)FFT的輸出。
圖5A和5B是OFDM系統(tǒng)組件的功能框圖,其可與這里描述的FFT模塊結(jié)合。下面對(duì)OFDM發(fā)射機(jī)500和OFDM接收機(jī)540進(jìn)行討論。OFDM發(fā)射機(jī)500和接收機(jī)540中都可在與OFDM系統(tǒng)通信的裝置和設(shè)備中實(shí)現(xiàn)。這些設(shè)備包括但不限于無(wú)線電話,如蜂窩電話、個(gè)人數(shù)字助理等或其他通信設(shè)備。
圖5A是OFDM發(fā)射機(jī)500的功能框圖,該發(fā)射機(jī)可以實(shí)現(xiàn)圖2中的FFT模塊以及圖3A和3B中的FFT過(guò)程。圖5A的OFDM發(fā)射機(jī)的部分或全部塊可以用單個(gè)IC或ASIC來(lái)實(shí)現(xiàn)。
OFDM發(fā)射機(jī)500包括數(shù)據(jù)源502,其通常包括一些用于存儲(chǔ)數(shù)據(jù)采樣的存儲(chǔ)設(shè)備。數(shù)據(jù)采樣可以在OFDM發(fā)射機(jī)500外產(chǎn)生,也可以利用和存儲(chǔ)器設(shè)備連接的模數(shù)轉(zhuǎn)換器(ADC)(未示出)在OFDM發(fā)射機(jī)500內(nèi)產(chǎn)生。
單個(gè)數(shù)據(jù)流可以表征為串行數(shù)據(jù)流。串并轉(zhuǎn)換器510和數(shù)據(jù)源502連接,為OFDM發(fā)射機(jī)500的每個(gè)正交載波形成并行數(shù)據(jù)流。串并轉(zhuǎn)換器510的輸出和調(diào)制器連接,在此,每個(gè)并行數(shù)據(jù)流可用OFDM載波的對(duì)應(yīng)載波進(jìn)行調(diào)制。
然后,多個(gè)調(diào)制后的OFDM載波輸入到IFFT模塊520,該模塊可以用圖2所示的FFT模塊實(shí)現(xiàn),并可使用圖3A或3B的過(guò)程。IFFT模塊520將正交頻率變換為時(shí)域OFDM符號(hào)。IFFT模塊520的輸出連接到并串轉(zhuǎn)換器522,以將并行輸出轉(zhuǎn)換為單個(gè)串行符號(hào)。并串轉(zhuǎn)換器522的輸出可以和發(fā)射機(jī)530連接,后者可以是無(wú)線發(fā)射機(jī)。
圖5B是OFDM接收機(jī)540的功能框圖,其與圖5A的OFDM發(fā)射機(jī)相補(bǔ)充。和OFDM發(fā)射機(jī)500一樣,OFDM接收機(jī)540可以用單個(gè)IC或ASIC來(lái)實(shí)現(xiàn)。
OFDM接收機(jī)540包括接收機(jī)542,其可以是無(wú)線接收機(jī),用于接收發(fā)射機(jī)廣播的OFDM符號(hào)。接收機(jī)542可用于對(duì)接收到的信號(hào)進(jìn)行放大、濾波和下變頻,以恢復(fù)出基帶信號(hào)。
基帶信號(hào)輸入串并轉(zhuǎn)換器544,該轉(zhuǎn)換器用于將串行基帶數(shù)據(jù)流轉(zhuǎn)換為并行數(shù)據(jù)流,以進(jìn)行處理。串并轉(zhuǎn)換器544的輸出和FFT模塊550連接,該模塊可以是圖2的FFT模塊,用于執(zhí)行圖3A和3B的過(guò)程。
FFT模塊550把時(shí)域符號(hào)變換為多個(gè)正交頻率分量。FFT模塊550的輸出和解調(diào)器560連接,其用于對(duì)正交頻率進(jìn)行解調(diào),以恢復(fù)出數(shù)據(jù)。
并串轉(zhuǎn)換器562和FFT模塊550的輸出連接,將并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)流。串行數(shù)據(jù)流和數(shù)據(jù)處理器連接,以便于進(jìn)一步處理。例如,語(yǔ)音數(shù)據(jù)可以轉(zhuǎn)換成模擬格式,以進(jìn)行放大并傳送給揚(yáng)聲器。視頻數(shù)據(jù)可以進(jìn)一步處理,并發(fā)送給顯示設(shè)備。
實(shí)現(xiàn)FFT結(jié)構(gòu)的FFT模塊,與先前的FFT實(shí)現(xiàn)相比,可以用數(shù)目減少的指令進(jìn)行同址變換。FFT模塊包括采樣存儲(chǔ)器,其將多個(gè)值排列成單個(gè)行。對(duì)單個(gè)行的采樣進(jìn)行FFT運(yùn)算并寫入寄存器塊。一個(gè)或多個(gè)復(fù)數(shù)乘法器可用于將旋轉(zhuǎn)因子應(yīng)用于部分FFT結(jié)果。
對(duì)寄存器庫(kù)中加權(quán)后的部分FFT結(jié)果進(jìn)行轉(zhuǎn)置,并寫入采樣存儲(chǔ)器。對(duì)于采樣存儲(chǔ)器中同一行的單個(gè)部分FFT,該轉(zhuǎn)置維持了FFT輸入的關(guān)系。對(duì)多個(gè)FFT級(jí)重復(fù)這個(gè)過(guò)程,直到預(yù)期的FFT結(jié)束。
針對(duì)這里披露的實(shí)施例描述的方法、過(guò)程或算法的步驟可以直接用硬件、用處理器執(zhí)行的軟件模塊或者二者的結(jié)合來(lái)實(shí)現(xiàn)。
軟件模塊可能存在于RAM存儲(chǔ)器、閃存、ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、移動(dòng)磁盤、CD-ROM或者本領(lǐng)域熟知的任何其他形式的存儲(chǔ)媒質(zhì)中。一種典型存儲(chǔ)媒質(zhì)與處理器耦合,從而使得處理器能夠從該存儲(chǔ)媒質(zhì)中讀信息,且可向該存儲(chǔ)媒質(zhì)寫信息。在替換實(shí)例中,存儲(chǔ)媒質(zhì)是處理器的組成部分。處理器和存儲(chǔ)媒質(zhì)可能存在于一個(gè)ASIC中。該ASIC可能存在于一個(gè)用戶站中。在一個(gè)替換實(shí)例中,處理器和存儲(chǔ)媒質(zhì)可以作為用戶站中的分立組件存在。
提供所述公開(kāi)的實(shí)施例的上述描述可使得本領(lǐng)域的技術(shù)人員能夠?qū)崿F(xiàn)或者使用本發(fā)明。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),這些實(shí)施例的各種修改是顯而易見(jiàn)的,并且這里定義的總體原理也可以在不脫離本發(fā)明的范圍和主旨的基礎(chǔ)上應(yīng)用于其他實(shí)施例。因此,本發(fā)明并不限于這里示出的實(shí)施例,而是與符合這里公開(kāi)的原理和新穎特征的最廣范圍相一致。
權(quán)利要求
1.一種用于確定rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)的方法,所述方法包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器,所述存儲(chǔ)器每行有r個(gè)采樣;從所述存儲(chǔ)器讀取r行;確定r次以r為基數(shù)的部分FFT,以產(chǎn)生r2個(gè)部分FFT值;對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子,以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值;將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊;對(duì)所述寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值;將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器;以及根據(jù)存儲(chǔ)器的內(nèi)容,確定FFT值。
2.如權(quán)利要求1所述的方法,其中,將采樣寫入存儲(chǔ)器包括把要進(jìn)行變換的采樣逐列地寫入具有rn-1行和r列的存儲(chǔ)器。
3.如權(quán)利要求1所述的方法,其中,將采樣寫入存儲(chǔ)器包括把要進(jìn)行變換的復(fù)數(shù)采樣寫入所述存儲(chǔ)器。
4.如權(quán)利要求1所述的方法,其中,從所述存儲(chǔ)器讀取r行包括確定r個(gè)行標(biāo)號(hào);以及從所述存儲(chǔ)器讀取對(duì)應(yīng)于所述r個(gè)行標(biāo)號(hào)的行。
5.如權(quán)利要求4所述的方法,其中,確定r個(gè)行標(biāo)號(hào)包括確定對(duì)應(yīng)于公式ai=i×rn-k-1的行標(biāo)號(hào),其中k表示FFT的級(jí),i=0到(r-1)。
6.如權(quán)利要求1所述的方法,其中對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子包括獲取至少一個(gè)復(fù)數(shù)旋轉(zhuǎn)因子;以及將所述至少一個(gè)復(fù)數(shù)旋轉(zhuǎn)因子和所述r2個(gè)部分FFT值中相應(yīng)的一個(gè)FFT值進(jìn)行復(fù)數(shù)乘法運(yùn)算。
7.如權(quán)利要求1所述的方法,其中將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊包括將所述r2個(gè)加權(quán)后的部分FFT值寫入被配置成r行和r列的寄存器塊。
8.如權(quán)利要求7所述的方法,其中對(duì)所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置包括獲取與所述寄存器庫(kù)的一行和列相對(duì)應(yīng)的一個(gè)加權(quán)后的部分FFT值;將所述行和列的標(biāo)號(hào)轉(zhuǎn)置;以及將所述加權(quán)后的部分FFT值寫入對(duì)應(yīng)于所述轉(zhuǎn)置標(biāo)號(hào)的行和列。
9.一種用于確定rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)的方法,所述方法包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器,所述存儲(chǔ)器每行有r個(gè)采樣;初始化一個(gè)級(jí)值;初始化一個(gè)塊值;處理一個(gè)FFT級(jí),所述處理包括a)根據(jù)所述級(jí)值確定塊數(shù);b)從所述存儲(chǔ)器獲取r行;c)確定r次以r為基數(shù)的部分FFT,以產(chǎn)生r2個(gè)部分FFT值;d)對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子,以產(chǎn)生r2個(gè)加權(quán)的部分FFT值;e)對(duì)寄存器塊中的所述r2個(gè)加權(quán)的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值;f)將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器;以及g)根據(jù)所述塊值和級(jí)值,重復(fù)步驟b)至f);h)增加所述級(jí)值;以及重復(fù)處理所述FFT級(jí)n次;以及根據(jù)存儲(chǔ)器的內(nèi)容,確定FFT值。
10.一種用于確定rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)的方法,所述方法包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器,所述存儲(chǔ)器每行有r個(gè)采樣;a)初始化一個(gè)級(jí)計(jì)數(shù)器;b)初始化一個(gè)塊計(jì)數(shù)器以及一個(gè)部分FFT計(jì)數(shù)器;c)根據(jù)所述級(jí)、塊和部分FFT計(jì)數(shù)器的值,從所述存儲(chǔ)器獲取r行;d)確定r次以r為基數(shù)的部分FFT,以產(chǎn)生r2個(gè)部分FFT值;e)對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子,以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值;f)將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊;g)對(duì)所述寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值;i)將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器;j)更新所述部分FFT計(jì)數(shù)器和塊計(jì)數(shù)器;k)根據(jù)所述塊計(jì)數(shù)器和部分FFT計(jì)數(shù)器的值,重復(fù)步驟c)至j);l)更新所述級(jí)計(jì)數(shù)器的值;m)根據(jù)所述級(jí)計(jì)數(shù)器的值,重復(fù)步驟b)到k);以及根據(jù)存儲(chǔ)器的內(nèi)容,確定FFT的值。
11.一種rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)裝置,所述裝置包括存儲(chǔ)器,用于存儲(chǔ)rn個(gè)采樣,每個(gè)存儲(chǔ)器行存儲(chǔ)r個(gè)采樣;FFT引擎,用于對(duì)來(lái)自所述存儲(chǔ)器的r行的采樣進(jìn)行r次r點(diǎn)FFT的部分FFT;寄存器庫(kù),其有r2個(gè)寄存器被配置成r行r列,用于接收來(lái)自所述FFT引擎的輸出值;以及轉(zhuǎn)置模塊,用于對(duì)所述寄存器庫(kù)中的所述值進(jìn)行轉(zhuǎn)置,并將轉(zhuǎn)置值寫入存儲(chǔ)器中由所述FFT引擎進(jìn)行處理的所述r行。
12.如權(quán)利要求11所述的裝置,還包括旋轉(zhuǎn)因子存儲(chǔ)器,用于存儲(chǔ)至少一個(gè)FFT旋轉(zhuǎn)因子;以及至少一個(gè)乘法器,用于把來(lái)自所述寄存器庫(kù)中一個(gè)寄存器的一個(gè)值和來(lái)自所述旋轉(zhuǎn)因子存儲(chǔ)器中的一個(gè)FFT旋轉(zhuǎn)因子相乘,并用于將輸出值寫入所述寄存器。
13.如權(quán)利要求12所述的裝置,其中所述至少一個(gè)乘法器包括至少一個(gè)復(fù)數(shù)乘法器。
14.如權(quán)利要求12所述的裝置,其中所述至少一個(gè)乘法器包括r-1個(gè)復(fù)數(shù)乘法器。
15.如權(quán)利要求12所述的裝置,其中所述旋轉(zhuǎn)因子存儲(chǔ)器包括從由ROM、RAM、NV-RAM以及閃存構(gòu)成的組中選取出來(lái)的至少一個(gè)存儲(chǔ)器。
16.如權(quán)利要求11所述的裝置,其中所述rn個(gè)采樣包括rn個(gè)復(fù)數(shù)采樣。
17.如權(quán)利要求11所述的裝置,其中所述存儲(chǔ)器包括RAM。
18.如權(quán)利要求11所述的裝置,其中所述FFT引擎包括一個(gè)流水線式FFT引擎。
19.如權(quán)利要求11所述的裝置,其中所述轉(zhuǎn)置模塊通過(guò)逐列方式讀取值以及逐行方式將所述值寫入存儲(chǔ)器,將所述寄存器庫(kù)中的值進(jìn)行轉(zhuǎn)置。
20.如權(quán)利要求11所述的裝置,其中所述轉(zhuǎn)置模塊將所述寄存器庫(kù)中的值進(jìn)行轉(zhuǎn)置是按照如下方式實(shí)現(xiàn)的讀取與所述寄存器庫(kù)的一個(gè)行值和一個(gè)列值相對(duì)應(yīng)的一個(gè)寄存器值;對(duì)所述行值和所述列值進(jìn)行轉(zhuǎn)置;以及將所述寄存器值寫入與轉(zhuǎn)置后的行值和列值相對(duì)應(yīng)的寄存器。
21.一個(gè)或多個(gè)存儲(chǔ)設(shè)備,用于存儲(chǔ)一條或多條處理器可用指令,當(dāng)這些指令由一個(gè)或多個(gè)處理器執(zhí)行時(shí),其執(zhí)行的方法包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器,所述存儲(chǔ)器每行有r個(gè)采樣;從所述存儲(chǔ)器讀取r行;確定r次以r為基數(shù)的部分FFT,以產(chǎn)生r2個(gè)部分FFT值;對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子,以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值;將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊;對(duì)所述寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值;將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器;以及根據(jù)存儲(chǔ)器的內(nèi)容確定FFT值。
22.一種用于確定rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)的裝置,所述裝置包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器的模塊,所述存儲(chǔ)器每行有r個(gè)采樣;從所述存儲(chǔ)器讀取r行的模塊;確定r次以r為基數(shù)的部分FFT以產(chǎn)生r2個(gè)部分FFT值的模塊;對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值的模塊;將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊的模塊;對(duì)所述寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值的模塊;將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器的模塊;以及根據(jù)存儲(chǔ)器的內(nèi)容確定FFT值的模塊。
23.如權(quán)利要求22所述的裝置,其中將采樣寫入存儲(chǔ)器的模塊包括把要進(jìn)行變換的采樣逐列地寫入有rn-1行和r列的存儲(chǔ)器。
24.如權(quán)利要求22所述的裝置,其中將采樣寫入存儲(chǔ)器的模塊包括把要進(jìn)行變換的復(fù)數(shù)采樣寫入存儲(chǔ)器。
25.如權(quán)利要求22所述的裝置,其中從所述存儲(chǔ)器讀取r行的模塊包括確定r個(gè)行標(biāo)號(hào)的模塊;以及從所述存儲(chǔ)器讀取與所述r個(gè)行標(biāo)號(hào)相對(duì)應(yīng)的行的模塊。
26.如權(quán)利要求24所述的裝置,其中,確定r個(gè)行標(biāo)號(hào)的模塊包括確定對(duì)應(yīng)于公式ai=i×rn-k-1的一個(gè)行標(biāo)號(hào),其中k表示當(dāng)i=0到(r-1)時(shí)FFT的一級(jí)。
27.如權(quán)利要求22所述的裝置,其中對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子的模塊包括獲取至少一個(gè)復(fù)數(shù)旋轉(zhuǎn)因子的模塊;以及對(duì)所述至少一個(gè)復(fù)數(shù)旋轉(zhuǎn)因子和所述r2個(gè)部分FFT值中一個(gè)相應(yīng)FFT值進(jìn)行復(fù)數(shù)乘法運(yùn)算的模塊。
28.如權(quán)利要求22所述的裝置,其中將所述r2個(gè)加權(quán)后的部分FFT值寫入所述寄存器塊的模塊包括將所述r2個(gè)加權(quán)后的部分FFT值寫入被配置成r行和r列的寄存器塊。
29.如權(quán)利要求28所述的裝置,其中對(duì)所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置的模塊包括獲取與所述寄存器庫(kù)的一行和列相對(duì)應(yīng)的一個(gè)加權(quán)后的部分FFT值的模塊;將所述行和列標(biāo)號(hào)轉(zhuǎn)置的模塊;以及將所述加權(quán)后的部分FFT值寫入對(duì)應(yīng)于所述轉(zhuǎn)置標(biāo)號(hào)的行和列的模塊。
30.一種用于確定rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)的裝置,所述裝置包括把要進(jìn)行變換的采樣寫入存儲(chǔ)器的模塊,所述存儲(chǔ)器每行有r個(gè)采樣;初始化一個(gè)級(jí)值的模塊;初始化一個(gè)塊值的模塊;處理一個(gè)FFT級(jí)的模塊,所述處理包括a)根據(jù)所述級(jí)值確定塊數(shù)的模塊;b)從所述存儲(chǔ)器獲取r行的模塊;c)確定r次以r為基數(shù)的部分FFT以產(chǎn)生r2個(gè)部分FFT值的模塊;d)對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值的模塊;e)對(duì)寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值的模塊;f)將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器的模塊;以及g)根據(jù)所述塊值和級(jí)值重復(fù)步驟b)到f)的模塊;h)增加所述級(jí)值的模塊;以及重復(fù)處理FFT級(jí)n次的模塊;以及根據(jù)存儲(chǔ)器的內(nèi)容確定FFT值的模塊。
31.一種用于確定rn點(diǎn)、以r為基數(shù)的快速傅立葉變換(FFT)的裝置,所述裝置包括把要進(jìn)行變換的采樣寫入每行r個(gè)采樣的存儲(chǔ)器的模塊;a)初始化一個(gè)級(jí)計(jì)數(shù)器的模塊;b)初始化一個(gè)塊計(jì)數(shù)器以及一個(gè)部分FFT計(jì)數(shù)器的模塊;c)根據(jù)所述級(jí)、塊和部分FFT計(jì)數(shù)器的值,從所述存儲(chǔ)器獲取r行的模塊;d)確定r次以r為基數(shù)的部分FFT以產(chǎn)生r2個(gè)部分FFT值的模塊;e)對(duì)所述r2個(gè)部分FFT值應(yīng)用旋轉(zhuǎn)因子以產(chǎn)生r2個(gè)加權(quán)后的部分FFT值的模塊;f)將所述r2個(gè)加權(quán)后的部分FFT值寫入寄存器塊的模塊;g)對(duì)所述寄存器塊中的所述r2個(gè)加權(quán)后的部分FFT值進(jìn)行轉(zhuǎn)置,以產(chǎn)生轉(zhuǎn)置值的模塊;i)將所述轉(zhuǎn)置值寫入所述存儲(chǔ)器的模塊;j)更新所述部分FFT計(jì)數(shù)器和塊計(jì)數(shù)器的模塊;k)根據(jù)所述塊計(jì)數(shù)器和部分FFT計(jì)數(shù)器的值重復(fù)步驟c)到j(luò))的模塊;l)更新所述級(jí)計(jì)數(shù)器的值的模塊;m)根據(jù)所述級(jí)計(jì)數(shù)器的值重復(fù)步驟b)到k)的模塊;以及根據(jù)存儲(chǔ)器的內(nèi)容確定FFT值的模塊。
全文摘要
快速傅立葉變換(FFT)的硬件實(shí)現(xiàn)和方法,提供了高效的FFT處理,同時(shí)使集成電路(IC)中所需的管芯面積最小。該FFT硬件可實(shí)現(xiàn)N點(diǎn)FFT,其中N=r
文檔編號(hào)G06F15/00GK1914607SQ200480041379
公開(kāi)日2007年2月14日 申請(qǐng)日期2004年12月3日 優(yōu)先權(quán)日2003年12月5日
發(fā)明者拉古拉曼·克里希納姆爾蒂, 欽納帕·K·加納帕蒂 申請(qǐng)人:高通股份有限公司