FPGA中的DSP塊總覽
目錄
- 概述
- 乘法在FPGA中的複雜性
- 4位數乘法的實現方式
- 乘法相較加法的複雜性
- FPGA中的乘法器
- 專用的乘法器資源
- Xilinx 7系列FPGA的乘法器
- 在FPGA中使用乘法器的不同方法
- 讓工具推斷使用乘法器
- 使用預定義的巨集
- 使用乘法器模板
- 使用IP目錄
- 在Lavato中實例化乘法器和DSP
FPGA中的乘法與DSP
在這個視頻中,我們將探討在FPGA中執行乘法的問題。乘法是計算中經常使用的一個操作,但同時也是一個相對複雜的操作。首先,我們要稍微了解一下這種複雜性,以便給您一些動機。
乘法在FPGA中的複雜性
要實現一個4位數的乘法,一種方法是使用這裡所示的實現方式。與之相反,如果我們考慮一個4位數的加法,我們只需要四個單位位元加法器,而不像乘法器中需要更多的加法器和額外的邏輯電路。這增加了乘法的延遲和面積開銷。讓我們來看一下執行24位*17位位元加法和乘法所需的查詢表數量的比較。執行這麼多位元的加法操作,我們只需要17個查詢表,而乘法則需要403個查詢表。你可以看到,在這種情況下,乘法需要更多的資源來執行。
FPGA中的乘法器
為了解決乘法的效率問題,FPGA已經將專門用於執行乘法的資源納入了其中。最初,這些專門的資源僅用於乘法,通常可以執行一個18位*18位的乘法。最近,FPGA已經開始納入了乘法器或增強型乘法器,不僅可以執行乘法,還可以執行一些額外的支持操作。
以Xilinx 7系列FPGA為例,它們具有一組25位*18位的數字信號處理塊(DSP blocks)。下圖是單個DSP塊的抽象概述。其中包括乘法器、樹型加減器、額外的加減器、邏輯操作、比較還有一些可選的觸發器,這些觸發器可以用於註冊輸入來改善操作頻率。還可以使用觸發器來執行累加操作,進一步執行乘法累加運算。現在我們有了這些資源,就需要能夠實際使用它們。
在FPGA中使用乘法器的不同方法
有幾種不同的方法可以使用FPGA中的DSP塊或乘法器。在Lavato套件中,提供了以下這些選項:
- 讓工具推斷使用乘法器:如果只想執行乘法,並且有類似於上述代碼的內容,工具很可能會意識到這個乘法可以在DSP塊中完成,並且可能比通常的邏輯執行效率更高。這種方法的優點是非常簡單,不需要對程序進行特殊的設置,完全由工具進行優化。缺點是您可能無法得到您期望的結果,因為您將優化的過程交給了工具,而這種優化可能因工具集的不同而有所不同。
- 使用預定義的巨集:可以使用預定義的巨集確保使用了DSP塊。一個例子就是已經存在的兩個輸入相乘並產生輸出的巨集。以下是一個示例,我們指定一個輸入為24位寬,另一個輸入為17位寬,並將這兩個輸入餵入巨集的A和B輸入,然後輸出在product或P線上。如果需要使用集成寄存器,還可以擴展這個巨集。這種方法的優點是確保您一定使用到了專門的乘法或DSP資源,並且是為您封裝一些複雜性,您不需要完全了解DSP塊的所有內部工作。
- 使用DSP模板:這個模板可以讓您完全訪問FPGA中DSP資源的所有功能和配置選項。以下是一個示例,展示了如何實例化或使用DSP模板。這種方法的優點是可以完全訪問DSP塊的所有功能,並且可以實現一些可能沒有巨集或者工具無法自動識別的選項。缺點是您需要完全了解如何設置不同的配置選項以及如何啟用和配置DSP中的所有其他元素。
- 使用Lavato中的IP目錄:IP目錄是一個GUI界面,可以幫助您指定要執行的操作,並引導您創建特定操作的自定義IP。這種方法的好處是使用起來相對容易,但您對實際被實現的操作可能不太了解,並且可能不像使用某些預定義的巨集或模板選項那樣高效。
在Lavato中,您可以找到如何實例化乘法器和DSP的信息。在"語言模板"部分,您可以找到這些信息。這些部分可以在工具和語言模板選項中找到。還有在左側工具欄上的"語言模板"下也可以找到。點擊該選項後,有幾個感興趣的領域。在設備巨集實例化中,我們的設備是Arctic 7,在DSP 4中,您可以看到有幾個不同的巨集。在設備原始實例化下,可以找到DSP模板的完整內容,在算術函數下,有一個多功能算術單元(MAU),您可以看到其中提供的完整DSP模板,以及許多可用的選項。
現在,我們已經瞭解到如何在FPGA中使用乘法器和DSP,以及不同的可用方法。現在,您可以根據您的需求和對DSP塊的理解選擇最合適的方法。您可以根據應用領域和其他因素來選擇使用Infer、Macro、Template、IP Catalog等方法來使用乘法器和DSP塊。
優點:
- 專門執行乘法操作,可提供更高的效率。
- DSP塊具有多種功能和配置選項,可以根據需求進行定制。
- 這些方法將複雜性封裝起來,使使用者無需完全了解DSP細節。
缺點:
- 某些方法可能無法提供所有所需的功能或效率。
- 使用DSP模板需要對DSP細節有更深入的了解。
這就是在FPGA中使用乘法器和DSP的一般概述。透過適當的選擇和使用,您可以更有效地執行乘法操作並達到更好的性能。
資源: