200534121 九、發明說明: 【發明所屬之技術領域】 本揭不内容係關於訊號處理之領域。本揭示内容尤其係 關於用於建構快速傅立葉變換(FFT)之裝置及方法。 【先前技術】 傅立葉變換可用於將時域訊號映射至其頻域副本。相反 地’反向傅立葉變換可用於將頻域訊號映射至其時域副 本傅立葉變換尤其適用於時域訊號之頻譜分析。另外, 諸如彼等建構正交頻分多工(〇FDM)之通訊系統可使用傅 立葉變換之特性以自線性間隔音調(lineady啊⑽t〇叫產 生多個時域符號,並自該等符號恢復頻率。 。取樣貝料系統可建構離散傅立葉變換⑴f巧以允許處理 器在預定數目之樣本上執行變換。然而,耐計算密集且 而要極大里之處理功率來執行。執行^^點所需之計算數 目、力為N,表不為〇 。在多個系統中,專用於執行丁 之處理功率量可減少可用於其它系統操作之處理量。另 外、、且恶為作為即時系統操作之系統可不具有足夠之處理 功率以在為計算配置之時間内執行所要大小之DFT。 丨、速傅立葉變換(Fft)為傅立葉變換之離散建構,其允許 將執行之傅立葉變換與DFT建構相比具有顯著較少之操 作。視特定建構而定,執行基數r2FF丁所需之計算量通常 約為 Nxl〇gr (N),表示為 0 (Nl〇gr(N))。 在過去,建構FFT之系統可已使用通用處理器或單機數位 訊號處理器(DSP)來執行FFT。然而,越來越多的系統合併 98059.doc 200534121 了經特㈣計為建構設備所需之大多數功能性之特殊應用 積體電路(ASIC)。在ASIC内建構系統功能性可使建立多積 體電路介面所需之晶片數及膠合邏輯達到最小。減少之晶 片數通常允許用於設備之較少物理佔據面積而不需犧牲任 何功能性。 ASIC晶粒内之面積量係受限制的,且需要對asic内建構 之功能組塊進行大小最優化、速度最優化及功率最優化以 改良總體ASIC設計之功能性。應將專用於卯丁之資源量降 至最小以限制專用於附之可用資源之百分比。然而需將足 夠之資源專用於F F T以確保以足以支援系統要求之速度執 行該變換。另外,需要將由卯丁模組消耗之功率量降至最小 以使電源要求及相關聯之熱耗散降至最小。因此,可需要 將用於在諸如ASIC之積體電路内建構之叩丁架構最優化 【發明内容】 FFT硬體建構及方法提供有效之FFT處理同時使積體電 路(ic)中所需之晶粒區域降至最小。FFT硬體可用於建構n 點FFT,其中N = r為基數⑴之函數。該硬體建構包括具有 N/r列之樣本記憶體,每一列儲存r個樣本。用於儲存旋轉因 子之記憶體中每列具有k個旋轉因子,其中❹^^表示可用 之複數旋轉乘法器之數目。FFT模組自記憶體讀取『列(其中 列位址為FFT階段之函數),在每一列之樣本上執行適當之r 點複數FFT接著旋轉乘法(除了最終階段以外),並將結果寫 入Γ Χ Γ大小之矩陣記憶體(暫存器組)。將r X r大小之矩陣圮 憶體之内容以轉置次序或可視情況不需轉置寫回樣本記憔 98059.doc 200534121 體。對於每一階段將此操作重複N/r2次,且然後階段 以產生N點FFT。 在一悲樣中,揭示了判定一點、基數r之FFT的方法。該 方法包括:將待變換之樣本寫入每列具有^固樣本之記憶體 中,自δ己憶體碩取r列;判定基數[之r個部分FFT以產生— 個邛分FFT值,將旋轉因子應用至Γ2個部分FFT值以產生— 個加權部分FFT值;將Γ2個加權部分FFT值寫入暫存器組 中;將暫存器組中之r2個加權部分FFT值轉置以產生經轉置 值,將經轉置值寫入記憶體中;及自記憶體之内容判定fft 值。 在另一態樣中,揭示了判定,點、基數『之卯丁的方法。 該方法包括··將待變換之樣本寫入每列具有r個樣本之記憶 體中;初始化階段值;初始化塊值;處理FFT階段;重複處 理該FFT階段n次;及自記憶體之内容判定叮了值。處理FFT 階段包括:a)基於階段值判定若干塊;b)自記憶體擷取〖列; c)判定基數r之r個部分FFT以產生r2個部分FFT值;d)將旋轉 因子應用至r2個部分fft值以產生r2個加權部分FFT值;e) 將暫存器組中之r2個加權部分FFT值轉置以產生經轉置 值,f)將經轉置值寫入記憶體;g)基於塊值及階段值重複步 驟b)至f)並增加階段值。 在另一態樣中,揭示了判定rn點、基數r之FFT的方法。 該方法包括:將待變換之樣本寫入每列具有r個樣本之記憶 體中;a)初始化階段計數器;b)初始化塊計數器及部分ρρτ 輸出計數器;c)基於階段計數器、塊計數器及部分FFt計數 98059.doc 200534121 器的值自記憶體擷取r列;d)判定基數r個部分FFT以產生 P個部分FFT值;e)將旋轉因子應用至—個部分fft值以產生 r2個加權部分FFT值;f)W個加權部分fft值寫入暫存器 組;g)將暫存器組中之r2個加權部分FFT值轉置以產生經轉 置值,i)將經轉置值寫入§己憶體;j)更新部分計數器及 塊計數器的值;k)基於塊計數器及部分FFT計數器的值重複 步驟Ο至j)·,1)更新階段計數器的值;m)基於階段計數器的 值重衩步驟b)至k),及自§己憶體之内容判定ρρτ值。 在另一怨樣中,揭示了 r11點、基數r2FFT裝置。該裝置 包括:組態為儲存rn個樣本之記憶體,其中每一記憶體列具 有r個樣本;組態為在來自記憶體之1^列的樣本上執行^固^ 點邛刀FFT之FFT引擎,組態為!·列r行且組態為自ρρτ引擎 接收輸出值之暫存器組,其具有『2個暫存器;及組態為轉置 暫存器組中之值且將經轉置之值寫入記憶體中由FFT引擎 操作之r列之轉置模組。 【實施方式】 本發明揭示了適用於FFT或反向FFT(IFFT)之硬體架構、 合併FFT模組之設備及執行FF 丁或IFFT之方法。將FF 丁架構 統一為允許任何基數之FFT之建構。FFT架構允許用於執行 FF丁之循環數目降至最小同時保持小的晶片面積。詳言之, FFT架構將記憶體及暫存器空間組態為最優化在適當FFT 期間所執行之記憶體存取之數目。FFT架構在其建構中提供 額外之靈活性,且依特定之設計約束而定允許基數及複數 束法杰的數目變化。在對速度敏感而對晶粒面積較少敏感 98059.doc 200534121 之建構中,可用額外之複數乘法器及較高之基數來建構fft 木構。在對晶粒面積較敏感之建構中,可減小基數及減小 複數乘法器之數目。 FFT架構包括樣本記憶體,其組態為具有足以儲存與fft 基數相等數目之樣本之記憶體列寬度。因此,樣本記憶體 組恶為具有每列以固樣本之N/r列,其中1^表示砰丁之大小及『 表不FFT基數。FFT塊組態為自記憶體擷取〇彳且在每列中之 樣本上執行x^FFT。FFT塊擷取與卯丁基數相等數目之樣 本,但在來自每一個別列之樣本上執行厂點FF丁。 FFT塊將!*點FFT之結果寫入組態為儲存—個樣本之暫存 器組。耦接至暫存器組及旋轉因子記憶體之複數乘法器利 用適當之旋轉因子對FFT結果進行加權。將加權因子返回至 相同之暫存器。 在將暫存器組之内容重寫至樣本記憶體之原始列之前將 其轉置。暫存器組中值的轉置允許藉由保持樣本記憶體之 相同列中FFT樣本之關係來適當執行FFT。樣本記憶體中之 樣本歷經足以執行N點FFT之若干階段經擷取、處理且返回 至樣本記憶體。 重要的是在進行基於所揭示架構中折衷方案之硬體之討 論之前首先審查各種FFT演算法之算術複雜性。審查了基數 為2、4、8、16之Cooley-Tukey演算法及分裂基演算法。即 使基於質因子之演异法之複雜性可低於基於c〇〇ley_Tukey 之演算法之複雜性,基於質因子之演算法因其沒有規則結 構且對量子化較敏感而不被考慮。 98059.doc 10 200534121 此處基於所需之實際實數乘法及加法之數目來評估演算 法之複雜性。假定複數乘法等於四個實數乘法加上兩個; 數加法。 藉由注意:此等演算法以(Γη-Μ)(Μ)個旋轉乘法為代價 將r點DFT計算分裂為厂點DFT及Γη·ι點DFT之計算,並進一 步藉由點FFT進行處理,以此可判定基數r之演算法所 需之實數乘法及加法之數目。圖❻證實此結構的8點基數 2FFT之訊號流之一實例。 由Mnr來表示,點卯丁所需之實數乘法之數目,及由人/來 表不所需之實數加法之數目,由以下遞歸式來界定處理 雜性:
Mnr = r.Mn\x +(rn-i -1).(1-1).4+1^^/ ΑηΓ = r.Arn·, +(rn'1)(M)2 + rn'Air 其中初始條件為: M!4 = 〇 , Mi8 = 4 ? Mj16 = 24
Mi2= M22-0 , m32=4 A12 =4,V,,Ai8 =52,Ai16 =144 以類似方式來評估分裂基演算法之複雜性。分裂基數算 法以某些旋轉乘法為代價將N點FFT分裂為一大小gN/2之 FFT及兩個大小為N/4之FFT。用以下遞歸式來界定該演算 法之複雜性:
Mn = Μΐ^λ + 2M5n^2 + (2^1 - 4)4 + 4 心令+义2,… ^!5 98059.doc 200534121 基於此等遞歸式,可將若干通用FFT演算法之複雜性進行 製表及比較。表1及表2編輯了用於通用FFT演算法之複雜性 結果。該表包括用於彼等未評估組態之空白單元。 表1 ··用於不同FFT演算法之實數乘法 FFT大小 基數2 基數4 基數8 基數16 分裂基 64 452 324 260 248 128 1156 660 256 2820 2052 1668 1656 512 6660 4100 3988 1024 15364 11268 9336 2048 34820 21396 4096 77828 57348 49156 48132 48248 8192 172036 107412 2 :用於不同FFT演算法之漬 數加法 FFT大小 基數2 基數4 基數8 基數16 分裂基 64 994 930 930 892 128 2370 2122 256 5506 5122 5058 4924 512 12546 11650 11210 1024 28162 26114 25148 2048 62466 55754 4096 137218 126978 126978 125442 122428 8192 299010 107412 表1及表2中之演算法複雜性並未給出在不同演算法中建 構FFT之硬體成本的全部描述。必須考慮自記憶體存取資料 及旋轉因子並將資料寫入記憶體之成本。下表顯示了用於 不同基數大小之不同演算法所需之記憶體存取的數目(僅 計算資料存取)。藉由注意:對於N點FFT/IFFT之基數r建 構,階段之總數目為l〇gr(N)且每一階段需要2N次讀取及寫 入操作,導致2Nlogr(N)次記憶體複數樣本存取操作,以此 98059.doc 12 200534121 獲得貪料存取之數目。 表3 ··用於不同FFT演算法之記憶體存取 FFT大小 基數2/分裂基 基數4 基數8 基數16 64 768 384 256 128 1792 256 4096 2048 1024 512 9216 3072 1024 20480 10240 2048 45056 4096 98304 49152 32768 24576 8192 212992 硬體中FFT建構之分析顯示了所用之呈循環形式之主要 成本消耗於記憶體存取中。記憶體存取之數目隨著基數的 增大而減小。然而,存取一複數樣本/循環對於多種應用可 是不足夠的。一簡單實例說明了潛在問題。 考慮如下問題:為具有4 /is之符號持續時間為及40 MHz之 時鐘頻率之正交頻分多工(OFDM)系統建構64點FFT。此系 統可為(例如)為具有40 MHz之時鐘之IEEE 802.1 1a系統。 OFDM中4 gs之符號持續時間與40 MHz之時鐘頻率轉化為 符號間可用之160個循環。 首先審查藉由使用基數2演算法建構64點FFT之成本。如 上表所示,所需之記憶體存取總數為768。因此,使用每循 環僅有一樣本讀取或寫入之記憶體來建構基數2演算法將 花費最少768循環,其為可用於計算之循環數目之約5倍。 分裂基演算法遭受與基數2演算法相同的需要相當記憶體 存取數目之問題。 98059.doc -13- 200534121 然而,對於使用基數4演算法之64點FFT,所需記憶體存 取數目為3 84。此狀況較好但仍比可用循環之數目高得多。 當FFT演算法之基數進一步增大時,由於FFT中階段之數目 下降,所需記憶體存取之數目將進一步減小。 可藉由使用使得並行讀取及寫入之記憶體結構來達成用 於任何基數演算法之高速建構。對於特定基數r演算法,允 烀在一循環中存取(無論讀寫操作或寫入操作片個值之記憶 體結構改良了演算法之處理量。可將並行存取概念地認為 每列中具有r個字組之RAM。然而,為了自此記憶體結構獲 得最大益處,在演算法之每一階段計算^點卯了所需之^個樣 本必須在相同列中。此可藉由讀取樣本記憶體之1^列、計算 r個r點FFT並將轉置後之結果寫入樣本記憶體中來達成。可 在r個暫存器之矩陣記憶體中執行該轉置操作。由於基數『 增大’ FFT引擎之大小及矩陣記憶體之大小亦增大。對於任 何特定建構可執行面積至速度之交換。 圖2為FFT模組200之一實施例之功能方塊圖。可將fft模 組200組態為具有僅僅小變化之IFFT模組,此歸因於正向變 換與反向變換之間的對稱性。可將FFT模組2〇〇建構在單一 ic晶粒上,且可建構為ASIC之部分。或者,可將fft模組 200建構為彼此通訊之多個元素。另外,附模組細不限於 -特定FFT結構。舉例而言’ FFT模組細可組態為執行時 間消去法FF丁或頻率消去法FFT。 T模、、且200包括組恶為儲存待變換樣本之記憶體2 1 〇。另 外因為FFT板組2〇〇組態為執行變換之適當計算,所以將 98059.doc 200534121 。己憶體210用於儲存砰丁每一階段之結果及fft模組2〇〇之 輸出。 可。卩》基於FFT之大小& FFT之基數來判定記憶體21〇之 大小。對基數I·之N點FFT (其tN=rn),可將記憶體21〇之大 小判定為在广1列中儲存N個樣本,其中每列具有!*個樣本。 記憶體210可組態為具有與每一樣本之位元數目乘以每列 樣本之數目的結果相等之寬度。記憶體2丨〇通常組態為將樣 本儲存為實數分量及虛數分量。因此,對於基數2FFT,記 憶體210組態為每列儲存兩個樣本,且可將樣本儲存作為第 一樣本之實數部分、第一樣本之虛數部分、第二樣本之實 數部分及第二樣本之虛數部分。若將樣本之每一分量組態 為10位元,則記憶體210之每列使用40位元。記憶體21〇可 為具有足夠之速度以支援模組之操作的隨機存取記憶體 (RAM)。 將記憶體210耦接至組態為執行厂點FFTi FFT引擎22〇。 FFT模組200可組態為執行類似於圖1中所示結構之叮丁,其 中在部分FFT (亦稱為FFT蝶形)之後由旋轉因子執行加 權。此組態允許FFT引擎220組態為使用最小數目之乘法 器’因此將FFT引擎220之大小及複雜性降至最小。FFT引 擎220可組態為自記憶體210擷取一列並在該列中樣本上執 行FFT。因此,FFT引擎220可在單一循環中擷取用於成FFT 之所有樣本。FFT引擎220可為(例如)管線式FFT引擎且可能 夠在時鐘之不同相位上操作列中的值。 將FFT引擎220之輸出耦接至暫存器組230。暫存器組23〇 98059.doc -15- 200534121 組“基於fft之基數來錯存若干值。在一實 =。可組態為儲存r2個值。在使用樣本之狀況= =存器組中的值通常為具有實數分量及虛數 ^ U2则作臨時儲存器,但其㈣為用於快速存取 …、需經由位址匯流排存取之儲存器提供專用位置。兴 例而言,可用正反器來建構暫存器組23〇中暫存器之每一: 7。結果,暫存器使用了與相當大小之記憶體位置相比更 ^的晶粒面積。因為存取暫存器㈣實際上不存在循 本,所以特㈣項組建構可藉由操控暫存器組咖及記 憶體210之大小來以速度交換晶粒面積。 可將暫存器組230之大小有利判定為健存^個冑,使得可 (例如)藉由將該等值以列寫入及藉由將該等值以行讀出(或 错由將該等值以行寫入及藉由將該等值以列讀出)來直接 執行該等值之轉置。值的轉置用於為FFT之所有階段保持記 憶體2 1 〇中FFT值之列對準。 卜第二記憶體240組態為儲存用於使FFT引擎22〇之輸出加 推旋轉因子。在某些實施例中,FFT引擎22〇可組態為在 部分FFT輸出(FFT蝶形)之計算期間直接使用旋轉因子。可 預定用於任何FFT之旋轉因子。因此,可將第二記憶體24〇 建構為唯4 σ己憶體(ROM)、非揮發性記憶體、非揮發性RAM 或快閃可程式化記憶體,儘管第二記憶體24〇亦可組態為 Ram或記憶體之某些其它類型。可將第二記憶體24〇之大小 判定為儲存用於N點FFT之Nx(n-l)個複數旋轉因子,其中 98059.doc -16- 200534121 N- r。可自第二記憶體240中省略諸如j、_丨、」·或·〕·之某些 旋轉因子。另外,亦可自第二記憶體24〇省略相同值之複 製。因此,第二記憶體240中旋轉因子之數目可小於
Nx(n-l)。有效之建構可利用以下事實:用於卯丁所有階段 之旋轉S子為用於FFT第H或最終階段中之旋轉因子 的子集,此取決於FFT建構頻率消去演算法還是時間消去演 算法。 、 將複數乘法态250a-250b耦接至暫存器組及第二記憶體 240。該等複雜乘法器25〇a_2鳥組態為用來自第二記憶體 240之適當旋轉因子使儲存於暫存器組23〇中之引擎 之輸出加權。圖2中所示之實施例包括兩個複數乘法器25如 及250b丨而,可基於速度至晶粒面積之交換來選擇包括 於FFT模組200中複數乘法器(例如25〇a)之數目。可在一晶 粒上建構較大數目之複數乘法器以便加快附之執行。然 而,增加之速度是以晶粒面積為代價的。當晶粒面積臨界 時’可減少乘法器之數目。通常,在建構mFFT引擎220 時設計將不包括超過Μ個之複數乘法器,因^個複數乘 法器足以將所有非平凡旋轉因子並行供應至附引擎22〇之 輸出。舉例而言’組態為執行8點基數2 FFT之FFT模组 2〇〇(例如圖1中所示)可建構2個複數乘法器,但其可建構僅 僅一複數乘法器。 在母乘法知作期間,每一複數乘法器(例如2心)對來自 :存器組230之單—值及儲存於第二記憶體⑽中之相應旋 轉因子進㈣作。若複數乘法器之數目比待執行之複數乘 98059.doc 200534121 法的數+目少,則一複數乘法器將對來自暫存器組230之多 個FFT值執行操作。 將複數乘法器(例如250a)之輸出寫入暫存器組230,通常 為提供輸入至複數乘法器之相同位置。因此,在複數乘法 之後,無論複數乘法器建構於FFT引擎220之内或與圖2中所 示暫存器組230相關聯,暫存器組之内容表示FFT階段輸出 係不變的。 耦接至暫存器組230之轉置模組232對暫存器組230之内 容執行轉置。轉置模組232可藉由重排暫存器值來轉置暫存 器内容。或者,轉置模組232可在自暫存器組230讀取其内 容時對暫存器組230之内容進行轉置。在將暫存器組230之 内容寫回記憶體210中供應輸入至FFT引擎220之列處之前 對其進行轉置。暫存器組230中值的轉置保持了 FFT所有階 段中用於FFT輸入之列結構。 處理器262與指令記憶體264可組態為在模組間執行資料 流,且可組態為執行圖2之一或多個組塊之某些或全部。舉 例而言,指令記憶體264可儲存一或多個處理器可用指令作 為引導處理器262處理FFT模組200中資料之軟件。 可將處理器262及指令記憶體264建構為FFT模組200之部 分或可為FFT模組200之外部。或者,處理器262可位於FFT 模組200之外部,但指令記憶體264可位於FFT模組200之内 部,且可(例如)與用於樣本之記憶體210或儲存旋轉因子之 第二記憶體240通用。 圖2中所示實施例之特徵為:當演算法之基數改變時速度 98059.doc -18- 200534121 可將所需循 與面積之間的交換。對於建構N =,點之卯丁 環之數目估計為: #週期= 其中, ρ·ϋ =待計算之r個基數riFFT之數目 州1^=1^對]·個元素之向量執行一讀取、fft、旋轉乘法 及寫入所用時間 〆 假定nfft為獨立於基數之常數。循環數減少約μ (〇(l/r))。當轉置所需之暫存器數目增加為『2時,建構所需 之面積將增加〇(r2)。暫存器之數目及建構暫存器所需之面 積支配了大N之面積。 可選擇提供所要速度之最小基數以建構用於不同感興趣 狀況之FFT。假若模組之速度足夠,則基數之最小化將用於 建構模組之晶粒面積降至最小。 圖3 A-3D為FFT處理300之實施例之流程圖。可藉由(例如) 圖2中之FFT模組200來執行該處理300。或者,可將處理3〇〇 作為一或多個處理器可用指令實施並由處理器與記憶體執 打。在其它實施例中,處理3〇〇之部分可在硬體中執行及其 它部分由軟體執行。 處理300開始於塊3〇2,其中FFT模組(例如,使用處理器) 將待變換之資料寫入記憶體,該記憶體具有足以儲存至少 與FFT基數相等數目之樣本的寬度。舉例而言,若丁模組 組態為執行8點基數2之FFT (如圖1中所示),則將記憶體組 98059.doc -19- 200534121 態為4列2行且每-行可組態為儲存兩個複數樣本。處理器 可(例如)自第一行開始將樣本逐行寫入記憶體行中並在^ 第一行填滿時繼續寫入第二行中。 一旦將樣本資料寫入記憶體中,FFT模組進入塊3〇4,其 中處理器初始化階段計數器。如以上所述及圖丨中所示, Ν=Λ點FFT包括„個階段。在FFT開始處,處理器可將階段 计數益初始化至1。在初始化階段計數器之後,fft模組進 入塊310且處理器初始化部分FFT及塊計數器。可將部分 FFT及塊汁數器初始化為(例如)〇。 如圖1之實例中所示,在FFT之每一階段中所執行之部分 FFT之數目保持不變,但跟蹤包括於每一 FFT計算中之樣本 指數之計數器視階段而改變。 在對部分FFT及塊計數器初始化之後,FFT模組進入塊 3 12,其中處理器對列位址指標初始化。該列位址指標判定 由FFT引擎操作之記憶體的列。舉例而言,處理器可如下判 定列位址指標之值: P列= Ck.rn-k+fk. FFT模組進入塊3 14並基於列位址指標之值自樣本記憶體 讀取列。舉例而言,處理器可自樣本記憶體讀取列並將其 寫入FFT引擎中之位置。處理器可讀取由位址指標判定之 列: 卜其中^表示階段之總數及k表示 階段計數器的值。 一旦將該等列讀入FFT引擎,FFT模組進入塊320並在所 98059.doc -20- 200534121 擷取樣本上計算r點FFT。在實施例中由fFt引擎執行之點 FFT之數目等於自記憶體所讀取之列的數目, I·。將FFT引擎之輸出寫入rxr暫存器組中。 土 FFT模組進入塊322並將儲存於旋轉因子記憶體中之旋轉 因子應用至FFT輸出值以用旋轉因子使該等值加權。可=用 一或多個乘法器來應用旋轉因+,且該等乘法器可组態為 複數乘法器。在用旋轉因子加權之後’在步驟324中乘=器 將結果寫回rxr暫存器組中。 °
FFT模組然後進入步驟33〇並對暫存器組中該等值的次序 進行轉置。在-實施例中,處理器可對儲存於暫存器㈣ 之值的次序進行轉h在另—實施例中,可在自暫存器植 中讀取值時發生轉置。舉例而言,可以列次序將乘法器之 輸出寫入暫存器組中並以行次序將其自暫存器組中讀出, 以此導致具有相對少處理之轉置。 圖3A及圖3B中所示之連接^ 331用於連接顯示於兩個 圖頁中之流程圖之部分,且不形成處理器3〇〇之實質部分。 FFT模組經由連接器八331進入步驟332,並將來自暫存器組 之轉置結果寫入樣本記憶體中。將暫存器組中之轉置結果 寫入在塊3 14中所判定由位址指標識別之列中。若藉由行至 列轉換來執行轉置,則FFT模組可使用處理器讀取暫存器組 之行並以列將結果寫入由位址指標識別之位址中。 FFT模組進入塊334並更新部分卯丁及塊計數器的值。如 初期所討論,將FFT之每一階段作為基數r部分FFT之一或多 個塊來執行。在步驟334中,FFT模組更新部分fft及塊計 98059.doc 21 200534121 數器的值。處理器可更新(例如)部分FFT計數器的值 fk=(fk+l)mod(rnH),及若部分FFT計數器的值為0,則增加 · 塊計數器的值。 FFT模組進入決策塊340並判定是否已計算完所有部分 FFT及塊。若塊計數器中的值小於該階段中塊之數目(ck< r11·1),則並非已判定完所有部分FFT。若並未已計算完所有 部分FFT及塊,則FFT模組進入塊342以更新部分FFT及塊計 數器的值以處理額外之部分FFT。FFT模組然後經由連接器 φ C 343返回至塊310以繼續處理用於當前或下一 FFT塊之部 分FFT。連接器C 343不是處理300之實質部分,而是用於連 接頁面間之流程圖。 若在決策塊340處之FFT模組判定已計算完當前階段之所 有塊,則FFT模組進入決策塊350以判定是否已處理完η-1 個階段。若未完成,則FFT模組進入塊352以更新階段計數 器的值並經由連接器B 353返回至塊310。連接器B 353不是 處理300之實質部分,而是用於連接頁面間之流程圖。 籲 在決策塊350處,若FFT模組判定已處理完η-1個階段,貝|J FFT模組經由連接器D 351繼續處理FFT之最終階段。FFT模 組可在不同實施例中建構FFT之最終階段。圖3C說明了 FFT 模組可建構最終FFT階段之一實施例。圖3D說明了用於建 構FFT之最終階段之一替代實施例。因此,FFT模組可自圖 ▼ 3B上之連接器D 351進入圖3C或3D上之連接器D 351,但並 - ψ 非兩者皆可,因為圖3C及3D說明了相同之最終FFT階段之 : 替代實施例。 98059.doc -22- 200534121 在一實施例中,FFT模組可建構如圖3C中所示之最終FFT 階段處理。在圖3C中說明之最終階段處理中,FFT模組連 續取出列,但在部分FFT之後不執行任何轉置。結果為:FFT 結果在每一列中具有如初始FFT階段中獨立之樣本,但其中 該等列以基數反向次序排列。若在FFT之後存在IFFT階段則 該次序係有利的。在存取FFT結果時FFT模組可將基數反向 次序考慮在内,或者,若所要的是按次序結果,則FFT模組 可建構列重新排序引擎以對該等列重新排序。 為了執行圖3C中所示之最終階段處理,FFT模組自圖3B 上之連接器D 351進入圖3C上之連接器D 351。FFT模組進 入塊362並對列位址指標初始化。可將列位址指標初始化為 P列=cn.r,其中將cn初始設定為0及r為FFT基數。 FFT模組然後以與處理先前FFT階段幾乎相同之方式繼 續處理最終FFT階段。在塊364中,FFT模組自記憶體讀取 由位址列指標如下計算而識別的列:ai=p列+i,i = 0··.(!*-1)。 FFT模組進入塊366並對所擷取列中的值計算部分FFT。 FFT弓1擎在所擷取歹上計算I*個不同之r點部分FFT。 FFT模組進入塊368並將部分FFT輸出值寫入暫存器組。 FFT模組進入塊370並將暫存器組中的值寫入供應資料至 FFT弓I擎之樣本記憶體歹|J 〇 FFT模組增力口塊;370中計數器的 值cn 〇
FFT模組進入決策塊372並判定是否已處理完最終塊中所 有部分FFT。若未完成,FFT模組返回塊362並繼續處理樣 本記憶體之列。若已處理完最終階段中所有部分FFT,FFT 98059.doc -23- 200534121 模組自決策塊372進入可選之列重新排序塊374,其中FFT 模組執行列重新排序。FFT模組然後進入塊399並完成N點 FFT。 作為一替代最終FFT階段,FFT模組可替代執行圖3D中所 示之處理。在圖3D之流程圖中所說明之最終FFT階段中, FFT模組根據用於FFT之第一階段之相同次序來取出該等 列中的樣本。結果為:每一列中之樣本以連續順序排列, 但其中該等列以部分基數反向次序排列。另外,部分基數 反向次序僅在FFT階段之數目大於3時出現。儘管存在部分 基數反向列次序,此最終階段處理因為每一列中之樣本連 續可是有利的。 為了執行圖3D之最終階段處理,FFT模組自圖3B上之連 接器D 351進入圖3D上之連接器D 351。FFT模組進入塊382 並使用用於FFT之初始階段之相同演算法來設定列位址指 標。 FFT模組進入塊384並讀取由指標識別之列,且進入塊386 並在該等列上執行部分FFT。FFT模組然後進入塊388並將 部分FFT之結果寫入暫存器組中。FFT模組然後進入塊390 並對暫存器組中值的次序進行轉置。 FFT模組然後進入塊392並將經轉置值寫回樣本記憶體。 FFT模組然後進入決策塊396以判定是否已計算完最終階段 塊中之所有部分FFT。若未完成,則FFT模組返回至塊382 並更新指標以用於下一部分FFT。 在決策塊396處,若FFT模組判定已計算完最終階段中之 98059.doc -24- 200534121 所有部分FFT,則FFT模組進入塊398並執行列重新排序。 如同圖3 C中所示之先前最終階段實施例,列重新排序步驟 係可遠的。右未執行列重新排序,或在執行可選之列重新 排序之後,則FFT模組進入塊399並完成FFT。 圖4為根據圖3A-3B之處理而執行之8點基數22FF 丁實施 例之。己隱體内谷及暫存器組内容之功能方塊圖。該8點 使用4列及2行之樣本記憶體。暫存器組係組態為r>^矩陣, 在此狀況下為2x2矩陣。 以兩行(412及414)排列顯示了樣本記憶體41〇之初始内 谷。可以仃次序來寫入樣本記憶體,將值寫入第一行412 中直至該行填滿,且然後將值寫入第二行414中。樣本記憶 體410之每一列包括用於執行初始2點叩丁之正確樣本值。 自樣本記憶體初始擷取列a〇&a2,並在儲存於該等列中 的值上執订FFT。以適當之旋轉因子使結果加權,並將該等 j果寫入暫存器組422。然後在寫回樣本記憶體之前對暫存 為組值422轉置。類似地,自記憶體榻取列mu,在贿 引擎中進打處理,以適當之旋轉因子使其加權,並寫入暫 存器組424。424中的暫存器值覆寫了已轉置且重寫入樣本 記憶體中之該暫存器之先前暫存器值422。將新的暫存器組 值424轉置且重寫入記憶體。 …樣本s己憶體430顯示了完成第一階段及第一轉置後之内 谷:貧料仍組織於兩行432及434中,但基於轉置對該等值 進仃調整以保持將一起處理的樣本之列關係。 自樣本圮憶體初始擷取列叻及al並在儲存於該等列中的 98059.doc -25· 200534121 值上執行FFT。以適當之旋轉因子使結果加權,並將該等結 果寫入暫存器組442中。然後在寫回樣本記憶體之前將暫存 器組值442轉置。類似地,自記憶體擷取列a2及a3,在FFT 引擎中進行處理,以適當之旋轉因子使其加權,並將結果 寫入暫存器組444中。將值轉置並重寫入樣本記憶體中。 樣本記憶體450顯示了完成第二階段及第二轉置後的内 容。在第三樣本記憶體450排列中,自樣本記憶體初始擷取 列a0及al並在儲存於該等列中的值上執行FFT。以適當之旋 轉因子使結果加權,並將該等結果寫入暫存器組462中。然 後在寫回樣本記憶體之前將暫存器組值462轉置。類似地, 自記憶體擷取列a2及a3,在FFT引擎中進行處理,以適當之 旋轉因子使其加權,並寫入暫存器組464中。將該等值轉置 並重寫入樣本記憶體中。寫入樣本記憶體470中之轉置結果 表示8點FFT之輸出。 圖5 A及5B為可合併如本文所述FFT模組之OFDM系統組 件之功能方塊圖。討論了 OFDM傳輸器500及OFDM接收器 540。可在組態為在OFDM系統内通訊之設備或裝置之内建 構每一 OFDM傳輸器500或OFDM接收器540。此等設備包括 (但不限於)諸如蜂巢式電話之無線電話、個人數位助理及其 類似物,或某些其它通訊設備。 圖5A為OFDM傳輸器500之功能方塊圖,該OFDM傳輸器 500可建構圖2之FFT模組及圖3A及3B之FFT處理。可在單一 1C或ASIC中建構圖5A之OFDM傳輸器500之某些或全部組 塊0 98059.doc -26- 200534121 OFDM傳輸器500包括資料源502,其通常包括組態為儲 存資料樣本之某種類型之儲存設備。該等資料樣本使用搞 接至記憶體設備之類比數位轉換器(ADC)(未圖示)可產生 於OFDM傳輸器500之外部或可產生於〇fdM傳輸器500之 内部。 單一資料流之特徵可為串列資料流。串列轉並列轉換器 5 10耦接至資料源502並形成並列資料流用於OFDM傳輸器 500中之每一正交載波。串列轉並列轉換器510之輸出耦接 至調變器,其中每一並列資料流可調變OFDM載波之相應載 波。 然後將多個經調變OFDM載體耦接至IFFT模組520,其可 自圖2之FFT模組組態得到且可使用圖3A及圖3B之處理。 IFFT模組520將正交頻率變換為時域〇fdM符號。IFFT模組 520之輸出耦接至並列轉串列轉換器522以將並列輸出轉換 為單一串列符號。並列轉串列轉換器522之輸出可耦接至可 為無線傳輸器之傳輸器5 3 0。 圖5B為OFDM接收器540之功能方塊圖,該OFDM接收器 540為圖5A之OFDM傳輸器500之補充物。同OFDM傳輸器 500之狀況相同,可在單一 1〇或ASIc中建構〇fdM接收器 540 ° OFDM接收器54〇包括接收器542,其可組態為接收由傳 輸器廣播之OFDM符號之無線接收器。接收器542可組態為 來對所接收訊號進行放大、濾波及降頻轉換以恢復基頻訊 號。 98059.doc 200534121 基頻訊號耦接至串列轉並列轉換器544,操作該串列轉並 列轉換器544以將串列基頻資料流轉換為並列資料流以用 於處理。串列轉並列轉換器544之輸出耦接至FFT模組55〇, 其可為圖2之執行圖3A及3B之處理的FFT模組。 FFT模組550將時域符號變換為多個正交頻率分量。fFT 椟組550之輸出耦接至解調器56〇,操作該解調器56〇以解調 變正交頻率來恢復資料。 並列轉串列轉換器562耦接至FFT模組55〇之輸出並將並 列資料轉換為串列資料流。將串列資料流耦接至資料處理 态用於進一步處理。舉例而言,可將語音資料轉換成類比 格式以用於放大並傳遞至揚聲器。可進一步處理視訊資料 並將其引導至顯示設備。 建構FFT架構之FFT模組可在與先前之FFT建構相比減少 數目之指令中執行適當變換。FFT模組包括將多個值排列在 單一列中之樣本記憶體。在單一列之樣本上執行FFT操作並 將其寫入暫存器組。可使用一或多個複數乘法器以將旋轉 因子應用至部分FFT結果。 將暫存器組中加權部分FFT結果轉置並重寫入樣本記憶 體。該轉置保持了 FFT輸入之關係以用於在樣本記憶體之相 同列中的部分FFT。重複該過程多個FFT階段直至完成所要 之 FFT。 可直接在硬體、由處理器執行之軟體模組或兩者之組合 中實施本文所揭示之方法、處理或演算法以及實施例之步 驟。 98059.doc -28- 200534121 軟體模組可存在於RAM# i咅驊^ 。己U體、快閃纪憶體、非揮發性 卜R〇M5己憶體、ERr〇M記憶體、EEPR〇M記憶體、 子裔、硬碟、抽取式磁碟、CD-職或此項技術中已知 它形式之儲存媒體中。將例示性儲存媒體麵接至 °。i侍處理夯可自儲存媒體讀取資訊及將資訊寫入 =子媒體。在替代方法中’儲存媒體可與處理器成一整體。 卜可以實&例中所不次序來執行或使用已修正次序之 乂驟來執订各種方法。另外,可省略—或多個處理步驟或 f法步驟’或可將一或多個處理步驟或方法步驟增加至該 等方法及過程。可在該等方法及過程之開始、末端或介入 現有元件中添加額外之步驟、組塊或措施。 提i、所揭示貫轭例之以上描述以使得任何普通熟習此項 技術者可製造或使用此揭示内容。普通熟習此項技術者將 易瞭解對此等實施例進行之多種修正,且在不脫離本揭示 内容之精神或範嘴的情況下可將本文所界定之通用原則應 用至:它實施例。因此,本揭示内容並不意欲限於本文所 不之實施例,而是與本文所揭示之原則及新穎特徵相一致 之最廣泛範疇相符合。 【圖式簡單說明】 圖1為8點基數2之FFT之流程圖。 圖2為FFT模組之一實施例之功能方塊圖。 圖3A-3D為FFT處理之實施例之流程圖。 圖4為用於8點基數2之FFT之一實施例之階段的記憶體内 容之功能方塊圖。 98059.doc -29- 200534121 圖5A-5B為使用本文所揭示之FFT模組之OFDM系統組件 之實施例之功能方塊圖。 【主要元件符號說明】 200 FFT模組 210 記憶體 220 FFT引擎 230 暫存器組 232 轉置模組 240 第二記憶體 250a、250b 複數乘法器 262 處理器 264 指令記憶體 33卜 343 > 35卜 353 連接器 410 、 430 、 450 、 470 樣本記憶體 412 、 414 樣本記憶體410之行 422 > 424 > 442 、 444 > 462 〜464 暫存器組 432 、 434 樣本記憶體430的行 452 、 454 樣本記憶體450之行 472 、 474 樣本記憶體470之行 500 OFDM傳輸器 502 資料源 510 、 544 串列轉並列轉換器 512 調變器 520 98059.doc - 30 - IFFT模組 200534121 522 、 562 並列轉串列轉換器 530 傳輸器 540 OFDM接收器 542 接收器 550 FFT模組 560 解調器 570 資料處理器 98059.doc -31 -