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