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

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

3天内不再提示

FPGA浮点数转化为定点数方法

FPGA设计论坛 来源:FPGA设计论坛 作者:FPGA设计论坛 2022-10-13 16:23 次阅读

FPGA浮点转定点运算、除法转乘法运算以及运算误差分析

FPGA在常规运算时不能进行浮点运算,只能进行定点整型运算,在处理数据的小数乘加运算和除法运算时FPGA一般是无能为力的,其中一种常用的处理方法就是数据进行浮点到定点的转换。

浮点数转化为定点数一般有两种方法:

浮点数直接乘以一个数值。浮点小数(X)到定点数据(Xq)的转换其实很简单,就是把浮点小数乘以一个很大的2的n次幂的数据Xq=X*2^n,来把小数转化为整数,然后再进行数据的乘加运算,运算结果通过移位来得到实际对应的理论数据结果。

直接把浮点数转化为有符号的二进制小数用SxQn来表示,然后进行乘加运算,运算结果通过移位来得到实际对应的理论数据结果。

通过上述两种方法运算能完成浮点到定点乘加运算的结果,但是上述两种方法存在一定的问题:

存在浮点小数(X)进行整数转化定点数据(Xq)后依然还是一个小数的情况。

浮点数转化为二进制数存在数据位宽激增情况,使得SxQn的数据位宽变大。

数据运算存在一定的截位误差,这部分误差只能减小而不能消除。

浮点到定点数据转化后数据位宽变大,占用逻辑资源增加。

在实际使用时由于直接把浮点数转化为有符号的二进制小数用SxQn来表示这种方法局限性较多,近而大都采用浮点数直接乘以一个数值这种方式,但是这种方式使用时需要注意截位误差和量化误差。

第一种浮点数直接乘以一个数值方法具体过程如下:

浮点数(x)转换为定点数(xq):xq=(int)x2^Q 定点数(xq)转换浮点数(x):x= (float)xq2^(-Q) 比如,16进制数2000H,用Q0表示就是8192;若用Q15表示,则为0.25。 下面介绍Q格式运算中Q值的确定:

(1)定点加减法:需要转换成相同Q格式才能加减 (2)定点乘法:不同Q格式的数据相乘,相当于Q值相加 (3)定点除法:不同Q格式的数据相除,相当于Q值相减 (4)定点左移:相当于Q值增加 (5)定点右移:相当于Q值减少 比如,Q15表示的4000H(浮点数0.5)乘以Q15表示的4000H,4000H×4000H=1000 0000H,乘完之后Q值变为15+15=30,即结果为0.01B,即为浮点数0.25。 对应浮点数的除法运算时是把除法转换成乘法运算来实现。即分子/分母(A/B)转化为A*(1/B),这时会面临B是固定值和变值两种情况 1、如果B是固定值利用这种方式即可把(1/B)转化为定点数,然后进行乘法运算,这样计算速率较块,且通过合理的选择放大倍数来减小数据的误差。 2、如果对应B不是固定值,那么就将B变为对应位宽的整数,然后再进行数据的乘法运算。 数据的误差来源于浮点转化为定点时截位和运算结果截位引起的,这里可以通过常用的截位方式来实现截位。 常见的截位方式有:

1、负数直接截位后+1,就是所有数都按绝对值取floor 2、Truncate:直接截位,就是正数取floor,负数按绝对值取ceil 3、Rounding:舍入截位,就是所有数按绝对值取四舍五入

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

    关注

    1603

    文章

    21328

    浏览量

    593251
  • 数据
    +关注

    关注

    8

    文章

    6513

    浏览量

    87609

