FPGA 通過查找表 (LUT) 實現邏輯功能。這些 LUT 類似于真值表或卡諾圖 (Karnaugh map),FPGA 可以通過組合多個 LUT ,來實現幾乎任何你所需的邏輯功能。
通常情況下,LUT 由其可處理的輸入數來指定。例如,一個 4 輸入 LUT 需要 16 位來存儲這 4 個輸入所有可能組合對應的輸出值。而對于需要 4 個以上輸入的邏輯,則需要進行 LUT 級聯,但 LUT 級聯會造成傳播時延。
使用較大的 LUT 可以減少所需的 LUT 層數,從而提高性能,但對于簡單的邏輯功能來說,LUT 過大同樣可能會造成浪費。為了盡量減少浪費,可以對這些 LUT 進行拆分,如何拆分 LUT 會對設備的整體利用率產生重要影響。
接下來就跟隨小編一起,來探討幾種權衡取舍的方案。
查找表的實現
首先,讓我們來看看通用 n 輸入查找表的結構。查找表是一系列多路復用器,它們根據輸入選擇特定的存儲位置,就像 1 位存儲器。所需的存儲位置數是 2 的輸入數次冪,就像有 n 根地址引腳的存儲器。
下圖是一個 4 輸入 LUT 的示例,其中較小的 LUT 用虛線邊框表示。在下文中,我們將使用 4 輸入 LUT 的簡化表示法來繼續進行探討。
圖 1. n 輸入 LUT
增加輸入位可以實現更加復雜的邏輯,但每增加一個輸入位,所需的存儲位和多路復用器的數量就會翻倍。在實現較為簡單的邏輯時,這些額外的資源就會被浪費。為了盡量減少輸入位的浪費,可以為中間多路復用器提供抽頭 (tap)。
下圖展示的是具有兩個 5 輸入 LUT 輸出的 6 輸入 LUT。通過這種簡單的方法可以實現兩個 5 輸入 LUT,但局限性在于,兩個 LUT 均由相同的 5 個輸入控制。
圖 2. 基本 6 輸入 LUT
更優的方法
Agilex FPGA 采用了一種不同的方法,可以提高設備的利用率。如下圖所示,Agilex FPGA 采用全新的 6 輸入 LUT 結構,具有 8 個輸入,稱為自適應邏輯模塊 (ALM)。部分較小 LUT 的輸入被獨立出來,以提供更高的靈活性。借助這些額外輸入,就可將依賴于不同信號的較小邏輯功能進行組合。
下圖展示了一些不同的 LUT 組合方式。
圖 3. Agilex FPGA ALM
當 datac0 和 datad0 分別連接到與 datac1 和 datad1 相同的信號時,這一模塊就實現了傳統的 6 輸入 LUT,但將其進行單獨使用時,還能實現一些 7 輸入和 8 輸入邏輯功能。
這些額外的 7 輸入和 8 輸入配置,再加上所有的 3 輸入、4 輸入和 5 輸入 LUT 配置,使得這種實現方式更加靈活,也提高了設備利用率。
對設備利用率的影響
這些優勢究竟有何重要作用呢?要回答這個問題,我們需要一個指標來反映所實現的邏輯數。理想的情況是使用一個常見的函數作為參考,比如處理器內核,而且最好是一個大家熟悉并可以自由使用的處理器,例如 RISC-V 處理器。單個內核通常不足以將 FPGA 填滿,因此需要一系列此類處理器,而且處理器應足夠小,以便進行細粒度比較。此外,還需要一個腳本將其進行綜合。然而,由于所需條件較多,專業難度較高,這很難實現。
CoreScore 是專為 FPGA 及其綜合/布局布線工具設計的基準評測體系。它能夠測試特定 FPGA 中可以容納的 SERV 內核數。SERV 是一種屢獲殊榮的位串行 RISC-V 內核,外形非常小巧。這就提供了一個獨立于供應商的衡量指標,用于體現 FPGA 的邏輯容量。
既然我們已經確定了一個用于比較的指標,那就讓我們更深入地看看每種實現方式的邏輯容量。
我們選擇了A、B 兩款使用基本 6 輸入 LUT 和提供可選 5 輸入 LUT 輸出的 FPGA 產品與使用上文所述的 8 輸入 ALM 配置的 Agilex 7 設備進行了對比。
根據 CoreScore.store 的結果可見,每個內核需要超過 210 個基本可拆分 6 輸入 LUT,而 Agilex ALM 使用的 8 輸入配置只需要不到 170 個。
如果我們比較邏輯單元 (LE)/系統邏輯單元 (SLC) 的用量,情況則會不同。所有設備都需要約 490 LE/SLC +/-5%。這并非偶然,而是因為這些 FPGA 產品均針對其邏輯使用了比例因子,以便更準確地反映其邏輯容量。
這些數據表明,邏輯單元和系統邏輯單元是衡量FPGA容量的有效指標。數據還顯示,與傳統的 6 輸入結構相比,盡管查找表位數相同,Agilex FPGA 中使用的 8 輸入 ALM 能夠以更少的實例實現更多的邏輯。
這表明,6 輸入結構浪費了更多的位數,因此需要更多的實例才能實現相同的功能。這些額外的實例將在芯片上占用更多面積,并在系統中增加功耗,這是您在為新設計選擇 FPGA 時需要考慮的因素。Agilex ALM 還可支持特定的 7 輸入和 8 輸入功能,在 6 輸入 LUT 配置中則需要兩層邏輯來實現這種功能,這不但會消耗額外的 LUT,還會造成嚴重的時序損失。
FPGA 設備非常復雜,針對您的應用找到合適的設備并非易事。邏輯單元和系統邏輯單元等指標非常有參考價值,但也需要考慮設備附帶的其他功能和工具,以及所采用的邏輯結構的底層架構。
ALM 是 Agilex FPGA 的基本構建模塊,旨在以更少的資源實現更多的功能,從而實現更好的系統優化。本文提供了一些其他資源的鏈接,以便您參考。此后,如您需尋找合適的 FPGA,請務必查看 CoreScore。
-
FPGA
+關注
關注
1630文章
21798瀏覽量
606036 -
英特爾
+關注
關注
61文章
10009瀏覽量
172340 -
復用器
+關注
關注
1文章
713瀏覽量
28414 -
LUT
+關注
關注
0文章
50瀏覽量
12577
原文標題:解密邏輯單元與 CoreScore 得分的關系
文章出處:【微信號:英特爾FPGA,微信公眾號:英特爾FPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Cyclone IV 器件的邏輯單元和邏輯陣列模塊
如何在LUT和邏輯元件之間以及邏輯元件和邏輯單元之間進行交換
請問“邏輯單元”的意思是什么?
是否可以使用邏輯單元的verilog代碼?
數字邏輯功能單元
多功能算術/邏輯運算單元(ALU) ,什么是多功能算術/邏輯
基于單元相鄰關系的重構區域構造方法
![基于<b class='flag-5'>單元</b>相鄰<b class='flag-5'>關系</b>的重構區域構造方法](https://file.elecfans.com/web2/M00/49/7F/poYBAGKhwL6AYtzaAAAY_UndWDM127.jpg)
可配置邏輯單元(CLC)
![可配置<b class='flag-5'>邏輯</b><b class='flag-5'>單元</b>(CLC)](https://file.elecfans.com/web1/M00/52/FC/pIYBAFsZJiyANOc2AAAnsDhcbiI665.jpg)
評論