0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一篇文章看懂HLS中的数据类型

电子工程师 来源:lq 2018-12-12 14:18 次阅读

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声明位宽为W的有符号整数,或通过ap_uint声明位宽为W的无符号整数。需要添加头文件ap_int.h。

定点数

2

对于任意精度的定点小数,可通过ap_fixed声明位宽为W,其中整数部分字长为I的有符号定点小数;或通过ap_ufixed声明位宽为W,其中整数部分字长为I的无符号定点小数。需要添加头文件ap_fixed.h。

浮点数

3

对于浮点数据类型,除了float和double之外,Vivado HLS还引入了半精度浮点数half,需要添加头文件hls_half.h。该浮点数据类型为16-bit。

技巧

多种数据类型给用户提供了更多的选择,用户可根据实际需求选择可最佳匹配于硬件的数据类型。一个小的技巧是,把数据类型通过typedef定义在用户的头文件中。此外,在仿真时可采用float或double类型,以防止数据溢出,尽快完成算法功能的验证;之后再将设定为整型,观察是否有溢出,完成C综合。

结论

任意精度的数据类型可以完美地匹配硬件需求,同时还继承了原有数据类型所允许的操作。例如,对于两个13-bit的有符号整数相乘,不必把其定义为int类型,而是直接定义为ap_int<13>,且可直接使用乘法运算符。这样做的最大好处就是更准确地获取资源利用率信息。注意在使用任意精度数据类型时要添加相应的头文件。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C++
    C++
    +关注

    关注

    22

    文章

    2104

    浏览量

    73478
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13607
  • HLS
    HLS
    +关注

    关注

    1

    文章

    128

    浏览量

    24023

原文标题:一篇文章看懂HLS中的数据类型

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GaussDB 数据类型介绍

    进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍些常见的数据类型转换方法等。  数据类型概念及特点 数据类型
    的头像 发表于 06-05 16:40 1613次阅读
    GaussDB <b class='flag-5'>数据类型</b>介绍

    如何利用Vivado HLS处理许多位准确或任意精度数据类型

    我们在设计硬件时,它往往是要求更精确的位宽。例如,个filter的输入是12位和个累加器的结果只需要个最大范围为27位。然而对于硬件设计来说,使用标准的C数据类型会造成硬件成本的
    发表于 11-10 14:49 2713次阅读
    如何利用Vivado <b class='flag-5'>HLS</b>处理许多位准确或任意精度<b class='flag-5'>数据类型</b>

    HLS系列– HLS数据类型1

    供的数据类型,直接用HLS翻译成硬件的话,可能会造成硬件效率的下降。 举个常见的例子。在xilinx FPGA普遍含有DSP48,它可以提供18x18bit的乘法器,假如你的设计只
    发表于 02-08 02:50 1007次阅读
    <b class='flag-5'>HLS</b>系列– <b class='flag-5'>HLS</b><b class='flag-5'>中</b>的<b class='flag-5'>数据类型</b>1

    51单片机数据类型解析

    数据类型数据结构的定义是个值的集合以及定义在这个值集上的组操作。数据类型包括原始
    发表于 11-16 08:45 2.4w次阅读
    51单片机<b class='flag-5'>中</b>的<b class='flag-5'>数据类型</b>解析

    vhdl数据类型

    VHDL的标识符可以是常数、变量、信号、端口、子程序或参数的名字。VHDL数据类型可以分成四大类: 标量型(SCALAR TYPE):属单元素的最基本的数据类型,通常用于描述
    发表于 03-30 15:59 11次下载

    KEIL-MDK和STM32的数据类型-之入门pdf资料下载

    数据类型-之入门
    发表于 04-14 10:50 7次下载
    KEIL-MDK和STM32的<b class='flag-5'>数据类型</b>-之入门<b class='flag-5'>篇</b>pdf资料下载

    重视变量的数据类型

    不管在什么语言中,定义个变量时必然要在内存开辟个相应大小的空间来存储该变量。不同的数据类型在内存所占的空间大小不同,其所能表示的数据
    发表于 01-13 15:05 1次下载
    重视变量的<b class='flag-5'>数据类型</b>

    Struct结构数据类型

    Struct类型种由多个不同数据类型元素组成的数据结构,其元素可以是基本数据类型,也可以是Struct、数组等复杂
    的头像 发表于 07-25 17:02 2944次阅读

    结构数据类型(Struct)及应用案例

    Struct数据类型使用非常灵活,随时可以使用,但是相对于PLC数据类型 (UDT) 有以下缺点,所以建议需要使用Struct类型时,可以使用PLC数据类型(UDT)代替。
    的头像 发表于 07-27 16:10 1737次阅读

    什么是数据类型转换

    常用的3种数据类型:1、Python数据类型种:字符串(str)。 2、Python数据类型第二种:整数(int)。 3、Python数据类
    的头像 发表于 02-23 15:21 1743次阅读

    定义数据类型

    在运算之前我们必须首先定义出数据类型,定义出脚本支持的数据类型,这是运算的基础。 这小节我们将定义出数据类型,在这里我们暂时定义四个数据类型
    的头像 发表于 03-03 10:10 903次阅读

    ARRAY 数据类型的变量

    要求 全局数据块已打开。 操作步骤 要声明个 ARRAY 数据类型的变量,请按以下步骤操作: 在“名称”(Name) 列,输入变量的名称。 在“
    的头像 发表于 07-06 11:08 1050次阅读

    F型PLC数据类型与标准PLC数据类型(UDT)之间的差别在哪?

    可以像使用标准 PLC 数据类型 (UDT) 那样,声明和使用 F 型 PLC 数据类型 (UDT) 。可以在安全程序以及标准用户程序中使用 F 型 PLC 数据类型 (U
    的头像 发表于 08-27 09:54 1090次阅读
    F型PLC<b class='flag-5'>数据类型</b>与标准PLC<b class='flag-5'>数据类型</b>(UDT)之间的差别在哪?

    Redis的数据类型有哪些

    用的一种数据类型,普通的key- value 存储都可以归为此类。其中Value既可以是数字也可以是字符串。使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。 2、Hash:Hash 是个键值(
    的头像 发表于 10-09 10:51 761次阅读

    plc数据类型怎么理解和应用

    PLC(可编程逻辑控制器)是种工业自动化设备,用于控制机械和工业过程。在PLC编程数据类型是非常重要的概念,因为它决定了程序数据的存
    的头像 发表于 12-19 11:39 3997次阅读