原文标题:FPGA浮点转定点运算、除法转乘法运算以及运算误差分析

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浮点数定点数

    本帖最后由 gk320830 于 2015-3-5 23:17 编辑 数制,浮点数定点数的文档,上数电时老师给的。有兴趣的同学可以来看看
    发表于 03-27 21:31

    【安富莱——DSP教程】第7章 DSP定点数浮点数(重要)

    第7章DSP定点数浮点数(重要) 本期教程主要跟大家讲解一下定点数浮点数的基础知识,了解这些基础知识对于后面学习ARM官方的DSP库大有裨益。特别是初学的一定要理解这些基础知识。
    发表于 06-03 11:47

    第7章 DSP定点数浮点数

    。7.1.2 浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实
    发表于 09-22 13:02

    请问28335浮点数使用IQmath转换后当定点数计算快还是用浮点数进行计算快?28335可以定点浮点混合编程吗?

    本帖最后由 一只耳朵怪 于 2018-6-14 11:52 编辑 28335为浮点DSP ,现在假如我采用两种方法:1.浮点数使用IQmath转换后当定点数计算2.直接用
    发表于 06-14 05:59

    请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行浮点数定点数转换的指令?

    得到的ADC数据需要进行定点数浮点数的转换,为了节省开销,想使用汇编程序进行定点浮点之间的转换。请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行
    发表于 07-24 07:21

    verilog程序定点数的资料

    verilog程序中需要用到定点数,用浮点数太复杂。。。有谁有关于定点数比较系统的资料吗。。。我找到黑金的教程,是关于浮点数运算的verilog实现,很详细,先传上来 Verilog
    发表于 03-27 06:35

    功能函数中的浮点数转换为定点数

    第16章 DSP功能函数-数据拷贝,数据填充和浮点定点本期教程主要讲解功能函数中的数据拷贝,数据填充和浮点数转换为定点数。目录第16章 DSP功能函数-数据拷贝,数据填充和
    发表于 08-17 07:37

    定点数浮点数的区别是什么

    定点数浮点数的区别目的:理解定点数浮点数在傅里叶变换(FFT)的实际应用中的选择单片机中如果需要进行一定的运算(常见的傅里叶变换)时,需要在不同情况下对AD采集的数据进行一定的处理
    发表于 02-21 07:22

    扩充浮点运算集是否需要自己在FPGA板子上设置一个定点数转为浮点数的部分?

    扩充浮点运算集的时候,是否需要自己在FPGA板子上设置一个定点数转为浮点数的部分?
    发表于 08-11 09:13

    请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行浮点数定点数转换的指令?

    得到的ADC数据需要进行定点数浮点数的转换,为了节省开销,想使用汇编程序进行定点浮点之间的转换。请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行
    发表于 11-29 08:03

    FPGA浮点数定点数表示法原理展示

    浮点数定点数表示法是我们在计算机中常用的表示方法 所以必须要弄懂原理,特别是在FPGA里面,由于FPGA不能像在MCU一样直接用乘除法。
    发表于 11-18 02:15 8453次阅读
    在<b class='flag-5'>FPGA</b>里<b class='flag-5'>浮点数</b>与<b class='flag-5'>定点数</b>表示法原理展示

    单片机浮点数运算的源码设计

    单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。本文详细介绍了浮点数在单片机中的表示方式和汇编子程序,浮点数定点数加减法要困难,但是克服了定点数表示范围小
    的头像 发表于 03-07 15:19 9546次阅读
    单片机<b class='flag-5'>浮点数</b>运算的源码设计

    Xilinx怎么定点数浮点数

    转化为浮点数可以是单精度也可以是双精度。
    发表于 07-05 08:09 3741次阅读
    Xilinx怎么<b class='flag-5'>定点数</b>转<b class='flag-5'>浮点数</b>

    定点数浮点数在STM32单片机中使用傅里叶(FFT)变换的理解

    定点数浮点数的区别目的:理解定点数浮点数在傅里叶变换(FFT)的实际应用中的选择单片机中如果需要进行一定的运算(常见的傅里叶变换)时,需要在不同情况下对AD采集的数据进行一定的处理
    发表于 12-24 19:22 16次下载
    <b class='flag-5'>定点数</b>和<b class='flag-5'>浮点数</b>在STM32单片机中使用傅里叶(FFT)变换的理解

    定点数浮点数的概念 浮点数二进制序列与指数表达式之间的转化

    的缺点:由于小数点位置固定不变,定点数所表示的数的范围非常有限,不能同时表达特别大或特别小的数,所以才出现了浮点数,以此来扩充数的范围,同时浮点数也广泛应用于精度要求高的场合。简单的理解浮点数
    的头像 发表于 08-22 16:06 3182次阅读
    <b class='flag-5'>定点数</b>和<b class='flag-5'>浮点数</b>的概念 <b class='flag-5'>浮点数</b>二进制序列与指数表达式之间的<b class='flag-5'>转化</b>