4-5 256-point FFT(SDF)的硬體實現討論
乘法器 4 乘法器 2
Fig 4-5.1 256-point FFT(SDF)通用硬體架構
當然此架構的”12bits to 16bits block”和”16bits to 20 bits
一.Radix-22 with W16 block and Cordic system 二.Radix-23 mix Radix-22 with Cordic system 三.Radix-24 with W16 block and Cordic system
四.改良後的 Radix-22 with W16 block and Cordic system
經由先前簡化演算法所述,我們已經可以知道 Radix-22 256-point FFT(SDF) with W16 block and Cordic system,其中第一組和第三組和 第五組以及第七組乘法器要用 W4 block 來做運算,第二組乘法器要用 W16 block來做運算,而至於第四組和第六乘法器則用 cordic 來替代一般複數 乘法器來做運算。
Radix-23 mix Radix-22 256-point FFT(SDF) with Cordic system,
其中第一組和第四組以及第七組乘法器要用 W4 block 來做運算,第二組 和第五組乘法器要用 W8 block 來做運算,而至於第三組和第六乘法器則 用 cordic 來替代一般複數乘法器來做運算。
Radix-24 256-point FFT(SDF)with W16 block and Cordic system,
其中第一組和第五乘法器要用 W4 block 來做運算,第二組和第六組乘法 器要用 W8 block 來做運算,第三組和第七乘法器用 W16 block 來做運算,
而第七組乘法器要用 cordic 來替代一般複數乘法器來做運算。
至於第四種架構是運用經驗法則所產生的架構,結合了以上三種架構 的優點所產生,我們稍後再討論這第四種架構。
而每一組架構的詳細硬體圖以及每一架構每一級所需要的 bit 數請 參考附錄三和附錄四。
我們求出每一級至少所需要的 bit 數之後,便可以找出哪一個地方需 要接上”12 to 16 bits block ” 以及”16 to 20 bits block ”。而 此三架構信號長度並不會超過 20bits。
而此三個 256-point FFT 架構所分析出來的數據如下表 Table4-5.1 所示:
第一組 第二組 第三組 Average Dynamic Power 11.80mW 11.94mW 10.98mW Gate count (面積) 121788 122764 108866 Total delay 290 cycles 292 cycles 276 cycles Memory size(bits) 6680 bits 6680 bits 6680 bits Performance(SNR dB) 37.943 dB 37.169 dB 39.276 dB
Table4-5.1 三種 256-Point FFT(SDF)數據整理比較
由以上的分析數據可以先比較第一組(Radix-22 256-point FFT(SDF) with W16 block and Cordic system)和第二組(Radix-23 mix Radix-22 256-point FFT(SDF) with Cordic system)架構,這兩架構都運用到了 兩組 cordic system,雖然運用架構不一樣,但是其結果卻很接近,所以 我們可以得到一個訊息,就是一個 FFT system 的面積大小,power 消耗等 等,幾乎可以說是由所運用的 cordic system 數量決定。
那麼我們在來看,為什麼第一組架構會比第二組架構來的好一些些。
在第一組架構中,除了兩組 cordic system 之外,我們運用了幾乎都是 W4 block(有一組 W16 block),而第二組架構中是運用了兩組 W8 block 以及 兩組 W16 block。而我們先前比較過知道,一組 W16 block 的綜合效能比 兩組 W8 block 來的好一些,而 W4 block 又是最好的效能,所以經過綜合 比較可以知道,第一組架構因為 W4 block 用的比較多,所以整體效能比 第二組來的好一些(沒有差很多是因為 W16 block 把效能降下來了一點)。
所以在此我們可以知道一個重點,就是一個 FFT system中,W4 block 愈 多會使得整體面積和消耗 power 都會降低。
接著我們觀察第三組(Radix-24 256-point FFT(SDF)with W16 block and Cordic system)架構和前兩組架構的差異,由於是運用了 W16 block 以及 Radix-24架構的原因,所以整體架構我們只用到了一組 cordic system 而已。
首先我們看面積的部分,因為少了一組 cordic system 而且可以說是 用 W16 block 來替代它,所以面積大大減少了將近有 14000~15000 個 gate
counts,也因為這原因 average dynamic power也幾乎降低了 1mW 左右,
而速度也因為減少了一組 cordic system 以致於快了 14~16 個 clock cycles。甚至我們觀察一下 performance,也因為是利用 W16 block 替代 了 cordic system 的原因,所以 SNR升高了約有 2dB 左右,因此也可以證 明出來 W16 block 不只是面積,power,速度比 cordic system 好,甚至 連精準度都比 cordic system 好一些。
所以由這一組架構已經很清楚的說明,減少 cordic system 的存在是 可以將整個架構的性能提升最好方法,但是前提就是要先設計出能夠適當 替代 cordic system 的有效架構。接下來我們利用一些經驗法則,將 Radix-24以及 Radix-22的優點結合在一起,設計出第四種 256-point FFT(SDF) system。
首先我們要知道 Radix-22以及 Radix-24的優點在哪裡。
Radix-22的優點:利用到多組的 W4 block,省面積和 power
Radix-24的優點:利用到 W16 block,可減少 cordic system 使用
換言之,我們希望能夠設計出一種能多利用 W4 block 並且又可以適 當的使用 W16 block 來替代 cordic system 的 256-point FFT(SDF)架構。
而在此前提下,我們必須先觀察一下 Radix-24 256-point FFT(SDF) with W16 block Cordic system 架構。
依照 Radix-24的數學演算法則,我們可以發現第五組乘法器的
twiddle factor 是呈現
w
04,w
40,w
40,w
14的循環,第六組乘法器的 twiddlefactor 是呈現
w
40,w
40,w
04,w
14,w
40,w
81,w
40,w
83的循環,而第七組乘法器的 twiddle factor 是呈現
w
40,w
40,w
40,w
14,w
40,w
81,w
04,w
83,w
40,1
w
16,w
40,w
165 ,w
40,w
163 ,w
04,w
167 的循環。當然,依照先前提過的簡化法 則,第一組第二組第三組乘法器的 twiddle factor 只是分別將第五組第 六組第七組的 twiddle 個別先重複 16 次之後再開始循環運作。接著我們再仔細觀察第五第六第七組乘法器的 twiddle factor,和先前設 計 Radix-24 16-point FFT(SDF)的各階段乘法器的 twiddle factor,我們 可以觀察到這兩組 twiddle 是一樣的,這顯示了一個非常重要的訊息,就 是 256-point FFT(SDF)其就是先用十六組 16-point FFT(SDF)並聯之後再 串接到一組 16-point FFT(SDF)上,如 Fig 4-5.2 所示:
接著我們可以回想一下 16-point FFT(SDF)最省 power,面積的是哪 一種架構?就是 Radix-22 16-point FFT(SDF) with W16 block架構,所以 我們只需要將其要並連的 16-point FFT(SDF)和要串接的 16-point FFT(SDF)都以 Radix-22 16-point FFT(SDF) with W16 block架構替換掉 原先的 Radix-24 16-point FFT(SDF) with W16 block 即可,這樣子我們 可以想像的出來,先前所希望的兩個優點:
Fig 4-5.2 256-point FFT(SDF)以 16-point FFT(SDF)組成圖 16-poinf FFT(SDF) 16 組 16-point FFT(SDF)並聯
Stage Bit 數 Stage Bit 數 Stage Bit 數
在分析其數據之前我們可以先拿 Radix-24 256-point FFT with W16 block and Cordic 架構來做猜測性的比較,此架構跟 Radix-24架構其實主 要就是差在此架構利用了兩組 W4 block(12 bits 和 16 bits)替代掉了 Radix-24架構的兩組 W8 block(12 bits and 16 bits),所以我們可以預 期新架構的 SNR,面積和消耗 power 都會進一步的改善,而此架構運作分 析數據如表 Table 4-5.3 所示:
Average Dynamic Power 10.26mW Gate count (面積) 94088 gate count Total delay(clock cycles) 272 clock cycles Memory size(bits) 6680 bits Performance(SNR dB) 40.014 dB
Table 4-5.3 改良後 Radix-22 256-point FFT with W16 block and Cordic system 分析數據
根據以上數據已經很明顯可以看出來,此種新架構的確是四種 256-point FFT(SDF)架構中最優秀的一個,不論是面積,power,速度以 及 performance 都是最好的,但是其數學演算式的用法就比較特殊一點,
這靠最基本 Radix-22以及 Radix-23的數學演算式是無法推算出來的。
我們做完了以上四種 256-point FFT(SDF)的硬體架構實現,得到了以 下幾點重要設計概念:
一.Cordic system(複數乘法器)能盡量用別種方法替代則盡量替代 二.W4 block 能多加運用則加運用,因為是最簡單的架構
三.多觀察多用經驗法則,FFT system 存在著許多規律性可以去突破 傳統的演算式子,進而使得硬體架構更簡化
我們針對第一種架構和第二種架構來看,因為都使用了兩組 cordic system,所以其整體效應都是屬於比較差的,而第三和第四種架構因為只 運用了一組 cordic system,所以整體效應比起第一第二架構來明顯好。
我們針對第三架構和第四架構來看,面積,power 以及 performance 都是第四種架構比較好,就是因為第四種架構運用了比較多 W4 block(架 構簡單並且精準度 100%)。
最後我們比較起第三架構和第四架構,第三架構是用 Radix-24來推導 出來的,而第四架構是無法用傳統的數學演算推導出來,則是用觀察規律 性質而衍生出來的,其實這要用數學演算推論不是不行,只是其數學過程 會非常之複雜和繁瑣,故不建議用慢慢推導的方式。