zoukankan      html  css  js  c++  java
  • Vivado_HLS 学习笔记1-数据类型

    数据类型

    支持的C/Cpp类型

    1. Character Types
      char 8bits
      wchar_t

    2. Integer Types
      signed char 8bits
      [signed] short [int] 16bits
      [signed] int 32bits
      [signed] long [int] 32bits
      [signed] long long [int] 64bits

    3. Integer Types(unsigned)
      unsigned char 8bits
      unsigned short [int] 16bits
      unsigned [int] 32bits
      unsigned long [int] 32bits
      unsigned long long [int] 64bits

    4. Floating-point Types
      float
      double
      long double

    5. 其他类型
      bool

    支持任意精度类型Arbitrary Precision Data Types

    Cpp		ap_int<W> (1024bits)	//#include <ap_int.h>
       		ap_uint<W> (1024bits)	//#include <ap_int.h>
    Cpp		ap_fixed<W,I,Q,O,N>		//#include <ap_fixed.h>
       		ap_ufixed<W,I,Q,O,N>	//#include <ap_fixed.h>
    

    ap_fixed<W,I,Q,O,N>

    • W-定点数的整体位宽
    • I-整数部分的位宽
    • Q-量化模式,对小数部分的量化,默认为AP_TRN_ZERO(直接舍去尾部低位), 可选AP_RND(四舍五入).
    • O-溢出模式,对整数部分的溢出,默认为AP_WRAP(直接舍去首部高位), 可选为AP_SAT(饱和,所有非符号位补1,填充到最大值)
    //ap_fixed<W,I,Q,O,N>		//#include <ap_fixed.h>
    ap_fixed<3,2> var1 = 1.25;				//1.25('b01.01)->1.0('b01.0)
    ap_fixed<3,2,AP_RND> var2 = 1.25;		//1.25('b01.01)->1.5('b01.1)
    
    ap_fixed<4,4> var3 = 19;				//19('b01_0011)->3('b0011)
    ap_fixed<4,4,AP_RND,AP_SAT> var4 = 19;	//19('b01_0011)->7('b0111)_无符号4位数的最大值
    

    浮点数

    double vf2(5.0);
    float vf3(5.0f);		//float类型要加后缀f, hls_math.h
    

    任意精度类型的用法

    在头文件中

    #include <ap_int.h>
    
    #define W 18
    #define __NO_SYNTH__
    #ifdef __NO_SYNTH__
    typedef int data_t;
    typedef int prod_t;
    #else
    typedef ap_int<W> data_t;
    typedef ap_int<2*W> prod_t;
    #endif
    
    //* sizeof can check the width of a data.
    //#include <typeinfo>
    //typeid(var1).name()              //返回变量的类型
    
    prod_t ScalarMult(data_t A, data_t B);
    

    变量的初始化方式

    int var_i = -6;
    
    ap_int<6> a_6bit_var_c = -22;
    ap_int<6> a_6bit_var_d(-22);
    ap_int<6> a_6bit_var_r2("0b101010",2); //6bit-用2进制数据初始化->'d42
    ap_int<6> a_6bit_var_r8("0o52",8);	//6bit-用8进制数据初始化值->'d42
    ap_int<6> a_6bit_var_r10("-22",10); //6bit-用10进制数据初始化'd-22
    ap_int<6> a_6bit_var_r16("0x2A",16);//6bit-用16进制数据初始化->'d42
    
    ap_int<6> a_6bit_var_r2("101010",2); //6bit-用2进制数据初始化->'d42
    ap_int<6> a_6bit_var_r8("52",8);	//6bit-用8进制数据初始化值->'d42
    ap_int<6> a_6bit_var_r16("2A",16);//6bit-用16进制数据初始化->'d42
    

    常数的处理

    常数参与运算: 必须显式说明类型;

    HLS:不支持递归函数;

  • 相关阅读:
    SpringCloud之Nacos服务注册(十八)
    SpringCloud之Nacos服务发现(十七)
    Pillow模块图片生成
    js中==和===区别
    jQuery跳转到另一个页面以及原生js跳转到另一个页面
    django搭建BBS-登入&验证码的生成
    django搭建BBS-表单创建&注册
    POJ3784 Running Median
    POJ 2559 Largest Rectangle in a Histogram
    Codevs1299 切水果
  • 原文地址:https://www.cnblogs.com/charleechan/p/13185896.html
Copyright © 2011-2022 走看看