FPGA中乘除法运算实现途径

主要介绍在FPGA中实现乘除法的方式

准则

虽然verilog中可以直接写* 或者/来表示乘除,但建议不要这样使用。如果是一个比较简单的话,还可以勉强使用。但遇到浮点之类的,肯定不可以了 。 具体官方给出了三种方式:
1.采用左移或右移的方法实现2的n次方乘法或除法。
2.使用乘法或除法IP核,例如mult与div的IP,使用除法器IP的时候,注意延迟单位。(可参考ug901 88页)
3.HLS生成乘法器IP

参考地址:https://support.xilinx.com/s/question/0D52E00006iHpACSA0/xilinx-fpga%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86%E4%B9%98%E6%B3%95-%E9%99%A4%E6%B3%95%E8%BF%90%E7%AE%97?language=en_US

https://support.xilinx.com/s/question/0D52E00006hpogdSAA/%E8%AF%B7%E9%97%AE%E6%80%8E%E4%B9%88%E8%83%BD%E5%87%8F%E5%B0%8Fdsp%E8%B5%84%E6%BA%90%E7%9A%84%E4%BD%BF%E7%94%A8?language=en_US

实施

在 Xilinx 系列 FPGA 中实现带符号小数的乘除法,一般可以采用以下两种方法:

  1. 定点小数乘除

定点小数是指小数点的位置固定的小数。在 FPGA 中,定点小数通常使用二进制表示,并将其划分为整数部分和小数部分。例如,一个 8 位定点小数可以表示为:

符号位 整数部分 小数部分
其中,符号位表示数字的正负号,整数部分表示小数的整数部分,小数部分表示小数的小数部分。

定点小数的乘法可以分解为以下步骤:

将两个定点小数的整数部分和浮点部分分别相乘;
将两个乘积相加;
对结果进行定点化。
定点小数的除法可以分解为以下步骤:

将被除数乘以除数的倒数;
对结果进行定点化。
定点小数乘除的优点是易于实现,并且具有较高的计算精度。但是,定点小数乘除的缺点是需要人为地选择定点的位置,这可能会导致精度损失。

  1. 浮点小数乘除

浮点小数是指尾数和指数的乘积。在 FPGA 中,浮点小数通常使用 IEEE 754 标准表示。例如,一个单精度浮点数可以使用以下格式表示:

符号位 指数 尾数
其中,符号位表示数字的正负号,指数表示尾数的缩放因子,尾数表示数字的有效数字。

浮点小数的乘法可以分解为以下步骤:

将两个浮点数的指数相加;
将两个浮点数的尾数相乘;
对结果进行归一化。
浮点小数的除法可以分解为以下步骤:

将被除数乘以除数的倒数;
对结果进行归一化。
浮点小数乘除的优点是具有较高的精度范围,并且不需要人为地选择定点的位置。但是,浮点小数乘除的缺点是实现复杂度较高,并且计算速度较慢。

选择哪种方法

在实际应用中,选择哪种方法取决于具体的应用需求。如果精度要求不高,并且需要较高的计算速度,则可以选择定点小数乘除。如果精度要求较高,并且能够接受较低的计算速度,则可以选择浮点小数乘除。

具体的建议

如果需要在 FPGA 中实现数字滤波器或其他信号处理算法,则可以使用定点小数乘除。
如果需要在 FPGA 中实现图形处理或其他科学计算应用,则可以使用浮点小数乘除。
Xilinx 提供的资源

Xilinx 提供了一些工具和资源,可以帮助您在 FPGA 中实现小数乘除。例如:

Vivado HLS:Vivado HLS 是一种用于高层次综合的工具,可以帮助您将 C/C++ 代码转换为 FPGA 设计。Vivado HLS 提供了定点和浮点小数乘除的库函数。
Xilinx DSP IP 核:Xilinx 提供了各种 DSP IP 核,其中包括定点和浮点小数乘除器。

总结

在 Xilinx 系列 FPGA 中实现带符号的小数的乘除法,可以采用定点小数乘除或浮点小数乘除两种方法。选择哪种方法取决于具体的应用需求。Xilinx 提供了一些工具和资源,可以帮助您实现小数乘除。

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

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

相关文章

程序不包含适用于入口点的静态Main方法

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

西湖大学赵世钰老师【强化学习的数学原理】学习笔记1节

强化学习的数学原理是由西湖大学赵世钰老师带来的关于RL理论方面的详细课程,本课程深入浅出地介绍了RL的基础原理,前置技能只需要基础的编程能力、概率论以及一部分的高等数学,你听完之后会在大脑里面清晰的勾勒出RL公式推导链条中的每一个部…

数据结构_时间复杂度

✨✨所属专栏:数据结构✨✨ ✨✨作者主页:嶔某✨✨ 什么是时间复杂度? 时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间&#xff0…

【go零基础】go-zero从零基础学习到实战教程 - 0环境配置

是个前端,最近开始学习go,后端除node外基本0基础,所以学习曲线有点绕,目标是个基础的服务端demo,搞个api服务后台,包含基础的用户登录、文章发布和写文章、权限控制,差不多就是个完整博客系统。…

发现肺结节怎么办?5个肺结节诊疗病例分享

近期“肺结节离癌症有多远”上了热搜,当体检报告上出现“肺结节”,不少朋友都万分焦虑。其实,直径小于8mm的实性肺结节不需要做手术,但要记得定期复诊看肺结节是往良性还是往恶性发展;如果是直径大于8mm的实性肺结节就…

