浮点数定点化

本文介绍了浮点数和定点数的概念,以及浮点数如何转换为定点数的过程。浮点数在计算中的精确性与 FPGA 内部计算的局限性被探讨,定点数的位宽定义、精度计算以及量化误差的影响被详细阐述。通过实例展示了2.918和3.1415926的定点化过程,分析了定点化带来的量化误差,并总结了定点化的一般步骤。此外,还讨论了浮点数乘法在转换为定点数后的计算方法及误差分析。
摘要由CSDN通过智能技术生成
浮点数:小数点浮动,
定点数:小数点固定, 小数点固定的位于实数所有数字中间的某个位置
需求:浮点数转成定点
浮点数例子: 12.918 3.1415926
浮点作用:计算精确
Fpga 内部无法进行浮点计算: 3.4x5.5
只能进行定点计算:小数点固定,固定在哪个位的位置, fpga 才可以进行处理计算
如果 浮点 小数位置不固定。只有 可以处理 硬件浮点的芯片 才可以进行运算
浮点数转 定点数
转定点数要定义小数需求多少位,整数需求多少位
Eg :三位整数位宽, 12 位小数位宽,最高位符号位一位。
16 位定点数最大 值(正数): 0111_1111_1111_1111 16’d32767
最小值: -32768 1000_0000_0000_0000
小数最大12位可以表示的精度
15 位: 14 13 12 最大表示 7 ,小数 12
2^12=4096
1 分成 4096 ,每一份表示精度
12 位 最大精度: 1 /4096
小数位最大可以表示到 4095x 1/409 6 : 0 增加到 4095
范围: 7.9997558593~- 7.9997558593
无法对 12.918 进行定点化,因为超出 整数位三位位宽的范围
0.918 可否用 12 位小数位宽 无损失 定点化:算 918 除以 1/4096 能否除尽
2.918 进行定点化
表示范围: 范围: 7.9997558593~- 7.9997558593 ,极限值为 8
二进制范围: 32767~-32768
整个数精度: 2^3 分成 32768 8/32768=0.000244140625
2.918/ 精度 =11952.218
有小数,产生量化误差
2.918 进行定点化的过程用一位符号位 3 位整数位 12 位小数位表示:
2.918 以精度
精度 =8/32768
2.918/ 精度 = 11952.128 约等于 11952 2.918 含有多少个这样的精度
这个 值就是定点后的 2.918
0.128 的定点误差
定点 化带来量化误差
对3.1415926进行定点化
表示 3.1415926:3.1415926/ 精度 =12867.9632896 约等于 12868
12868 再转成浮点数 12868 转二进制: 0011_0010_0100_0100
整数部分: 3 ;小数部分: 2^(-3)+2^(-6)+2^(-10)
小数部分: 0010_0100_0100=580
580/4096
量化后的数值为: 3.1416015625
误差为: 3.1416015625-3.1415926
总结:
1 位符号位 m 位正数位 n 位小数位
精度: 2^m/2^( m+n )
对某个数 a.b 进行定点化:这个数除以精度: a.b /( 2^m/2^( m+n ) )
1. 规定位宽
2. 知道最大值最小值,进行量化
3. 计算 目标计算的值 / 精度 = 定点化的值 四舍五入 得到最终的定点值
定点后的值 可以在 fpga 中使用

浮点数乘法:2.918x3.13415926约等于11952x12868

个三位相乘:整数位扩到六位,

12位小数相乘:小数位扩到24

浮点结果: 2.918x3.13415926=9.1671672068

定点结果: 11952x12868=153798336

11952x12868=153798336二进制结果:00_1001_0010_1010_1100_0110_1100_0000

240010_1010_1100_0110_1100_0000为小数位=2803392

2803392/小数位精度:2803392/2^24 = 0.167095184326171875

结果:9. 167095184326171875

定点结果误差:9. 167095184326171875- 9.1671672068

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值