以樹狀重組技術實現高延展性數位傅立葉轉換器之研究
96
0
0
全文
(2) 以樹狀重組技術實現高延展性數位傅立葉轉換器之研究 Design on Scalable FFT Processor Using Tree Transformation Technique. 研究生:林毅慧. Student : Yi-Hui Lin. 指導教授:董蘭榮. Advisor : Lan-Rong Dung 國立交通大學 電機與控制工程學系 碩士論文. A Thesis Submitted to Department of Electrical and Control Engineering College of Electrical Engineering and Computer Science National Chiao Tung University in partial Fulfillment of the Requirements for the Degree of Master in Electrical and Control Engineering July 2004 Hsinchu, Taiwan, Republic of China. 中華民國九十三年七月.
(3) 以樹狀重組技術實現高延展性數位傅立葉轉換器之研究 學生:林毅慧. 指導教授:董蘭榮. 國立交通大學電機與控制工程學系. 摘. 要. 近幾年來快速傅立葉轉換與反快速傅立葉轉換已經被廣泛的被提出並 應 用 在 xDSL 上 。 文 獻 上 可 考 之 快 速 傅 立 葉 轉 換 演 算 法 很 多 , 如:radix-2、radix-4 與 split-radix 等。這些演算法各有各的優點以符合 應用的需求。已有很多論文針對其中一種演算法來實現硬體,但是很 少有論文能提出彈性的方法或是硬體架構能允許設計者充分且適當探 索分析演算法的平行度與元件配置可能。在本篇論文中,提出用樹狀 的架構來詮釋各種演算法並充分呈現演算法平行化的各種可能性。我 們所提的方法可以彈性的實現不同的快速傅立葉轉換運算,而且在硬 體架構上也可依使用者所需增加平行度。為了證實我們提出的樹狀 FFT 架構的可行性,我們用 FPGA 實現 SR-2/4 64 點的 FFT 並完成軟體驗證。. i.
(4) Design on Scalable FFT Processor Using Tree Transformation Technique student :Yi-Hui Lin. Advisor:Dr. Lan –Rong Dung. Department of Electrical and Control Engineering National Chiao Tung University.. Abstract FFT and IFFT have been broadly applied to xDSL technology. There have existed a large number of FFT algorithms, such as radix-2, radix-4 and split-radix.. Designers may use any of them to implement FFT/IFFT. computations according to system requirements.. Papers have presented. architectures for implementing specific FFT algorithms; however, few papers propose general architectures for exploring possibilities of parallelization.. This thesis proposes a tree-based FFT algorithm that. gives designers a good position to view the parallelism of FFT algorithms and hence provides a handy tool for FFT/IFFT architects.. The tree-based. FFT algorithm is highly scalable in terms of the number of processing elements and pipelining buffers.. The scalability makes tradeoffs between. memory and processing power tractable. To demonstrate the feasibility of proposed tree-Based FFT architecture and its correctness, we implemented a 64-point SR-2/4 FFT on FPGA platform and verified the functionality using FPGA emulation environment.. ii.
(5) 誌. 謝. 這篇論文得以完成,最要感謝的是董蘭榮教授,從題目的擬定、 理論與架構的設計到結果的分析以及論文的撰寫,都全程在旁給予我 最大的協助,尤其是老師認真的教學態度以及對學生的關懷更讓我印 象深刻,也讓我獲益良多。口試當中,承蒙胡竹生老師、黃俊達老師 與劉建男老師在百忙中撥冗參加,並給予精闢的建議,讓本論文更臻 完備,在此獻上最誠摯的感謝。 研究所這兩年,讓我成長與學習了很多,感謝一路陪我走過來的 實驗室伙伴們,顯文學長、學之學長、介皇學長、盟淳學長、健釗、 玉書、昭維、樹德與芳彥等,給予我課業上以及生活上的幫助,因為 有你們讓我有多采多姿的研究所生活。 最後,感謝我的家人一直支持著我,讓我在求學上無後顧之憂。 在此,僅將本篇論文獻給我的家人以及所有我關心及關心我的人,人 生的路上有你們相伴的我是何其幸運,謝謝你們! 林毅慧 謹識. 中華民國九十三年七月. iii.
(6) 目. 錄. 中文摘要 ................................................................................. i 英文摘要 ................................................................................. ii 誌謝 ......................................................................................... iii 目錄 ......................................................................................... iv 表目錄 ..................................................................................... vii 圖目錄 ..................................................................................... viii 第一章 緒論 ........................................................................... 1 1.1 研究背景..............................................................................1 1.2 研究動機..............................................................................5 1.3 提出的理論與方法 .............................................................5 1.4 章節安排..............................................................................6. 第二章 各種快速傅立葉轉換之演算法與硬體架構............ 7 2.1 各種快速傅立葉轉換)FFT)演算法 .................................8 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8. 分時快速傅立葉轉換(DIT FFT)演算法 ..............................8 分頻快速傅立葉轉換) DIF FFT)演算法 ..........................11 基-4 快速傅立葉轉換)Radix- 4 FFT)演算法....................13 基-22 快速傅立葉轉換(Radix-22 FFT)演算法 .....................14 基-8 快速傅立葉轉換(radix-8 FFT)演算法.........................18 基-23 快速傅立葉轉換(Radix- 23 FFT)演算法 ....................19 分割-基數 24 FFT(Split-Radix24 FFT)演算法 ....................21 分割-基數 28 FFT(Split-Radix24 FFT)演算法 ....................25. 2.2 快速傅立葉轉換(FFT)之實現架構………………………26 2.2.1 基-2 多路徑延遲換向器硬體架構.......................................28 2.2.2 基-2 單路徑延遲迴授器硬體架構.......................................29 iv.
(7) 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.2.10 2.2.11. 基-4 多路徑延遲換向器硬體架構.......................................31 基-22 多路徑延遲換向器硬體架構......................................32 基-4 單路徑延遲迴授器硬體架構.......................................32 基-22 單路徑延遲迴授器硬體架構......................................33 基-8 多路徑延遲換向器硬體架構.......................................34 基-23 多路徑延遲換向器硬體架構......................................35 基-8 單路徑延遲迴授器硬體架構.......................................35 基-23 單路徑延遲換向器硬體架構....................................36 分割基數硬體架構 .............................................................37. 2.3 結論與比較..........................................................................38. 第三章 樹狀重組技術演算法................................................ 44 3.1. Radix-2FFT 演變二元樹....................................................45. 3.2. Radix-4FFT 演變二元樹.....................................................47. 3.3. Radix-2/4FFT 演變二元樹..................................................48. 3.4. Radix-4FFT 演變四元樹.....................................................49. 3.5 模擬驗證各種樹狀圖與 FFT 的結果 ................................51 3.6 結論......................................................................................53. 第四章 樹狀硬體之實現........................................................ 54 4.1 排程......................................................................................54 4.2 樹狀硬體架構設計 .............................................................62 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5. 乘加器的邏輯電路 ...............................................................63 座標旋轉演算法乘法器 .......................................................65 資料記憶體(DM)的設計 ......................................................68 係數記憶體(CM)的設計 ......................................................69 控制單元的設計 ...................................................................70. v.
(8) 第五章 FPGA 之實現............................................................ 71 5.1. Behavior 的驗證.................................................................71. 5.2. RTL 的驗證 ........................................................................73 5.2.1 波形圖結果 ..............................................................................73 5.2.2 面積結果 ..................................................................................74. 5.3 硬體的分析與比較 .............................................................77 5.3.1 面積分析 ..................................................................................77 5.3.2 硬體比較 ..................................................................................78. 第六章 結論與未來展望........................................................ 79 6.1 結論......................................................................................79 6.2 未來展望..............................................................................79. 參考文獻 .................................................................................................81. vi.
(9) 表 目 錄 【表一】乘法器的複雜度.....................................................................38 【表二】運算的速度.............................................................................40 【表三】FFT 演算法比較 ....................................................................42 【表四】FFT 硬體架構的比較 ............................................................78. vii.
(10) 圖目錄 【圖一. 】QAM 的架構圖 ............................................................... 2. 【圖二. 】DMT 系統 ........................................................................ 4. 【圖三. 】濾波器表示 DMT 系統................................................... 4. 【圖四. 】DFT /IDFT 表示 DMT 系統 .......................................... 4. 【圖五. 】分割 Twiddle Factor ........................................................ 8. 【圖六. 】八點經過四點 DFT 轉換 butterfly 圖形 ....................... 9. 【圖七. 】八點的 DIT FFT butterfly 圖形 ................................... 10. 【圖八. 】Bit-Reverse 樹狀圖.......................................................... 11. 【圖九. 】八點的 DIF FFT butterfly 圖形....................................... 12. 【圖十. 】Radix-4 butterfly 單元 ..................................................... 14. 【圖十一 】十六點…的 radix-4 butterfly 圖形 .................................. 14 【圖十二 】Digit-reverse 樹狀圖........................................................ 15 【圖十三 】Radix-22 FFT butterfly 單元 ............................................. 16 【圖十四 】十六點的 radix-22 butterfly 圖形 .................................... 17 【圖十五 】Radix-8 FFT butterfly 單元 ............................................. 19 【圖十六 】Radix-23 FFT butterfly 單元............................................ 20 【圖十七 】十六點的 radix-2 butterfly 圖形 ...................................... 21 【圖十八 】十六點的 radix-4 butterfly 圖形 ...................................... 22 【圖十九 】Split-radix2/4 FFT butterfly 單元.................................... 23 【圖廿. 】十六點的 split-radix2/4 butterfly 圖形 ............................ 24. 【圖廿一 】Split-radix2/8 FFT butterfly 單元.................................... 25 【圖廿二 】十六點的 split-radix2/4 FFT butterfly 圖形 .................... 26 【圖廿三 】R2MDC 硬體架構 ........................................................... 28 【圖廿四 】十六點 R2SDF 硬體架構................................................. 30 viii.
(11) 【圖廿五 】R2SDF 的 butterfly 單元的模式.................................... 30 【圖廿六 】R4MDC 硬體架構 ........................................................... 31 【圖廿七 】R22MDC 硬體架構.......................................................... 32 【圖廿八 】R4SDF 的硬體架構.......................................................... 33 【圖廿九 】R4SDF butterfly 單元的型態.......................................... 33 【圖卅. 】十六點 R22SDF 硬體架構 .............................................. 34. 【圖卅一 】R8MDC 硬體架構 ........................................................... 34 【圖卅二 】R23 MDC 硬體架構.......................................................... 35 【圖卅三 】R8 SDF 硬體架構............................................................ 36 【圖卅四 】R23 SDF 硬體架構 .......................................................... 36 【圖卅五 】Split-radix 2/4 硬體架構 ................................................. 37 【圖卅六 】乘法器的複雜度的比較................................................... 39 【圖卅七 】運算的速度比較............................................................... 40 【圖卅八 】Radix-2 FFT Butterfly 單元............................................. 41 【圖卅九 】Radix-4 FFT butterfly 單元 .......................................... 41 【圖四十 】Split -radix2/4 FFT Butterfly 單元 .................................. 42 【圖四十一】Radix-2 FFT 演變二元樹狀圖 ........................................ 45 【圖四十二】八點 radix-2 FFT 演變二元樹狀圖 ............................. 46 【圖四十三】十六點 radix-4 FFT 演變二元樹狀圖 ........................... 47 【圖四十四】十六點 split-radix2/4 FFT 演變二元樹狀圖 ................. 48 【圖四十五】Radix-4 FFT 演變四元樹狀圖 ........................................ 49 【圖四十六】十六點 radix-4 FFT 演變四元樹狀圖 ........................... 50 【圖四十七】八點 radix-2 FFT(o) 與 二元樹 FFT(*)......................... 51 【圖四十八】十六點的 radix-4 FFT(o) 與二元樹 FFT(*)................... 51 【圖四十九】十六點的 split-radix2/4 FFT(o)與二元樹 FFT(*)........... 52. ix.
(12) 【圖五十 】十六點的 radix-4 FFT(o)與四元樹 FFT(*)..................... 52 【圖五十一】六十四點的 radix-2 FFT(o) 與二元樹 FFT(*)............... 53 【圖五十二】排程的示意圖................................................................... 55 【圖五十三】排程的流程圖................................................................... 56 【圖五十四】暫存器個數比較............................................................... 60 【圖五十五】MAC 數目與暫存器的關係............................................ 61 【圖五十六】樹狀的硬體架構............................................................... 62 【圖五十七】樹狀的 FFT 的實際硬體架構系統圖.............................. 63 【圖五十八】第一種乘法單元............................................................... 64 【圖五十九】第二種乘法單元............................................................... 64 【圖六十 】第三種乘法單元............................................................... 65 【圖六十一】CORDIC 的架構圖.......................................................... 67 【圖六十二】CORDIC 每一級的架構.................................................. 68 【圖六十三】資料記憶體架構............................................................... 69 【圖六十四】係數記憶體的輸入規格................................................... 69 【圖六十五】控制單元架構................................................................... 70 【圖六十六】六十四點樹狀 FFT 硬體的模擬圖形.............................. 72 【圖六十七】六十四點樹狀 FFT 硬體的模擬圖形.............................. 72 【圖六十八】六十四點樹狀 FFT 與 FFT 的比較................................. 73 【圖六十九】六十四點樹狀 FFT RTL 的模擬圖形 ............................. 73 【圖七十 】六十四點樹狀 FFT 總面積報告...................................... 74 【圖七十一】六十四點樹狀 FFT 係數記憶體面積報告...................... 74 【圖七十二】六十四點樹狀 FFT 資料記憶體面積報告...................... 75 【圖七十三】六十四點樹狀 FFT 控制單元面積報告.......................... 75 【圖七十四】六十四點樹狀 FFT 單一乘法器面積報告...................... 76. x.
(13) 【圖七十五】六十四點樹狀 FFT 面積分佈.......................................... 76 【圖七十六】FFT 面積成長分佈圖....................................................... 77. xi.
(14) 第一章 緒. 論. 1.1 研究背景 快速傅立葉轉換(FFT)在通訊系統中多被使用,我們希望能夠提出 一個有彈性的快速傅立葉轉換(FFT)硬體架構能夠適用於在各種數位 用戶迴路(xDSL)[6]中,因此在數位用戶迴路(xDSL)的應用中,快速傅 立葉轉換(FFT) 輸入資料不需要按照順序,在此應用層面下我們提出 樹狀快速傅立葉轉換(FFT)的架構讓使用者能夠根據此硬體架構去實 現硬體。以下為一些簡單的數位用戶迴路(xDSL)的介紹。數位資料的 傳輸,最早一開始是用電話利用震動的方式只能傳輸類比的語音訊 號,然而隨著科技的進步,目前已經發展至網路的型態,其中最廣為 人知,非對偁數位用戶迴路(ADSL)[7][8] 即為其中一種。數位用戶迴 路 (DSL,Digital Subscriber Line) 技 術 開 始 於 144kb/s 的. 基本. ISDN(BRI),之後才有 1.5 和 2.0Mb/s 的 HDSL 與 7Mb/s 的非對偁數位 用戶迴路(ADSL),一直到現在最為熱門的 52Mb/s 的高速數位用戶迴路 (VDSL),以上所有的傳輸技術皆簡稱為數位用戶迴路(xDSL)。在非對 偁數位用戶迴路(ADSL)中使用 DMT(Discrete Multi-tone)的傳輸技術, 而因為高速數位用戶迴路(VDSL)[4][5]速度的增快,因此傳輸技術有 1.
(15) QAM(Quadrature Amplitude Modulation)和 CAP(Carrierless AM/PM) 而 MCM 又有如 DMT(Discrete Multi-tone)等技術發展。[1][2][3] 以下先介 紹其基本調變技術: QAM 調變 先將 2 進位的資料輸入星狀圖編碼器(consterllation encoder)作對映 的動作得到特定的編碼,之後再經由 sine 與 cosine 的弦波做調變再把 訊號傳遞出去。在接收端也用同樣的兩組正交的波形再將其訊號解回 來,見【圖一】. Transmitter. Receiver. cos( 2pf c t ). cos( 2p f c t ). In Input data. Lowpass filter. x. constellation encoder. +. Lowpass filter. x. Lowpass filter. decision. x. Lowpass filter. decision. +. x. Qn. sin( 2pf c t ). sin( 2pf c t ). QAM System. 【圖一】 QAM 的架構圖. 2.
(16) DMT 調變 DMT 調變技術主要是利用 MCM(multi-carrier modulation)的調變 技術來傳輸,見【圖二】 。把資料用並行的方式傳輸,然後再分別用不 同的載波來調變,其中一個載波是一個子通道(subchannel),每個子通 道之間是互相獨立,可看成所有子通道合成一個寬頻來傳輸資料。因 為子通道非常的龐大,因此後來使用正交多頻分工(OFDM)的方法,把 每個載波重疊(overlap)然後再利用離散傅立葉轉換(Discrete Fourier Transform , DFT)使其有正交特性,見【圖二】 。 對於高速數位用戶迴路(VDSL)的原始的 DMT 系統中見【圖三】, H 0 ( Z ) 為 原 型 濾 波 器 (Prototype filter) , 至 於 H k ( Z ) H 0 ( Z ) 在頻率軸中移動. , k = 1 ~ M −1 皆 為. 2π ,傳送端實現的方式輸入端經過 IDFT 的方塊 M. 圖再經過升頻速率(upsampling rate) M,而接收端的實現方式即為,接 收端先經過降頻(downsampling) M 再經過數位傅立葉轉換方塊(DFT block) ,見【圖四】。因此在 DMT 的系統中,最重要的地方還是在離 散傅立葉轉換與反離散傅立葉轉換(DFT/IDFT) 如何實現。. 3.
(17) e j 2πf 0 t. e − j 2πf 0 t. X(0) x. e. X(1). x. +. e. x. +. channel. j 2πf1t. e j 2πf M −1t. X(M-1). x. DMT System. 【圖二】 DMT 系統. x (n ). X (1). X (M −1). Y(1). e − j 2πM −11 t. x. X (0). Y(0). x. noise. j 2πf1t. M. H0(Z). F0(Z). M. M. H1(Z). F1(Z). M. M. HM-1(Z). FM-1(Z). M. x (n ). transmitter. receiver. 【圖三】 濾波器表示 DMT 系統. M. M. M. IDFT. M. M. M. x (n ). transmitter. receiver. 【圖四】 DFT /IDFT 表示 DMT 系統. 4. DFT. Y(M-1).
(18) 因為濾波器頻帶(Filter bank)[3]的分解方式,之後會產生快速傅立 葉轉換/反快速傅立葉轉換(FFT /IFFT)的方塊。 經由以上的調頻所需要 的快速傅立葉轉換(FFT)硬體不需要按照順序輸入(in order),所以才發 展出我們樹狀的演算方式。 1.2 研究動機 以往所提出的快速傅立葉轉換(FFT)的硬體架構,大多著眼於單一 的演算法,如基-2(radix-2), 基-4(radix-4)和分割-基數(split-radix)等,在 彈性上面的選擇就因此限制住,當選擇使用分割-基數(split-radix)的演 算法,就要因此而量身定做一套硬體,但是在分析當中,每一種演算 法有其優點,應當讓使用者選擇何種演算法是最佳的。 所以,基於這樣的原因,試圖找出一套有效的理論,能夠符合任 何一種快速傅立葉轉換的演算法,也讓使用者能夠有彈性的選擇所需。. 1.3 提出的理論與方法 我們所提出的樹狀演算法,是先對各種不同的快速傅立葉轉換演 算法先形成蝴蝶圖(butterfly)的形狀,再依照樹狀的方式讓每一級的蝴 蝶圖(butterfly)皆能形成二元樹或四元樹,再依照排程方式,讓使用者 可以選擇輸入的快速傅立葉轉換型態,以得到正確的快速傅立葉轉換 結果。 5.
(19) 1.4 章節安排 本論文的組織為: 第一章:說明研究背景與動機,以及簡單的介紹我們所提出的樹 狀理論。 第二章:介紹各種不同的快速傅立葉轉換演算法與硬體,並比較 其中的優缺點。 第三章:提出如何使用樹狀延展性技術,把蝴蝶(butterfly)轉變成 平行的樹狀圖形並加以驗證。 第四章:提出樹狀延展性技術的硬體架構 第五章:FPGA 模擬圖形。 第六章:結論與未來展望。. 6.
(20) 第二章 各種快速傅立葉轉換演算法及架構 N 點輸入資料序列(input data sequence){x[n]}的離散傅立葉轉換 (Discrete Fourier Transform,DFT)[9]定義為:. N −1. X [k ] = ∑ x[n]W , n =0. kn N. where. WN = e. −j. 2π N. k = 0 ~ N −1. (2.1). 其中 N 稱為離散傅立葉轉換的長度(length),而 n 代表的是時間域 (time domain)k 代表的是頻率域(frequency domain),N 點的資料序列 (data sequence){x[k]} 的 反 離 散 傅 立 葉 轉 換 (Inverse Discrete Fourier Transform ,IDFT)定義為:. x[ n] =. 1 N. N −1. ∑ X [k ]W k =0. nk N. , where. n = 0 ~ N −1. ( 2.2). 由(2.1)與(2.2)式中其中 W Nkn 稱為交互因子(twiddle factor),可經由 【圖五】發現交互因子(twiddle factor) 把 0 到 2π分成所需的 N 等分。 [11]. 7.
(21) WN6 N / 8 WN5 N / 8. WN7 N / 8. WN4 N / 8. WN0. WN3 N / 8. W NN / 8 W N2 N / 8. 【圖五】 分割 Twiddle factor. 如果直接計算 N 點的離散傅立葉轉換需要 N(N-1)的複數加法器與 複數乘法器,因此對於 N 點離散傅立葉轉換的運算複雜度為 O(N2)。 因此發展出快速傅立葉轉換(Fast Fourier Transform,FFT)[10]演算法來 降低運算複雜度 O(Nlog2N)。 為了增加離散傅立葉轉換有效的運算,將用快速傅立葉轉換的運 算方式去實現離散傅立葉轉換,而快速傅立葉轉換可以分為分時快速 傅立葉轉換(Decimation-in-Time FFT ,DIT FFT) 和分頻快速傅立葉轉 換(Decimation-in-Frequency FFT ,DIF FFT) 。[9][12]. 2.1 各種快速傅立葉轉換(FFT)演算法. 2.1.1 分時快速傅立葉轉換(DIT FFT)演算法 分時快速傅立葉轉換(DIT-FFT)演算法又稱為分時基-2 (DIT radix-2) 快速傅立葉演算法[13],其基本的演算法定義如下: 8.
(22) 取 N = 2v N −1. X [ k ] = ∑ x[ n ]W Nkn n =0. =. ∑ x[ n]W. kn N. +. n:even. = =. ∑ x[n]W. n:odd. N / 2 −1. N / 2 −1. r =0. r =0. ∑ x[ 2r ]W N2 rk +. N / 2 −1. ∑ x[ 2r ]W r =0. kn N. rk N /2. ∑ x[2r + 1]W. + W Nk. k ( 2 r +1) N. N / 2 −1. ∑ x[2r + 1]W r =0. rk N /2. = G[ k ] + W H [ k ], k N. where. G[ k ]. and. H [k ]. are. N / 2 − po int. DFT .. 以上式子由圖形表示(以八點為例子)[14],見【圖六】:. x[0] x[2] x[4] x[8]. x[1] x[3] x[5] x[7]. N/2Point DFT. N/2Point DFT. G[0] G[1] G[2] G[3]. [0] 0 N 1 N 2 N 3 N. W W W W. H[0] H[1] H[2] H[3]. X[1] X[2] X[3] X[4]. 4 N 5 N 6 N 7 N. W W W W. X[5] X[6] X[7]. 【圖六】 八點經過四點 DFT 轉換 butterfly 圖形. 以同樣的方式,再把 N/2 點的快速傅立葉轉換再往下分成四塊 N/4 點的快速傅立葉轉換,最後圖形即變成以下之圖形 (以八點為例子),見【圖七】 :. 9.
(23) x[0] x[4]. X[0]. W N0. −1. x[2] x[6]. W. 0 N. −1. x[1] x[5]. W. 0 N. −1. x[3] x[7]. W. 0 N. −1. X[1] 0 N 2 N. W W. 0 N 2 N. W W. −1 −1. −1 −1. X[2] X[3] 0 N 1 N 2 N 3 N. W W W W. −1 −1 −1 −1. X[4] X[5] X[6] X[7]. 【圖 七】 八點的 DIT FFT butterfly 圖形. 由【圖七】的圖形中可以發現其輸入端的資料必須以反向位元 (bitreverse) 的方式輸入,輸出端才能夠依照順序輸出。其中所謂的 反向位元(bitreverse)的名詞解釋見【圖八】 ,假設 N=16,每一筆輸 入 的 資 料 x(k 3k 2k1k 0) 的 註 標 (index) 可 以 用 位 元 的 方 式 表 示 為 k0,k1,k2 與 k3 , 經 由 反 向 位 元 (bitreverse) 所 產 生 的 輸 出 為 x(k 0k1k 2k 3) ,因此經由反向位元(bitreverse)即可快速的算出目前的輸. 出註標(index)。. 10.
(24) k3. k2. k0. k1. 0. 0 1. X ( k 0 k 1k 2 k 3 ) X (0 ). X (8 ). 0. 0. 0. X (4). 1. X (12 ). 0. X (2). 1. X (10 ). 0. X (6 ). 0 1 1 1. x ( k 3 k 2 k 1k 0 ). X (14 ). 0. X (1 ). 1. X (9 ). 0. X (5 ). 1. X (13 ). 0. X (3). 0 0 1 1 0 1. X (11 ). 0. X (7 ). 1. X (15 ). 1 1. Bit-reverse. 【圖八】 Bit-Reverse 樹狀圖. 為了讓輸入端的資料依照順序輸入接下來介紹分頻快速傅立葉 轉換(DIF FFT)的演算法。. 2.1.2 分頻快速傅立葉轉換( DIF FFT)演算法 以下為分頻快速傅立葉轉換演算法的過程,也可稱為基-2 分頻 快速傅立葉轉換(radix-2 DIF FFT)演算法。 11.
(25) X [k ] =. N −1. ∑ x[ n ]W n=0. even. term :. ,k = 0 ~ N −1. kn N. X [2r ] =. N −1. ∑ x[ n ]W n=0. =. N / 2 −1. ∑. n=0. = =. ,r = 0 ~ N / 2 −1. n(2r ) N. x [ n ]W N2 nr +. N −1. ∑ x[ n ]W. n= N / 2. N / 2 −1. N / 2 −1. n=0. n=0. ∑. x [ n ]W N2 nr +. N / 2 −1. ∑. ∑. { x[ n ] + x[ n +. n=0. odd. term :. X [ 2 r + 1] =. N / 2 −1. ∑ x[ n ]W n=0. =. N / 2 −1. ∑. n ( 2 r +1) N. N. x[ n +. =. ∑. 2r (n+ ) N 2 ]W N 2. N ]}W Nnr/ 2 2. +. N −1. ∑ x[ n ]W. n= N / 2. n ( 2 r +1) N. { x[ n ] − x[ n +. N ]}W Nn ( 2 r + 1 ) 2. { x[ n ] − x[ n +. N ]}W Nnr/ 2 W Nn 2. n=0. N / 2 −1. 2 nr N. n=0. 使用以上的演算法,可以得到以下的圖形(以八點為例),見【圖九】 :. X[0]. x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7]. 0 N 1 N 2 N 3 N. W −1 W −1 W −1 W −1. 0 N 2 N. W W. −1 −1. 0 N 2 N. W W. −1 −1. W. 0 N. W. 0 N. W. 0 N. −1. X[2]. −1. X[6] X[1]. −1. X[5] X[3]. W. −1. 【圖九】 八點的 DIF FFT butterfly 圖形. 12. X[4]. 0 N. X[7].
(26) 由此所有的輸入的資料皆可按照順序輸入,因此在輸入端資料 流控制會比分時快速傅立葉轉換(DIT FFT)的控制容易。由以上的分 析接下來討論其餘的快速傅立葉轉換演算法皆以分頻快速傅立葉轉 換(DIF FFT)為基礎。. 2.1.3 基-4 快速傅立葉轉換(Radix- 4 FFT)演算法 基-4 快速傅立葉轉換(radix-4 FFT)的演算法[15]其實主要是依 基-2 快速傅立葉轉換(radix-2 FFT)所分出來的偶數輸出端部分與奇 數輸出端部分再繼續以基-2 (radix-2)的方式再分,其演算法定義如 下。 X [4k + l ]. =. N / 4 −1. 3N N N ] × W4l + x[n + ] × W42l + x[n + ] × W43l ] ⋅ W Nnl/ 8W Nnk/ 4 4 2 4 l = 0,1,2,3 and k = 0 ~ N / 4 −1. ∑ [ x[n] + x[n + n =0. where. 由此可發現能夠一次做好四點的運算,會比基-2 (radix-2)的運 算快。但是基-4 (radix-4)的演算法只能適用於點數為四的指數。 而 且其蝴蝶圖(butterfly)的形狀較基-2 (radix-2)的複雜,見【圖十】 。. 13.
(27) 【圖 十】radix-4 butterfly 單元. 以 N=16 為例子,基-4(Radix-4) 的圖形如下: x (0). X (0). x (1). X (4). x(2). X (8 ). x (3). X (12 ). x(4). W 161. x (5 ). X (1) X (5). W 162. x (6). W 163. x (7 ). X (9 ) X (13 ). x (8 ) W 162. x (9 ). W 164 x (10 ). W 166. x (11 ). X (2) X (6) X (10 ). X (14 ). x (12 ) W 163. x (13 ). W 166. x (14 ). X (3). X (7 ) X (11 ). W 169. x (15 ). X (15 ). 【圖十一】 十六點的 radix-4 butterfly 圖形. 由【圖十一】的輸出端發現,其輸出的順序並不像基-2(radix-2) 一樣形成反向位元(bitreverse),而形成反向數字(digitreverse),以十. 14.
(28) 六點為例子同反向位元(bitreverse)產生的方式一樣,解釋記憶體的 註標(index)如何變成 digitreverse,見【圖十二】。. k1. X ( k 0 , k 1). k0 0. X (0). 1. 0. X (4). 2. X (8 ). 3. X (12 ). 0 X (1 ). 1 2. 1. X (5 ). X (9 ). 3. x ( k 1, k 0 ). X (13 ). 0. X (2). 1 2. 2. 3. X (6 ) X (10 ). X (14 ). 0 1 2. 3. 3. X (3). X (7 ) X (11 ) X (15 ). 【圖十二】 Digit-reverse 樹狀圖. 因 為 輸 出 不 為 反 向 位 元 (bitreverse) 希 望 輸 出 能 維 持 像 基 -2(radix-2)一樣的方式輸出,因此就產生了基-22(Radix-22)演算法。. 2.1.4 基-22 快速傅立葉轉換(Radix-22 FFT)演算法 基-22 快速傅立葉轉換(radix-22 FFT)的演算法[16]與基-4(Radix-4) 15.
(29) 快速傅立葉轉換的演算法類似只是其蝴蝶圖(butterfly)單元可以由 兩個基-2(radix-2)的蝴蝶圖(butterfy)來實現。其演算法為: X (4k + 2l 2 + l1 ) =. N / 4 −1. ∑ [ x(n) + x(n + N / 4)W n =0. =. ∑ {[x(n) + (−1). N / 4 −1 n =0. where. l1. 2 l2 + l1 4. + x(n + N / 2)W44l2 + 2l1 + x(n + 3 N / 4)W46l2 +3l1 ]W Nn ( 2l2 +l1 )W Nnk/ 4. ]. [. ]}. x(n + N / 2) + (−1) l2 (− j ) l1 x(n + N / 4) + (−1) l1 x(n + 3N / 4) W Nn ( 2l2 + l1 )W Nnk/ 4. l1 , l 2 = 0,1. and. k = 0 ~ N / 4 −1. 在上式中最大的好處即能用兩個基-2(radix-2)的演算方式來實 現基-22(Radix-22)的演算法,而且發現其中已經把含有 j 的係數項都 合併在一起,相對於基-2(radix-2)快速傅立葉轉換的演算法,基 -22(Radix-22)快速傅立葉轉換所要相乘的的交互因子(twiddle factor) 會比較少,因此其乘法器的數目理論上會比較少。 而其蝴蝶圖(butterfly)的元件會與之前介紹的基-4(radix-4)的不 同,比基-4(radix-4)的圖形簡單,而且較易實現。見【圖十三】。. -1. -1. -1. -1. -j. -1. 【圖十三】 R adix-22 FFT butterfly 單元. 舉 N=16 點為例子,以下圖形即是基-22(Radix-22) 快速傅立葉轉. 16.
(30) 換的圖形 。 x (0 ). X (0 ). -1. x (1 ). -1. x(2). X (4). -j. -1. x (3 ). -1. W. x (5 ). W. x (7 ). x ( 10 ) x ( 11 ). 2 16. W 164. x (6 ). x (9 ). 6 16. -1 -1. x ( 13 ). -j. -1. -1. -1. -1. W. 1 16. W. 2 16. W. -1 -1. x ( 14 ). -1. x ( 15 ). -1. X ( 14 ) X (1 ). -1. -1. X ( 10 ) X (6 ). 3 16. -1 -1 -1. -j -1. -1 -j -j -j. -1 -1 -1. X (9 ). X (5 ). -j x ( 12 ). X ( 12 ) X (2). x(4). x (8 ). X (8 ). X ( 13 ) X (3 ). W 163. W 166 W 169. -1. X (7 ). -1 -1. X ( 11 ). -j. -1. X ( 15 ). 【圖十四】 十六點的 radix-22 butterfly 圖形. 由【圖十一】與基-2(radix-2)的圖形來比較可以發現【圖十四】 的交互因子(twiddle factor)會比較少。因此高基(radix)的演算法可以 使真正所需要相乘的交互因子(twiddle factor) 減少,但是相對的高 基(radix)的演算法其單一 PE(Processor Element)的控制與實現會比 低基(radix)的實現複雜。因此接下來介紹基-8 快速傅立葉轉換 (radix-8 FFT)的演算法。. 17.
(31) 2.1.5 基-8 快速傅立葉轉換(radix-8 FFT)演算法 在介紹了基-2 快速傅立葉轉換(radix-2 FFT) 與基-4 快速傅立葉 轉換(radix-4 FFT)之後,也能夠使用更高的基-8 快速傅立葉轉換 (radix-8 FFT)的演算法去實現,以下為基-8 快速傅立葉轉換(radix-8 FFT)的演算法: N −1. X (8k + l ) = ∑ x(n)W N(8 k + l ) n n =0. 7 N / 8 −1. mN ⎞ (8 k +l )( mN / 8+ n ) ⎛ x⎜ n + ⎟W N 8 ⎠ ⎝ m =0 n =0 7 N / 8 −1 ⎡ ⎛ mN ⎞ lm ⎤ nl nk = ∑ ∑ ⎢ x⎜ n + ⎟W8 ⎥W N W N / 8 8 ⎠ m =0 n =0 ⎣ ⎝ ⎦ 6N 4N 2N l ⎡ ⎤ )W4−l ⎥ )W42l + x(n + )W4 + x(n + { x ( n) + x ( n + N / 8 −1 ⎢ 8 8 8 ⎣ ⎦ = ∑ N 3N l 5N 7N ⎡ ⎤ n =0 + ⎢ x(n + ) + x(n + )W4 + x(n + )W42l + x(n + )W4−l ⎥W8l "}W NnlW Nnk/ 8 8 8 8 8 ⎣ ⎦ l=0~7 and k = 0 ~ N / 8 −1 =∑. ∑. 由以上的演算法可得知基-8 快速傅立葉轉換(radix-8 FFT)的演 算法只能適用於點數為 8 的指數。由以上的演算法將其圖形表示成 基本的蝴蝶圖(butterfly)圖形表示之。. 18.
(32) 【圖十五】 Radix-8 FFT butterfly 單元. 由基-8 快速傅立葉轉換(radix-8 FFT)的演算法所產生輸出端的 結果排列順序會成 digit-reverse 的型態,同基-4 快速傅立葉轉換 (radix-4 FFT)的演算法所說明之。. 2.1.6 基-23 快速傅立葉轉換(Radix- 23 FFT)演算法 同樣使用三個基-2 (radix-2 )去形成一個基-8 (radix-8)的方式,讓 基-8 快速傅立葉轉換(radix-8 FFT)的演算法較容易用基-2(radix-2)的 方式實現。其演算法為:. 19.
(33) X (8 k + 4 l 3 + 2 l 2 + l1 ) N / 8 −1. 6N 4N 2N )W 4− l ] )W 42 l + x ( n + )W 4l + x ( n + 8 8 8 7N 5N 3N N )W 4− l ]W 8l }W Nnl W Nnk/ 8 )W 42 l + x ( n + )W 4l + x ( n + ) + x(n + + [ x(n + 8 8 8 8 N / 8 −1 6N 2N 4N ))] ) +W 2l1 x ( n + )) + W 2l 2 W 4l1 ( x ( n + = ∑ {[( x ( n ) + W 2l1 x ( n + 8 8 8 n=0 5N 3N 7N N ) + W 2l1 x ( n + )) + W 2l 2 W 4l1 ( x ( n + ) + W 2l1 x ( n + + [ x(n + ))] W 82 l 2 + l1 }W Nn ( 4 l 3 + 2 l 2 + l1 ) W Nnk/ 8 8 8 8 8 where l 1 , l 2 , l 3 = 0 ,1 and k = 0 ~ N /8 −1 =. ∑. {[ x ( n ) + x ( n +. n=0. 由上面的演算法能夠把 W81 =. 2 2 (1 − j ) 和 W83 = (1 + j ) 合併在一 2 2. 起,而且這兩個交互因子(twiddle factor) 並不需要使用到複數乘法 器,只需要使用實數乘法器的運算,因此單一處理單元(PE)的實現 上的面積不會太大。但是如果想使用更高基(radix)的方式去實現單 一處理單元(PE),面積與控制方法都會比較不利,所以對於高基 (radix), 基-8(radix-8)是最高的考量。 其基-23 快速傅立葉轉換(Radix- 23 FFT)蝴蝶圖( butterfly)基本形 狀為: x(n). X (k ). x( n + N / 8). -1 -1. x( n + 2 N / 8). -1. x( n + 3 N / 8) x( n + 4 N / 8) x( n + 5 N / 8) x( n + 6 N / 8) x( n + 7 N / 8). X ( k + 4 N / 8) X ( k + 2 N / 8). W82. -1. X ( k + 6 N / 8) X ( k + N / 8). -1 W81. -1 -1. -j. -1. -j. -1. X ( k + 3 N / 8). -1 -1. W83. 【圖十六】 Radix-23 FFT butterfly 單元. 20. X ( k + 5 N / 8). -1. X ( k + 7 N / 8).
(34) 2.1.7 分割-基數 24 快速傅立葉轉換(Split-Radix24 FFT)演算法 分割-基數快速傅立葉轉換(Split-Radix FFT) [17]是對於交互因 子(twiddle factor) 去做不同的分解,選擇最好的分解方式把運算複 雜度降至最低。通常選擇分割-基數 24 快速傅立葉轉換(Split-Radix24 FFT)的演算法,因為基-2(radix-2)與基-4(radix-4)是比較常使用的演 算法,因此選擇以此兩種混和的方式來形成分割-基數 24 快速傅立 葉轉換(Split-Radix24 FFT)。以下先由十六點的基-2(radix-2)蝴蝶圖 (butterfly)及基-4(radix-4)蝴蝶圖(butterfly)說明其如何演變成分割-基 數(Split-Radix)。十六點的基-2(radix-2)蝴蝶圖(butterfly)見【圖十 七】 。十六點的基-2(radix-2)蝴蝶圖(butterfly)見【圖十八】。 x ( 0). X ( 0) W81. x(1). -1. X (8). W82 x ( 2) x(3) x ( 4). -1. x ( 6). -1. x (7 ). x(11). -1. W82. -1. -1. x(14). x(15). -1. W81. W162. W82. W163. W83. -1. -1. -1. -1. -1. W167. W41. -1. -1. X (13) X (3). W81. -1 W166. X (9). X (5). -1 -1. -1. -1. -1. X (14) X (1). W161. W165 x(13). W41. -1. -1. X (10). X (6). -1. W164 x(12). X (12). X ( 2). W83. x(10). -1. W81. -1. x(9). W41. -1. x(5). x(8). X ( 4). -1 W83. -1. -1. W82. X (7 ). -1. W83. X (11). W41. -1. -1. -1. 【圖十七】 十六點的 radix-2 butterfly 圖形 21. X (15).
(35) x (0). X (0). x (1). X (4). x(2). X (8 ). x (3). X (12 ). x(4). W 161. x (5 ). X (1) X (5 ). W 162. x (6). W 163. x (7 ). X (9 ) X (13 ). x (8 ) W 162. x (9 ). W 164 x (10 ). W 166. x (11 ). X (2) X (6 ) X (10 ). X (14 ). x (12 ) W 163. x (13 ). W 166. x (14 ). X (3). X (7 ) X (11 ). W 169. x (15 ). X (15 ). 【圖十八】十六點的 radix-4 butterfly 圖形. 分割-基數 24 快速傅立葉轉換(Split-Radix24 FFT)是利用相同的 方式使用基-2 (radix-2)與基-4 (radix-4)的演算法去擴充,由以上的基 -2 快速傅立葉轉換(radix-2 FFT)圖形觀察之,可以發現偶數的輸出 端其交互因子(twiddle factor)皆為 1,所以在偶數的輸出端不需乘法 器 ,但在基-4(Radix-4)的圖形終究沒有像基-2 (radix-2)一樣的規則 性,見【圖十八】 。但是基-4 快速傅立葉轉換(radix-4 FFT) 卻比基-2 快速傅立葉轉換(radix-2 FFT)的乘法複雜度低。從以上的觀點來看, 對奇數輸出端與偶數輸出端使用不同的基底可以有效的降低複數乘 法與加法的的數目。因此對於偶數點的資料輸入使用基- 2(radix-2) 的演算法:. 22.
(36) X ( 2k ) =. N / 2 −1. ∑ ( x[n] + x[n + n =0. N ])W Nn / 2 2. where. k = 0 ~ N / 2 −1. 而對於奇數點的輸出端使用基-4(radix-4)的演算法:. X(4k +1) = X(4k + 3) =. N / 4−1. ⎧⎡. n=0. ⎩. N⎤. ⎡. N. 3N ⎤⎫ n nk ) ⎬WNWN / 4 4 ⎥⎦⎭. N⎤. ⎡. N. 3N ⎤⎫ 3n nk ) ⎬WN WN / 4 4 ⎥⎦⎭. ∑ ⎨⎢⎣x(n) − x(n + 2 )⎥⎦ − j⎢⎣x(n + 4 ) − x(n +. N / 4−1. ⎧⎡. n=0. ⎩. ∑ ⎨⎢⎣x(n) − x(n + 2 )⎥⎦ − j⎢⎣x(n + 4 ) − x(n +. 根據以上的演算法夠畫出分割-基數(SRFFT)蝴蝶圖 (butterfly) 的基本單元,其圖形會形成 L 的形狀,見【圖十九】:. }. x(n) x(n+N/4) x(n+2N/4) x(n+3N/4). use for X(2k) WNn. -1 -1. -1. -j. X. X(4k+1). X. X(4k+3). WN3π. 【圖十九】 split-radix2/4 FFT butterfly 單元. 由基本單元來看就可發現其圖形並不規則。 以下用 N 為十六點為例子展開而成的分割-基數(SRFFT)圖形如 下:. 23.
(37) radix2/4. radix2/4. radix2/4. x ( 0). X (0). x(1). -1. x(2). -1. x(3). -1. -j. W. W162. -1. 3 16. W. -1. -j -j -j. -1 -j. x(15). -1. -1. X (14) X (1). -1. -1. x(14). -1 1 16. x(12) x(13). W83. -1. -1. X (10) X ( 6). -1. -j. -1. x(11). X (12) X ( 2). -1. x (7). x(10). -1. -1. x (6). x(9). -j. W82. -1. x(5). x(8). X ( 4). -1. x(4). X (8). -1 -1 -1. X (9) X (5). -j. -1. X (13) X (3). -1. W163. -1. W166. -1. -1 -1. 9 16. W. -1. -1. X (11) X (7 ). -j. -1. X (15). 【圖二十】 十六點的 split-radix2/4 butterfly 圖形. 雖然分割-基數(SRFFT)可以減少乘法的複雜度,使運算量可以 減 少 , 但 因 為 其 輸 出 端 並 不 能 很 規 則 直 接 用 基 -2(radix-2) 或 基 -4(radix-4) 的 處 理 器 單 元 (PE) 去 實 現 。 因 此 必 須 為 此 分 割 - 基 數 (SRFFT)得演算法特別去想一套硬體來實現。因為基-r(radix-r)的選 擇當中發現基-8(radix-8)為其最高基(radix)的選擇,因此分割-基數 24 快速傅立葉轉換(SR24FFT)也能擴充成分割-基數 28 快速傅立葉 轉換(SR28FFT)。. 24.
(38) 2.1.8 分割-基數 28 快速傅立葉轉換( Split-Radix2/8 FFT)演算法 依同樣的方式把偶數點使用基-2(radix-2)的演算法,而奇數點使 用 基 -8(radix-8) 的 演 算 法 去 形 成 分 割 - 基 數 28 快 速 傅 立 葉 轉 換 ( Split-Radix2/8 FFT)的演算法: N / 2 −1 2N ⎧ = ( 2 ) [ x ( n) + x ( n + )]W N2 nk X k ∑ ⎪ 4 n =0 ⎪ ⎪ 2N l 4N 6N )W4 + x(n + )W42l + x(n + )W4−l ] ⎨ N / 8 −1{[ x ( n) + x ( n + 8 8 8 ⎪ X (8k + l ) = ∑ 1 ⎪ 3 5 7N N N N n =0 + [ x(n + ) + x(n + )W4l + x(n + )W42l + x(n + )W4−l ]W8l }W NnlW Nnk/18 ⎪ 8 8 8 8 ⎩ where l = 1,3,5,7 , k = 0 ~ N / 2 − 1 and k1 = 0 ~ N / 8 − 1. 由以上的演算法也可發現其中也把奇數點的 W81 = W83 =. 2 (1 − j ) 和 2. 2 (1 + j ) 合併在一起,因此其乘法器的運算量會降低。由以上 2. 的演算法可以形成下圖的蝴蝶圖(butterfly)的單元。 x(n) x( n + N / 8) x( n + 2 N / 8) x( n + 3 N / 8) x( n + 4 N / 8) x( n + 5 N / 8) x( n + 6 N / 8) x( n + 7 N / 8). X ( k + N / 8). -1 -1 -1 -1. 1 8. W -j. -1. -1. -j. -1. X ( k + 3 N / 8) W83. 【圖二十一】 split-radix2/8 FFT butterfly 單元. 取 N=16 為例子,其圖形如下。. 25. X ( k + 5 N / 8). -1. X ( k + 7 N / 8).
(39) X (0). x (0). -1. x (1). -1. x(2). -1. x (3). X ( 4). -j. -1. -1. x (5 ). -j x (6). -j. x (7 ). x (9 ). x (10 ) x (11 ). -1 -1. 1 8. W. W83. x (13 ) x (14 ). x (15 ). -1. 1 8. W. -1. W81. -1 -1. -1. -1. -1 -1. -j -j. -1. X (13) X (3). W163. -1 -1. X (9 ). X (5) W165. -1. -j -1. X (14 ) X (1). 1 W16. -1. -1. X (10) X (6). -1. -j x (12 ). X (12) X ( 2). x(4). x (8 ). X (8). 3 8. W. -1. W83. -1. -1. X (11) X (7 ). W167. -1. -1. X (15). 【圖二十二】 十六點的 split-radix2/8 FFT butterfly 圖形. 2.2 快速傅立葉轉換(FFT) 之實現架構 快速傅立葉轉換(FFT)的硬體架構中最快速的運算的硬體架構,主 要是管線(Pipeline)的硬體架構,因此針對此做介紹。 對於管線(Pipeline)的架構當中,每一級的單元處理器(PE)皆相同, 不同的是暫存器數目會成級數增加。輸入端的資料會依照順序進入, 並且在硬體實現中,其產出率(througtput)高。. 26.
(40) 管線(Pipeline)快速傅立葉轉換(FFT)硬體架構可分為: 1. 基-2 多路徑延遲換向器(Radix-2 Multipath delay commutator ,R2 MDC)[21] 2. 基-2 單路徑延遲迴授器(Radix-2 single-path delay feedback ,R2SD F)[22] 3. 基-4 多路徑延遲換向器(Radix-4 Multipath delay commutator ,R4 MDC)[21] 4. 基-22 多路徑延遲換向器(Radix-22 Multipath delay commutator ,R 22MDC)[16] 5. 基-4 單路徑延遲迴授器(Radix-4 single-path delay feedback ,R4SD F)[23][24] 6. 基-22 單路徑延遲迴授器(Radix-22 single-path delay feedback ,R22 SDF)[16] 7. 基-8 多路徑延遲換向器(Radix-8 Multipath delay commutator ,R8 MDC) 8. 基-23 多路徑延遲換向器(Radix-23Multipath delay commutator ,R23 MDC)[16] 9. 基-8 單路徑延遲迴授器(Radix-8 single-path delay feedback ,R8SD F) 10. 基-23 單路徑延遲換向器(Radix-23 single-path delay commutator , R23SDF)[16] 11. 分割基數(Split-radix)架構 [18] 接下來分別仔細介紹以上之架構。. 27.
(41) 2.2.1 基-2 多路徑延遲換向器(Radix-2 Multipath delay commutator ,R2MDC)硬體架構 此硬體架構為最直接去實現基-2 快速傅立葉轉換(radix-2 FFT) 管線(pipeline)的硬體架構,其硬體架構,見【圖二十三】。. radix-2 butterfly. radix-2 butterfly. Input. x. MUX. Output0. N/4. N/2. x. N/4. W. switch. Output1. W. 【圖二十三】R2MDC 硬體架構. 當輸入端的資料先經由上端的暫存器進入,直到 N/2 各資料都 進入後,多工器就選擇下端讓第 N/2+1 筆資料進入,因此在第一級 的蝴蝶圖(butterfly)的輸入端資料為第一筆與第 N/2+1 筆資料作運 算,而其加法的結果選擇走上端,減法的結果走下端輸出與交互因 子(twiddle factor)相乘之後又存入下端 N/4 的暫存器中同時又把第一 級加法的輸出端先存入上端的 N/4 的暫存器中,接下來第一級加法 再產生的結果開關切換至下端路線走,因此第一級的第一筆資料會 與第一級的第 N/4+1 筆資料同時進入第二級的蝴蝶圖(butterfly)做運 算,在此同時第一級的第一筆減法結果也會經由開關存入上端的 28.
(42) N/4 的暫存器中,以此同樣的運算方式,直至所有點數的資料都運 算完畢。 在此架構中可以發現,在蝴蝶圖(butterfly)和乘法器要做運算時 會有一半的時間去等輸入端的資料進入,因此在乘法器與蝴蝶圖 (butterfly)的使用率只有 50%。對於 8 點的 FFT 所需使用的暫存器 4+2+2+1+1=10 個。當做 N 點的 DFT 時需要 N/2+N/2+N/4+N/4+… +2=3N/2 -2 個暫存器。在乘法器當中,因為每一級都需要一個乘法 器,所以總乘法器為 log2(N)-1。. 2.2.2 基-2 單路徑延遲迴授器(Radix-2 single-path delay feedback ,R-2SDF)硬體架構 為了要降低暫存器的數目,所以將每一級要輸出端的暫存器迴 授回來成為每一級的輸入端使用,此種硬體架構我們稱為基-2 單路 徑延遲迴授器(Radix-2 single-path delay feedback ,R2SDF),取 N=16 點為例子,其圖形如下。. 29.
(43) input. x. W. radix-2 butterfly. radix-2 butterfly. radix-2 butterfly. radix-2 butterfly. 1. 2. 4. 8. x. W. output. x. -j. 【圖二十四】 十六點 R2SDF 硬體架構. Reg. Reg. mode1. mode2. 【圖二十五】 R2SDF 的 butterfly 單元的模式. 在一開始時先把 8 筆資料先存入第一級的暫存器中,等第 9 筆 資料進入時再開始與第一筆資料同時進入第一級的蝴蝶圖(butterfly) 中進行運算,再把算出加法結果傳至下一級的暫存器中,而減法的 結果再存回同一級的暫存器中,因此此蝴蝶圖(butterfly)提供了一個 完整的迴授迴圈。 雖然在暫存器上面把原本的 3N/2 -2 個暫存器降低成 N-1 個暫 存器,但是乘法器還是不變為 log2(N)-1,因為每一級都需要一個乘 30.
(44) 法器。且乘法器與蝴蝶(butterfly)的使用率也是為 50%。 2.2.3 基-4 多路徑延遲換向器(Radix-4 Multipath delay Commutat or ,R4MDC) 硬體架構 基 -4. 多 路 徑 延 遲 換 向 器 (Radix-4. Multipath. delay. commutator ,R4MDC)硬體架構與基-2 多路徑延遲換向器(Radix-2 Multipath delay commutator ,R2MDC)的架構類似,只是輸入端的多 工器變成 4-1 的多工器,而且在第一級有 3N/2 個暫存器,且在兩各 級之間使用 4 條路徑的換向器(commutator)。因此在乘法器與蝴蝶 (butterfly)的使用率上會變成 25%。因為所使用的為基-4(radix-4)所以 只能適用於點數為 4 的 n 次方的點數。其硬體架構,見【圖二十六】 。. 3N/4. N/2. x. N/8. N/16. radix-4 butterfly. Input. Output0. 3N/16. N /4. Output1 radix-4 butterfly. x. N/2. x. 3N/16. MUX. N/16. Output2. Output3. switch. 【圖二十六】 R4MDC 硬體架構. 由以上的架構可以看出每一級皆需要 3 個乘法器,對於 N 點 DFT 需要 3(log4(N)-1),由此可知其所需要的乘法器比 R2MDC 和 R2SDF 的多。而 R4MDC 需要 5N/2-4 個暫存器,也比之前所討論的. 31.
(45) 架構多。所以此架構並不如之前所討論的好。 2.2.4 基-22 多路徑延遲換向器(Radix-22 Multipath delay commuta tor,R22MDC)硬體架構 主 要 是 為 了 把 基 -4(radix-4) 的 硬 體 架 構 , 使 用 兩 個 基 -2 (radix-2)的架構去實現,在每級 radix-22 需要兩個乘法法器總共需要 log2N-2 個,暫存器總共需要 3N/2-2 個,比 R4MDC 好。. N/2. N/4. x. radix-2 butterfly. radix-2 butterfly. N/4. x. N/8. MUX. switch. switch. 【圖二十七】 R22MDC 硬體架構. 2.2.5 基-4 單路徑延遲迴授器(Radix-4 single-path delay feedback ,R-4SDF)硬體架構 R4SDF 的硬體架構與 R2SDF 的架構也類似,只是在於使用 Radix-4 的演算法時,可以發現 radix-4 的乘法使用會比 radix-2 的 少,其數字可由 log2(N)-1 降低至 log4(N)-1 但同時蝴蝶圖(butterfly) 與乘法的使用率會降低至 25%,而且 radix-4 的蝴蝶圖(butterfly)設計 的複雜度也會比 radix-2 複雜一點。下圖即為 R4SDF 的硬體架構。. 32.
(46) N/4 N/4 N/4. N/16 N/16 N/16. radix-4 butterfly. radix-4 butterfly. input. output. x. W. 【圖二十八】 R4SDF 的硬體架構. N/4 N/4 N/4. mode1. N/4 N/4 N/4. N/4 N/4 N/4. mode2. mode3. N/4 N/4 N/4. mode4. 【圖二十九】 R4SDF butterfly 單元的型態. 2.2.6 基-22 單路徑延遲迴授器(Radix-22 single-path delay feedbac k,R22SDF) 硬體架構 同樣的道理望能夠使用兩個基-2(radix-2)的蝴蝶圖(butterfly)去 實現一個基-4(radix-4)的蝴蝶圖(butterfly),其暫存器與乘法器與 R4SDF 硬體架構相同,其硬體架構如下:. 33.
(47) 8. 4. radix-2 butterfly. input. 2. radix-2 butterfly. 1. radix-2 butterfly. x. x. -j. W. radix-2 butterfly. output. x. -j. 【圖三十】十六點 R22SDF 硬體架構. 2.2.7 基-8 多路徑延遲換向器(Radix-8 Multipath delay commutat or ,R8MDC)硬體架構 其架構與之前的 R2MDC 不同的是在於蝴蝶圖(butterfly)的不 同,使用的為基-8(Radix-8)的蝴蝶圖(butterfly),而且第一筆資料必 須先經過 7N/8 的暫存器,才會進入蝴蝶圖(butterfly)去運算。需要 乘法器 7(log2(N)/3-1),暫存器個數 9N/2-8 個。. 7N/8. 6N/8. X. 5N/8. X. 4N/8. input. Radix-8 butterfly. 3N/8. X. N/64 2N/64. 3N/64. X X. 2N/8. N/8. X X. MUX. 【圖三十一】 R8MDC 硬體架構 34. 4N/64 5N/64 6N/64 7N/64. output0 output1 output2 output3 output4 output5 output6 output7.
(48) 2.2.8 基-23 多路徑延遲換向器(Radix-23Multipath delay commutat or ,R23MDC)硬體架構 其硬體架構也是用三個基-2(radix-2)的蝴蝶圖(butterfly)來實現 一 個 基 -8(radix-8) 的 蝴 蝶 圖 (butterfly) , 讓 乘 法 器 能 夠 減 少 至 2(log2(N)/3-1),暫存器個數減少至(3N/2-2) 個。. radix-2 butterfly. radix-2 butterfly. x. N/8. N/4. N/2. N/4. radix-2 butterfly. x. N/8. N/16. MUX. switch. switch. switch. 【圖三十二】 R23 MDC 硬體架構. 2.2.9 基-8 單路徑延遲迴授器(Radix-8 single-path delay feedback ,R8SDF)硬體架構 其硬體架構也是用一基-8(radix-8)的蝴蝶圖(butterfly)來實現一 個 PE,讓乘法器能夠減少至 log8(N)-1 暫存器個數減少至(N-1) 個。. 35.
(49) N/8. N/64. N/8. N/64. N/8. N/64. N/8. N/64. N/8. N/64. N/8. N/64. N/8. N/64. -j. -1. -j. -1 -1 -1 -1 -1. W81 -j -j. -1 -1. W83. -1 -1. -1. -1 -1. -1. -1. -1. -1 -1. X. -j -j. W81 -j -j. -1 -1. W83. -1 -1 -1 -1. 【圖三十三】 R8 SDF 硬體架構. 2.2.10 基-23 單路徑延遲換向器(Radix-23 single-path delay commut ator,R23SDF)硬體架構 其硬體架構也是用三個基-2(radix-2)的蝴蝶圖(butterfly)來實現一個基 -8(radix-8)的蝴蝶圖(butterfly),乘法器至 log2(N)/3-1 暫存器個數減少至 (N-1) 個. N/2. N/4. Radix-2 butterfly. N/8. Radix-2 butterfly. X. Radix-2 butterfly. X. -j. W81. X. W. 【圖三十四】 R23 SDF 硬體架構. 以上四個硬體架構是跟基-4(radix-4)的介紹相同,不同的只是蝴 蝶圖(butterfly)的實現不同,但是相對的階數(order)變高了,乘法的 36.
(50) 使用率就會降低。 2.2.11 分割基數(Split-radix)硬體架構 參考[18],其硬體架構如【圖三十五】:. bp_pre_in 8 FIFO. 4 FIFO. 1 FIFO. 2 FIFO. bp_nxt_in pre_mod nxt_mod L BF_I. L+1. BF_II. L+2. mul mode pre_in. mul mode. W. pre_out. L+4. L+3. L+5 BF_III. BF_III. din[L-1:0]. dout[L+4:0] pre_mod e. bf_mode[1:0]. AI X. xRWI+xIWR. bf_mode[1:0]. nxt_in nxt_mod e. D. pre_mod e nxt_out. xRWR-XIWI. L. AR. nxt_mod e. 5D. 3D. [3]. [2]. [1]. [0]. BF_counter[3:0]. 【圖三十五】 split-radix 2/4 硬體架構. 因為分割基數 24(Split-radix2/4)的蝴蝶圖(butterfly)圖形非常的 不規則,在此硬體架構下,為了能夠有效的實現在此硬體架構中, 使用了三種不同型態的蝴蝶圖(butterfly)當作運算單元,且在乘法器. 37.
(51) 的地方使用了共享的機制,但為了要能夠共享乘法器,必須在使每 一級之間的排列順序重新排程不能用反向位元(bit-reverse)的方式輸 出,但因為乘法的運算複雜度降低,在功率的消耗上有所改良。 2.3 結論與比較: 對於各種不同的基-r 快速傅立葉轉換(radix-r FFT)與分割-基數快 速傅立葉轉換(split-radix FFT)可以分為幾個部分來比較與討論: 1. 複數乘法的複雜度。 2. 運算的速度。 3. 點數的限制。 4. 蝴蝶圖(butterfly)的規則性。 a. 複數乘法的複雜度 以複數的乘法器的複雜度來看我們能參考[18],單位為交互因子的 個數,見【表一】 : DFT size 8 16 32 64 128 256 512 1024 2048 4096 8192. Radix-2 2 10 34 98 258 642 1538 3586 8194 18434 40962. Radix-4 8 76 492 2732 13996. 【表一】 乘法器的複雜度 38. Split-Radix 2 8 26 72 186 456 1082 2504 5690 12744 28218.
(52) 由此表格將其用圖形表示出來,見【圖三十六】 。橫座標為快速傅 立葉轉換(FFT)的點數,而不同的演算法由不同的圖形表示之。由此圖 形能夠發現在複數乘法的複雜度當中,以分割-基數 24 快速傅立葉轉換 (Split-radix 2/4)為其運算度最低,如果要以此為考量,我們會選擇以分 割-基數 24 快速傅立葉轉換(Split-radix 2/4) 為最佳選擇。. 【圖三十六】 乘法器的複雜度的比較. b.運算的速度: 以下為運算的時間,單位為 standard unix clock,我們參考[19], 其數據為: 39.
(53) DFT size 16 128 256 512 1024 2048 4096. Radix-2 1000 2100 4400 9400 19900 42100 90900. Radix-4 700 0 3500 0 16000 0 72200. Split-Radix 900 1800 3800 7900 16800 35400 76400. 【表二】運算的速度. 把表格用圖形表示之,見【圖三十七】 。可發現當點數為 4 的指數 時,基-4 快速傅立葉轉換(radix-4 FFT)的運算時間最短,所以會最快, 因此在此情況下我們選擇基-4 快速傅立葉轉換(radix-4 FFT)會是最好 的選擇。. 【圖三十七】 運算的速度比較. 40.
(54) c. 點數的限制。 由前面幾個小節的演算法,可以發現基-r 快速傅立葉轉換(radix-r FFT)只能適用於當點數為 r 的指數時才能使用,而分割-基數 24 快速傅 立葉轉換(Split-radix 2/4) 和基-2 快速傅立葉轉換(radix-2 FFT)的演算 法是可以符合點數為 2 的指數,所以在選擇分割-基數 24 快速傅立葉轉 換(Split-radix 2/4) 和基-2 快速傅立葉轉換(radix-2 FFT)。 d. 蝴蝶圖(butterfly)的規則性: 我們可以由蝴蝶圖(butterfly)的基本單元來看其中的規則性,基-2 快速傅立葉轉換(radix-2 FFT) 之圖形為: X 2k. xn xn+ N / 2. -1. X 2 k +1 W. n N. 【圖三十八】 Radix-2 FFT Butterfly 單元. 基-4 快速傅立葉轉換(radix-4 FFT) 之圖形為: xn. X 4k. xn+N/ 4 xn+N / 2. xn+3N / 4. -1. -1. -1. 【圖三十九】. WN2n. WNn. -1. -j. WN3n. X 4k +2. X 4k +1 X 4k +3. Radix-4 FFT Butterfly 單元 41.
(55) 分割-基數 24 快速傅立葉轉換(Split-radix 2/4)之圖形為:. X. xn. x n+ N. /4. xn+ N. /2. x n+3N. /4. 4 k. X. 4 k + 2. -1. W. W -1 -j -1 【圖四十】 Split -radix2/4 FFT Butterfly 單元. X. 4 k +1. X. 4k +3. n N. 3n N. 由以上的蝴蝶圖(butterfly)形狀可以發現分割-基數 24 快速傅立葉 轉換(Split-radix 2/4)的形狀最不規則,在硬體實現上我們會較傾向選擇 廣為使用的基-2 快速傅立葉轉換(radix-2 FFT)與基-4 快速傅立葉轉換 (radix-4 FFT)的演算法。 因此所有比較的總結論以【表三】示之: 複數乘法運算. 運算速度. 點數. Butterfly 規則 性. Radix-2. 高. 慢. 2n. 規則. Radix-4. 低. 最快. 4n. 規則. Split-radix. 最低. 快. 2n. 不規則. 選擇. Split-radix. Radix-4. Radix-2 或. Radix-2 或. Split-radix. Radix-4. 【表三】FFT 演算法比較 42.
(56) 綜合所有的比較我們發現,大部分的硬體都是為不同的 FFT 演算 法量身定做而成,但在應用層面來說,各種的 radix 都有其不同的好處, 因此我們希望能夠發展出一種演算法讓硬體架構能夠用有效率的方式 去實現不同的硬體,而讓使用者選擇想達到的硬體要求。. 43.
(57) 第三章 樹狀重組技術演算法 所有的 DFT/IDFT 皆可以用 FFT/IFFT 的演算法來實現,而其演算 法後來皆可以形成蝴蝶(butterfly)的圖形,經由[20]我們瞭解到蝴蝶 (butterfly)的圖形我們能夠同等於一個訊號經過 r 個濾波器,再經由不 同的降頻(downsampling rate) r,其中 r 所指的即是看使用的演算法是基 -r 快速傅立葉轉換(radix-r FFT)以下分別說明基-2 快速傅立葉轉換 (radix-2 FFT),基-4 快速傅立葉轉換(radix-4 FFT)及分割-基數 24 快速 傅立葉轉換(Split-radix 2/4)如何轉成樹狀圖。. 44.
(58) 3.1 基-2 快速傅立葉轉換(radix-2 FFT) 演變二元樹 【圖四十一】即為基-2 快速傅立葉轉換(radix-2 FFT) (a)變成 Polyphase 型態(b)再演變成濾波器 (c)的基本圖形,其中 濾波器 中的 係數分別為 g=[1 ,1] ,h=[-1 ,1]。. xn xn+ N / 2. X. 2. X 2k -1. W Nn. Z -1. X 2 k +1. 2. (a) Radix-2 Butterfly. -1. (b) Polyphase Form. g. 2. h. 2. X 2k X. X2k+1. WNn (b) Direct Form. 【圖四十一】 Radix-2 FFT 演變二元樹狀圖. 45. X. W Nn. X.
(59) 由上圖的基本圖形的演變,我們舉之前的八點的例子將此展開成 樹狀圖,見【圖四十二】:. g. g. 2. g. x2. X4. g. 2. X2. h. 2. X6. g. 2. X1. h. 2. X5. g. 2. X3. h. 2. X7. 2. x6. x7. 2. 1 4. x4. x3. h. X. W. x0. x5. X0. 2. W 40. x1. 2. 2 h. h. g. 2. X W 80 W 82. h. 2. X. W 81. W 40. 3 8. 1 4. W. 【圖四十二】 八點. W. radix-2 FFT 演變二元樹狀圖. 由【圖四十二】我們所展開的樹狀圖中,輸入端的輸入順序一定 為反向位元(bitreverse)而輸出端也為反向位元(bitreverse),所以我們不 用像 FFT 的演算法一樣要分分時(DIT)和分頻(DIF),而且交互因子 (twiddle factor) 輸入順序也是呈現反向位元(bitreverse) 的方式。. 46.
(60) 3.2 基-4 快速傅立葉轉換(radix-4 FFT)演變二元樹 同 理 我 們 能 夠 把 基-4(radix-4) 的蝴蝶圖 (butterfly)展 成 二 元 樹 狀 圖,不同的只是交互因子(twiddle factor) 的排列方式,見【圖四十三】, 但是濾波器中的係數皆沒有改變。 。 我們取 N=16 的點數去轉成二元樹狀圖,見【圖四十三】. 2. g. g. 2 h. g. 2. 2. h. 2. W164 W162 W166. 2. x. h. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. 2. 2. x 1 -j. g. h. W162 W161 W163. 2. 2. 2. x 1 -j. g. 2. 1 -j. h. 2. x. 1. h. h. x. 1. g. 2. x 1 -j. g. g. 2. x. h. 2. x. 1. W163. 1 -j. W166 W169. 【圖四十三】 十六點 radix-4 FFT 演變二元樹狀圖 47.
(61) 3.3 分割-基數 24 快速傅立葉轉換(Split-radix 2/4) 演變二元樹 同理我們能夠把分割-基數 24 快速傅立葉轉換(Split-radix 2/4)的蝴 蝶(butterfly)展成二元樹狀圖,以下以 N=16 為例子,見【圖四十四】。. g g. 2 h. g. 2. 2. 2. h. 2. 2. W81. h. 2. g. x. h. 2 16 1 16 3 16. W W W. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. g. 2. h. 2. 2. 2. x 1 -j. g. 2. 1 -j. h. 2. x. 1. h. g. x. W83. 2. 2. x. 1. g. h. 1. x. 1 -j. 2. x 1. g. g. 2. x. h. 2. x. 1. W166. 1 -j. W163 W169 【圖四十四】 十六點 split-radix2/4 FFT 演變二元樹狀圖. 48.
(62) 3.4 基-4 快速傅立葉轉換(radix-4 FFT)演變四元樹 同理我們把基-4 快速傅立葉轉換(radix-4 FFT)的蝴蝶圖(butterfly) 展成 4 元樹狀圖,去增加其平行度,而讓濾波器的係數由兩個變成四 個,其基本單元轉變為以下的圖形,由(a)圖到(c)圖,其中濾波器的係 數分別為:g0=[1 1 1 1],g1=[-1 1 -1 1],h0=[j -1 -j 1]和 h1=[-j -1 j 1], 見【圖四十五】。. 4 Z-1. −1. −1. 4. −1 −1. −1. -1. Z. 4. −1. Z-1. − j. 4 (b). (a) radix-4 butterfly. Polyphase form. G0. 4. G1. 4. H0. 4. H1. −1 − j. 4. (c) butterfly of filter form. 【圖四十五】 Radix-4 FFT 演變四元樹狀圖. 49. −1.
(63) 我們以十六點為例子展成四元樹狀圖,見【圖四十六】 。. g0. g1. g0. 4. X[0]. g1. 4. X[8]. h0. 4. X[4]. h1. 4. X[12]. g0. 4. X[2]. g1. 4. x[10]. h0. 4. X[6]. h1. 4. X[14]. g0. 4. X[1]. g1. 4. h0. 4. h1. 4. g0. 4. g1. 4. h0. 4. h1. 4. 4. 4. x W W W. W. 0 N 4 N 2 N 6 N. x[0] x[8]. X[9]. x[4] h0. 4. x. x[12] x[2]. W W W. x[10] x[6] x[14]. W. 0 N 2 N 1 N 3 N. X[5] X[13]. X[3]. x[1] x[9] x[5] x[13]. h1. 4. x. X[7]. x[3] x[11]. W N0. x[7]. W N6 W N3. x[15]. X[11]. X[15]. W N9. 【圖四十六】 十六點 radix-4 FFT 演變四元樹狀圖 50.
(64) 3.5 模擬驗證各種樹狀圖與 FFT 的結果 根據上一章的演算法,我們使用 matlab 去模擬驗證以上圖形的推 導是正確的。 1. 驗證 N=8 的 radix-2 轉成二元樹狀圖,見【圖四十七】 。. 【圖四十七】八點 radix-2 FFT(o) 與 二元樹 FFT(*). 2. 驗證 N=16 的 radix-4 轉成二元樹狀圖,見【圖 四十八】 。. 【圖四十八】十六點的 radix-4 FFT(o) 與二元樹 FFT(*) 51.
(65) 3.驗證 N=16 的 split-radix2/4 轉成二元樹狀圖,見【圖四十九】 。. 【圖四十九】十六點的 split-radix2/4 FFT(o) 與二元樹 FFT(*). 4.驗證 N=16 的 radix-4 轉成四元樹狀圖,見【圖五十】 。. 【圖五十】十六點的 radix-4 FFT(o)與四元樹 FFT(*) 52.
(66) 以上圖形的輸入為方波其結果應該為弦波(sinc function),由觀察結 果得知,其圖形完全吻合,由此可以得知各種 FFT 演算法可以由樹狀 演算法分別轉成各種不同的樹狀圖,但因為以上的點數太少,因此我 們在擴展成六十四點的圖形做驗證,此時的輸入波形使用脈衝 (impulse),其結果見【圖五十一】。. 【圖五十一】六十四點的 radix-2 FFT(o) 與二元樹 FFT(*). 3.6 結論 根據樹狀演算法的方法拆解不同 FFT 演算法的 butterfly 圖形,經 由以上的驗證知,使用者能夠有彈性選擇各種不同 FFT 的演算方法, 皆能由樹狀的演算法去實現。. 53.
(67) 第四章 樹狀硬體之實現 4.1 排程 確定樹狀為可行的,接下來為排程方式,而其中排程的方式我們 有兩種方式,一種為密集的排程,我們希望能夠在產出率(throughput) 最高的情況下去排程,在這種情況下的排程我們會發現,在每一級的 暫存器會成 2 的級數增加,如果依此種方式去做運算,當暫存器增加 相對面積就會增加。因此我們只好想出另一種排程,及用 iteration 去尋 找每一個樹的根,在此情形下暫存器的數目不會增加,每一級的暫存 器只需要 4 個,但是產出率(throughput)在六十四點以前的 FFT 可以接 近所要求的,可是當大於六十四點時,我們的產出率(throughput)也會 成 2 的級數的增加,因此我們決定把兩個結合起來,在符合規格的產 出率(throughput)下同時也讓暫存器的數目最少。其排程的流程圖我們 以【圖五十二】與【圖五十三】示之。先處理上半個樹的資料,先產 生偶數的 FFT 輸出結果,再處理下半個樹的資料,產生奇數的 FFT 輸 出結果。. 54.
(68) a21 a20. a13 a12 a11 a10. X4 X2 b21 b20. x7. x3. x5. x1. x6. x2. x4. X0. x0. c21 c20. X6. X1. X5. X3. b13 b12 b11 b10 d21 d20. X7. 【圖五十二】排程的示意圖. 55.
(69) bitreverse x0~xN. false. true t>N/4. a01 ~ a0N/4. s=1. s=1. s=1. s=1. as0 ~ asN/(4*2(s-1)). b s0 ~ b sN/(4*2(s-1)). cs0 ~ csN/(4*2(s-1)). d s0 ~ dsN/(4*2(s-1)). s=s+1. s=s+1. s=s+1. s=s+1. s=log 2(N)-1. X0. b 01 ~ b 0N/4. …. XN / 2 X N / 4. X 3N / 4. … …. …. 【圖五十三】排程的流程圖. 56. … … …. s=log 2(N)-1. X N / 2−1. X N −1.
(70) 因此以下為我所使用的 3 種排程方式演變(以 16 點為例子): 第一種排程(高產出率(throughput)): clk. input. 1stMAC. R1. 2nd MAC. R2. 3rd MAC. R3. 4rdMAC. output. 1 x0x8x4x12. x0x8x4x12. a01a02 a01a02a01-a02. a11 b11. 2 x2x10x6x14. x2x10x6x14. a03a04 a03a04a03-a04. a12 b12. a11a12a11-a12. a21b21. 3 x1x9x5x13. x1x9x5x13. a05a06 a05a06a05-a06. a13 b13. b11b12b11-b12. c21d21. 4 x3x11x7x15. x3x11x7x15. a07a08 a07a08a07-a08. a14 b14. a13a14a13-a14. a22b22. a21a22a21-a22 a31b31. 5 x0-x8x4-x12. x0-x8x4-x12. b01b02 b01b01b01-b02. c11d11. b13b14b13-b14. c22d22. b21b22b21-b22 c31d31. 6 x2-x10x6-x14. x2-x10x6-x14. b03b04 b03b04b03-b04. c12d12. c11c12c11-c12. e21f21. c21c22c21-c22 e31f31. 7 x1-x9x5-x13. x1-x9x5-x13. b05b06 b05b06b05-b06. c13d13. d11d12d11-d12. g21h21. d21d22d21-d22 g31h31. 8 x3-x11x7-x15. x3-x11x7-x15. b07b08 b07b08b07-b08. c14d13. c13c14c13-c14. e22f22. e21e22e21-e22 i31j31. d13d14d13-d14. g22h22. f21f22f21-f22. 9. k31l31. 10. g21g22g21-g22 m31n31. 11. h21h22h21-h22 o31p31. 57.
(71) 第二種排程(暫存器少): clk. input. 1stMAC. R1. 2nd MAC. R2. 1. x0x8x4x12. x0x8x4x12. a01a02. 2. x2x10x6x14. x2x10x6x14. a03a04. a01a02a03a04. a11a12. 3. x1x9x5x13. x1x9x5x13. a05a06. 4. x3x11x7x15. x3x11x7x15. a07a08. a05a06a07a08. a13a14. 5. x0x8x4x12. x0x8x4x12. a01a02. 6. x2x10x6x14. x2x10x6x14. a03a04. a01a02a03a04. a11a12. 7. x1x9x5x13. x1x9x5x13. a05a06. 8. x3x11x7x15. x3x11x7x15. a07a08. a05a06a07a08. a13a14. 9. x0x8x4x12. x0x8x4x12. a01a02. 10. x2x10x6x14. x2x10x6x14. a03a04. 11. x1x9x5x13. x1x9x5x13. a05a06. 12. x3x11x7x15. x3x11x7x15. a07a08. 13. x0x8x4x12. x0x8x4x12. a01a02. 14. x2x10x6x14. x2x10x6x14. a03a04. 15. x1x9x5x13. x1x9x5x13. a05a06. 16. x3x11x7x15. x3x11x7x15. a07a08. 17. x0x8x4x12. x0-x8x4-x12. b01b02. 18. x2x10x6x14. x2-x10x6-x14. b03b04. 19. x1x9x5x13. x1-x9x5-x13. b05b06. 20. x3x11x7x15. x3-x11x7-x15. b07b08. 21. x0x8x4x12. x0-x8x4-x12. b01b02. 22. x2x10x6x14. x2-x10x6-x14. b03b04. 23. x1x9x5x13. x1-x9x5-x13. b05b06. 24. x3x11x7x15. x3-x11x7-x15. b07b08. 25. x0x8x4x12. x0-x8x4-x12. b01b02. 26. x2x10x6x14. x2-x10x6-x14. b03b04 b01-b02b03-b04 d11d12. 27. x1x9x5x13. x1-x9x5-x13. b05b06. 28. x3x11x7x15. x3-x11x7-x15. b07b08 b05-b06b07-b08 d13d14. 29. x0x8x4x12. x0-x8x4-x12. b01b02. 30. x2x10x6x14. x2-x10x6-x14. b03b04 b01-b02b03-b04 d11d12. 31. x1x9x5x13. x1-x9x5-x13. b05b06. 32. x3x11x7x15. x3-x11x7-x15. b07b08 b05-b06b07-b08 d13d14. 3rd MAC. R3. 4rdMAC. output. a11a12a13a14. a21a22. a21a22a21-a22 a31b31. a11-a12a13-a14. b21b22. b21b22b21-b22 c31d31. b11b12b13b14. c21c22. c21c22c21-c22 e31f31. b11-b12b13-b14. d21d22. d21d22d21-d22 g31h31. c11c12c13c14. e21e22. e21e22e21-e22. i31j31. c11-c12c13-c14. f21f22. f21f22f21-f22. k31l31. d11d12d13d14. g21g22. g21g22g21-g22 m31n31. d11-d12d13-d14. h21h22. h21h22h21-h22 o31p31. a01-a02a03-a04 b11b12. a05-a06a07-a08 b13b14. a01-a02a03-a04 b11b12. a05-a06a07-a08 b13b14. b01b02b03b04. c11c12. b05b06b07b08. c13c14. b01b02b03b04. c11c12. b05b06b07b08. c13c14. 58.
(72) 第三種排程(綜合): clk. input. 1stMAC. R1. 2nd MAC. R2. 1. x0x8x4x12. x0x8x4x12. a01a02. a01a02. a11. 2. x2x10x6x14. x2x10x6x14. a03a04. a03a04. a12. 3. x1x9x5x13. x1x9x5x13. a05a06. a05a06. a13. 4. x3x11x7x15. x3x11x7x15. a07a08. a07a08. a14. 5. x0x8x4x12. x0x8x4x12. a01a02. a01-a02. b11. 6. x2x10x6x14. x2x10x6x14. a03a04. a03-a04. b12. 7. x1x9x5x13. x1x9x5x13. a05a06. a05-a06. b13. 8. x3x11x7x15. x3x11x7x15. a07a08. a07-a08. b14. 9. x0-x8x4-x12. x0-x8x4-x12. b01b02. b01b01. c11. 10. x2-x10x6-x14. x2-x10x6-x14. b03b04. b03b04. c12. 11. x1-x9x5-x13. x1-x9x5-x13. b05b06. b05b06. c13. 12. x3-x11x7-x15. x3-x11x7-x15. b07b08. b07b08. c14. 13. x0-x8x4-x12. x0-x8x4-x12. b01b02. b01-b01. d11. 14. x2-x10x6-x14. x2-x10x6-x14. b03b04. b03-b04. d12. 15. x1-x9x5-x13. x1-x9x5-x13. b05b06. b05-b06. d13. 16. x3-x11x7-x15. x3-x11x7-x15. b07b08. b07-b08. d14. 17. 3rd MAC. R3. a11a12a11-a12. a21b21. a13a14a13-a14. a22b22. b11b12b11-b12. c21d21. b13b14b13-b14. c22d22. 4rdMAC. output. a21a22a21-a22. a31b31. b21b22b21-b22. c31d31. c21c22c21-c22. e31f31. d21d22d21-d22 g31h31 c11c12c11-c12. e21f21. c13c14c13-c14. e22f22. d11d12d11-d12. g21h21. d13d14d13-d14. g22h22. e21e22e21-e22. i31j31. f21f22f21-f22. k31l31. g21g22g21-g22 m31n31 h21h22h21-h22 o31p31. 根據以上的排程,我們能進一步的分析點數與暫存器的關係。又 因為當蝴蝶圖(butterfly)拆解成樹狀時,我們也能夠去探討當資源不同 時,MAC 與暫存器的關係。. 59.
(73) 以下的模擬圖形為我們對暫存器的分析:. 【圖五十四】暫存器個數比較. 由以上暫存器的數目來看我們所使用的 pipeline 排程所需暫存器 為 N-1 個、第一種排程需要 N/2,而第三種排程需要 N/4 個暫存器明顯 已經降低許多接下來要想辦法設計交互因子(twiddle factor)的部分使得 運算能夠更快速。. 60.
(74) 因為使用樹狀的演算法,在分析當中,可以使用我們的排程,去 增加平行度,當每一級的 MAC 增加為兩倍時,暫存器也會隨著減少一 級的暫存器數目,其圖形如【圖五十五】 。. 【圖五十五】 MAC 數目與暫存器的關係. 61.
(75) 4.2 樹狀硬體架構設計 我們使用以上排程的分析,以下為樹狀硬體系統架構的基本圖 形,見【圖五十六】。 W163. W161 W162. Reg#2. 0 16. W. 2MAC. x. 2MAC. Reg#4. 0 8. W 1. 1. 1. W81. x. 2MAC. x. x. x. x. 1 -j. 1 -j. 1 -j. W160. W80. W163. W83. 2MAC. W166 W169. 【圖五十六】 樹狀的基本架構. 但實際硬體可分成四個部分,見【圖 五十七】 。控制單元,乘加 器單元及兩個記憶體:一個稱為係數記憶體(coefficient memory,CM), 存放係數的記憶體,可以讓使用者存入所需要的資訊,也就是交互因 子(twiddle factor)的存放,另一個稱為資料記憶體(Data memory,DM), 即為硬體本身的暫存器。 62.
(76) 【圖五十七】 樹狀 FFT 的實際硬體架構系統圖. 4.2.1 乘加器的邏輯電路: 我們分成三種不同的運算單元,第一種乘加器是需要算出乘 1 與乘-j 的運算,電路設計見【圖 五十八】。第二種乘加器則是需要 算出乘 1、乘-j 的運算與乘一般的交互因子(twiddle factor)電路設 計。而第三種則是一般的加法器,電路設計見【圖 六十】。在整體 硬體當中,以 16 點的 FFT 為例,我們在第一級使用第一種乘加器, 在最後一級使用第三種加法器,中間的兩級皆使用第二種的乘加 器。在第二種的乘加器,因為需要有複數的乘法器,而且又因為乘 法器的面積很大,第一步先把兩個相鄰的兩級之間的乘法器共享, 就可以把原來的乘法器個數先減半。見【圖五十九】 。乘法器我們不 使用一般的複數乘法器,因為一般的複數乘法器需要 4 個實數的乘 法 器 , 因 此 我 們 選 擇 使 用 座 標 旋 轉 演 算 法 (Coordinate Rotation DIgitial Coputer, CORDIC)的乘法器。其基本的原理我們接下來介 紹。. 63.
(77) s1aout. smj1. x0 x1. +. x2 x3. -. x. -j. x. -j. smj0. s1bout. 【圖五十八】 第一種乘加法單元 reg1a. reg2a. sar. x. W. sm s1d1. s1d2. +. +. -. -. sm. -j. x. x. -j. W. x. sbr. reg1b. reg2b. 【圖五十九】 第二種乘加法單元. 64. s2d1. s2d2.
(78) +. + 2's complem ent. 【圖六十】 第三種乘加法單元. 4.2.2 座標旋轉演算法( Coordinate Rotation DIgitial Coputer,CO RDIC)乘法器 CORDIC 演算法: 因為 DFT 的運算當中,每一個乘交互因子(twiddle factor)的方 式,在複數的平面上可用極座標的方式來計算,先把原來的值 A(x1,y1) 依旋轉的角度至 B (x2,y2),而 B 點座標即可表示成: sin θ ⎤ ⎡ x1 ⎤ ⎡ x 2 ⎤ ⎡ cos θ ⎢ y ⎥ = ⎢ − sin θ cos θ ⎥ ⎢ y ⎥ ⎦ ⎣ 1⎦ ⎣ 2⎦ ⎣. (4.2.1). 若 θ k = tan −1 2 − k 1 ⎡ ⎢ 2 ⎡ x2 ⎤ ⎢ 1 + tan θ k ⎢y ⎥ = ⎢ ⎣ 2 ⎦ ⎢ − tan θ k ⎢⎣ 1 + tan 2 θ k. tan θ k. ⎤ ⎥ 1 + tan θ k ⎥ ⎡ x1 ⎤ 1 = ⎢ ⎥ ⎥ 1 1 + 2−2 k ⎣ y1 ⎦ ⎥ 1 + tan 2 θ k ⎥⎦ 2. 65. ⎡ 1 ⎢ −k ⎣ −2. 2− k ⎤ ⎡ x1 ⎤ ⎥⎢ ⎥ 1 ⎦ ⎣ y1 ⎦. (4.2.2).
(79) 而任何的角度皆可以依下列的式子計算: θ =±. π 2. θ=. ∞. + ∑ (± tan −1 2− k ) k =0. n −1. ∑ µ (k )θ. k =−1. k. + ε , where µ (k ) = 1 or − 1 and. ⎧π / 2 θ k = ⎨ −1. k = −1. −k ⎩ tan 2 , otherwise. (4.2.3). CODIC 的演算法: 1.依照以上的角度運算先求出 µ (k ) 的值。 2.再計算出比例係數(scaling factor) ⎛ n −1 ⎞ K = ⎜ ∏ 1 + 2−2 k ⎟ ⎝ k =0 ⎠. −1. (4.2.4). 3.先把原來的座標 A(x1,y1)旋轉 ± π / 2 ,也就是 x(0) = µ (−1) y , y (0) = − µ (−1) x. (4.2.5). 4.之後都是做一樣的計算方式,i 從 0 到(n-1) 1 ⎡ x(i + 1) ⎤ ⎡ ⎢ y (i + 1) ⎥ = ⎢ −k ⎣ ⎦ ⎣ − µ (i )2. µ (i )2− k ⎤ ⎡ x(i) ⎤ 1. ⎥⎢ ⎥ ⎦ ⎣ y (i ) ⎦. (4.2.6). 5.最後只要把最後算出來的值乘上比例係數 K,即可算出正確要求 出的 B (x2,y2)。 x 2 = Kx(n) y 2 = Ky (n). (4.2.7) 66.
(80) 由此演算法發現我們只需要移位和加法的運算。 CORDIC 硬體實現: 給定所需要乘的交互因子(twiddle factor)角度,我們可算出 µ ( i ) 的值,接下來依照下列的式子產生位元碼 sn −1sn −2 ⎧0 si = ⎨ ⎩1. µ (i ) = 1 µ (i ) = −1. s0 s−1 。. (4.2.8). 其中硬體架構圖見【圖六十一】 。. s0. s1. s2. sn-1. .... x1 stage0 rotation ±π /2. stage1 rotation ± tan −1 2 0. stagen-1 rotation. stage2 rotation ± tan −1 2 −1. y1. x2. .... ± tan −1 2 − ( n −1). 【圖六十一】 CORDIC 的架構圖. 67. scaling. y2.
Outline
相關文件
你實際的工作 不斷交相作用 專精理論架構
(三)使用 Visual Studio 之 C# 程式語言(.Net framework 架構)、Visual Studio Code 之 JavaScript 程式語言(JavaScript framework 架構) ,搭配 MS
Complex Instruction Set Computers (CISC). complicated
設計了正立方體框架的組合,在計算方塊個數與框架的差異性可透過等差數列的概念作 結合;而作品「腳踏實地」
使用人工智慧框架基礎(Frame-based)的架構,這些努力的結果即為後來發展的 DAML+OIL。DAML+OIL 是 Web Resource 中可以用來描述語意的 Ontology 標 記語言,它是以 W3C
目前的課程改革優先強化學生五種觀念:國民身份認同、責任感、承擔
Registry Server 是建構於第三方具有公信力的一個組織,而 Registry Server 在 Web Service 的架構中,主要的功能類似於提供服務查詢(Yellow
Operation Sequence Number Quantity Per Assembly Component Yield Factor Fixed Start Days Offset Variable Start Days Offset Effective Date.