Vitis HLS 学习笔记--ap_int.h / ap_fixed.h(1)

目录

目录

1. 概述

2. 简要规则

3. 浮点运算的复杂性

2.1 对阶

3.2 尾数运算

3.3 规格化和舍入

3.4 特殊值的处理

4. 示例(ap_fixed.h)

5. 量化模式(ap_fixed.h)

5.1 AP_SAT* 模式会增加资源用量


1. 概述

ap_int.h 和 ap_fixed.h 是 Vitis HLS (High-Level Synthesis) 工具中提供的两个非常重要的头文件,它们定义了一系列特殊的数据类型。

在 FPGA 设计中,资源是有限的,包括逻辑单元、存储单元和信号处理单元等。使用标准的数据类型(如 int、float 等)往往会导致资源浪费,因为这些类型的位宽是固定的,可能远远超过实际需求。ap_int.h 和 ap_fixed.h 提供的数据类型允许设计者精确地指定数据的位宽,从而实现资源的精细管理和优化。这种优化可以显著提高芯片的性能,降低功耗,减少成本。

通过精确控制数据位宽,可以减少不必要的数据操作和存储,从而减少逻辑延迟,提高数据处理速度。例如,在执行加法操作时,较小的数据位宽意味着较少的逻辑门延迟,从而加快运算速度。此外,较小的数据位宽还可以减少数据传输的带宽需求,提高整体系统的性能。

2. 简要规则

3. 浮点运算的复杂性

浮点运算单元(FPU)的设计比定点运算单元复杂得多,需要更多的逻辑电路和更多的时钟周期来完成一个运算。

浮点数通常遵循 IEEE 754 标准,该标准定义了浮点数的表示方式以及运算规则。一个浮点数由三个部分组成:符号位(表示正负)、指数位和尾数位(或称为有效数字)。这种表示方式使得浮点数能够表示极广泛的数值范围,但同时也带来了运算的复杂性:

2.1 对阶

在执行加法或减法运算时,两个浮点数的指数可能不同,需要进行对阶操作,即调整两个数的指数使其相同,然后才能对尾数进行加减操作。这个过程可能涉及尾数的右移操作,以及对溢出或下溢的处理。

3.2 尾数运算

一旦完成对阶,就可以对尾数进行加减或乘除运算。由于尾数通常包括一个隐含的最高位(对于规格化数),因此尾数运算比整数运算更为复杂。加上需要处理舍入和精度损失的问题,尾数运算需要额外的逻辑和时间。

3.3 规格化和舍入

运算结果可能需要规格化处理,以确保其格式符合浮点数的表示要求。规格化可能需要对尾数进行左移或右移,并相应地调整指数。此外,还需要进行舍入操作,以确保结果符合指定的精度要求。舍入操作本身就有多种模式(如向最近偶数舍入、向零舍入等),这增加了运算的复杂性。

3.4 特殊值的处理

浮点数表示还包括特殊值,如正无穷、负无穷和 NaN(非数)。在运算过程中需要检测和处理这些特殊值,这也是浮点运算复杂性的一个方面。

4. 示例(ap_fixed.h)

5. 量化模式(ap_fixed.h)

5.1 AP_SAT* 模式会增加资源用量

饱和算术运算需要检测运算结果是否超出了数据类型所能表示的最大或最小值。如果超出了,结果需要被设置为该数据类型能表示的最大值或最小值。这种检测和修正过程涉及到额外的比较、条件判断和赋值操作,从而需要更多的逻辑资源来实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/616930.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux【实战篇】—— NFS服务搭建与配置

目录 一、介绍 1.1什么是NFS? 1.2客户端与服务端之间的NFS如何进行数据传输? 1.3RPC和NFS的启动顺序 1.4NFS服务 系统守护进程 二、安装NFS服务端 2.1安装NFS服务 2.2 创建共享目录 2.3创建共享目录首页文件 2.4关闭防火墙 2.5启动NFS服务 2.…

SpringBoot项目接入Nacos注册中心

前置 已经安装好Nacos服务,并且该项目所在服务器可以访问到 可以参考下: windows环境安装Nacos单机版-CSDN博客 Centos7安装Nacos单机版-CSDN博客 1. POM文件引入依赖 注意,父工程已经引入spring cloud依赖管理的情况下不用添加版本号 …

C语言面试题之合法二叉搜索树

合法二叉搜索树 实例要求 实现一个函数,检查一棵二叉树是否为二叉搜索树; 示例 1: 输入:2/ \1 3 输出: true 示例 2: 输入:5/ \1 4/ \3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 …

微信小程序制作圆形进度条

微信小程序制作圆形进度条 1. 建立文件夹 选择一个目录建立一个文件夹,比如 mycircle 吧,另外把对应 page 的相关文件都建立出来,包括 js,json,wxml 和 wxcc。 2. 开启元件属性 在 mycircle.json中开启 component 属…

学习基于pytorch的VGG图像分类 day5

注:本系列博客在于汇总CSDN的精华帖,类似自用笔记,不做学习交流,方便以后的复习回顾,博文中的引用都注明出处,并点赞收藏原博主. 目录 VGG的数据集处理 1.数据的分类 2.对数据集的处理 VGG的分类标签设置 …

Stable Diffusion之API接口调用

1、开启api调用模式 开启api模式,关闭可视化窗口,并且建议关闭登录权限(详细查看文章最后Stable Diffusion之Ubuntu下部署-CSDN博客) ./webui.sh --disable-safe-unpickle --api --nowebui 2、查看接口列表 访问对应的网页地…

test4141

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和…

基于java+springboot+vue实现的网上购物系统(文末源码+Lw+ppt)23-42

摘 要 随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,网上购物系统展现了其蓬勃生命力和广阔的前景。与此同时,为…

WP Automatic v3.93 – 网站采集与自动发布插件下载(支持GPT-4)

WordPress Automatic Plugin是一款可以采集任何类型内容且自动发布到WordPress的插件,还支持使用API从Youtube 和 Twitter 等流行网站导入内容,也可以自动导入亚马逊、eBay、沃尔玛等商品信息,并按要求设置好销售联盟购买链接。 WordPress Automatic Pl…

数据可视化的3D问题

三维对象非常流行,但在大多数情况下会对解释图形的准确性和速度产生负面影响。 以下是对涉及 3d 的主要图形类型的回顾,并讨论了它们是否被认为是不好的做法。 1、3D 条形图:不要 这是一个 3d 条形图。 你可能很熟悉这种图形,因为…

第八讲 python标识符-命名规则-帮助函数-变量声明-初始化-垃圾回收机制

目录 1.标识符规则 2.help() 的用法 3. 查看python中的所有关键字 4. 开发中,我们通常约定俗称遵守的规则 5. 变量和简单赋值语句 6. 删除变量 7. 垃圾回收机制(先做了解,后序详解) 1.标识符规则 标识符是用来命名变量、函数、类等实体的名称。标识符必须…

kafka学习记录

文章目录 windows单机版kafka搭建步骤主题的增删改查操作消息的生产与消费 Windows集群版kafka搭建步骤 prettyZoo 尚硅谷Kafka教程,2024新版kafka视频,零基础入门到实战 【尚硅谷】Kafka3.x教程(从入门到调优,深入全面&#xff0…