在FPGA中,经常使用定点数表示小数,在进行各种运算时,定点数的位宽会发生变化,并且需要在适当地时候对数据的位宽进行截取。

  1. 运算要求和引起的位宽变化

假设存在两个数A、B,假定A位宽为m,小数位宽为a,B位宽为n,小数位宽为b。

  • 无符号数加法:A+B,需要先将A和B的小数点对齐,再将整数位和小数位都扩展至较大的位宽,最终结果的位宽为拓展后的位宽+1。

  • 有符号数加法:A+B,无需注意A、B符号位,可直接相加,同样需要先将A和B的小数点对齐,再将整数位和小数位都扩展至较大的位宽,最终结果的位宽为拓展后的位宽+1。

  • 无符号数减法:A-B,需要先将A和B的小数点对齐,再将整数位和小数位都扩展至较大的位宽,最终结果的位宽为拓展后的位宽+1。

  • 有符号数减法:A-B,无需注意A、B符号位,可直接相减,同样需要先将A和B的小数点对齐,再将整数位和小数位都扩展至较大的位宽,最终结果的位宽为拓展后的位宽+1。

  • 无符号数乘法:A*B,无需对齐,无需注意A、B符号位,可直接相乘,最终结果的位宽为m+n。

  • 有符号数乘法:A*B,无需对齐,无需注意A、B符号位,可直接相乘,最终结果的位宽为m+n-1。其实最终结果位宽原本为m+n,其中包含两位符号位,当符号位为10和01时,表明运算结果溢出,符号位为00和11时,去掉最高位

  1. 位宽截取

在乘法运算中,会成倍的增加位宽,因此在FPGA算法实现的过程中,常常需要对数据的位宽进行截取,常用的位宽截取方法有以下几种。

2.1 截断(tu)

2.2 四舍五入

“舍入”舍入到最邻近的可表示数字。如果出现结值,则舍入:

将正数朝正无穷方向舍入到最邻近的可表示数字。

将负数朝负无穷方向舍入到最邻近的可表示数字。

因此:

负值样本会引入小的负偏置。

对于具有均匀分布的正值和负值的样本,不会引入偏置。

对正值样本引入小的正偏置。

使用verilog编程时,假设要将m位数据截断为n位数据,需要将要截断的数据+{符号位取反,m-n-1{符号位}}再右移m-n位。以verilog为例,假定一64位有符号数要截断为一32位有符号数,程序如下。

reg signed [31:0] dataout;
wire signed [63:0] datain;always@(posedge clk)begindataout <= (datain + {~datain[63],31{datain[63]}}) >> 32;
end

十进制

定点化

二进制

舍入后二进制

定点化

十进制

-22

-1.375

1_1110_1010

1_1111_0000

-1

-16

-24

-1.5

1_1110_1000

1_1110_0000

-2

-32

-26

-1.625

1_1110_0110

1_1110_0000

-2

-32

22

1.375

0_0001_0110

0_0001_0000

1

16

24

1.5

0_0001_1000

0_0010_0000

2

32

26

1.625

0_0001_1010

0_0010_0000

2

32

2.3 收敛

“收敛”向最邻近的可表示值舍入,并将结值向最邻近的偶数舍入。它消除了由于舍入造成的偏置。但这可能会引入溢出。

具体实现以后再写

例子:

十进制

定点化

二进制

舍入后二进制

定点化

十进制

-16

-0.5

1_1111_0000

0_0000_0000

0

0

-22

-1.375

1_1110_1010

1_1111_0000

-1

-16

-24

-1.5

1_1110_1000

1_1110_0000

-2

-32

-26

-1.625

1_1110_0110

1_1110_0000

-2

-32

16

0.5

0_0001_0000

0_0000_0000

0

0

22

1.375

0_0001_0110

0_0001_0000

1

16

24

1.5

0_0001_1000

0_0010_0000

2

32

26

1.625

0_0001_1010

0_0010_0000

2

32

2.4 向上取整 向下取整目前用不到 以后再写

  1. 位宽溢出

在编程时,当等号右侧位宽大于左侧数据位宽时,无论是否有符号,无论小数位数是多少,均截取最高位。截取时,若右侧结果未超过左侧所能表示的范围,则正数的高位均为0,负数的高位均为1,截取后不会影响结果。但当右侧结果超过左侧所能表示的范围时,则会导致结果出现错误。

