3IQmath库函数和定标及标么化(教学课件)

上传人:lb2****090 文档编号:146251608 上传时间:2020-09-29 格式:PPT 页数:57 大小:671.50KB
返回 下载 相关 举报
3IQmath库函数和定标及标么化(教学课件)_第1页
第1页 / 共57页
3IQmath库函数和定标及标么化(教学课件)_第2页
第2页 / 共57页
3IQmath库函数和定标及标么化(教学课件)_第3页
第3页 / 共57页
3IQmath库函数和定标及标么化(教学课件)_第4页
第4页 / 共57页
3IQmath库函数和定标及标么化(教学课件)_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《3IQmath库函数和定标及标么化(教学课件)》由会员分享,可在线阅读,更多相关《3IQmath库函数和定标及标么化(教学课件)(57页珍藏版)》请在金锄头文库上搜索。

1、,数字信号控制(DSC)技术基础,第六节 定标、IQmath函数库和标么化计算,1定点与浮点计算,2定点运算中数字的定标,3 IQmath函数库,4 标么化系统,1定点与浮点计算,定点与浮点DSP的基本差异在于它们对数据的数字表示法不同。定点DSP严格执行整数运算,而浮点DSP既支持整数运算又支持实数运算,后者以科学计数法进行了标准化。浮点DSP将数据路径分为两部分:一是可用作整数值或实数基数的尾数,二是指数。业界标准单一精确运算的32位浮点DSP中,尾数是24位,指数是8位。动态范围大大高于定点格式提供的精确度。 浮点DSP需要的内部电路多,32位数据路径比用定点器件宽1倍。晶片面积越大,引

2、脚数量也越多,导致封装越大,成本也更高。浮点格式中,实数运算可直接通过代码加入硬件运算中,而定点器件则须通过软件才能间接运行实数运算。增加了算法指令与延长了开发时间。浮点最初用于开发工作强度较大的情况。 定点DSP 体积小、功耗低、价格便宜, 而且现在的定点产品的速度已经可以做得很高,然而, 随之而来的问题是如何在精度要求严格的应用中, 用定点DSP 保持较高的运算精度。,F28XX是定点DSP,但它提供了IQmath库模块,主要完成处理器优化和定点数学运算。它是在汇编库基础上创建的,可在定点DSP实现精确的浮点运算,使用库函数可方便用户进行编写浮点处理程序。对于要求高实时和高精度的系统这些函

3、数库尤其有用。与直接用ANSI C相比,速度上明显提高且精度也很好。,F28xx的IQmath函数库,2定点小数运算原理与DSP的定标,定点数运算时,操作数采用整型数表示。最大表示范围取决于DSP的字长。DSP的芯片的数以2的补码形式表示。用一位数表示数的正负,0为正,1为负。其余15位为数值大小。,二进制数0010000000000011b=8195二进制数1111111111111100b= -4,处理小数时需确定小数处于16位数据中的具体位置。即定标。定标的表示法有Q法和S法。Q法仅列出小数的位数,S法要列出整数位置、小数点和小数位数。Q12或S4.12表示4位整数12位小数。小数的分辨

4、率为,表1.1Q表示、S表示及数值范围Q表示S表示十进制数表示范围Q15S0.15-1x0.9999695Q14S1.14-2x1.9999390Q13S2.13-4x3.9998779Q12S3.12-8x7.9997559Q11S4.11-16x15.9995117Q10S5.10-32x31.9990234Q9S6.9-64x63.9980469Q8S7.8-128x127.9960938Q7S8.7-256x255.9921875,表1.1列出了一个16位数的16种Q表示、S表示及它们所能表示的十进制数值范围。 A 同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。例如,

5、 16进制数2000H=8192,用Q0表示 16进制数2000H=0.25,用Q15表示,但对于DSP芯片来说,处理方法是完全相同的。B 不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0 的数值范围是一32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为1/32768=0.00003051。 对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想精度提高,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性

6、能,必须充分考虑到这一点。,16位的DSP中加法/减法运算,Qx Qy 1 QxQy, Qz=Qx,y(Qx-Qy), z=x+y,如果X,Y,Z的定标互不相同,则需将X,Y重新定标再运算。定标就是小数点对齐的过程。,乘法运算 Qx,Qy,Qz,Qz=Qx+Qy是32位 1 Qz=Qx,ZQy,则取低16位为乘积值; 2 Qz=Qy,zQx,则取低16位作为乘积值。,除法运算 Qx,Qy,Qz,若Z=X/Y,Qz=Qx-Qy。,1.25除以0.8实际值为1.5625,而经过定标后的结果为1.5,有较大误差。主要原因是,在计算过程中,由于作除法运算时商的定标值等于被除数与除数定标值之差,因此商的

7、精度大大降低,从而产生较大的误差。为防止这种现象发生,可在作除法运算前,首先将被除数的定标值提高,使之等于除数定标值与商的定标值之和,再作除法运算,就可保证商的精度了。 首先,将被除数X重定标为Qx+Qy=20,经过数字定标的变量在运算中要注意以下几个问题: 1 溢出 由于定点数的表示范围是一定的,运算时其结果有可能出现超出数值表示范围的情况。称为溢出。大于最大值,称为上溢;小于最小值,称为下溢。无论何种溢出,都会产生意想不到的结果。必须采取保护性措施。 A自动增加字长 B将定标值减为1,C饱和处理,即溢出后为最大值/最小值。 2 舍入及截尾 对某个数的取整处理有舍入法和截尾法两种。即上取整和

