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
    评论
Verilog中,可以使用定点小数表示小数定点小数是一种固定小数点位置的表示方法,有两种常用的表示方法:Q表示法和S表示法。 Q表示法中,Qn表示低n位为小数,其余位为符号位和整数位。例如,Q8.8表示8位小数和8位整数。这种表示方法可以用于表示范围较大的小数。 S表示法中,Sn中低(15-n)位为小数,其余位为符号位和整数位。例如,S7.8表示7位小数和8位整数。这种表示方法可以用于表示范围较小但精度较高的小数。 在使用XILINX VIVADO中的IP核时,通常使用Q表示表示小数。 需要注意的是,在Verilog中使用定点小数进行计算时,可能会存在精度误差。例如,如果0.2乘以26等于12.8,在Verilog中会使用12进行计算,误差范围为0.8/12.8 = 0.0625。为了减小误差范围,可以增大定点小数的倍数,但不需要过度增加放大倍数。根据实际情况,在合理的误差范围内选择适当的定点小数表示方法即可。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Verilog表示小数-定点小数](https://blog.csdn.net/SLAM_masterFei/article/details/103279004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [verilog中的定点数、浮点数、定点小数定点整数的表示及运算](https://blog.csdn.net/woshiyuzhoushizhe/article/details/105920861)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [verilog小数问题](https://blog.csdn.net/zhangyanhe/article/details/50804815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值