Vivado HLS的輸入可以是C、C++或者System C,從而繼承了這些語言本身就具有的數據類型,例如char、short int、int等整型或float、double等浮點數據類型。不難發現,對于整型,其表示的字長是以8為邊界的,這實際上和真實的硬件模型不完全匹配。這一點也不難理解,例如HDL中會根據設計需求設定位寬,而這些位寬很多情形下并不是8-bit、16-bit或者32-bit。因此,HLS引入了任意精度(ArbitraryPrecision)的數據類型(對于SystemC,可查看Table 1-7, ug902)。以C++為例說明。
整數
1
對于任意精度整型數據類型,可通過ap_int
定點數
2
對于任意精度的定點小數,可通過ap_fixed
浮點數
3
對于浮點數據類型,除了float和double之外,Vivado HLS還引入了半精度浮點數half,需要添加頭文件hls_half.h。該浮點數據類型為16-bit。
技巧
多種數據類型給用戶提供了更多的選擇,用戶可根據實際需求選擇可最佳匹配于硬件的數據類型。一個小的技巧是,把數據類型通過typedef定義在用戶的頭文件中。此外,在仿真時可采用float或double類型,以防止數據溢出,盡快完成算法功能的驗證;之后再將設定為整型,觀察是否有溢出,完成C綜合。
結論
任意精度的數據類型可以完美地匹配硬件需求,同時還繼承了原有數據類型所允許的操作。例如,對于兩個13-bit的有符號整數相乘,不必把其定義為int類型,而是直接定義為ap_int<13>,且可直接使用乘法運算符。這樣做的最大好處就是更準確地獲取資源利用率信息。注意在使用任意精度數據類型時要添加相應的頭文件。
-
C++
+關注
關注
22文章
2108瀏覽量
73651 -
數據類型
+關注
關注
0文章
236瀏覽量
13624 -
HLS
+關注
關注
1文章
129瀏覽量
24113
原文標題:一篇文章看懂HLS中的數據類型
文章出處:【微信號:Lauren_FPGA,微信公眾號:FPGA技術驛站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論