当前位置:   article > 正文

Verilog表示小数-定点小数

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 证毕

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/522352
推荐阅读
相关标签
  

闽ICP备14008679号