Git 使用 下载分支 提交新项目到当前分支 三(公司快速上手版)

文章背景 git已经装好了,公司的也给创建好账户了,仓库地址也有了。 领导已经给你说了是哪个分支了。 如何下载远程仓库中的一个项目分支,到本地电脑上。 并且如何将新建的项目上传到当前分支的远程仓库 下载 步骤 创建文件夹。 右键 Op…

[SqlServer数据库:基于容器化]:快速部署安装

文章目录 一:拉取镜像运行容器1.1:拉取镜像1.2:运行容器1.2:查看容器 一:拉取镜像运行容器 1.1:拉取镜像 docker pull mcr.microsoft.com/mssql/server:2019-latest [rootsv-master ~]# sudo docker pul…

前端JS必用工具【js-tool-big-box】,Number数值转换的方法调用学习

这一小节,我们针对前端工具包(npm)js-tool-big-box的使用做一些讲解,主要是针对Number数值型转换的一些方法使用。 目录 前言 1 安装和引入 2 千位逗号分割 3 判断是否大于0 4 判断是否大于0的整数 5 生成指定范围内的随机数…

Win32 API 光标隐藏定位和键盘读取等常用函数

Win32 API 光标隐藏定位和键盘读取等常用函数 一、Win32 API二、控制台程序指令modetitlepausecls 三、控制台屏幕上坐标的结构体COORD四、句柄获取函数GetStdHandle五、控制台光标操作1.控制台光标信息结构体CONSOLE_CURSOR_INFO2.得到光标信息函数GetConsoleCursorInfo3. 设置…

【NC16619】传球游戏

题目 传球游戏 动态规划 思路 这道题主要考察对状态转移的理解。说实话,动态规划问题只要想到了就简单,想不到就很难,除了像背包问题那一类有固定套路的题以外,其实大部分的动态规划问题都没什么所谓的公式。还是得多练&#xf…

【Java数据结构】深入解析ArrayList与顺序表

【Java数据结构】深入解析ArrayList与顺序表 1.前言~🥳🎉🎉🎉 2.ArrayList的介绍 3.使用ArrayList 3.1 ArrayList的构造方法 3.11 第一个构造方法 3.12第二个构造方法 3.13第三个构造方法 3.2ArrayList中的tostring方…

Spring IOC(一)

1. Spring IOC入门 1.1 什么是Spring IoC IoC(Inversion of Control),即控制反转,是一种设计原则。简单来说,IoC就是将程序的某种传统控制流程反转了。 在Spring框架中,控制反转体现在对象的创建和管理上。…

jsp servlet 学生信息管理系统

一、角色划分 1、超级管理员 2、学生 二、模块展示 1、登录 2、列表页面【超级管理员展示所有用户信息、学生只展示当前登录用户信息】 3、新增 4、编辑 三、数据库【mysql】 四、运行演示 jsp servlet 学生信息管理系统

rust疑难杂症解决

rust疑难杂症解决 边碰到边记录,后续可能会逐步增加,备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁, 有时vscode中项目比较多,如果其中某些库应用有问题&…

CSS 之 transition过渡动画

一、简介 ​ CSS 制作 Web 动画有两种方式: 帧动画(Keyframe Animation)和过渡动画(Transition Animation)。针对不同的业务场景中,我们应该选择不同的动画方式,通常来说:对于交互元…

vue3插槽的name和v-slot的研究

slot可以分为具名插槽和默认,默认插槽name是default 在父组件的template需要些v-slot/#,没写不生效,而在父组件下,而没被template包含的默认放在template且含有#default. 1)没写slot,可以不写template,也可写default的template2)写了name的slot,即使是default也必须些template…

【Jenkins】持续集成与交付 (五):Jenkins用户权限管理

【Jenkins】持续集成与交付 (五):Jenkins用户权限管理 1、安装插件(Role-based Authorization Strategy)2、开启权限全局安全配置3、创建角色4、创建用户5、给用户分配角色6、测试权限💖The Begin💖点点关注,收藏不迷路💖 1、安装插件(Role-based Authorization Stra…

STM32G431RBT6之LCD与LED配置

首先,配置时钟树,时钟树的配置在我的另外一篇博客里,这里不再赘述. LCD与LED具有共同的IO口,同时创建工程较好. 打开原理图,发现LED的IO口是PC8~PC15,还有一个容易看漏的PD2.LCD的IO口是PC0到PC15. 当然,看产品手册也可以知道,但是还是推荐大家看原理图. 打开cubumx,给PC0~PC…

Java设计模式 _结构型模式_过滤器模式

一、过滤器模式 1、过滤器模式 过滤器模式(Filter Pattern)是这一种结构型设计模式。过滤器,顾名思义,就是对一组数据进行过滤,从而最终获取到我们预期的数据。 2、实现思路 (1)、定义过滤器的…

想要应聘前端工程师——学习路线指南

前端工程师学习路线 按照前端岗位需求,以优先学习工作更需要,面试更常考的内容为原则,由浅入深,层层铺垫,与时俱进,可以较容易地总结出前端学习路线图: HTML / CSS / JavaScript 基础学习 《Web 入门》 MDN 权威入门指南,HTML / CSS / JavaScript 快速上手 《CSS 世界…