8、下取整法。DSP由于实际操作数是整数,所以采取截尾法取整。为提高精度,运算后定标的数,通过取整运算可得到不同的有效值的小数。一般舍入误差的绝对值小于截尾误差的绝对值值。,运算结果的后处理,采用固定Q15定标的运算规则 采用固定Q15的定标运算可避免计算过程中反复进行移位的麻烦,也简化了算法,提高了算法的可移植性。同时,Q15也可保证较高的运算精度。,加法 只需要考虑饱和处理。 Ia=20446(0.624), Ib=3276(0.1) Ic=Ia+Ib=20446+3276=23722(0.724),乘法 两个Q15相乘得到32位结果;由于乘积也是Q15,因此,只需将32位乘积左移1位即可,取

9、高16位为最终乘积即可。 a=0.6 b=0.5 A=19660,B=16383 A*B=322089780=$1332B334 左移一位(乘以2)再取高16位则 ($1332B334)1=$26656668 C=$2665=9829 实际值为 c=C/32767=0.29996,除法 先将被除数左移15位,用32位数表示被除法(与乘法对偶),再进行除法运算。注意的是,被除数必须小于除数;否则结果绝对值大于1,超出了Q15的表示范围。这时可适当处理。最简单的办法是先除被除数缩小N倍,再将结果扩大N倍。保证结果不变。 a=0.6,b=0.5,A=19660=$4CCC,B=16383=$3FFF

10、 则 C=(B15)/A=$1FFF800/$4CCC=27306 实际值为 c=C/32767=0.83333,3 IQmath函数库,针对不同系统或同一系统不同模块的需求,用户可利用IQmath库函数更灵活地选择合适的数据格式。但由于数据精度和动态范围本身是相互矛盾的两个指标,软件设计中需要根据具体要求来确定,进行折中以便达到系统最优。默认格式为Q24。各模块对精度和动态范围要求不同,需要定义局部Q格式,以便在具体的模块中取代全局GLOBAL_Q格式。,格式变换函数atoIQ,IqtoF IQtoIQN 算术运算函数 Iqmpy IQdiv 三角运算函数 Iqsin Iqcos IQata

11、n2 数学计算函数 Iasqrt IQisqrt 其它函数 Iqabs IAsat,GLOBAL_Q格式的选择 由于数据精度和动态范围本身相互矛盾,必须根据具体要求确定其中的折中,以达到系统最优。默认为Q24。系统中各种模块Q格式不一样,因此,应定义局部Q格式,以便在具体模块中取代全局Q格式。由于IQmathTables包含Iqmath函数使用的所有查表数据已固化在BOOTROM中,.cmd文件该段必须定义为NOLOAD类型。程序会自动定位查表符号。使用Simulator时,由于没有目标板,须将库中的数据表一并加载。,但是由于定点DSP 本身不能进行浮点运算,再加上目前C 编译器的优化功能还不

12、尽完善,用C 语言编写的浮点运算程序在定点DSP 上的执行效率远远低于人们的预期。为此许多工程技术人员在开发定点DSP 程序时经常将浮点运算转换为定点运算,但是由程序员自己手工实现三角函数、对数等数学函数的定点运算是非常烦琐的工作,费时费力, 而且程序的可靠性也难以保证。TI 公司推出的针对C28X 系列定点DSP 的IQmath 数学函数库,用定点算法优化实现了一些常用的数学函数,在一定程度上解决了这个问题。合理使用这些函数,可以大幅度的提高C 语言浮点运算程序的执行效率。,c编译器带有浮点运算库,因此可将浮点算法和定点算法的结果进行比较,对于4路各1024点数据处理,用浮点算法实现约需36

13、秒,而用定点算法只需13秒。,F2812为定点芯片,而实际的数据为浮点数,所以要将浮点数转化为定点数之后才能运算,这就涉及到数的定标问题。TI公司推出的数学函数库(IQmath.lib),用它来进行数的运算,可以缩短开发周期。因为这个函数库是高精度、高优化的函数库,它提供了标准的CC+语言的无缝连接。,C28x QMATH LIBRARY,Fixed Point SIN (Taylor Series Implementation),the x is the radians within the range - to + , then the normalized value of x in Q

14、15 representation can be obtained by the following simple equation,X,#include /* Header file for fixed point math routine */ void main(void ) int x,y; x=0 x2000; /* 0.25=2000h */ y=qsin(x); /* y will have sin(0.25*p)=0.707 in Q15 */ /* 0.707 in Q15 format = 0.707 *215 =23170 (5A82h) */,SIN (Table lo

15、ok-up and Linear Interpolation),SIN (Table look-up and Linear Interpolation),SIN (Table look-up and Linear Interpolation),QSINLT,#include /* Header file for fixed point math routine */ void main(void ) int x, y; x=0 x2000; /* 0.25 p in normalized Q15 format = 215=2000h */ y=qsinlt(x); /* y will have

16、 sin(0.25*p)=0.707 in Q15 */ /* 0.707 in Q15 format = 0.707 *215 =23170 (5A82h) */,标么化系统,电机理论分析和设计计算中,常用标么值来表示电机中各物理量的大小。如电压、电流、功率或容量、转矩、转速、时间或频率、磁链和反电势及电阻、电感等。从电机角度看,对不同容量的电机其参数和性能的实际值差别很大,但标么值却在一定范围变化,具有可比性;从计算的角度看,原来不同的物理量在数值上差别很大,可能达到几个数量级,但标么值可使不同的物理量在数值上等同起来,简化了计算。利用这一方法,可为不同额定值的电机的数字控制器的设计带来了便利。不仅可简化算法,提高运算精度,还为控制软件的模块化和通用性带来了方便。尤其是可将不同容量电机参数的定标加一统一。,DSC中都可能对电压、电流进行控制。首先要确定基值。就选取系统中该变量绝对值的最大值作为基值。这样,标么化后的变量,其范围在-1+1之间。这个范围刚好可用Q15来表示。,例 电流最大值为50A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号