您好、欢迎来到现金彩票网!
当前位置:秒速时时彩 > 算术下溢 >

浮点转定点运算 (转)

发布时间:2019-07-28 02:26 来源:未知 编辑:admin

  在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。显然,字长越长,所能表示的数的范围越大,精度也越高。如无特别说明,本书均以16位字长为例。

  DSP芯片的数以2的补码形式表示。每个16位数用一个符号位来表示数的正负,0表示数值为正,l则表示数值为负。其余15位表示数值的大小。因此,

  对DSP芯片而言,参与数值运算的数就是16位的整型数。但在许多情况下,数学运算过程中的数不一定都是整数。那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。那么是不是说DSP芯片就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。这就是数的定标。

  通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标有Q表示法和S表示法两种。表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

  从表1.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。例如,

  从表1.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0 的数值范围是一32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768=0.00003051。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想精度提高,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。

  我们在编写DSP模拟算法时,为了方便,一般都是采用高级语言(如C语言)来编写模拟程序。程序中所用的变量一般既有整型数,又有浮点数。如例1.1程序中的变量i是整型数,而pi是浮点数,hamwindow则是浮点数组。

  如果我们要将上述程序用某种足点DSP芯片来实现,则需将上述程序改写为DSP芯片的汇编语言程序。为了DSP程序调试的方便及模拟定点DSP实现时的算法性能,在编写DSP汇编程序之前一般需将高级语言浮点算法改写为高级语言定点算法。下面我们讨论基本算术运算的定点实现方法。

  将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标

  因为z的Q值为0,所以定点值z=35000就是浮点值,这里z是一个长整型数。当加法或加法的结果超过16位表示范围时,如果程序员事先能够了解到这种情况,并且需要保持运算精度时,则必须保持32位结果。如果程序中是按照16位数进行运算的,则超过16位实际上就是出现了溢出。如果不采取适当的措施,则数据溢出会导致运算精度的严重恶化。一般的定点DSP芯片都没有溢出保护功能,当溢出保护功能有效时,一旦出现溢出,则累加器ACC的结果为最大的饱和值(上溢为7FFFH,下溢为8001H),从而达到防止溢出引起精度严重恶化的目的。

  假设经过统计后x的定标值为Qx,y的定标值为Qy,乘积z的定标值为Qz,则

  假设经过统计后被除数x的定标值为Qx,除数y的定标值为Qy,商z的定标值为Qz,则

  在前面几节介绍的例子中,由于x,y,z的值都是已知的,因此从浮点变为定点时Q值很好确定。在实际的DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的Q值呢?从前面的分析可以知道,确定变量的Q值实际上就是确定变量的动态范围,动态范围确定了,则Q值也就确定了。

  设变量的绝对值的最大值为 max ,注意 max 必须小于或等于32767。取一个整数n,使满足

  既然确定了变量的 max 就可以确定其Q值,那么变量的 max 又是如何确定的呢?一般来说,确定变量的 max 有两种方法。一种是理论分析法,另一种是统计分析法。

  对于理论上无法确定范围的变量,一般采用统计分析的方法来确定其动态范围。所谓统计分析,就是用足够多的输入信号样值来确定程序中变量的动态范围,这里输入信号一方面要有一定的数量,另一方面必须尽可能地涉及各种情况。例如,在语音信号分析中,统计分析时就必须来集足够多的语音信号样值,并且在所采集的语音样值中,应尽可能地包含各种情况。如音量的大小,声音的种类(男声、女声等)。只有这样,统计出来的结果才能具有典型性。

  当然,统计分析毕竟不可能涉及所有可能发生的情况,因此,对统计得出的结果在程序设计时可采取一些保护措施,如适当牺牲一些精度,Q值取比统计值稍大些,使用DSP芯片提供的溢出保护功能等。

  本节我们通过一个例子来说明C程序从浮点变换至定点的方法。这是一个对语音信号(0.3~3.4kHz)进行低通滤波的C语言程序,低通滤波的截止频率为800Hz,滤波器采用19点的有限冲击响应FIR滤波。语音信号的采样频率为8kHz,每个语音样值按16位整型数存放在insp.dat文件中。

  定点DSP芯片的数值表示基于2的补码表示形式。每个16位数用l个符号位、i个整数位和15-i个小数位来表示。因此:

  这个数可用Q8格式(8个小数位)来表示,其表示的数值范围为-128至+l27.996,一个Q8定点数的小数精度为1/256=0.004。

  虽然特殊情况(如动态范围和精度要求)必须使用混合表示法。但是,更通常的是全部以Q15格式表示的小数或以Q0格式表示的整数来工作。这一点对于主要是乘法和累加的信号处理算法特别现实,小数乘以小数得小数,整数乘以整数得整数。当然,乘积累加时可能会出现溢出现象,在这种情况下,程序员应当了解数学里面的物理过程以注意可能的溢出情况。下面我们来讨论乘法、加法和除法的DSP定点运算,汇编程序以TMS320C25为例。

  两个Q15的小数相乘后得到一个Q30的小数,即有两个符号位。一般情况下相乘后得到的满精度数不必全部保留,而只需保留16位单精度数。由于相乘后得到的高16位不满15位的小数据度,为了达到15位精度,可将乘积左移一位,下面是上述乘法的TMS320C25程序:

  有些FPGA中是不能直接对浮点数进行操作的,只能采用定点数进行数值运算。对于FPGA而言,参与数学运算的书就是16位的整型数,但如果数学运算中出现小数怎么办呢?要知道,FPGA对小数是无能为力的,一种...博文来自:MY BLOG

  目录这篇博客将要讨论什么?浮点数的表示法定点数的表示法浮点数-amp;amp;gt;定点数定点数-amp;amp;gt;浮点数这篇博客将要讨论什么?浮点数的表示法定点数的表示法浮点...博文来自:鸟恋旧林的博客

  说明:       1、默认实现的是无符号数相乘       2、参考教材:微机原理与接口技术(基于IA-32处理器和32位汇编语言)   机械工业出版社

  本人正在学习浮点与定点转化,查阅了好多资源,包括硕士论文,其中讲解大都泛泛,并不适合初学者,而该文档是唯一让我眼前一亮的好文档。原理讲述特别清楚。

  需求说明:IC设计基础内容   :浮点运算定点化处理来自   :时间的诗原文:通常在FP...博文来自:时间的诗

  c++如何定义一个大数定点数,如何进行大数的定点数转浮点数以及浮点数转定点数?论坛

  定点小数运算有些FPGA中是不能直接对浮点数进行操作的,只能采用定点数进行数值运算。所谓定点小数就是把小数点的位置固定,我们要用整数来表示小数。先以10进制为例。如果我们能够计算12+34=46的话,...博文来自:Flip Program

  声明:本文章系转载并稍加整理标注,可能对于入门级的dsp开发者有所帮助。本文关注定点dsp与浮点dsp的对比,感谢我所引用的资料的作者。定点dsp与浮点dsp的比较(1)DSP数字信号处理器是一种特别...博文来自:cuiweitju的专栏

  定点与浮点运算DSP的比较 DSP数字信号处理器是一种特别适合于进行数字信号处理的微处理器,主要用于实时快速地实现各种数字信号处理算法。定点运算DSP在应用中已取得了极大的成功,而且仍然是DSP应用的...博文来自:sunice121

  作者:TomHillDSP工具营销技术营销工程师赛灵思公司AccelChip公司(最近已被赛灵思公司收购)最近所做的一次调查显示,53%的回答者认为浮点定点转换是在FPGA上实现算法时最困难的地方(...博文来自:bxfq的专栏

  关于dsp中程序定点数和浮点数转换问题(Q15格式) 看ti的逆变器程序,看到采集后的ADBUF数据全部都是《5,这就搞不明白了,为什么要左移5呀?然后看到上面说是兼容Q15,在QQ群里也问了高手,说...博文来自:大笨蛋和小笨蛋的故事

  近来,在用MATLAB定点算法,所以,现在想记录一下近来所学。一、MATLAB定点运算的实现方法据我个人现在的所学MATLAB定点运算的实现有两种方法:1、应用定点工具箱fixed-pointconv...博文来自:火玉的博客

  我们使用的处理器一般情况下,要么直接支持硬件的浮点运算,比如某些带有FPU的器件,要么就只支持定点运算,此时对浮点数的处理需要通过编译器来完成。在支持硬件浮点处理的器件上,对浮点运算的编程最快捷的方法...博文来自:倔强的咸鱼

  在网络已有的c语言版的fft基础上,编写能够实现任意点数的浮点fft和任意点数,位宽为16位的定点fft。而且内附完整的说明和注释,对大家有又一定的启发。

  ARM7和ARM9系列芯片 没有硬件浮点运算器,实际程序中使用的浮点运算 需要转换为定点运算来提高运行速度,即转化为整数。需要的朋友可以下载这个论文看看,会有所帮助

  浮点转HEX, ASCII转UNICODE, delphi写的,蛮好用

  浮点与定点概述,浮点数的存储格式,定点数的加减乘除运算,定点数模拟浮点数运算及常见的策略,举例及编程中的心得

  一、定点        在计算机系统的发展过程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(FixedPointNumber)。在这种表达方式中,小数点固定的位于实数所有数字中间的某...博文来自:yuhengyue的博客

  与afreez一起学习DSP中浮点转定点运算博文来自:自动驾驶与智能制造--深度学习

  论述:定点小数的运算更新历史20190324:首次发布目录论述:定点小数的运算十进制下非负定点小数的乘法十进制下非负定点小数的加法十进制下非负定点小数的除法二进制下定点小数的乘法二进制下定点小数的加法...博文来自:永恒的止水的博客

  进行一下格式说明(011)2括号里面表示某个数的二进制表示法,后面的2表示二进制,我们先在此做区分,内存的存储和其大端小端有关,也就是以后网络编程中会用到的,不过一般都是大端,即高位在后。还有后面的默...博文来自:rubikchen的博客

  在没有浮点运算的CPU上面用定点实现浮点运算,rn各位有什么心得,或者有相关的资料可以共享的论坛

  十六进制转换为有符号的10进制数(-128-127)第一位做为符号,0为正数,1为负数。对正数,后7位的值即为数值。对负数,128减后7位表示的数即为负号后的值。如11101100(EC)为负数,后7...博文来自:liuxf196921的专栏

  我们使用的处理器一般情况下,要么直接支持硬件的浮点运算,比如某些带有FPU的器件,要么就只支持定点运算,此时对浮点数的处理需要通过编译器来完成。在支持硬件浮点处理的器件上,对浮点运算的编程最快捷的方...博文来自:kebu12345678的博客

  定点与浮点在《计算机组成原理》有很详细的说明,但是电子专业的学生只学《单片机》,而《单片机》并没有介绍定点与浮点的内容,所以电子专业的学生缺了这点基础,导致在FPGA处理运算时遇到拦路虎。一、定点。定...博文来自:一个人要像一支队伍

  计算机常用的数据表示格式有两种:定点表示:小数点位置固定(数值范围有限)浮点表示:小数点位置不固定(数值范围很大)定点表示概念:所有数据的小数点位置固定不变表示方法:符号位+量值(尾数)特点:数的范围...博文来自:鲸临于空

  工作中遇到的小工具制作,直接压成exe就可以用了功能:输入文件,将文件中的一列浮点转为一列半精度浮点(半精度浮点)或者两列浮点转为一列复数型半精度浮点,输出为同级目录源文件名+Out.dat,输入0退...博文来自:xqn2017的博客

  本文介绍在计算机体系结构中浮点floating-point和定点fixed-point数据的表示,浮点到定点转换的各种舍入和截断处理方式,定点数据的Q格式表示,根据信号处理算法来进行定点数据的定标方法...博文来自:kebu12345678的博客

  1.定点计算的必要性    定点计算,简单来说,就是把小数转换为整数的一种计算。这个定点计算的点,就是小数点。从字面意思上说来,就是小数点固定的运算。在详细一点就是,对于整数来说,将假定的小数点固定在...博文来自:zhoufan的专栏

  请问如果定义三个变量 long a, b, c 其中我想计算 a+b的值,结果放于c中 即: c=a+b; 现在问题是得到的值c已超过了long的有效范围,但是c又必须要用long型定义,请问我该如何论坛

http://allpennsylvania.com/suanshuxiayi/116.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有