復(fù)用器重構(gòu)降低FPGA成本
關(guān)鍵詞: FPGA;復(fù)用器;重構(gòu);重新編碼;總線;邏輯優(yōu)化;綜合
1. 引言
--- 復(fù)用器是數(shù)據(jù)通道常用的構(gòu)建模塊,被廣泛應(yīng)用在處理器[1]、處理器總線、網(wǎng)絡(luò)交換,甚至是資源共享的DSP設(shè)計中。據(jù)估計,復(fù)用器一般要占用一個FPGA設(shè)計[2] 25%以上的面積。因此,優(yōu)化FPGA設(shè)計的關(guān)鍵在于怎樣優(yōu)化復(fù)用器。
--- 本文介紹了一種新的復(fù)用器重構(gòu)算法,該算法減小了復(fù)用器在基于4輸入查找表(4-LUT)FPGA體系結(jié)構(gòu)中所占用的面積。基準(zhǔn)測試結(jié)果表明復(fù)用器平均減少了17%,在一些設(shè)計中,4-LUT整體減少20%。
--- 2.1節(jié)闡述了復(fù)用器是如何由行為級VHDL[4]或Verilog[5]代碼產(chǎn)生的,2.2和2.3節(jié)闡述復(fù)用器樹和復(fù)用器總線在設(shè)計中是怎樣生成的。2.4節(jié)說明這些結(jié)構(gòu)怎樣由4-LUT實現(xiàn),闡述如何采用兩個4-LUT有效實現(xiàn)一個4:1二進制復(fù)用器。
--- 第3節(jié)介紹了一種叫做壓縮的新技術(shù),該技術(shù)附加一些控制邏輯,將多個2:1復(fù)用器重新組合為有效的4:1復(fù)用器,從而減少了為總線上每一個比特位實現(xiàn)復(fù)用器所需要的4-LUT數(shù)量,所附加的控制邏輯代價由整個總線來分擔(dān)。優(yōu)化復(fù)用器總線是復(fù)用器重構(gòu)算法的核心。
--- 4.1節(jié)闡述復(fù)用器重構(gòu)算法如何構(gòu)建設(shè)計中的復(fù)用器樹總線。4.2節(jié)的重構(gòu)方法用于執(zhí)行4.3節(jié)中定義的均衡算法。均衡增加了由壓縮生成的有效4:1復(fù)用器的數(shù)量。
--- 第5節(jié)總結(jié)了在Altera Quartus II集成綜合中運行的整個算法。第6節(jié)列出了來自120個Altera真實用戶設(shè)計實例的基準(zhǔn)測試結(jié)果,測試表明面積減少超過20%,平均節(jié)省了4.2%。
2. 背景知識
--- 2.1 復(fù)用器在設(shè)計中是怎樣實現(xiàn)的
--- 行為級HDL設(shè)計中的任何條件代碼通常會綜合為復(fù)用器。本節(jié)闡述兩個最常用的復(fù)用器生成代碼實例。
--- 圖1是VHDL的case聲明及其2:1復(fù)用器樹的實現(xiàn)。采用Verilog case聲明的“parallel case”指令[5]可產(chǎn)生相似的結(jié)果。
圖1
--- 注意,并不是所有的case聲明都能將可能的事件描述清楚,需要依靠“default”或者“others”條件來進一步說明。在這些情況下,可以繼續(xù)將case聲明表征為2:1復(fù)用器樹,但是這種樹結(jié)構(gòu)可能達不到平衡。
--- 圖2顯示了“if-then-else”聲明是怎樣產(chǎn)生一個2:1復(fù)用器鏈的。Verilog的“?:”和非平行cases可同樣產(chǎn)生相似的結(jié)構(gòu)。注意,復(fù)用器鏈確保如果第一個if條件為“真”,將選擇“a”數(shù)據(jù)輸入,而復(fù)用器其他部分將被忽略。
--- 本文闡述的復(fù)用器重構(gòu)算法應(yīng)用于2:1復(fù)用器。綜合工具由行為級代碼開始通常會生成較大的復(fù)用器。較大的復(fù)用器總是被分解為2:1復(fù)用器樹,如何實現(xiàn)這種分解已經(jīng)超出本文討論范圍。
圖2 if-then-else聲明生成的邏輯
圖3 HDL生成的復(fù)用器材
圖4 生成復(fù)用器總線
評論