精华内容
下载资源
问答
  • FPGA中正负数和定点小数表示方法

    千次阅读 2020-09-22 12:21:13
    在日常生活中,我们常常需要到正数与负数,比如南北两级气温常年为零度以下,这个时候我们就需要负数来表示温度。那么在FPGA工程里面也是这样,我们如果想要做温度监测工程,自然而然的就会需要到负数来表达零下的...

    在日常生活中,我们常常需要到正数与负数,比如南北两级气温常年为零度以下,这个时候我们就需要负数来表示温度。那么在FPGA工程里面也是这样,我们如果想要做温度监测工程,自然而然的就会需要到负数来表达零下的温度。当然FPGA中除了数字正负的表达,还需要用到小数。在加减乘除的运算中,小数的出现是不可避免的。作为FPGA工程师,我们无法保证所有设计都不出现负数或者小数的情况,不能避免我们就克服,今天就为大家分享一下FPGA中负数与小数的表达。

    一、负数的表达

    关于负数,大家都知道在任何正数前加上负号便成了负数,比如“π”前面加上负号为“-π”,“0.178”前面加上负号为“-0.178”。FPGA传输信号使用的是二进制表达,同样二进制的负数表达也是在正数前面增加一个负号。即“1110”加负号为“-1110”,“1010100”前面加负号为“-1010100”。

    明确了二进制负数的表达,我们再来考虑如何通过信号传输。在计算机中,数字信号的大小常用有限位的二进制数表示。信号1为高电平,信号0为低电平,高低电平的变化即可得到对应的信号。想要传输多位信号,就增加对应的线即改变位宽。例如我们需要传输五位二进制数10100就需要5条线,第一条线为高电平传输“1”,第二条线为低电平传输“0”,第三条线为高电平传输“1”,第四条线为低电平传输“0”,第五条线为低电平传输“0”。记住信号传输的原理,我们来考虑负数的表示。

    在表示负数之前,我们需要明确一个理念—约定,即你我双方一起遵守一个协议从而达成合作。就如手机制造商和耳机制造商合作一样,如果想要耳机与手机达成适配,就需要达成约定使用一个标准。比如一致的使用圆孔,或者约定使用type-c接口;同时也

    展开全文
  • Verilog表示小数-定点小数

    千次阅读 2019-11-27 17:23:54
    最近博主搞FPGA图像处理,由于用作三维成像那么精度必不可少啊,但是Verilog又不像c等高级语言一样,我随便设个double就可以赋值啊啥的,那么咋办,定点小数就孕育而生了。当然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 证毕

    展开全文
  • 定点表示:Q 格式和加法举例 本文翻译自... 定点表示是的我们可以在低开销的整数硬件上使用小数运算。本文首先介绍小数表示方法Q格式,然后给一些定点加法的例子。 在低开销D...

    DSP数的表示:定点小数Q 格式表示和加法

    本文翻译自https://www.allaboutcircuits.com/technical-articles/fixed-point-representation-the-q-format-and-addition-examples/

    定点表示是的我们可以在低开销的整数硬件上使用小数运算。本文首先介绍小数表示方法Q格式,然后给一些定点加法的例子。

    在低开销DSP上表示小数

    为了降低开销,很多数字信号处理器都设计成只能进行整数算术运算。为了在这些处理器上表示小数,我们可以使用隐含小数点
    例如,8bit字 a=010101102 a = 01010110 2 ,单被当做整数时表示 8610 86 1 0 。然而,我们可以假设存在一个隐含的小数点,并把该数理解为一个小数。假设小数点在第4和第5个bit之间,例如, a=0101.01102 a = 0101.0110 2 。我们可以通过以下公式得到该数等价的十进制的值:
    a=0×23+1×22+0×21+1×20+0×21+1×22+1×23+0×24=5.375 a = 0 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 0 × 2 − 1 + 1 × 2 − 2 + 1 × 2 − 3 + 0 × 2 − 4 = 5.375
    在这个例子中,我们用4bit表示整数部分,4bit表示小数部分。
    从这个例子我们可以看到,小数点右边第一个bit的系数为0.5,第二个为0.25,以此类推。需要注意这个隐含的小数点并没有在硬件上表达,程序猿需要假设一个合适的缩放因子来正确的解释计算结果。在上面的例子中,硬件上只存储8bit数 a=010101102 a = 01010110 2 。如果程序员想要用a表示5.375,就需要记住使用a进行的任何运算结果,都需要乘以一个缩放因子 24 2 − 4

    Q格式

    小数点位置不同,同一个二进制数可以表示不同的值。为了编程方便,我们通常在同一算法中使用固定的小数点位置。Q格式是用来表达一个二进制数中整数、小数分别有多少bit的一种表示格式。例如,我们用3bit表述整数部分,4bit表示小数部分,则这个数的格式为Q3.4格式。

    对于一个字长固定的处理器,另一种可行的表示格式是只表示小数部分。例如,当我们使用一个字长为16bit的处理器的时候,我们可以简单是说我们是使用Q15格式来表示小数。这里的Q15表示小数点右边有15bit,左边有1bit。同时Q15也等效于Q1.15。

    小数点位置选择

    小数点位置的选取需要考虑两个方面:

    • 算法中需要表示的最大值
    • 可允许最大的量化噪声

    第一个方面决定了整数部分需要的bit数,第二个方面决定了小数部分的bit数。
    需要注意的是,除了隐含的缩放因子,Q格式的小数与计算机上整数的表示没有任何区别。我们也可以使用Q格式来表示二进制补码。

    Q格式举例

    例一
    假设算法需要用到浮点数 a=9.21695743609119810 a = 9.216957436091198 10 。现在该值在浮点表示时算法表现良好。假设我们要用16bit字长的定点硬件来实现该算法,最合适的表示a的Q格式是什么?

    因为a的整数部分在8和16之间,因此我们至少需要4bit来表示整数部分。假设我们使用有符号数,那么符号位需要占用以为,即小数点左边有5bit。因此我们使用Q5.11格式。
    改格式表示的数的缩放因子为 211 2 − 11 。也就是说Q5.11形式表示的a对应的去掉小数点后的值等于Q5.11表示的数乘以 211 2 11 。因此,为了将a表示为Q5.11格式,我们先将a乘以 211 2 11 ,对其四舍五入到最接近的整数,然后在将四舍五入结果转换为二进制:
    a×211=18876.328818876=100100110111100(2) a × 2 11 = 18876.3288 ≈ 18876 = 100 1001 1011 1100 ( 2 )
    因为a是正数,因此符号位为0,a的Q5.11格式表示为01001.00110111100。对于负数,我们需要首先找到其绝对值的Q格式表示,然后转换为二进制补码,再加上符号位。
    例二
    假设 a=10.012 a = 10.01 2 为Q2.2格式的有符号数,其对应的十进制整数是什么?

    因为是有符号数,所以十进制数为-1乘以a的二进制补码对应的十进制数。a的二进制补码为 01.112 01.11 2 。因此 a=1.7510 a = − 1.75 10

    符号扩展

    在做有符号数加法的时候,加数与被加数长度可能不同,这是,我们需要将较短的数进行符号位扩展。
    例如,将 10112 1011 2 扩展两位,得到 1110112 111011 2 。对于正数来说,符号位为0,符号扩展即填零,这不会改变数的大小。
    对于负数来说,在补码表示中,一个负数是依据一个互补的常数定义的。kbit的数,这个互补常数为 M=2k M = 2 k
    对于一个4bit的数,互补常数为 M=24 M = 2 4 ,这时,一个4bit正数b对应的负数-b可以表示为M-b。下面解释如何用6bit表示这个4bit有符号数。
    对于6bit数,互补常数为 M=26 M ′ = 2 6 ,-b可以表示为 Mb M ′ − b 。因此,-b的6bit表示和4bit表示的差为:
    (Mb)(Mb)=MM=2624=01100002 ( M ′ − b ) − ( M − b ) = M ′ − M = 2 6 − 2 4 = 0110000 2 。这就表示,为了用6bit表示一个4bit有符号负数,我们只需要在4bit表示上加上 01100002 0110000 2 ,也就是将符号位扩展两位。通过符号位扩展,我们只改变了负数的互补常量,负数本身并没有变。

    Q格式加法

    对Q格式两个数相加时,首先需要完成小数点对其和符号位扩展。
    例三
    计算a+b,其中a=-1.25(补码表示为 10.112 10.11 2 ),b=+3.25(补码表示为 011.0102 011.010 2 )。

    a和b分别为Q2.2和Q3.3格式。首先需要进行小数点对其,然后将整数部分较短的数进行符号位扩展,最后再进行运算:

    110+0111010.11.010.0001.25+3.25+2 1 1 0 . 1 1 − 1.25 + 0 1 1 . 0 1 0 + 3.25 1 0 1 0 . 0 0 0 + 2

    除了隐含的缩放因子,以上加法和整数补码加法一样。因为补码运算是模M运算。因此我们需要将符号位左边的数都忽略掉。因此 a+b=010.0002=+210 a + b = 010.000 2 = + 2 10 。这里需要注意在运算前进行符号位扩展。
    在使用定点数运算的时候,我们需要格外小心相应Q格式表示数的范围,防止溢出。
    例如,假设a使用Qna.ma格式,b使用Qnb.mb格式。如果使用与上面类似的过程计算,设符号扩展后的结果为Qnc.mc格式,则nc=maximum{na,nb},mc=maximum{ma,mb}。这个时候结果是有可能溢出的。因为Nbit数相加可能会得到(N+1)bit的结果。如果使用Qnc.mc格式表示结果,就需要程序员自己能够确定结果不会溢出。
    解决溢出问题的方法有两种:

    • 将两个输入缩放
    • 使用Q(n+1).m格式的输出可以保证两个Qn.m格式的数相加不会溢出,这时候需要将两个输入在计算的时候也需要同时符号扩展一位。

    使用保护位(guard bit)防止溢出

    很多数字信号处理器的累加器的输出寄存器通常比输入数据宽几位。这些多出来的数据位叫做保护位(guard bit)。这些保护位可以保证程序员在做累加的时候不会溢出。n个保护位可以保证进行 2n 2 n 次累加不会溢出。

    保护位也不是可以无限制添加的,因此累加器的累加次数的有限制的。因此在计算的时候,我们有时候需要对结果进行四舍五入和截断来得到一个较短的数。多次累加后,结果数值范围会变大,为了表示更大的值,需要使用更多的bit来表示整数部分,也就是说我们可能需要改变小数点位置。

    总结

    • 定点数可以用来表示小数。
    • 为了降低实现开销,很多数字信号处理器只支持整数运算。为了在这些处理器中使用小数,需要引入隐含小数点。
    • 如果使用n bit来表示整数部分,m bit来表示小数部分,那么这种表示叫做Qn.m格式。
    • 做两个有符号数加法的时候,两个数可能长度不同。这是需要将较短的数进行符号位扩展。
    • 做两个Q格式数加法的时候,需要遵循如下步骤:对其小数点;对较短的整数部分的数进行符号位扩展;进行加法运算。
    • 当使用定点数来做算法实现的时候,必须注意所使用的Q格式能够表示的数的范围。
    展开全文
  • 定点小数,浮点数的表示

    千次阅读 2018-10-10 21:21:08
    对于任意一个小数应该怎么定点 输入任意的一个浮点数 取出整数部分 取出小数部分 判断整数部分是否溢出,如果溢出,进行处理 对小数部分进行精度处理 把小数部分和整数部分合在一起,然后转化成二进制数 最后输出 ...
  • 一、无符号数 整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。n位的无符号数表示范围为:000 ~ 2n−12^n-12n−1 ...根据小数点固定的位置不同可以分为定点小数和定点整数。 ...
  • 首先了解一下原码,反码,补码的概念 ...这里注意一点,在定点小数中,原码是不能表示出-1这个值的 反码 反码的表示方法 简单易懂一些的话其实就是如果是正数,X的反码就等于原码,如果是负数,将X...
  • 顾名思义定点数就是小数位固定不变的数叫做定点数,也就是小数点是定在某个位置不变的数。 2、定点数的分类: (1)定点整数:定点整数的小数点后面没有其他的数值,即小数点定在了数的最后面 定点整数又分为...
  • 详解 有符号定点小数 的补码表示

    万次阅读 多人点赞 2019-02-23 11:16:23
    布莱恩特),理解定点小数的补码表示时绕了些弯路,在这里记下来,以作巩固。 概念补充  补码(Two's complement)、反码(Ones' Complement)、原码(Sign Magnitude):  注意,补码和反码中,撇号的位置不同。  ...
  • 更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们。 用FPGA实现定点运算,相对于浮点运算来说,...本文为本次定点小数相关博文连载的第四篇,后面的写作计划分别为:第五篇——浮点小数转换为定点小数;第六篇——
  • 定/浮点数的表示是为了解决小数点问题,而...此图为截取慕课网文档素材,32位的浮点数编码表示,第0位数为数符,即符号位,第1~8位是8位移码,用来表示阶码,而剩下的9~31位为24位二进制原码小数表示的尾数,由于规格.
  • 2007-10-31请对计算机中的定点树,浮点数进行如果小数点的位置事先已有...如果小数点位置约定在最高数值位的前面,则该数只能是定点小数。 例如,假定用两个字节存放一个定点数,则以定点方式表示的十进制整数195如...
  • 定点小数补码表示法介绍

    千次阅读 2011-07-20 16:34:00
    补码表示法,是用机器数的最高一位代表符号,以下各位给出数值按2取模结果的表示方法,其定义为 [X]补= (2.10) 例如: X=+0.1011, [X]补=01011 X=-0.1011, [X]补=10101 按补码的定义,当X=-0.1011时,[X]补 = ...
  • 定点数的表示视频链接地址:https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502前言在本篇中,你将掌握原码、反码、补码、移码的定义和范围原码、反码、补码、移码的转换定点数...
  • 但是在某些特定的场合,如多机协同处理等,要求FPGA的输入数据(或者是输出数据)为浮点形式的数据,这是就需要我们来做一个浮点小数与定点小数之间的转换了。 本文为本次定点小数相关博文连载的第五篇,后面的写作...
  • 定点小数与浮点小数

    千次阅读 2015-11-12 21:37:01
    小数有两处表示方法:浮点型与定点型 1. 浮点型 float-point float/double,都属于浮点型表示。 2. 定点型 fixed-point 例如,以一个字节表示小数,小数点定在5.3位置,高5位表示整数,低3位表示小数。 11001001 ...
  • 论述:定点小数

    2019-03-23 22:14:40
    如果要在FPGA中进行小数的存储和运算,首先就需要解决FPGA中小数表示方法问题。下面,我们就来谈谈:在FPGA中,如何用一个整数来表示一个小数。 为了 用一句话将本论述归纳总结一下,那就是: xxx ...
  • 什么是定点定点数英文名叫Fixed Point Number,其关键地方就在定和点这两个字上面,即在表示小数数据时,把小数点的位置已经约定好固定在某个位置。与之对应的是浮点数,其小数点的位置不是固定的,关于浮点数先...
  • 一种小数表示方法

    2020-12-24 11:38:44
    一种浮点数表示方法 (是否有符号数,总位宽,小数部分位宽) 举例: (0,8,6):8’b0100_0010 表示无符号数,8-0-6=2,2bit表示整数位,6bit表示小数位:1+2*(1/2^6)=1.03125 (1,9,3):8’b1_1110_0101表示有...
  • 下面先介绍定点小数的一些理论知识,然后以C语言 为例,介绍一下定点小数运算的方法。在TI C5000 DSP系列中使用16比特为最小的储存单位,所以我们就用16比特的整数来进行定点小数运算。 先 从整数开始,16比特的储存...
  • DSP 定点小数运算

    2011-09-01 17:28:00
    许多DSP芯片只支持整数运算,如果现在这些芯片上进行小数运算的话,定点小数运算应该是最佳选择了,此外即使芯片支持浮点数...下面先介绍定点小数的一些理论知识,然后以C语言为例,介绍一下定点小数运算的方法。在T...
  • FPGA定点小数运算

    2019-04-27 20:49:46
    我们是要用整数来表示定点小数,由于小数点的位置是固定的,所以就没有必要储存它(如果储存了小数点的位置,那就是浮点数了)。既然没有储存小数点的位置,那么计算机当然就不知道小数点的位置,所以这个小数点的...
  • 小数定点数据表示

    2021-03-21 21:45:28
    数的定标:确定定点格式中小数点的位置,假设一个16位的有符号二进制数,Q=0,那么小数点就定标在LSB,也就是最低位(准确说应该是最低位的后面);Q=3,那么就是小数点在从右往左数第四位和第三位之间。 那么对于N...
  • 定点数在机器内的表示表示定点小数和整数* 计算机组成原理第二章 知识点一:机器层次的定点数表示 主讲教师:秦磊华 问题引入 数据是计算机处理的对象,计算机中如何表示定点数? 学习建议 ?系统观:与高级语言...
  • 定点小数补码表示法介绍[转载]

    千次阅读 2011-12-07 18:08:12
    补码表示法,是用机器数的最高一位代表符号,以下各位给出数值按2取模结果的表示方法,其定义为  [X]补= (2.10)  例如:  X=+0.1011, [X]补=01011  X=-0.1011, [X]补=10101  按补码的定义,当X=-0...
  • 所谓定点小数就是把小数点的位置固定,我们要用整数来表示小数。 先以10进制为例。如果我们能够计算12+34=46的话,当然也就能够计算1.2+3.4 或者 0.12+0.34了。所以定点小数的 加减法和整数的相同,并且和小数点的...
  • DSP中的浮点小数与定点小数

    千次阅读 2010-01-04 20:18:00
    下面先介绍定点小数的一些理论知识,然后以C语言为例,介绍一下定点小数运算的方法。在TIC5000 DSP系列中使用16比特为最小的储存单位,所以我们就用16比特的整数来进行定点小数运算。 先从整数开始,16比特的储存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,260
精华内容 5,704
关键字:

定点小数表示方法