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

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

数据类型


下图给出了C和C++的数据类型,同样也指出了在HLS中不支持的数据类型。

image.png

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


在C语言的数据类型下,比特都是给定的8,16,32,64。而不同于FPGA内部可以实现任意位宽的一个调配。所以在这个标准的下,FPGA内部的资源可能会造成浪费。

在下图的PPT中,高亚军老师也给出了一个18*18的乘法器的例子,输入的端口为18比特仅仅比16多了2个比特,就浪费地使用了32位的资源这不是我们FPGA所期望的。

所以在HLS中我们就使用工具对精度进行了任意分配,以实现最大效率的利用资源。

image.png

任意精度数据类型


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

image.png

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


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

image.png

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


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

image.png

使用sizeof()函数


image.png

image.png

image.png

总结


image.png

目录
相关文章
|
6月前
|
存储
不同数据类型之间混合运算
该内容是一个编程问题示例,要求将大写字母转换为小写字母。解题关键点在于,小写字母的ASCII码比对应大写字母大32。提供了两张图片来展示ASCII码的差异和转换结果。
47 0
|
6月前
|
数据处理 Python
不同类型数据间的混合运算
在编程和数据处理中,我们经常需要处理不同类型的数据,如整数、浮点数、字符串等。当这些不同类型的数据需要进行混合运算时,我们需要特别注意数据类型之间的转换和运算规则。本文将介绍不同类型数据间的混合运算,并附上相应的代码示例。
112 0
|
存储 Python
什么是数据类型,都有什么,如何转换
什么是数据类型,都有什么,如何转换
144 0
|
前端开发 Java
项目采坑日志——Java浮点类型数据进行加减运算出现精度丢失问题
项目采坑日志——Java浮点类型数据进行加减运算出现精度丢失问题
145 0
|
C语言 C++
C++——数据类型之间的转换
C++——数据类型之间的转换
|
存储 SQL JSON
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
321 1
不全?MySQL数据类型精讲,定点日期枚举文本字符串,json二进制,空间,选择建议,完整详细可收藏
HLS开发学习-05- 数据类型的处理--数据类型转换
HLS开发学习-05- 数据类型的处理--数据类型转换
285 0
HLS开发学习-05- 数据类型的处理--数据类型转换
|
BI 索引
HLS开发学习-06- 数据类型的处理-- HLS 中的复合数据类型
HLS开发学习-06- 数据类型的处理-- HLS 中的复合数据类型
206 0
HLS开发学习-06- 数据类型的处理-- HLS 中的复合数据类型
|
C++
HLS实践 - 04 - 任意精度
HLS实践 - 04 - 任意精度
162 0
HLS实践 - 04 - 任意精度
|
存储 程序员 C++
C++学习——数据类型(强制)转换详解
C++学习——数据类型(强制)转换详解
474 0
C++学习——数据类型(强制)转换详解