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

DSP数据格式

发布时间:2019-07-28 02:27 来源:未知 编辑: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,则

  来源:() - DSP中数据中定点与浮点的格式问题(转)_小人物_新浪博客

  在前面几节介绍的例子中,由于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程序:

  最近在做一个Ti的DSPC6747的开发任务的时候遇到了这么一个奇怪的问题,还请各位DSP高手看看是什么原因导致的? 背景:在原有正常的程序中增加新的功能 遇到的问题:增加了一些代码和全局变量以后,使论坛

  需要使用28335做一个存储数据(传递函数数组)的动作,在以后上电之后还要多次使用该组数据,甚至将其修改后存储。于是便有了以下思考:1、存进28335的rom区域。大致可划分为.cinit,.pini...博文来自:iannnnnn的博客

  许多DSP都是定点DSP,处理定点数据会相当快,但是处理浮点数据就会非常慢。可以利用Q格式进行浮点数据到定点的转化,节约CPU时间。实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。...博文来自:的博客

  这是一篇学习如何运用指针操作内存的很好的实验,细细琢磨对学习和理解指针有很大的帮助这是一篇学习如何运用指针操作内存的很好的实验,细细琢磨对学习和理解指针有很大的帮助......博文来自:LSG_Down的博客

  原答案地址(一)全量抽取全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库...博文来自:TrHlxc的专栏

  DSP学习心得笔记---------------- 白建成.baijc.icekoor引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习...博文来自:吴建梅的专栏

  在F2812的ROM中,有3K×16位被保留用于存放数学公式表以及未来的开发。主要应用于高速度和高精度的实时计算,比同等程度的ANSICC语言效率更高,同时可以节省用户更多的设计和调试时间。1、IQm...博文来自:Studying……

  开发环境:DSP6678开发板+CC5.5+win7。因为项目需要把数据81M的数据放入DDR3中处理,所以第一步就是如何加载数据。DSP6678识别的数据类型是dat、bin、raw、yuv。加载数...博文来自:小灰灰的博客

  1.串行传输1)单工:数据传输单向,只能发或者收 (1根数据线)半双工:数据传输双向,但任一时刻,只能发或者收(1根数据线)全双工:数据传输双向,但任一时刻,可以同时收或者发(2根数据线....博文来自:zhuangjianyu123的博客

  之前的配置中我们知道如何配置通道速率、设置deviceID。也就是马路已经铺设好了,我们应该造车了。搏一搏,单车变摩托!SRIO不是单车,而是摩托车,我们需要搏一搏,把这个摩托车造出来,在我们已经铺设...博文来自:haiyonghao的博客

  基于DSP的GPGGA定位数据提取的代码已经通过了测试。由于分了好多模块,但在网上下载就有其他的模块,在此我贴出来已经改好的GPGGA的main函数代码,其他的代码不变,可以在网上下载,百度里搜 基于...博文来自:a14730497的专栏

  存储顺序大尾端和小尾端1.定义大尾端:高位在低地址。小尾端:尾位在低地址。2.字节层次。如整数0x12345678在内存中应该如下存放:地低:basebase+1base+2ba...博文来自:LANGJITIANYAXINGFU的博客

  这两天开始真正DSP编程,遇到个很头痛的问题,也是很基础的问题。归根到底,还是自己对数据类型没有弄清楚。今天整理下:存储顺序大尾端和小尾端1.定义大尾端:高位在低地址。小尾端:尾位在低地址。2...博文来自:工作笔记

  工程中的.dsp文件是什么文件?我用linecount3.7统计行时,我以为只会统计.cpp和.h文件,但是竟然会连.dsp文件也统计了。它到底是什么文件?论坛

  首先建立工程,file-new-cssproject。然后设置该工程。(包含include路径,是否使用浮点,生成的文件路径等),然后加入一些TI已经写好的文件。最终如下图:一、ccs中后缀为.pjt...博文来自:E_ROAD_BY_U的博客

  当我们使用CCS5.5编写处理单张图像的算法工程时,涉及到如何导入硬盘里的图像数据到DSP指定内存里的问题。下面做一下介绍:1、使用MATLAB将需要导入的图像转换成DSP能识别格式的二进制(.dat...博文来自:luokh327的博客

  MTK\辞典数据格式MTK\辞典数据格式MTK\辞典数据格式MTK\辞典数据格式MTK\辞典数据格式MTK\辞典数据格式MTK\辞典数据格式MTK\辞典数据格式

  区块链数据格式规范 区块链数据格式规范 区块链数据格式规范 区块链数据格式规范 区块链数据格式规范 区块链数据格式规范

  作者Just出品AI科技大本营(公众号ID:rgznai100)身处电动汽车行业的聚光灯下,特斯拉也因此不可避免地承受公众更为严苛的监督,比如涉及它的每一次......博文来自:AI科技大本营

  新浪科技讯北京时间2月26日晚间消息,近日又有一辆特斯拉电动汽车发生致命车祸,这也是在不到一年的时间内,特斯拉汽车在南佛罗里达州发生的第二起致命车祸。是这种纯电动汽车本身不够安全,还是这种具有未来主义...博文来自:weixin_36250534的博客

  如需转载,请将下列字段一起转载。新浪海风博客最近在学习使用TI的DSP,CMD文件的编写始终是个无法绕过的坎,TI官网上能...博文来自:leshrac

  百度网盘链接:链接:密码:lsax认识优秀的硕博大神,带你脱单带你飞...博文来自:薛定谔的哈士奇博客

  cmd文件:一个cmd文件由三部分组成:1)MEMORY命令:描述系统实际的硬件资源2)SECTIONS命令:描述“段”如何定位3)输入/输出定义:.obj文件:链接器要链接的目标文件;.lib文件:...博文来自:later的博客

  数字信号的处理目前主要有四种工具或者说方法。 一是实验室常用的matlab,经常用于理论研究和验证性的工作,但不适合实际应用;二是利用单片机,单片机相对比较简单容易上手,但是处理速度比较慢。三...博文来自:QKA_zkj的博客

  FPGA与DSP的区别(粗略整理)一、结构特点FPGAa.片内有大量的逻辑门和触发器,多为查找表结构,实现工艺多为SRAMb.可以通过硬件描述语言进行快速设计和改进,能够重复编程c.掉电后一般会丢失原...博文来自:Clara_D的博客

  接触DSP这玩意已经一周了,我大概讲讲我目前的一些感受想法或者说遇到的一些问题吧!就当是对自己学习的一个总结记录。1,网上相关的资料比较少,相对于STM32这类控制MCU来说,DSP的资料真的只能用少...博文来自:TECH_MEN的博客

  dsp开发流程1、写需求和功能2、写软件大概构架3、画流程图4、写代码构架以及接口,变量。...博文

  DSP硬件设计包括:硬件方案设计、DSP及周边器件选型、原理图设计、PCB设计及仿真、硬件调试等。前一讲我们详细讲述了硬件方案设计、DSP及周边器件选型两部分内容,本讲详细讲述原理图设计、PCB设计、...博文来自:王世宏的专栏

  因链接直接放会导致失效且强制为私密博客,扫描回复提取码10005领取博文来自:my_program_world的博客

  csl_1990:貌似实现不了啊 出现错误 就是定义mapinfo窗口的时候出现出现错误呢

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