Vivado HLS中的数据类型
参考文献
[1]、lauren的FPGA(微信公众号)
[2]、小鱼FPGA(微信公众号)
项目简述
我们知道C、C++中数据类型的大小都是以字节为单位,这在FPGA中式相当浪费资源,因为只能式8bit的整数倍。所以在VIVADO HLS中我们需要具体指定每个数据类型的位宽,比如5位、10位。这篇文章将介绍在VIVADO HLS中为什么要使用任意精度的数据类型,以及如何使用任意精度数据类型。
为什么在VIVADO HLS中使用任意精度数据类型
C、C++语言中常见的数据类型如下:
我们举一个DSP48的例子解释为什么要使用任意精度,用过FPGA的同学都应该知道DSP48是FPGA中非常重要的硬件资源,而且数目不算多,在中端芯片中也就几百个DSP48。该硬件的简略图如下:
从图中我们可以看出DSP48可以计算的表达式,其中两个表达式中的a、b、c、d之间的任意组合,DSP48均可以计算。上面最重要的就是乘法器资源,上面的乘法器是25x18 Multiplier,这也满足了绝大多数的计算要求,但是如果我们要计算两个int类型的数据相乘,那么便需要3个DSP48,相当占用资源,从这个例子上