一、如何得到LUT與REG的使用比例 riple
我們先看一個(gè)FPGA工程的編譯結(jié)果報(bào)告:
在這個(gè)報(bào)告中,我們可以看到如下信息:
Total logic elements 24071/24624(98%): 該芯片中共有24624個(gè)LE資源,其中的98%在這個(gè)工程的這次編譯中得到了使用。 riple
Total combinational functions 21612/24624(88%): 該芯片的24624個(gè)LE資源中,88%用于實(shí)現(xiàn)組合邏輯。 riple
Dedicated logic registers 8858/24624(36%): 該芯片的24624個(gè)LE資源中,36%用于實(shí)現(xiàn)寄存器,即時(shí)序邏輯。 riple
就是從上述信息中,我得到了組合邏輯與時(shí)序邏輯的使用比例——21612/8858 = 2.4:1。 riple
二、一份更詳細(xì)的資源利用率報(bào)告 riple
在這個(gè)報(bào)告中,有一點(diǎn)可能會(huì)令人困惑:為什么Total combinational functions與Dedicated logic registers之和(30470)大于Total logic elements(24071),甚至大于該芯片的總資源(24624)。我們?cè)賮砜匆环莞敿?xì)的資源使用報(bào)告——Fitter Resource Usage Summary:
這份報(bào)告包含很多信息,在這里我們只需要關(guān)心Total logic elements一項(xiàng)。Total logic elements 24071/24624(98%)由三種使用情況不同的LE資源組成:僅用于實(shí)現(xiàn)組合邏輯的LE(Combinational with no register 15213),僅用于實(shí)現(xiàn)時(shí)序邏輯的LE(Register only 2459),同時(shí)用于實(shí)現(xiàn)組合邏輯和時(shí)序邏輯的LE(Combinational with a register 6399)。 riple
三、從Resource Property Editor看LE的使用情況 riple
在進(jìn)一步分析這些數(shù)據(jù)之前,我們有必要回顧一下FPGA的基本組成元素LE(Logic Element)的結(jié)構(gòu)和功能。以Altera的Cyclone III系列FPGA芯片為例,其LE內(nèi)部結(jié)構(gòu)如下圖所示:
這個(gè)LE同時(shí)用于實(shí)現(xiàn)組合邏輯和時(shí)序邏輯,其中藍(lán)色部分為組合邏輯(一個(gè)4輸入LUT),其中黃色高亮部分為時(shí)序邏輯(一個(gè)D觸發(fā)器)。 riple
我們?cè)賮砜匆粋€(gè)更有趣的LE:
這個(gè)LE也同時(shí)用于實(shí)現(xiàn)組合邏輯和時(shí)序邏輯,與上一幅圖不同的地方在于,這里的組合邏輯(4輸入LUT)與時(shí)序邏輯(REG)并沒有連接關(guān)系。組合邏輯從COMBOUT直接輸出,時(shí)序邏輯從REGOUT輸出。這種互不相關(guān)的組合邏輯與時(shí)序邏輯共用同一個(gè)LE的情況很特殊,這是采用了Register Packing資源優(yōu)化技術(shù)之后的實(shí)現(xiàn)方式。如果沒有采用這一資源優(yōu)化技術(shù),就要用兩個(gè)LE來分別實(shí)現(xiàn)相應(yīng)的組合邏輯和時(shí)序邏輯。 riple
明白了上面這兩幅圖,大家也能由此類推,想象出僅用于實(shí)現(xiàn)組合邏輯的LE(Combinational with no register)和僅用于實(shí)現(xiàn)時(shí)序邏輯的LE(Register only)該是什么樣子。 riple
四、“數(shù)字終于對(duì)(湊)上了!” riple
我們回到前面關(guān)于資源利用率分析的部分。有了上面介紹的知識(shí),大家應(yīng)該能夠把資源利用率報(bào)告中三種使用情況不同的LE區(qū)分開了。 riple
我們把“同時(shí)用于實(shí)現(xiàn)組合邏輯和時(shí)序邏輯的LE(6399)”分別加到“僅用于實(shí)現(xiàn)組合邏輯的LE(15213)”和“僅用于實(shí)現(xiàn)時(shí)序邏輯的LE(2459)”上面,就可以得到“全部組合邏輯”(Total combinational functions = 6399 + 15213 = 21612)和“全部寄存器”(Dedicated logic registers = 6399 + 2459 = 8858)兩個(gè)數(shù)值了。這兩個(gè)數(shù)值就是第一幅圖中關(guān)于資源利用率的匯總報(bào)告結(jié)果,它們的比例恰好就是2.4:1。 riple
由于6399這個(gè)數(shù)字被使用了兩次,所以我們最初關(guān)于“Total combinational functions與Dedicated logic registers之和(30470 = (6399 + 15213) + (6399 + 2459))大于Total logic elements(24071 = 6399 + 15213 + 2459)”的困惑也得到了解答。 riple
五、總結(jié) riple
由于FPGA設(shè)計(jì)中用到的組合邏輯與時(shí)序邏輯的數(shù)量不均衡,部分LE會(huì)僅用于實(shí)現(xiàn)組合邏輯或時(shí)序邏輯;進(jìn)一步,由于布局位置的限制,單獨(dú)實(shí)現(xiàn)組合邏輯或時(shí)序邏輯的兩個(gè)LE可能不能合并到一個(gè)LE中實(shí)現(xiàn)。所以,在資源利用率報(bào)告中會(huì)出現(xiàn)三種使用情況不同的LE。 riple
由于過長(zhǎng)的組合邏輯鏈(級(jí)聯(lián)的LUT)會(huì)引入較大的延時(shí),而時(shí)序邏輯(REG)能夠把較長(zhǎng)的組合邏輯鏈分割成較短的組合邏輯鏈,有效地縮短關(guān)鍵路徑和次關(guān)鍵路徑的長(zhǎng)度,進(jìn)而提高該FPGA設(shè)計(jì)的整體時(shí)序性能,所以組合邏輯與時(shí)序邏輯的使用比例可以作為評(píng)價(jià)一個(gè)FPGA設(shè)計(jì)時(shí)序性能的輔助參數(shù)。 riple
過于復(fù)雜的組合邏輯也會(huì)占用多個(gè)LE。我們?cè)诰帉慔DL代碼的時(shí)候,不能單獨(dú)把減少Register的使用量作為節(jié)省資源的手段,而應(yīng)該兼顧組合邏輯與時(shí)序邏輯,根據(jù)目標(biāo)PLD器件的底層結(jié)構(gòu),編寫組合邏輯和時(shí)序邏輯比例符合PLD器件資源比例的代碼。 riple
原文標(biāo)題:如何分析FPGA的片上資源使用情況
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
FPGA
+關(guān)注
關(guān)注
1626文章
21665瀏覽量
601828 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6891瀏覽量
88826 -
Reg
+關(guān)注
關(guān)注
0文章
20瀏覽量
11464 -
LUT
+關(guān)注
關(guān)注
0文章
49瀏覽量
12482
原文標(biāo)題:如何分析FPGA的片上資源使用情況
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論