DSP芯片的运算基础.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
十进制数表示范围
-1≤X≤0.9999695 -2≤X≤1.9999390 -4≤X≤3.9998779 -8≤X≤7.9997559 -16≤X≤15.9995117 -32≤X≤31.9990234
Q9
Q8 Q7
S6.9
S7.8 S8.7
-64≤X≤63.9980469
-128≤X≤127.9960938 -256≤X≤255.9921875
为了避免这种情况发生,一般在 DSP芯片中可以设置溢出的保护功能。 设置了溢出功能后,当发生溢出时, DSP芯片自动将结果设置为最大值或 最小值。
2.1.3 舍入(rounding)及截尾(truncation) 一般对一个数进行取整处理,有以 下两种方法: 1、舍入:将该数加0.5后,再将小数部 分去处。
2.2 定点运算实现的基本原理
在编写DSP模拟算法时,为了方便,一般都 是采用高级语言来编写模拟程序。程序中 所用的变量一般既有整型数,又有浮点数。 例2-2 256点汉明窗计算 int i; float pi=3.14159; float hamwindow[256]; for(i=0;i<256;i++) hamwindow[i]=0.54-0.46*cos(2.0*pi*i/255);
一起来学习DSP芯片运算的基础知识。
2.1 定标的基本概念
2.1.1 数的定标 在定点DSP芯片中,采用定点数进行数值 运算,其操作数一般采用整型数来表示。一个 整型数的最大表示范围取决于 DSP 芯片所给定 的字长,一般为16位或24位。显然,字长越长, 所能表示的数的范围越大,精度也越高。 DSP芯片的数以2的补码形式表示。每个16 位数用一个符号位来表示数的正负,0表示数值 为正,1则表示数值为负。其余15位表示数值的 大小。
Q6
Q5 Q4 Q3 Q2 Q1 Q0
S9.6
S10.5 S11.4 S12.3 S13.2 S14.1 S15.0
-512≤X≤511.9804375
-1024≤X≤1023.96875 -2048≤X≤2047.9375 -4096≤X≤4095.875 -8192≤X≤8191.75 -16384≤X≤16383.5 -32768≤X≤32767
同样一个16位数,若小数点设定的位置
不同,它所表示的数也就不同。例如:
16进制数2000H=8192,用Q0表示
16进制数2000H=0.25,用Q15表示
从表3.1还可以看出,不同的Q所表示的数 不仅范围不同,而且精度也不相同。Q越大, 数值范围越小,但精度越高;相反,Q越小, 数值范围越大,但精度就越低。例如,Q0的 数值范围是-32768到+32767,其精度为1,而 Q15的数值范围为-1到0.9999695,精度为 1/32768 = 0.00003051。因此,对定点数而言, 数值范围与精度是一对矛盾,一个变量要想能 够表示比较大的数值范围,必须以牺牲精度为 代价;而想提高精度,则数的表示范围就相应 地减小。在实际的定点算法中,为了达到最佳 的性能,必须充分考虑到这一点。
trunc(123.7+0.5)=124
对y进行截尾:trunc(123.7)=123
Fra Baidu bibliotek
对于DSP芯片的乘法运算,常需要用到舍 入处理方法。
设两个Q值均为15的16位有符号数进行乘法运 算,结果也采用Q15表示的16位数。 1、两数相乘,结果放在32位累加器中,Q=30; 2、将累加器中的数左移一位,Q=31; 3、为了将结果表示为16位,一种方法是直接 将低16位截尾,保留高16位,作为乘法结果。 另一种方法就是在截尾之前进行舍入处理。方 法就是在低16位数的最高位加1,然后将低16 位去除,将高16位作为结果。
通过设定小数点在16位数中的不
同位置,就可以表示不同大小和不同 精度的小数了。数的定标有Q表示法 和S表示法两种。下表列出了一个16 位数的16种Q表示、S表示及它们所能 表示的十进制数值范围。
Q表示
Q15 Q14 Q13 Q12 Q11 Q10
S表示
S0.15 S1.14 S2.13 S3.12 S4.11 S5.10
如:
二进制数0010000000000011b=8195
二进制数1111111111111100b=-4
对DSP芯片而言,参与数值运算的数 就是16位的整型数。但在许多情况下, 数学运算过程中的数不一定都是整数。 那么, DSP 芯片是如何处理小数的呢? 应该说, DSP 芯片本身无能为力。那么 是不是说 DSP 芯片就不能处理各种小数 呢?当然不是。这其中的关键就是由我 们设计者来确定一个数的小数点处于 16 位中的哪一位。这就是数的定标。
2、截尾:直接将小数部分去处;
例2-1,已知x=123.3,y=123.7,试分别对 x、y进行舍入和截尾处理。 对x进行舍入:round(x)=round(123.3)
trunc(123.3+0.5)=123
对x进行截尾:trunc(123.3)=123
对y进行舍入:round(y)=round(123.7)
2.1.2 溢出及处理方法
溢出:由于定点数的表示范围是一定的, 因此在进行定点数的加法或减法运算时, 其结果就有可能超出数值的表示范围的 情况。 上溢:结果大于最大值。 下溢:结果小于最小值。
在定点运算时,必须考虑溢出的处理 方法。否则就有可能导致灾难性的后果。
如:两个16位的有符号位数x、y相加, 结果也用16位有符号数表示,假设 x=32766d=0111111111111110b; y=3d=0000000000000011b; x+y=32766+3=1000000000000001=-32767
第二章 DSP芯片的运算基础
定标的基本概念 定点运算实现的基本原理
DSP定点算术运算实现的基本原理
根据参与运算的数据格式来分,DSP 芯片有定点和浮点两大类。
TMS320C2000系列DSP芯片属于
定点芯片,因此参与运算的数据格式必
须采用定点格式,为了使大家能够理解
DSP芯片的运算方法,在这一章里我们
浮点数与定点数的转换关系可表示为: 浮点数(x)转换为定点数(xq): xq=(int)x*2Q 定点数(xq)转换为浮点数(x): x=(float)xq*2-Q 如,浮点数 x=0.5,定标 Q=15,则定 点数xq =0.5*2Q=16384;反之,一个用 Q=15 表示的定点数16384,其浮点数 为16384×2-15=16384/32768=0.5。