# FPGA中定点、浮点、量化

FPGA中定点、浮点、量化

1.原码、反码、补码表示:
FPGA支持定点运算和浮点运算,但是浮点运算更复杂:
定点包括原码、反码、补码表示:
原码:1_110表示-0.75 0_110表示0.75
补码:通常,有符号数指二进制数用补码表示
正数原码补码反码都一样,
对于负数,原码、反码、补码均不同
如-1,如果用四比特有符号数表示,
则原码:1001,反码:1110,补码:1111。
即原码补码转化原理:补码等于反码+1

当然,负数的补码也可以这样计算:若原来的负数是a,则转化为补码是2^N+a,所以-1的补码就是15.

2.定点、浮点区别及易误点
11 浮点:小数点“浮动”:不固定。IEEE754-1985标准定义了32位浮点数(单精度)、64位(双精度)
易误点:浮点数并不仅仅是“float”"double"小数,也可以表示整数,IEEE表示范围为 1.18
10e38~~3410e38.
22定点
:小数点“固定”。
易误点:定点数不仅仅是“int”(小数点在最后)这样的整数,也可表示小数、负数,需程序设计者自己指定各位表示的含义。
易误点:所谓的浮点和定点是程序设计者逻辑层面的理解,计算机cpu的读取只是0、1这样的比特流。
33为什么要把浮点转化为定点???
答:浮点数占用存储空间大、而且读取效率不高,计算复杂。
因此转化为定点数,定点数计算简单、占用空间小
但是转化为定点数损失了精度,浮点数可以表示更大范围、更高精度的实数

3.浮点转定点(量化)
11怎么把浮点转定点???
答:如浮点数-0.5001,要转化为定点小数(1位符号位、1位整数位、6位小数位)
只需要-0.5001*2^6(量化系数)~=-32,
补码表示:256-32=224(11100000)这个过程也叫量化
22 matlab量化
x = [1.0000 0.8660 0.5001 -0.4997 -0.8658];
x_fix = quantizer(‘fixed’,‘round’,‘saturate’,[8,6]);%'fixed’表示有符号定点,'round’表示四舍五入取整
c=num2bin(x_fix ,x)%将定点数转化为有符号二进制,负数用补码表示

c =

5×8 char 数组

'01000000'
'00110111'
'00100000'
'11100000'
'11001001'

fix_x = quantize(qpath,x)

fix_x =

1 至 4 列

1.0000    0.8594    0.5000   -0.5000

5 列

-0.8594

c=num2int(qpath ,x)

c =

64    55    32   -32   -55

c=num2hex(qpath ,x)

c =

5×2 char 数组

'40'
'37'
'20'
'e0'
'c9'
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值