Verilog表示小数-定点小数

最近博主搞FPGA图像处理,由于用作三维成像那么精度必不可少啊,但是Verilog又不像c等高级语言一样,我随便设个double就可以赋值啊啥的,那么咋办,定点小数就孕育而生了。当然verilog也可以用浮点数表示,这里博主就不提及了。

何谓定点小数,顾名思义,就是小数位后的数目固定,即精度固定,这里假设有一个16位的变量,我们使它的精度为8位,那么它的精度是多少呢? 其实就是1/2^8=0.00390625.这里举个例子说明

例如有个 reg [15:0] a=16'b0111_1011_1111_0000

我们不管符号位,那么这个二进制数是31728,但是它表示的定点小数是31728/2^8=123.9375

那么这有什么用呢?例如假设一个小数b=2.3,我们假设其定点小数位数是5,那么其定点小数为int(2.3*2^5)=73,其实际表示的小数为73/2^5=2.28125 看到么,相差无几,而其精度也有定点位数决定。

那么我们假设x,x1,x2为实际小数,y1,y2,y3为定点小数,定位精度是n位,有如下关系

y1=y2+y3 <<=>>x1=x2+x3

y1=y2-y3 <<=>>x1=x2-x3

y1=y2/2^n*y3 <<=>>x1=x2*x3

y1=y2*2^n/y3 <<=>>x1=x2/x3

加减比较好理解,乘除为什么需要移位呢?以乘法为例子

y1=x1*2^n

y2*y3=x2*x3*x^2n                  ==>>y1*2^n=y2*y3 证毕

  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值