- 0
- 0
- 约5.23千字
- 约 55页
- 2020-04-23 发布于四川
- 举报
第十一章 算法及硬件设计 内容 1.数据格式与IQMath 2.DSP最小系统设计 3.控制系统实例 第一部分 数据格式与IQMath 定点与浮点 浮点运算DSP比定点运算DSP的动态范围要大很多。定点DSP的字长每增加1bit,动态范围扩大6dB。16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如,在作图像处理时,图像作旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。而32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。 浮点DSP的优势 由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP。这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。 定点DSP的优势是什么? 定义 定点数:通俗的说,小数点固定的数。。如果小数点在最高有效位的前面,则这样的数称为纯小数的定点数,如0.12345,0.78934等。如果小数点在最低有效位的后面,则这样的数称为纯整数的定点数,如12345,78934等。 浮点数:一般说来,小数点不固定的数。比较容易的理解方式是,考虑以下我们日常见到的科学记数法,拿我们上面的数字举例,如123.45,可以写成以下几种形式: 12.345x101 1.2345 x102 0.12345 x103 为了表示一个数,小数点的位置可以变化,即小数点不固定。 定点数与浮点数的对比 (1) 表示的精度与范围不同 例如,我们用4个十进制数来表达一个数字。对于定点数(这里以定点整数为例),我们表示区间[0000,9999]中的任何一个数字,但是如果我们要想表示类似1234.3的数值就无能为力了,因为此时的表示精度为1/100=1; 如果采用浮点数来表示(以归整的科学记数法,即小数点前有一位有效位,为例),则可以表示[0.000,9.999]之间的任何一个数字,表示的精度为1/103=0.001,精度比上一种方式提高了很多,但是表示的范围却小了很多。 定点数与浮点数的对比 (2) 计算机中运算的效率不同 一般说来,定点数的运算在计算机中实现起来比较简单,效率较高;而浮点数的运算在计算机中实现起来比较复杂,效率相对较低。 (3) 硬件依赖性 一般说来,只要有硬件提供运算部件,就会提供定点数运算的支持,但不一定支持浮点数运算。 浮点数的存储格式 IEEE floating point standard 浮点数的小数点是不固定的,那么怎么在计算机中存储这种类型的数字呢?浮点数的存储规范,就是由IEEE指定的,具体的规范文件是:IEEE Standard 754 for Binary Floating-Point Arithmetic。大家可以很容易的从网络上下载到这篇文档。 在c语言中,单精度(float)数据类型为32bits,具体的如下图所示: 浮点数表示范围 (-1)^s × (1 + m / 2^23) × 2^(e - 127) s是第一位,e是8位指数,m是数值。 可表示的范围是 ±1.40129846432481707e-45 to ±3.40282346638528860e+38. IQMath 定点DSP没有定点运算单元,它对浮点格式的实数必须通过软件才能实现,这样就增加了指令代码,间接地使得定点DSP运算速度低于浮点DSP。 因为浮点DSP的价格更加昂贵,因此定点DSP仍然有其巨大的优势。TI公司专门为定点处理器TMS320C2000系列提供的IQmath库为解决上述问题提供了良好的实现方法。 IQmath库是高度优化和具有高精度的数学函数库集合。IQmath库里面包含的函数都是采用Q格式定点数作为输入/输出,允许程序设计人员在定点TMS320F281xx处理器上进行浮点算法设计,从而提高运算速度。 IQmath库函数 IQmath库中主要包括以下函数: ◆格式转换函数IQ()、IQN()、IQtoF()、IQtoIQN()等 ◆算术运算函数IQmpy()、IQdiv()等 ◆三角运算函数IQsin()、IQcos()、IQatan2()等 IQMath的使用 为了应用IQmath,首先要从TI官方网站下载IQmath库,文档名称为SPRC08
原创力文档

文档评论(0)