DSP定标问题解决

合集下载

DSP常见问题及解决

DSP常见问题及解决

问:我测试你们的程序的时候,go main 进不去主函数,进入的是一段汇编。

是怎么回事?答:程序如果要进行设断点,观察变量等操作,要先调入project文件,然后再调入out文件。

如果是可以直接执行能看到结果的,就直接调入out文件,run就可以。

问:CY68013的固件程序怎么修改?答:在把QQ2812都研究清楚了,有精力有兴趣自己可以买一本EZ-USB的书好好看看。

在此之前,请不要随便更改固件代码,因为一旦出错,可能带来不必要的麻烦。

固件代码是通过USBControlPanel,使用USB接口进行下载的。

:2812的主频是最大150M,我如果想设为100M是在那里设置?答:打开工程,在Source文件夹下,打开DSP28_SysCtro.c文件,找到如下语句,修改即可。

// Initalize PLLSysCtrlRegs.PLLCR = 0x02;///锁相环产生的时钟频率定标,这里配置为30M问:为什么我的程序在SRAM中正常,烧入Flash后不对?答:1、请先确认你编译的时候使用了flash.cmd,推荐使用我们提供的flash.cmd,如果自己更改了这个文件,请先确认cmd文件的正确性;2、编译的时候,如果选择release模式,请检查一下build option,把其中的opt level改为none,即取消编译优化选项,很多语句在优化的时候可能会产生错误的优化结果。

或者选择debug模式编译,烧写正确后再改为release模式,通过对比两种模式的编译选项也能看出其中的区别。

3、程序在flash中运行会比在ram中运行大概慢20%,因此对于一些时序敏感的外设,比如usb总线,就有可能需要调整时序,否则就会有问题。

问:数码管LED显示的时候发送的数据是怎么规定和产生的?答:其实如果自己看程序和原理图自己就可以知道是怎么产生的。

数码管数据如下:Uint16SpiCode[]={0x7E7E,0x2929,0x2c2c,0x6666,0xa4a4,0xa0a0,0x3e3e,0x2020,0x2424,0x22 22,0xe0e0,0xb1b1,0x6868,0xa1a1,0xa3a3,0xffff,0xdfdf};数码管的笔画对应关系如下:63 742 01 5就是说0~7分别对应笔画的a~h,在原理图看就是分别连接的Q0~Q7这个数码管的型号是LG3611BH,是共阳级的,也就是说某个笔画为0的时候,这个笔画被点亮。

DSP常见问题及解决

DSP常见问题及解决

问:我测试你们的‎程序的时候,go main 进不去主函数‎,进入的是一段‎汇编。

是怎么回事?答:程序如果要进‎行设断点,观察变量等操‎作,要先调入pr‎o ject文‎件,然后再调入o‎u t文件。

如果是可以直‎接执行能看到‎结果的,就直接调入o‎u t文件,run就可以‎。

问:CY6801‎3的固件程序‎怎么修改?答:在把QQ28‎12都研究清‎楚了,有精力有兴趣‎自己可以买一‎本EZ-USB的书好‎好看看。

在此之前,请不要随便更‎改固件代码,因为一旦出错‎,可能带来不必‎要的麻烦。

固件代码是通‎过USBCo‎n trolP‎a nel,使用USB接‎口进行下载的‎。

:2812的主‎频是最大15‎0M,我如果想设为‎100M是在‎那里设置?答:打开工程,在Sourc‎e文件夹下,打开DSP2‎8_SysC‎t ro.c文件,找到如下语句‎,修改即可。

// Inital‎i ze PLLSysCtr‎l Regs.PLLCR = 0x02;///锁相环产生的‎时钟频率定标‎,这里配置为3‎0M问:为什么我的程‎序在SRAM‎中正常,烧入Flas‎h后不对?答:1、请先确认你编‎译的时候使用‎了flash‎.cmd,推荐使用我们‎提供的fla‎s h.cmd,如果自己更改‎了这个文件,请先确认cm‎d文件的正确‎性;2、编译的时候,如果选择re‎l ease模‎式,请检查一下b‎u ild option‎,把其中的op‎t level改‎为none,即取消编译优‎化选项,很多语句在优‎化的时候可能‎会产生错误的‎优化结果。

或者选择de‎b ug模式编‎译,烧写正确后再‎改为rele‎a se模式,通过对比两种‎模式的编译选‎项也能看出其‎中的区别。

3、程序在fla‎s h中运行会‎比在ram中‎运行大概慢2‎0%,因此对于一些‎时序敏感的外‎设,比如usb总‎线,就有可能需要‎调整时序,否则就会有问‎题。

DSP常见问题解答

DSP常见问题解答

DSP常见问题解答如何选择外部时钟?DSP的内部指令周期较高,外部晶振的主频不够,因此DSP大多数片内均有PLL。

但每个系列不尽相同。

1)TMS320C2000系列:TMS320C20x:PLL可以÷2,×1,×2和×4,因此外部时钟可以为5MHz-40MHz。

