HLS开发学习-04- 数据类型的处理--任意精度数据类型

数据类型

下图给出了C和C++的数据类型,同样也指出了在HLS中不支持的数据类型。
在这里插入图片描述

为什么要进行任意精度处理

在C语言的数据类型下,比特都是给定的8,16,32,64。而不同于FPGA内部可以实现任意位宽的一个调配。所以在这个标准的下,FPGA内部的资源可能会造成浪费。
在下图的PPT中,高亚军老师也给出了一个18*18的乘法器的例子,输入的端口为18比特仅仅比16多了2个比特,就浪费地使用了32位的资源这不是我们FPGA所期望的。
所以在HLS中我们就使用工具对精度进行了任意分配,以实现最大效率的利用资源。
在这里插入图片描述

任意精度数据类型

图中给出了常用的任意精度数据类型的表示方式,当然在使用时要进行头文件的包含。
在这里插入图片描述

使用任意精度的数据类型的对比

同样以前面的乘法器为例子对比结果如图,实现的结果中我们可以看出,任意精度的数据类型有更高的时钟频率,也就是我们的设计可以跑到更高的时钟。更快的数据吞吐,以及使用了更少的资源。
在这里插入图片描述

小技巧:在头文件中定义数据类型

  1. 让我们的设计可以更高效的进行修改,方便debug
  2. 同时在图中可以看到HLS的人性化设计,在Outline中对我们定义并使用到的数据类型进行了高亮显示,方便我们进行设计。

在这里插入图片描述

使用sizeof()函数

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章