在前一章節中我們探討了一些現有 FIR 設計技術中存在的一些缺
點,都是與效能改進方面有所關聯,尤其是在群組的部份浮現出了諸多 可以改善的空間。在本章節先提出有效結合 BSD 與 CSD 的混合式(Mix) 表示法,再為 FIR 設計之 MCM 化簡提出新型貪婪演算法,也分別闡述 無償反覆式HCSE、有益 HCSE 簡化和最佳解尋找等演算法重點,最後呈 現該演算法在不同係數表示法、不同Taps、不同字組長度下的化簡數據,
以申明該演算法的化簡效益。
3-1 新型貪婪式演算法流程
數位FIR 濾波器的設計重點,主要是如何使用最少的位元加法器實現 其多重係數乘法器(Multiple Coefficient Multipliers)。
圖 3-1 新型貪婪演算法流程圖
如圖 3-1 所示,本文提出一種新型貪婪式演算法,首先將濾波器的係 數乘積項分別表示成BSD、CSD 以及混合式(Mixed Mode)等表示式,然 後分別進行第一階段無償反覆式HCSE 化簡,以找出最大可能之化簡。
隨之,進行第二階段有益的(Effective) HCSE 化簡,再進一步找出共用項,
最後階段是從這三種表示法中找出最佳解。
無償反覆式化簡演算法如下:
圖 3-2 無償反覆式 HCSE 化簡演算法
如圖 3-2 中的演算法所示,無償反覆式化簡演過程中,首先在係數表 示法的二維陣列中進行無償群組的搜尋,並將群組記錄至列表中,同時 標記旗標(fg)來記錄有無搜尋到群組。搜尋完畢後計算列表中各群組的 SG(Selected Gain)值,然後將 SG 值最高的群組作為該次搜尋到的群組,
保留該群組並取代至原陣列中,然後再次進行搜尋直到無群組為止,也 就是根據旗標(fg)來決定無償群組搜尋的結束。本文定義選取效益 SG 作 為選用群組的準則依據。無償反覆式演算法的時間複雜度可以用下列式 3-1 來表示:
2 2 1
n n
O
無償反覆式 式 3-1 如圖 3-3 的演算法所示,在有益 HCSE 化簡過程中,首先在係數表示 法的二維陣列中進行有益HCSE 群組的搜尋。本文定義了一個有益群組判別值,計算該群組的化簡效益,藉由計算有益群組判別值以區分有益
各的優勢。雖然BSD 在表示式中的非零項無法比 CSD 少的多,但在後 續的群組化簡中有時BSD 確實有較多的群組項可尋找出並化簡,因此這 兩者之優點可以藉由選擇性結合的方式來達到更有效的化簡效果。因此 本文提出一種簡易的選擇法來結合BSD 與 CSD 而成為一種新型的混合 式(Mix)表示法。
圖 3-4 位元密集度
本文對不同係數表示法中的每個表示式皆計算其位元密集度。如圖 3-4所示,從左起的最高位元(MSB)找尋第一個非零項做為基準點,並往 下尋找下一個非零項,在兩個非零項之間的間距不可超過定值(本文將該 定值定為3),並計算有效深度作為位元密集度。由於圖3-1中的第3個間距 達到4 (超過3),所以僅僅記算前面的兩次搜尋,故此例中的位元密集度 為2。本文對每個係數皆運算出BSD和CSD表示式,並且分別計算其位元 密集度,把位元密集度較高的表示式作為該係數的表示式,藉此求得一 合成的Mix表示式。採用與2-2節相同規格之SRRC濾波器,運算出Mix表 示法結果如圖3-5所示:
圖3-5 SRRC之Mix係數表示法
3-3 無償反覆式 HCSE 化簡
本 文 所 用 之 化 簡 法 為 水 平 共 同 項 簡 化 法 (Horizontal Common Subexpression Elimination,HCSE)。如同前一章節中對圖2-7所描述,在 coefficient為21、22的係數中,在>>{3、5、7、9}具有相同的群組,將較 接近MSB之S21>>3+S22>>3作為基本的群組G,而在>>{5、7、9}處可以用 移 位 的 方 式 也 就 是G>>{2、4、6}來 取 代 , 減 少 了{S21>>5+S22>>5} 、
{S21>>5+S22>>5}和{S21>>5+S22>>5}所需使用的加法器,此為本文所用之
HCSE的化簡方式。
圖3-6 無償HCSE與HCSE[9-10]之化簡方法比較
以圖3-6的coef15和coef17為例,橢圓型紅框的部份是HCSE演算法 [9-10]所尋得的群組組合、方型藍框是本文所用之無償HCSE。可從圖中
明顯看出,由於HCSE演算法是採用群組模組{10-1CSD}、{1001 CSD}等等 的模組比對來尋找群組,故其Y=S15×coef15+ S17×coef17的例子中,僅僅 只找尋到{-S15>>11, S15>>13}、{-S17>>11, S17>>13}以及{S17>>4, -S17>>6}的 {-101CSD}組合,因而有G=S15>>11+S17>>4+S17>>11(共使用兩組16位元加法 器)及Y=G+G>>2+S15>>6 (再使用兩組16位元加法器),一共使用四組16位元 加法器的化簡結果;然而本文所提出之演算法會先以G=S15>>6+S17>>6(共 使用一組14位元加法器)做為群組G,然後不再經由加法器(移位的方式) 無償求得-(G>>5)、G>>7,便可得到Y=G-G>>5+G>>7+ S17>>4(再使用16位元、
14位元、9位元各一組加法器),一共使用四組共53位元加法器來將 Y=S15×coef15+ S17×coef17進行化簡,不但有效利用無償群組的本身優 勢,且比Vinod [9-10]等人的HCSE化簡的多(就本例而言,可以再減少17%
位元加法器)。也不會因為VCSE中係數延遲所增加的暫存器而抵銷減 免,這就是我們所謂的無償HCSE。
圖3-7 無償反覆式群組
前面已簡單的闡述無償與有償的差異,本文在化簡之前會將無償與有 償的群組區分出來,使無償群組可以善用其本身的化簡效益。然而,我 們在此階段中卻發現到許多群組都具有”再群組”的可能性,故將已化簡 之群組更進一步的對其他群組進行配成對,再行化簡的動作,這是目前 所有文獻研究中尚未看到的做法。如圖3-7(a),圖中的方型藍框是新型貪 婪演算法所用之群組法,可找到{S15>>6+S17>>6}、{S15>>11+S17>>11}和
{S15>>13+S17>>13}等群組,並且G1={S15>>6+S17>>6},分別以G1、G1>>5、
G1>>7等群組來表示,將所在位置偏較低位元的G1>>5和G1>>7等群組都一一
替代群組代號G1作為新的非零項,其結果如圖3-7(b)。但從圖3-7(b)中 coef15、coef17與coef20的>>6行與>>11行,有{S15>>6+S17>>6+S20>>6 }與 {-S15>>11-S17>>11-S20>>11 }類似的組合存在,也就是{G1+S20>>6}與
{G1>>5+S20>>11}的組合。因此若有G2=G1+S20>>6,G2>>5就等於G1>>5+
S20>>11。圖3-4(c)便是化簡後的結果,從圖中可看到{coef15、coef17、coef20}
在>>11的運算,可經由{coef15、coef17、coef20}在>>6的運算結果直接移位
取得,完全節省了此三個coefficient在>>11的加法器個數。同理coef{15、17}
在>>13的加法器,也是可以省略的。本文藉由此方法將可群組的項目經由
反覆的搜尋與替代,一再地進行群組來節省加法器個數,此方法所謂的 無償反覆式HCSE化簡。
圖3-8 另一個無償反覆式HCSE化簡範例
將無償的群組經由反覆搜尋和簡化後,整個MCM表示式就可以有很 大效益地化簡。以圖3-8為例,可以分別得到G1=S21>>3+ S22>>3、
G2=S19>>11+S20>>11和G3=-S21>>3- S22>>3+ S19>>3(=-G1+ S19>>3)三個群 組,並分別將較低位元的群組一一取代後,其結果為圖3-8(b)。本文訂定 了一個化簡增益(Select Gain,SG)值做為群組選用的化簡準則。當我們發 現到某個非零位元可以跟另一非零位元形成群組時,就需去計算該群組 所能化簡的量。以圖3-5的G1為例,在>>{5、7、9}的位置可經由>>3來獲得,
而假設該濾波器的字組(word)長度為16 bits,則在>>5的SG值便為 16-5=11,而得到11 bits的化簡效益,故在G1的例子中便可算出其
3-4 有益的(Effective)HCSE 簡化
圖3-9 有益與過償HCSE化簡
在前面的章節中已將coef21、coef22的G1群組以無償的群組演算來取 得,然而我們可以在觀察圖3-9中,可以發現:
{-S24>>9-S24>>11}+ {S23>>12+S23>>14}
= -G4 + SB(2)G4>>2 其中G4={-S24>>9+SB(3)S23>>12} 式3-4
這種化簡現象如圖3-9所示(n=3),加法器組由4組減為三組,位元加法 器使用也由7+7+4+4 減少為7+7+7,獲益1(4-n)個位元加法器,這就是稱 之為有益HCSE化簡。但另外也可以發現:
{S24>>5+S24>>7}+ {S23>>12+S23>>14}
= -G4 + SB(2)G4>>2 其中G4={-S24>>5+SB(7)S23>>12} 式3-5 這種化簡現象就如圖3-9所示(n=7),加法器組由4組減為三組,但位元 加法器使用卻由11+11+4+4 增加為11+11+11 ,獲益-3(4-n)個位元加法 器,這就是過償HCSE化簡。其中,位元加法器為了不影響最後加總結果,
{Sa>>S1+Sa>>(S1+x)}+ {Sb>>S2+Sb>>(S2+x)}
=G+SB(x)G>>x 其中G={Sa>>S1+SB(n)Sb>>S2} 式3-6
原式 O=(W-S1)+(W-S1)+(W-S2)+(W-S2)=(W-S1)×2+(W-S2) 2 化簡式 S=(W-S1)+ (W-S1)+ (W-S1)=(W-S1)×3
若O>S則為有效化簡,反之O≤S為過償化簡,所以:
(O-S)>0
((W-S1)×2+(W-S2)×2-(W-S1) ×3)>0
(W-2S2+S1)>0 式3-7 因此在有效益的群組化簡過程中,我們在找到群組配對後,將群組配對 套用3-6式所用之架構,若計算出來符合3-7式則該群組為有效益群組並化 簡,反之此群組配對則為過償群組,將保持現狀而不將其群組化簡。
圖3-10 本文所提出的HCSE化簡圖說
圖3-10是本文提出的HCSE化簡圖說,配合圖3-9中有益HCSE群組做 說明。圖3-10左邊是原本{-S24>>9-S24>>11}+{S23>>12+S23>>14}的加總,我 們把它改成{-S24>>9+S23>>(9+3)}+{ -S24>>11 +S23>>(11+3)}的方式來表示,並 將{-S24>>9+ SB(3)S23>>(9+3)}作為群組項G,若用圖3-10左邊的方式做一般 的加總將會需要3個加法器組,倘若採用圖3-10右邊的形式則可變成
G={-S24>>9+ SB(3)S23>>(9+3)}、SUM=G+G>>2,可輕易減少1個加法器組的 具有{1001CSD}和{10-1CSD}兩個群組模組,所以對[10]等人的CSE演算法來 說會有群組選用的問題,然而CSE群組的搜尋是屬於地毯式的搜索,在群
3-6 SRRC 設計實例
本節中將以SRRC 濾波器為範例完整示範整個化簡的過程。這個 SRRC 濾波器規格為49 Taps、20bits (Integer 為 5Bits、Float 為 15Bits)字組長度,
函數參數採用2-2 章節中所示之規格。我們從圖 2-4、圖 2-5 及圖 3-2 所
>>5: -S16,-S17, S18, S19,-S21,-S22,-S23, S24
>>6: -S12, S14, S15,-S17, S20
>>7: S6,-S8, S10, S14, S19,-S21,-S22
>>8: S2,-S3,-S4,-S16, S24
>>9: S1,-S4, S5, S12,-S13,-S18, S20,-S22
>>10: S1,-S9, S10, S11,-S13,-S19, S20,-S21, S24
>>11: -S2, S3,-S8,-S15, S16, S18,-S21, S24
>>12: S1,S4,S5,-S6,-S9,S10,S11,S12,S14,-S16,-S17,S18,S19,S20,S23
>>13: S2, S14, S15,-S17, S19, S20,-S22, S24
>>14: S1, S3,-S4, S5,-S7,-S9,-S13, S18, S21, S23
>>5: -S16,-S17,S18,S19,-S21,-S22,-S23,S24 (20-5) ×8+1 121
>>6: -S12,S14,S15,-S17,S20 (20-6) ×5+2 72
>>7: S6,-S8,S10,S14,S19,-S21,-S22 (20-7) ×7+1 92
>>8: S2,-S3,-S4,S16,S24 (20-8) ×5+8 68
>>9: S1,-S4,S5,S12,-S13,-S18,S20,-S22 (20-9) ×8+1 89
>>10: S1,-S9,S10,S11,-S13,-S19,S20,-S21,S24 (20-10) ×9+2 92
>>11: -S2,S3,-S8,-S15,S16,S18,-S21,S24 (20-11) ×8+1 73
>>12: S1,S4,S5,-S6,-S9,S10,S11,S12,S14,-S16,-S 17,S18,S19,S20,S23
(20-12)
×15+4
124
>>13: S2, S14, S15,-S17, S19, S20,-S22, S24 (20-13) ×8+1 57
>>14: S1, S3,-S4, S5,-S7,-S9,-S13, S18, S21, S23 (20-14)×10+2 62
>>15: -S4,-S7,S8,-S9,-S11,-S13,S16,S20,-S22 (20-15)×9+1 46
總位元加法器數 1029
>>1: S24
>>7: S6,-S8,S19,G1>>4,G9
>>8: -S4, G4>>3,G6
>>9: -S18,G11, G15
>>10: S10,-S13,-S19,G2>>1,G7,G12
>>11: -S8,-S15, S16, S18,-G6>>3, G7>>1
>>12: S4,-S6,-S16, S23, G8>>7, G9>>5, G11>>3, G12>>2
>>13: S2,-S22, S24,G3>>8,G14>>7
>>14: S1,S3,S5,S18,S21,S23,G5>>5,G16
>>15: S8, -S11,S16, S20, G15>>6,G16>>1 式 3-9
EG1
S24>>1+S23>>2 19 20-2*2+1=17EG2
S19>>4+G4 (15)+16=31 20-2*5+4=14EG3
G8+G14 (30+28)+15=73 20-2*6+5=11EG4
S6>>7-S18>>9 13 20-2*9+7=9EG5
EG2+G11 (31+33)+16=80 20-2*9+4=6EG6
-S4>>8-S8>>11 12 20-2*11+8=6EG7
G1>>2+G12 (10)+15=25 20-2*10+5=5EG8
G6-S16>>12 (12)+12=24 20-2*12+8=4EG9
G7+G16 (10+6)+10=26 20-2*14+10=2總量 303 74
>>4: EG5 80+(20-4)×1+4 100
>>5: -S23, EG3, EG7 73+25+(20-5)
×3+1
144
>>6: -S12, -S17 (20-6) ×2+2 30
>>7: -S8, G9,EG4, EG5>>3, EG7>>2 13+13+(20-7)
×5+1
92
>>8: EG6, EG8 12+24+(20-8) 68
×2+8
>>9: G15 22+(20-9) ×1+1 34
>>10: S10, -S13, -S19, G2>>1, EG9 26+(20-10) ×5+2 78
>>11: -S15, S16, S18,-EG8>>3, EG9>>1 (20-11) ×5+1 46
>>12: S23,G9>>5,EG3>>7,-EG4>>5,-EG6>>4 (20-12) ×5+4 44
>>13: S2, -S22, G3>>8, EG1>>12 (20-13) ×4+1 29
>>14: S1,S3, S5, S21, G5>>5 (20-14)×5+2 32
>>15: -S11, S20, G15>>6 (20-15)×3+1 16
>>2:S23,-S24
>>3: S19,-S21,-S22 (20-3) ×3+1 52
>>4: -S17 (20-4) ×1+4 20
>>5: S14,-S16,S18,-S19,-S21,-S22,-S23,S24 (20-5) ×8+1 121
>>6: -S12,S15,S17,S20 (20-6) ×4+2 58
>>7: -S4,S6,-S8,S10,-S14,S19,-S21,-S22,S24 (20-7) ×9+1 118
>>8: S1,S2,-S3,-S13,-S16,S20 (20-8) ×6+8 80
>>9: S4,S5,-S9,S12,-S21,-S22,-S24 (20-9) ×7+1 78
>>10: -S1,S10,S11,S13,-S18 (20-10) ×5+2 52
>>11: -S2,S3,-S8,S9,S14,-S15,-S17,-S19,-S20,S21,-S24
(20-11) ×11+1 100
>>12: S1,S5,-S6,S10,S11,S12,S16,-S18,S23 (20-12) ×9+4 76
>>13: S2,S4,-S7,S9,-S13,-S14,S15,S17,-S19,-S20,-S 22,S24
(20-13) ×12+1 85
>>14: S1,S3,S5,S18,S21,S23 (20-14)×6+2 38
>>15: S4,S7,S8,S9,-S11,S13,S16,S20,-S22 (20-15)×9+1 46
總位元加法器數 1002
G2
(S14>>5-S19>>5) 15 22>>5: G1>>2,G2,-G4>>3,G9
>>6: -S12,G7
>>7: S6,-S8,S10,G1>>4,-G2>>2,G5
>>8: -S16,-S20,G6,G8
>>9: -S9, G1>>6,-G5>>2, G10
>>10: -S18,-G6>>2,G11
>>11: -S8,S9,S21,-S24,G2>>6,-G7>>5,-G8>>3
>>12: -S6,-G9>>7,G10>>3,G11>>2,G12
>>13:S2,-S14,-S19,S24,G3>>7,G15,G16
>>14:S3,S5,S18,S21,G12>>2
EG2
G7+S6>>7 (28)+14=42 20-2*7+6=12EG3
G9-S16>>8 (15)+15=30 20-2*8+5=9EG4
-S18>>10-S8>>11 10 20-2*11+10=8EG5
G10+S21>>11 (11)+11=22 20-2*11+9=7EG6
G12+G16 (8+14)+8=30 20-2*13+12=6EG7
G5+G6 (13+12)+13=38 20-2*8+7=11EG8
G4+G8 (18+12)+18=48 20-2*8+2=6EG9
-S9>>9+G15 (14)+11=25 20-2*13+9=3EG10
EG7-S24>>11 (38)+13=51 20-2*11+7=5EG11
G1>>2+EG6 (30)+15=45 20-2*12+5=1EG12
EG11+G11 (45+10)+15=70 20-2*10+5=5總量 460 86
在取得表3-7 有效益群組的同時將有效益群組項取代原本的式 3-11
在取得表3-7 有效益群組的同時將有效益群組項取代原本的式 3-11