找回密码
 注册
关于网站域名变更的通知
查看: 415|回复: 1
打印 上一主题 下一主题

FPGA内浮点小数定点处理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-9-29 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Taio 于 2018-9-29 10:49 编辑
! N' b, L1 r4 X2 x& c1 m' u$ m1 f6 D
6 q* R; R  H' I% X! a, A
转——FPGA内浮点小数定点处理
( C+ a/ r" e# Y' d: ?' P
; s/ _$ i1 G3 v: y
       定点小数运算

9 W% X: S4 \  I$ }& G; f
       有些FPGA中是不能直接对浮点数进行操作的,只能采用定点数进行数值运算。
       所谓定点小数就是把小数点的位置固定,我们要用整数来表示小数。
       先以10进制为例。如果我们能够计算12+34=46的话,当然也就能够计算1.2+3.4 或者 0.12+0.34了。所以定点小数的加减法和整数的相同,并且和小数点的位置无关。乘法就不同了。 12*34=408,而1.2*3.4=4.08。这里1.2的小数点在第1位之前,而4.08的小数点在第2位之前,小数点发生了移动。所以在做乘法的时候,需要对小数点的位置进行调整?!可是既然我们是做定点小数运算,那就说小数点的位置不能动!!怎么解决这个矛盾呢,那就是舍弃最低位。 也就说1.2*3.4=4.1,这样我们就得到正确的定点运算的结果了。所以在做定点小数运算的时候不仅需要牢记小数点的位置,还需要记住表达定点小数的有效位数。上面这个例子中,有效位数为2,小数点之后有一位。
现在进入二进制。我们的定点小数用16位二进制表达,最高位是符号位,那么有效位就是15位。小数点之后可以有0 - 15位。我们把小数点之后有n位叫做Qn,例如小数点之后有12位叫做Q12格式的定点小数,而Q0就是我们所说的整数。
       Q12的正数的最大值是 0 111 . 111111111111,第一个0是符号位,后面的数都是1,那么这个数是十进制的多少呢,很好运算,就是 0x7fff / 2^12 = 7.999755859375。对于Qn格式的定点小数的表达的数值就它的整数值除以2^n。在计算机中还是以整数来运算,我们把它想象成实际所表达的值的时候,进行这个运算。
反过来把一个实际所要表达的值x转换Qn型的定点小数的时候,就是x*2^n了。例如 0.2的Q12型定点小数为:0.2*2^12 = 819.2,由于这个数要用整数储存, 所以是819 即 0x0333。因为舍弃了小数部分,所以0x0333不是精确的0.2,实际上它是819/2^12 =0.199951171875。
       我们用数学表达式做一下总结:
       x表示实际的数(*一个浮点数), q表示它的Qn型定点小数(一个整数)。
       q = (int) (x * 2^n)
       x = (float)q/2^n
       验证:
       由于/ 2^n和* 2^n可以简单的用移位来计算,所以定点小数的运算比浮点小数要快得多。下面我们用一个例子来验证一下上面的公式:
       用Q12来计算2.1 * 2.2,先把2.1 2.2转换为Q12定点小数:
       2.1 * 2^12 = 8601.6 = 8602
       2.2 * 2^12 = 9011.2 = 9011
       (8602 * 9011) >> 12 = 18923
       18923的实际值是18923/2^12 = 4.619873046875 和实际的结果 4.62相差0.000126953125,对于一般的计算已经足够精确了。

, O) Q9 f+ V6 e* f
+ {7 h, ]. U5 j8 I& q+ _/ J* K. N6 m/ ?7 d) N! }/ @

该用户从未签到

2#
发表于 2019-7-22 18:30 | 只看该作者
看看FPGA内浮点小数定点处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 06:35 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表