【FPGA】定点数 数据位宽 运算 位宽截取相关推荐

  1. Verilog学习之数据常量表达与位宽

    本文原创内容,转载请标明出处. 原文链接:https://blog.csdn.net/Cixil/article/details/89422200 Verilog的表示形式 Verilog中整数,整型 ...

  2. 8bit黑白图像的灰度值范围是_窗宽窗位对基于互信息的医学图像

    窗宽窗位对基于互信息的医学图像 摘 要:基于互信息的配准方法具有自动化程度高.配准精度高等优点,近来已成为医学图像处理领域的热点.基于互信息的配准方法实质上是一种对灰度进行统计和计算的方法,因此同一图 ...

  3. CT图像之Hu值变换与窗宽窗位调整

    今天通过分析实验结果,完善了之前的预处理代码,借此博文分享给大家,另外 点击此处可以查看预处理的完整代码,欢迎大家一起来完善. 最重要的是,欢迎大家的批评指正,您的建议和意见将会是我成长源泉. 接下来 ...

  4. X线DR医学图像 --- 直方图的窗宽窗位调整(Matlab篇)

    X线图像直方图的窗宽窗位的调整 图像的直方图显示了图像的灰阶分布.说白了就是,显示了图像当中每一个点的亮度分布情况(整个图像当中比较亮的点有多少个,黑的点又有多少个.反之,也可以看出某个点是落在了亮的 ...

  5. 使用pydicom实现Dicom文件读取与CT图像窗宽窗位调整

    1. 前言 为了能够在Labelme上对Dicom图像进行编辑,这里对python环境下Dicom文件的读取进行了研究.在Dicom图像中CT的窗宽窗位是一个很重要的概念,但是找了半天在pydicom ...

  6. python nii 图像读取,转换成CT 值,设置窗宽窗位,保存成png 图像

    import numpy as np import os # 遍历文件夹 import nibabel as nib # nii格式一般都会用到这个包 import imageio # 转换成图像ce ...

  7. vtk窗宽窗位,以及图像反白思路

    普通图像的灰度范围一般是256级,而医学图像基于其特殊性,灰度级较普通图像会高很多.人体组织在CT上能分辨出2000个不同的灰度,而人眼只能分辨16个灰度,将这2000个CT值用16阶灰度反应的话,人 ...

  8. 量化交易创干货合集送给每一位爱学习的宽客quant

    原 量化交易原创干货合集,送给每一位爱学习的宽客quanthttps://blog.csdn.net/myquant/article/details/82799016序号 标题 传送链接 1 双均线策 ...

  9. 量化交易创干货合集送给每一位爱学的宽客qun

    原 量化交易原创干货合集,送给每一位爱学习的宽客quant 序号 标题 传送链接 1 双均线策略(期货)  量化策略源码 https://www.myquant.cn/docs/python_stra ...

最新文章

  1. einsum,一个函数走天下
  2. 一段话系列-QPS、TPS、PV是很么如何计算
  3. android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
  4. [转]【JAVA各版本特性】JAVA 1.0
  5. Android之如果解决Android studio项目里面的类名不能重命名
  6. 前端学习---css基本知识
  7. Linux中自带正则表达式应用举例
  8. 涉及子模块_COMSOL Multiphysics 5.6 RF模块更新详解
  9. 宁夏2021高考成绩查询,宁夏教育考试院:2021年宁夏高考成绩查询入口、查分系统...
  10. 当最有创意的开发者遇上移动云,谁将成为创新之王?
  11. 亚丁号云控之发布任务
  12. Emacs学习笔记(7):简单的配置
  13. vi 的完整指令说明 -- YenYen 整理
  14. JAVA中implements的用法
  15. Windows XP 中如何安装 pem 证书
  16. Android+H5开发
  17. 几个技术虚拟小组会议的思考
  18. ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  19. 交互设计谁是最好用的原型绘制工具
  20. 思科 Packet Tracer 中交换机的常见命令介绍

热门文章

  1. elementui中date-picker当前年之后不可选择
  2. 大话西游之王道考研数据结构第一讲---线性表的顺序表示
  3. 电动牙刷——实现简单的1.2V电机控制设计
  4. PageHelper与MyBatisPlus IPage分页插件的使用区别
  5. Eclipse侧边项目栏不见了!
  6. CHALI茶里联手趣拿,与你“香”约九九趣拿节
  7. 计算机作业我家乡的变化英语作文,描写家乡变化的英语作文(精选11篇)
  8. 3D渲染中纹理映射技术与贴图制作技巧简介
  9. Deepin 15.4 个性化设置
  10. 教程:纯小白如何搭建自己的Github博客并写第一篇博文