TMS320F240:PLL可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5和×9,因此外部时钟可以为2.22MHz-40MHz。

TMS320F241/C242/F243:PLL可以×4,因此外部时钟为5MHz。

TMS320LF24xx:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。

TMS320LF24xxA:PLL可以由RC调节,因此外部时钟为4MHz-20MHz。

2)TMS320C3x系列:TMS320C3x:没有PLL,因此外部主频为工作频率的2倍。

TMS320VC33:PLL可以÷2,×1,×5,因此外部主频可以为12MHz -100MHz。

3)TMS320C5000系列:TMS320VC54xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为0.625MHz-50MHz。

TMS320VC55xx:PLL可以÷4,÷2,×1-32,因此外部主频可以为6.25MHz-300MHz。

4)TMS320C6000系列:TMS320C62xx:PLL可以×1,×4,×6,×7,×8,×9,×10和×11,因此外部主频可以为11.8MHz-300MHz。

TMS320C67xx:PLL可以×1和×4,因此外部主频可以为12.5MHz-230MHz。

DSP 数据的定标

DSP 数据的定标
DSP 数据的定标
一 DSP定点算数运算 1 数的定标 在定点 DSP 芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。一个整型数 的最大表示范围取决于 DSP 芯片所给定的字长,一般为 16 位或 24 位。显然,字长越长,所 能表示的数的范围越大,精度也越高。如无特别说明,本书均以 16 位字长为例。 DSP 芯片的数以 2 的补码形式表示。每个 16 位数用一个符号位来表示数的正负,0 表示数值 为正,l 则表示数值为负。其余 15 位表示数值的大小。因此, 二进制数 0010000000000011b=8195 二进制数 1111111111111100b= -4 对 DSP 芯片而言,参与数值运算的数就是 16 位的整型数。但在许多情况下,数学运算过程中 的数不一定都是整数。那么,DSP 芯片是如何处理小数的呢?应该说,DSP 芯片本身无能为力。 那么是不是说 DSP 芯片就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定 一个数的小数点处于 16 位中的哪一位。这就是数的定标。 通过设定小数点在 16 位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标 有 Q 表示法和 S 表示法两种。表 1.1 列出了一个 16 位数的 16 种 Q 表示、S 表示及它们所能 表示的十进制数值范围。 从表 1.1 可以看出,同样一个 16 位数,若小数点设定的位置不同,它所表示的数也就不同。例 如, 16 进制数 2000H=8192,用 Q0 表示 16 进制数 2000H=0.25,用 Q15 表示 但对于 DSP 芯片来说,处理方法是完全相同的。 从表 1.1 还可以看出,不同的 Q 所表示的数不仅范围不同,而且精度也不相同。Q 越大,数值 范围越小,但精度越高;相反,Q 越小,数值范围越大,但精度就越低。例如,Q0 的数值范围 是一 32768 到+32767,其精度为 1,而 Q15 的数值范围为-1 到 0.9999695,精度为 1/32 768=0.00003051。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表 示比较大的数值范围,必须以牺牲精度为代价;而想精度提高,则数的表示范围就相应地减小。 在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。 浮点数与定点数的转换关系可表示为: 浮点数(x)转换为定点数(xq):xq=(int)x* 2Q 定点数(xq)转换为浮点数(x):x=(float)xq*2-Q 例如,浮点数 x=0.5,定标 Q=15,则定点数 xq=L0.5*32768J=16384,式中 LJ 表示下取 整。反之,一个用 Q=15 表示的定点数 16384,其浮点数为 163 幼*2-15=16384/32768= 0.5。浮点数转换为定点数时,为了降低截尾误差,在取整前可以先加上 0.5。

DSP实验常见错误及解决方法

DSP实验常见错误及解决方法

实验常见错误及解决方法1、启动CCS时出现如下错误:错误原因:以前在CCS setup里设置当前使用的平台为sdgo2xx(硬件仿真),或者同时设置为sdgo2xx 与c2xx simulator,所以进行软件仿真时应设置当前正在使用的为c2xx simulator。

解决方法有两种:方法1:点击“终止”,然后重新设置CCS setup,将sdgo2xx移除。

方法2:点击“忽略”,然后在“Parallel Debug Manager”中Open菜单下选择c2xx simulator2、编译连接时出现如下错误:错误原因是:文件命名、文件夹命名或保存位置不正确。

文件命名:不能以数字开头(包括mak文件的名字)文件夹命名:不能为中文保存位置:项目文件(mak文件)存储的位置一定要与其它文件(C文件、asm文件、h文件、cmd文件、等)放在同一目录下,且最好放在“x:\tic2xx\myprojects”目录下。

3、编译连接时出现如下错误提示:warning: entry point symbol _C_int0 undefined错误原因:用C语言开发的DSP程序在向工程文件添加文件时没有添加运行支持库文件rts2xx.lib注意rts2xx.lib的路径:在C:\tic2000\c2000\cgtools\lib目录下4、CCS与CCS setup均不能启动,提示:不能正确初始化程序或者CCS运行到某个地方后(例如编译连接后)不能停止,观察任务管理器,发现cc_app.exe占用CPU为100%,即CCS已经死了。

