Vivado HLS ap_fixed数据类型

任意精度定点数定点数

C++ Arbitrary Precision Fixed Point Types的缩写就是ap_fixed

定义如下

ap_[u]fixed<int W,
int I,
ap_q_mode Q,
ap_o_mode O,
ap_sat_bits N>;

W:宽度,数据占用的位宽,

I:整数部分的位数,那么(W-I)就是小数部分fraction占用的宽度了

Q:量化模式

有这么几种:

Rounding to plus infinity AP_RNDAP_RND 指示该值应舍入到最接近ap_ [u]定点类型的可表示值。

ap_fixed<3, 2, AP_RND, AP_SAT> UAPFixed4 = 1.25; // Yields: 1.5
ap_fixed<3, 2, AP_RND, AP_SAT> UAPFixed4 = -1.25; // Yields: -1.0

Rounding to zero AP_RND_ZERO 向零取整

ap_fixed<3, 2, AP_RND_ZERO, AP_SAT> UAPFixed4 = 1.25; // Yields: 1.0
ap_fixed<3, 2, AP_RND_ZERO, AP_SAT> UAPFixed4 = -1.25; // Yields: -1.0


Rounding to minus infinity AP_RND_MIN_INF 向负无穷取整


Rounding to infinity AP_RND_INF 向正无穷取整
Convergent rounding AP_RND_CONV
Truncation AP_TRN
Truncation to zero AP_TRN_ZERO

O:溢出模式

Saturation AP_SAT 取到剩余位数能表示的最大的值

p_ufixed<4, 4, AP_RND, AP_SAT> UAPFixed4 = 19.0; // Yields: 15.0 4位无符号最大能取到15
ap_fixed<4, 4, AP_RND, AP_SAT> UAPFixed4 = 19.0; // Yields: 7.0 4位有符号数最大能取到7
ap_ufixed<4, 4, AP_RND, AP_SAT> UAPFixed4 = -19.0; // Yields: 0.0   4位无符号最大能取到0
ap_fixed<4, 4, AP_RND, AP_SAT> UAPFixed4 = -19.0; // Yields: -8.0 4位有符号极限能取到-8


Saturation to zero AP_SAT_ZERO

ap_ufixed<4, 4, AP_RND, AP_SAT_ZERO> UAPFixed4 = 19.0; // Yields: 0.0
ap_fixed<4, 4, AP_RND, AP_SAT_ZERO> UAPFixed4 = 19.0; // Yields: 0.0
ap_ufixed<4, 4, AP_RND, AP_SAT_ZERO> UAPFixed4 = -19.0; // Yields: 0.0
ap_fixed<4, 4, AP_RND, AP_SAT_ZERO> UAPFixed4 = -19.0; // Yields: 0.0


Symmetrical saturation AP_SAT_SYM 根 AP_SAT差不多,以后具体情况再分析区别吧跑一下程序验证一下,我先偷个懒O(∩_∩)O~~

Wrap-around AP_WRAP

ap_ufixed<4, 4, AP_RND, AP_WRAP> UAPFixed4 = 19.0; // Yields: 3.0 10011取低4位就是3
ap_fixed<4, 4, AP_RND, AP_WRAP> UAPFixed4 = 31.0; // Yields: -1.0 
ap_ufixed<4, 4, AP_RND, AP_WRAP> UAPFixed4 = -19.0; // Yields: 13.0
ap_fixed<4, 4, AP_RND, AP_WRAP> UAPFixed4 = -19.0; // Yields: -3.0


Sign magnitude wrap-around AP_WRAP_SM


编译这个类型,要加上头文件:

#include <ap_fixed.h>

g++编译要有
-I/<HLS_HOME>/include选项

最佳性能

g++ -O3 








  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
vivado hls是Xilinx公司推出的一款高级综合工具,用于将C/C++代码转换成硬件描述语言(HDL)以实现高性能FPGA应用。而"ap_source"是vivado hls中的一个命令,用于将C/C++代码转换为VHDL或Verilog代码。 当在vivado hls 2018的命令行中使用"ap_source"命令时,如果返回了错误代码,可能是由于以下几个原因导致的: 1. 语法错误:在使用"ap_source"命令时,输入的代码可能存在语法错误,例如括号不匹配、缺少分号、错误的数据类型等。这样会导致vivado hls无法正确解析代码。 2. 依赖文件问题:"ap_source"命令可能需要依赖其他文件,比如头文件或库文件,如果这些文件不存在或不正确,也会导致错误代码的返回。 3. 工具版本问题:vivado hls 2018可能与您的操作系统或其他工具版本存在兼容性问题,导致命令执行失败。您可以尝试更新vivado hls或其他相关工具,或者查看与操作系统和其他工具版本的兼容性。 针对这个错误代码,您可以尝试以下解决方法: 1. 仔细检查代码:检查您的C/C++代码是否存在语法错误或其他潜在的问题,确保代码正确无误。 2. 检查依赖文件:确认您的代码是否需要其他文件作为依赖,检查这些文件是否存在且正确。 3. 更新工具版本:如果您的vivado hls版本较旧,可以尝试更新到最新版本,或者查找与您的操作系统和其他工具版本兼容的版本。 4. 寻求帮助:如果问题仍然存在,您可以向Xilinx官方社区或技术支持寻求帮助,他们将能够提供更具体的解决方案或建议。 通过以上方法,您应该能够解决vivado hls 2018命令"ap_source"返回错误代码的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值