错误原因:CCS被病毒感染或破坏,或者多个版本CCS共存,相互干扰。

解决方法:方法1:重新启动电脑方法2:用运行正确的cc_app.exe程序替换被破坏的cc_app.exe程序。

5、编译连接通过,加载程序后,在运行时出现如下错误提示:错误可能原因:第一种可能:没有加载CMD文件第二种可能:CMD文件已加载,但CMD文件编写有问题,存储器配置、定位不正确第三种可能:用C语言编写的DSP程序,C初始化设置错误,已修改C Initialization 设置,方法:Project ——> Option——> Linker6、探测点设置不成功注意:①在设置探测点时应先加载程序②如下图所示,应先点击Probe Point中的选择框,使volume.c line 63——> No Connection被选中,然后在选Connect下拉菜单,找到相关联的数据文件,再点击Replace ,最后点“确定”。

dsp编译错误与解决方法(精)

dsp编译错误与解决方法(精)
SPRAM: origin=0x0060H,解决书写格式错误
4 W ARNING: entry point other than _c_int00 specified
解决,在“TMS320C6000优化汇编手册”第五章“链接C/C++代
令人生厌的multiple definition of
我把所有的全局变量写在一个global.h里然后其他文件都include了它于是出现了multiple definition of .....编译器gcc后来在网上搜到了很多类似的错误大家各有各的烦心事。我的代码结构
can't open file '/.obj' for input是什么原因引起的?
cmd文件中有不合法的符号比如“//”等
1 fatal error: #error NO CHIP DEFINED详细的出错信息:
"...." -g -q -fr"e:/project_documents/dsp_project/dsp_mp3/Debug" -d"_DEBUG" -@"Debug.lkf" ...c"
\main.obj
>> error: symbol referencing errors
提示找不到符号,一般是出现在用c调用汇编函数的时候,比较大的可能性是汇编程序里面
的标号写错了(特别是前面少了一个下划线,或者是忘记将标号定义成全局的了(在文件开
头用".global标号"的形式可以定义不过我碰到另外一种情况,是由于存在同名的文件.比如说我的工程里面,有dot.c和dot.asm两个文件,分别定义了dot_c和dot_asm两个函数,这个时候就会有其中一个函数提示找不到了,经过检查,原来CCS在编译的时候,会根据文件名(不含扩展名生成同名的目标文件(扩展名为obj,而我前面的两个文件,文件名相同而扩展名不同,那么在编译的时候,就会有一个生成的目标文件被另外一个覆盖的问题(取决于编译的顺序.知道了原因就好解决了,只要这两个文件的文件名不要相同就好了.

基于定点DSP的恒定V_F运算参数定标分析

基于定点DSP的恒定V_F运算参数定标分析

微 处 理 机M I CROPROCE SSORS基于定点DSP的恒定V/F运算参数定标分析*张全川,李 文(大连交通大学,大连116028)摘 要:分析了定点DSP的定标问题,给出了常用的QX表示方法及其处理技巧。

并以异步电机的恒定V/F速度闭环控制系统为例,对其运算参数进行恰当的定标与分析。

实验结果表明用Q 格式编写程序代码更加简洁、方便、实用。

关键词:定点DSP;定标;异步电机;恒定V/F控制中图分类号:TP235 文献标识码:A 文章编号:1002-2279(2009)02-0095-04Scaling Anal yses of Constant V/F Operation Para m eter B asedon Fixed-poi nt DSPZHANG Quan-chuan,LIW en(D alian J i aotong U ni ver sity,D ali an116028,Ch i na)Abstract:The paper analyzes the scali n g prob le m o f fi x ed-po int DSP and prov i d es expression m ethodand d isposal skill of Q fo r m a.t An exa m ple of contro l syste m based on constant V/F and speed closed loop of asynchronous mo tor w as presen ted to ana l y ze the sca li n g of Operation Para m eter. Experi m ent results de monstrate that using Q for m a t to co m pile code is lacon ic,conven ient and app lied.K ey w ords:Fi x ed-po i n t DSP;Scaling;Asynchronous m oto r;Constant V/F contro l1 引 言数字信号处理器(DSP)以其丰富的硬件资源、高速数据处理能力和强大的指令系统等优点迅速得到人们的关注与应用。

DSP常会遇到的问题总结

DSP常会遇到的问题总结

二.DSP的C语言同主机C语言的主要区别?1)DSP的C语言是标准的ANSI C,它不包括同外设联系的扩展部分,如屏幕绘图等。

但在CCS 中,为了方便调试,可以将数据通过prinf命令虚拟输出到主机的屏幕上。

2)DSP的C语言的编译过程为,C编译为ASM,再由ASM编译为OBJ。

因此C和ASM的对应关系非常明确,非常便于人工优化。

3)DSP的代码需要绝对定位;主机的C的代码有操作系统定位。

4)DSP的C的效率较高,非常适合于嵌入系统。

三.DSP发展动态1.TMS320C2000 TMS320C2000系列包括C24x和C28x系列。

C24x系列建议使用LF24xx 系列替代C24x系列,LF24xx系列的价格比C24x便宜,性能高于C24x,而且LF24xxA具有加密功能。

C28x系列主要用于大存储设备管理,高性能的控制场合。

2.TMS320C3x TMS320C3x系列包括C3x和VC33,主要推荐使用VC33。

C3x系列是TI浮点DSP的基础,不可能停产,但价格不会进一步下调。

3.TMS320C5x TMS320C5x系列已不推荐使用,建议使用C24x或C5000系列替代。

4.TMS320C5000 TMS320C5000系列包括C54x和C55x系列。

其中VC54xx还不断有新的器件出现,如:TMS320VC5471(DSP+ARM7)。

C55x系列是TI的第三代DSP,功耗为VC54xx 的1/6,性能为VC54xx的5倍,是一个正在发展的系列。

C5000系列是目前TI DSP的主流DSP,它涵盖了从低档到中高档的应用领域,目前也是用户最多的系列。

5.TMS320C6000 TMS320C6000系列包括C62xx、C67xx和C64xx。

此系列是TI的高档DSP 系列。

其中C62xx系列是定点的DSP,系列芯片种类较丰富,是主要的应用系列。

C67xx系列是浮点的DSP,用于需要高速浮点处理的领域。

dsp中的定标是什么意思?

dsp中的定标是什么意思?

dsp中的定标是什么意思?
分类:教育/科学 >> 科学技术 >> 工程技术科学
问题描述:
我在看关于DSP的书时常常会看到这个词,但不知道是什么意思。

例如:输出在送到DAC之前右移15位,这样实现输出的定标。

解析:
DAC是数摸转换器的缩写,输入端为计算得到的二进制数据,输出模拟信号。

那么,根据此理解,DSP程序运算过程中,并不考虑实际输出信号的大小,为计算方便,可能只是按照整数处理,在送到DAC以获得模拟信号输出的时候,需要符合实际的物理要求...所以才有移位操作...
----------------------------------------------
噢,找到一个帖子:61ic/Article/dspzh/200409/469
数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

如无特别...。

关于DSP精准广告投放的10个问题

关于DSP精准广告投放的10个问题

关于DSP精准广告投放的10个问题(1) DSP广告投放适合什么行业呢?DSP是利用实时竞价的方式购买展示广告,广告主可根据广告交易平台所提供的数据,包括到访问者来自的网站及地区等,来决定是否竞投该广告展示及设定出价。

由于DSP可大幅提升投放的精准度,为广告主提供跨媒介、跨平台、跨终端的广告投放平台,通过数据整合、分析实现基于受众的精准投放,并且实时监控不断优化。

因此所有对广告的真实效果有追求的行业都适合DSP。

(2)如果我的DSP投放不理想,可能出错的原因在哪里?涉及到很多方面,和PPC投放效果不理想可能的原因是类似的。

1、首先,可能你投放的时间还很短,并没有优化到足够合理的程度。

因为dsp投放需要有一个人群积累和cookie匹配的问题存在。

时间越长效果越好。

2、其次,你的投放定位可能有问题﹐你的人群、兴趣、偏好等等选择和你网站本身目标人群出现了偏差,你需要专业的数据分析师为你的业务度身订造一套有效的投放策略。

3、或者是因为你没有在广告或网站上安装追踪代码。

DSP需要大量的数据,来计算每一次广告展示的竞投价格,在过程中,所涉及的因素上百过千,像网站类型、广告大小、形状、用户特征等,没有足够的数据,DSP 并没有可能发挥最佳的优化效果。

所以尽可能在数据安全的前提下,将代理商代码布置完全!4、也有可能是DSP服务商能够提供的publisher资源与你的广告受众并不匹配。

5、又或者是因为最简单的理由,你的创意形式不够动人。

这一点看似简单,其实是最重要最值得重视的一点。

(3) DSP广告投放有最低的预算要求吗?dsp广告预算理论上可以设置为没有。

但是为了追求一定的效果,确实需要投入一定的预算,例如1000人民币,可以进行最初的测试,后期根据效果进行调整。

同PPC广告类似,DSP广告随着不断优化,效果将越来越好。

所以预算的投入是必要的。

(4) DSP广告投放与一般展示广告投放有何分别?在技术层面,DSP最大的区别在于所有的广告都是透过“实时竞价”而购买的。

定点DSP实现浮点运算时的定标问题

定点DSP实现浮点运算时的定标问题

程序变量的Q值确定--定点DSP实现浮点运算时的定标问题2008-08-27 18:45在前面几节介绍的例子中,由于x,y,z的值都是已知的,因此从浮点变为定点时Q值很好确定。

在实际的DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的Q值呢?从前面的分析可以知道,确定变量的Q值实际上就是确定变量的动态范围,动态范围确定了,则Q值也就确定了。

设变量的绝对值的最大值为|max|,注意|max|必须小于或等于32767。

取一个整数n,使满足2n-1<|max|<2n则有2-Q=2-15*2n=2-(15-n)Q=15-n例如,某变量的值在-1至+1之间,即|max|<1,因此n=0,Q=15-n=15。

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

一种是理论分析法,另一种是统计分析法。

1. 理论分析法有些变量的动态范围通过理论分析是可以确定的。

例如:(1)三角函数。

y=sin(x)或y=cos(x),由三角函数知识可知,|y|<=1。

(2)汉明窗。

y(n)=0.54一0.46cos[nπn/(N-1)],0<=n<=N-1。

因为-1<=cos[2πn/(N-1)]<=1,所以0.08<=y(n)<=1.0。

(3)FIR卷积。

y(n)=∑h(k)x(n-k),设∑|h(k)|=1.0,且x(n)是模拟信号12位量化值,即有|x(n)|<=2^11,则|y(n)|<=2^11。

(4)理论已经证明,在自相关线性预测编码(LPC)的程序设计中,反射系数ki满足下列不等式:|ki|<1.0,i=1,2,...,p,p为LPC的阶数。

2. 统计分析法对于理论上无法确定范围的变量,一般采用统计分析的方法来确定其动态范围。

所谓统计分析,就是用足够多的输入信号样值来确定程序中变量的动态范围,这里输入信号一方面要有一定的数量,另一方面必须尽可能地涉及各种情况。

dsp编译错误与解决方法(精)

dsp编译错误与解决方法(精)
2 Q I have started to study the book "Digital Signal Processing and Applications with the C671
3 and C6416 DSK (by Rulph Chassaing, 2005". I am working with a C6713DSK, using CCS 3.1. But when I try to run the first example (sine8_LED in Rulph Chassaing's book on the C6713 Device Cycle Accurate Simulator, I get the following error messages: Trouble running Target CPU: Memory Map Error: READ access by CPU to address 0x1b7c100, which is RESERVED in Hardware. Trouble running Target CPU: Memory Map Error: WRITE access by Default to address 0x1b7c100, which is RESERVED in Hardware.
main.cpp
#include "global.h"
WinMain(....
...
}
file_1.cpp
#include "global.h"
....
file_2.34;
...
由于工程中的每个文件都是独立的解释的即使头文件有
#ifndef _x_h

dsp数的定标名词解释

dsp数的定标名词解释

dsp数的定标名词解释DSP是数字信号处理(Digital Signal Processing)的缩写,是指利用数字技术对信号进行处理的一种方式。

数字信号处理是现代通信技术、音频处理、图像处理、雷达信号处理等众多领域中的关键技术之一,被广泛应用于各个领域。

DSP数的定标是指对数字信号进行精度补偿、峰值标定和校准,以确保测量结果的准确性和可靠性。

定标是指在已知标准参考信号下对DSP系统进行校正,使得系统能够正确地量化输入信号并进行相应的数字处理。

在DSP系统中,数的定标是非常重要且必要的一步。

它旨在确保DSP系统在各种环境和条件下的性能稳定和可靠性。

数的定标涉及到几个关键的步骤,下面将对这些步骤进行详细解释。

首先,数的定标需要确定DSP系统的量化精度。

量化精度是指系统可以采样和量化的最小输入变化。

通过在已知输入信号下对系统进行测试,可以确定系统可以准确测量的最小变化值。

这个步骤通常涉及选择适当的参考信号源,并在不同的输入水平下进行测试。

根据测试结果,可以确定系统的量化精度。

接下来,数的定标还需要考虑系统的峰值标定。

峰值标定是指确定DSP系统可以正确定量的最大输入信号。

这对于在系统使用过程中能够正确处理高幅度信号至关重要。

峰值标定可以通过将已知幅度的信号输入到系统中,并观察系统是否能够准确测量这些信号的幅度来实现。

通过对系统进行多个不同幅度的测试,可以确定系统的峰值标定值。

此外,校准也是数的定标的重要一环。

校准是指对DSP系统进行调整和校正,以确保其输出的准确性和稳定性。

校准通常涉及对系统的各个部分进行测试,并根据测试结果进行相应的调整。

校准可以包括对时钟源的校准、模数转换器的校准以及滤波器的校准等。

数的定标还需要考虑信号的线性性。

线性性是指系统对输入信号的响应与输入信号幅度成正比。

在进行数的定标时,需要检查系统的线性性,并在必要时进行校正。

这可以通过对多个不同幅度的输入信号进行测试来实现。

最后,数的定标也需要考虑对系统进行环境测试。

DSP的定点溢出处理技术

DSP的定点溢出处理技术

之间的转换。
浮点数与定点数的转换关系可表示
为:
浮点数( x ) 转换为定点数( x ):x =
q
q
(int)x × 2Q
定点数( x ) 转换为浮点数( x ):x = q
下转第 85 页
-8 3 -
Dat aGri d 控件、Dat aList 控件、 DataCombo 控件和 MSChart 控件是 ADC 最常使用的几个控件。
截尾。前者要耗费大量的程序空间和执行
时间,后者则很快带来图像质量的劣化,使
整个系统的性能下降。而 32bit 浮点运算
DSP 的动态范围可以作到 1536dB,这不仅
大大扩大了动态范围,提高了运算精度,还
大大节省了运算时间和存储空间,因为大
大减少了定标,移位和溢出检查。因此的实
际的应用过程中,常常需要将定点和浮点
数的定标有Q 表示法和 S 表示法种。表 1 列出了一个 16 位数的16 种 Q 表示及它们 所能表示的十进制数值范围。
从表 1 可以看出,同样一个 16 位数,若 小数点设定的位置不同,它所表示的数也 就不同,但对于 DSP 芯片来说,处理方法 是完全相同的。不同的 Q 所表示的数不仅 范围不同,而且精度也不相同。
因此,在实际应用中到底选用定点 DSP 还是浮点 DSP 需要综合考虑一下问 题:
3.1、成本与方便易用性:浮点 DSP 提 供的计算能力更高,这也是其区别于定点 DSP 功能的最大差异所在。浮点器件是最 早支持 C 语言的 DSP 之一,而定点 DSP 则仍须在汇编代码级上进行编程。此外,对 浮点格式而言,实数运算可直接通过代码 加入硬件运算中,而定点器件则必须通过 软件才能间接执行实数运算,这就增加了 算法指令并延长了开发时间。由于浮点 DSP 易于编程,因此其最初主要用于开发 工作强度较大的情况,如研究、原型开发、 影像识别、工作站的三维图像加速器以及 雷达等军用系统。

定点DSPs的定标及其运算方法

定点DSPs的定标及其运算方法

定点DSPs的定标及其运算方法
张卫宁;赵子婴
【期刊名称】《计算机工程》
【年(卷),期】2002(028)003
【摘要】分析了定点DSPs的定标问题,讨论了定点运算中的Qx值选择和解决数值超范围的方法,提出了定点DSPs加法的通用处理方法,并就定点运算程序设计中的一些具体问题进行了讨论.
【总页数】3页(P223-225)
【作者】张卫宁;赵子婴
【作者单位】山东大学信息科学与工程学院,济南,250061;山东大学信息科学与工程学院,济南,250061
【正文语种】中文
【中图分类】TP301.6
【相关文献】
1.G.729A+B语音编解码在新一代定点DSPs上的实现 [J], 谢廷贤;李娜
2.用定点DSP处理器实现浮点DSP仿真 [J],
DavidKatz;RickGentile;TomLukasiak
3.DSP运算方法研究 [J], 武乾文;冯妍
4.基于定点DSP的恒定V/F运算参数定标分析 [J], 张全川;李文
5.矢量控制中定点DSP软件定标分析 [J], 刘小虎;谢顺依
因版权原因,仅展示原文概要,查看原文内容请购买。

DSP中数的定标

DSP中数的定标

1 数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

如无特别说明,本书均以16位字长为例。

DSP芯片的数以2的补码形式表示。

每个16位数用一个符号位来表示数的正负,0表示数值为正,l则表示数值为负。

其余15位表示数值的大小。

因此,二进制数0010000000000011b=8195二进制数1111111111111100b= -4对DSP芯片而言,参与数值运算的数就是16位的整型数。

但在许多情况下,数学运算过程中的数不一定都是整数。

那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。

那么是不是说DSP芯片就不能处理各种小数呢?当然不是。

这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。

这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q表示法和S表示法两种。

表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

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

例如,16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示 0.111111*********但对于DSP芯片来说,处理方法是完全相同的。

从表1.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。

Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。

例如,Q0 的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768=0.00003051。

因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想精度提高,则数的表示范围就相应地减小。

DSP常见编译错误

DSP常见编译错误

1. DSP编程技巧到底有什么好资料?话说专门深入讲解这个的资料并不是太多,因为大部分DSP书籍都是讲解算法或者寄存器是怎么使用的,那尽量罗列一下(如有遗漏请在评论区补充),有:(1)《DSP C2000程序员高手进阶》这本书是当年笔者学习DSP的时候看了好几遍的,讲的非常深入、透彻,可惜早就卖光了并且没有再版。

需要的网友可以考虑去图书馆看看,图书馆里最不缺少的就是老版本的书籍了。

(2)EEPW牛人业话我们EEPW首页的牛人业话里,已经有大量这方面的总结了,链接太多就不一一列举了,请到/news/articlelist/type/39中阅读。

(3)官方资料最权威的当然还是官方资料,特别是《TMS320C28x Optimizing C/C++ Compiler User’s Guide》和《TMS320C28x Assembly Language Tools User’s Guide》。

不足之处就在于,它们都像教科书,严谨有余,活泼不足,特别是初入门的人看起来会比较累。

(4)参加一些培训好的培训一般都是要付费的,这个要根据自己的实际情况进行取舍了。

2. 答疑解惑哪家强?经验的积累,除了自己努力的自学之外,有时候一些难关还是得有别人的帮助才行,可能你花3天搞不定的问题,他一看就想起来是什么原因了。

如果是企业客户,那直接联系官方技术支持,很容易就搞定了。

或者也可以去官方论坛提问,然后等待解答。

对于广大网友来说,直接获得技术支持可能有一定的难度。

我们EEPW的论坛的人气充足,对问题的响应速度也是迅雷不及掩耳的,所以有关DSP的问题尽可以到/forum/29/1下提问。

前面这两个无关具体技术,但是能起到―源头‖的作用。

接下来就是具体的技术问题了,有几十个,我们慢慢来看吧。

3. 作为入门者,创建一个最基本的工程需要做哪些事情?最简单的入门方法是从现有的例子上入手,比如购买开发板的话,一般都会附送十几到几十个上手用的例子工程,把它们研究一遍,基本上入门这关就过了。

DSP定标问题解决

DSP定标问题解决

好,我先抛点玉吧DSP芯片的定点运算3.1 数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

如无特别说明,本书均以16位字长为例。

DSP芯片的数以2的补码形式表示。

每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。

其余15位表示数值的大小。

因此二进制数0010000000000011b=8195二进制数1111111111111100b=-4对DSP芯片而言,参与数值运算的数就是16位的整型数。

但在许多情况下,数学_运算过程中的数不一定都是整数。

那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。

那么是不是说DSP芯片就不能处理各种小数呢?当然不是。

这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。

这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q表示法和S表示法两种。

表3.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

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

例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。

从表3.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。

Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。

例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768 = 0.00003051。

因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

好,我先抛点玉吧DSP芯片的定点运算3.1 数的定标在定点DSP芯片中,采用定点数进行数值运算,其操作数一般采用整型数来表示。

一个整型数的最大表示范围取决于DSP芯片所给定的字长,一般为16位或24位。

显然,字长越长,所能表示的数的范围越大,精度也越高。

如无特别说明,本书均以16位字长为例。

DSP芯片的数以2的补码形式表示。

每个16位数用一个符号位来表示数的正负,0表示数值为正,1则表示数值为负。

其余15位表示数值的大小。

因此二进制数0010000000000011b=8195二进制数1111111111111100b=-4对DSP芯片而言,参与数值运算的数就是16位的整型数。

但在许多情况下,数学_运算过程中的数不一定都是整数。

那么,DSP芯片是如何处理小数的呢?应该说,DSP芯片本身无能为力。

那么是不是说DSP芯片就不能处理各种小数呢?当然不是。

这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。

这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。

数的定标有Q表示法和S表示法两种。

表3.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。

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

例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示但对于DSP芯片来说,处理方法是完全相同的。

从表3.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。

Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。

例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768 = 0.00003051。

因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。

在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。

浮点数与定点数的转换关系可表示为:浮点数(x)转换为定点数( ):定点数( )转换为浮点数(x):例如,浮点数x=0.5,定标Q=15,则定点数=,式中表示下取整。

反之,一个用Q=15 表示的定点数16384,其浮点数为16384×2-15=16384/32768=0.5。

表3.1 Q表示、S表示及数值范围Q表示S表示十进制数表示范围Q15 S0.15 -1≤X≤0.9999695Q14 S1.14 -2≤X≤1.9999390Q13 S2.13 -4≤X≤3.9998779Q12 S3.12 -8≤X≤7.9997559Q11 S4.11 -16≤X≤15.9995117Q10 S5.10 -32≤X≤31.9990234Q9 S6.9 -64≤X≤63.9980469Q8 S7.8 -128≤X≤127.9960938Q7 S8.7 -256≤X≤255.9921875Q6 S9.6 -512≤X≤511.9804375Q5 S10.5 -1024≤X≤1023.96875Q4 S11.4 -2048≤X≤2047.9375Q3 S12.3 -4096≤X≤4095.875Q2 S13.2 -8192≤X≤8191.75Q1 S14.1 -16384≤X≤16383.5Q0 S15.0 -32768≤X≤327673.2 高级语言:从浮点到定点在编写DSP模拟算法时,为了方便,一般都是采用高级语言(如C语言)来编写模拟程序。

程序中所用的变量一般既有整型数,又有浮点数。

如例3.1程序中的变量i是整型数,而pi是浮点数,hamwindow则是浮点数组。

例3.1 256点汉明窗计算inti;float pi=3.14159;float hamwindow[256];for(i=0;i<256;i++) hamwindow=0.54-0.46*cos(2.0*pi*i/255);如果要将上述程序用某种定点DSP芯片来实现,则需将上述程序改写为DSP芯片的汇编语言程序。

为了DSP 程序调试的方便及模拟定点DSP实现时的算法性能,在编写DSP汇编程序之前一般需将高级语言浮点算法改写为高级语言定点算法。

下面讨论基本算术运算的定点实现方法。

3.2.1 加法/减法运算的C语言定点模拟设浮点加法运算的表达式为:float x,y,z;z=x+y;将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值一样。

若两者不一样,则在做加法/减法运算前先进行小数点的调整。

为保证运算精度,需使Q值小的数调整为与另一个数的Q值一样大。

此外,在做加法/减法运算时,必须注意结果可能会超过16位表示。

如果加法/减法的结果超出16位的表示范围,则必须保留32位结果,以保证运算的精度。

1.结果不超过16位表示范围设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法/减法结果z的定标值为Qz,则z=x+y&THORN;== &THORN;所以定点加法可以描述为:intx,y,z;long temp; /*临时变量*/temp=y<<(Qx-Qy);temp=x+temp;z=(int)(temp>>(Qx-Qz)), 若Qx≥Qzz=(int)(temp<<(Qz-Qx)), 若QxQ≤z例3.2 定点加法设x=0.5,y=3.1,则浮点运算结果为z=x+y=0.5+3.1=3.6;Qx=15,Qy=13,Qz=13,则定点加法为:x=16384;y=25395;temp=25395<<2=101580;temp=x+temp=16384+101580=117964;z=(int)(117964L>>2)=29491;因为z的Q值为13,所以定点值z=29491即为浮点值z=29491/8192=3.6。

例3.3 定点减法设x=3.0,y=3.1,则浮点运算结果为z=x-y=3.0-3.1=-0.1;Qx=13,Qy=13,Qz=15,则定点减法为:x=24576;y=25295;temp=25395;temp=x-temp=24576-25395=-819;因为Qx<Qz,故z=(int)(-819<<2)=-3276。

由于z的Q值为15,所以定点值z=-3276即为浮点值z=-3276/32768&raquo;-0.1。

2.结果超过16位表示范围设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法结果z的定标值为Qz,则定点加法为:int x,y;long temp,z;temp=y<<(Qx-Qy);temp=x+temp;z=temp>>(Qx-Qz),若Qx≥Qzz=temp<<(Qz-Qx),若Qx≤Qz例3.4 结果超过16位的定点加法设x=15000,y=20000,则浮点运算值为z=x+y=35000,显然z>32767,因此Qx=1,Qy=0,Qz=0,则定点加法为:x=30000;y=20000;temp=20000<<1=40000;temp=temp+x=40000+30000=70000;z=70000L>>1=35000;因为z的Q值为0,所以定点值z=35000就是浮点值,这里z是一个长整型数。

当加法或加法的结果超过16位表示范围时,如果程序员事先能够了解到这种情况,并且需要保证运算精度时,则必须保持32位结果。

如果程序中是按照16位数进行运算的,则超过16位实际上就是出现了溢出。

如果不采取适当的措施,则数据溢出会导致运算精度的严重恶化。

一般的定点DSP芯片都设有溢出保护功能,当溢出保护功能有效时,一旦出现溢出,则累加器ACC的结果为最大的饱和值(上溢为7FFFH,下溢为8001H),从而达到防止溢出引起精度严重恶化的目的。

3.2.2 乘法运算的C语言定点模拟设浮点乘法运算的表达式为:float x,y,z;z = xy;假设经过统计后x的定标值为Qx,y的定标值为Qy,乘积z的定标值为Qz,则z = xy&THORN;= &THORN;=所以定点表示的乘法为:intx,y,z;long temp;temp = (long)x;z = (temp×y) >> (Qx+Qy-Qz);例3.5 定点乘法设x = 18.4,y = 36.8,则浮点运算值为z =18.4×36.8 = 677.12;根据上节,得Qx = 10,Qy = 9,Qz = 5,所以x = 18841;y = 18841;temp = 18841L;z = (18841L*18841)>>(10+9-5) = 354983281L>>14 = 21666;因为z的定标值为5,故定点z = 21666即为浮点的z = 21666/32 = 677.08。

3.2.3 除法运算的C语言定点模拟设浮点除法运算的表达式为:float x,y,z;z = x/y;假设经过统计后被除数x的定标值为Qx,除数y的定标值为Qy,商z的定标值为Qz,则z = x/y &THORN;= &THORN;所以定点表示的除法为:intx,y,z;long temp;temp = (long)x;z = (temp<<(Qz-Qx+Qy))/y;例3.6 定点除法设x = 18.4,y = 36.8,浮点运算值为z = x/y = 18.4/36.8 = 0.5;根据上节,得Qx = 10,Qy = 9,Qz = 15;所以有x = 18841, y = 18841;temp = (long)18841;z = (18841L<<(15-10+9))/18841 = 308690944L/18841 = 16384;因为商z的定标值为15,所以定点z = 16384即为浮点z = 16384/215= 0.5。

3.2.4 程序变量的Q值确定在前面几节介绍的例子中,由于x、y、z的值都是已知的,因此从浮点变为定点时Q值很好确定。

在实际的DSP应用中,程序中参与运算的都是变量,那么如何确定浮点程序中变量的Q值呢?从前面的分析可以知道,确定变量的Q值实际上就是确定变量的动态范围,动态范围确定了,则Q值也就确定了。

设变量的绝对值的最大值为,注意必须小于或等于32767。

相关文档
最新文档