基于IQmath库的定点DSP算法设计
- 格式:pdf
- 大小:232.69 KB
- 文档页数:3
基于IQmath库的定点DSP算法设计
彭志明,李琳 (华南理工大学工业机器人研究室,广州510640) 摘要:基于TI公司提供的IQmath库实现在定点DSP芯片TMS320F28xx上进行精确的浮点运算,方便开发人员采用 C/C++编写浮点运算程序,可以节省设计和调试时间。IQmath库主要应用于高速度和高精度的实时计算,与直接采用 ANSI C语言相比效率更高,这对设计实时性要求很高的控制系统尤其重要。 关键词:IQmath库;TMS320F28xx;浮点运算;实时性 中图分类号:TP368.1 文献标识码:A
Fixed——point DSP Algorithm Based on IQmath Library Peng Zhiming,Li Lin (Robotics laboratory,South China University of Technology,Guangzhou 510640,China) Abstract:TI IQmath Library is a mathematical function library for c/c 1- programmers to seamlessly port the floating—point algorithm to fixed-point DSP chip TMS320C28x,significantly shortening development time.IQmath Library is mainly applied in high speed and high—precision real time calculation.achieving considerably faster execution speed than equivalent code written in standard ANSI C lan guage,which is important for designing demanding real—time control systems. Key words:IQmath Library;TMS320F28xx;floating—point algorithm;real time performance
引 言 DSP数字信号处理器分为定点和浮点两种基本类型, 它们之间最大差异在于浮点DSP比定点DSP具有更强大 的计算能力和更大范围的动态精度 。浮点DSP内部设 有专门支持浮点运算的硬件单元,对浮点格式的数据可以 直接通过代码加入硬件运算中,因此运算速度很高。而定 点DSP没有定点运算单元,它对浮点格式的实数必须通 过软件才能实现,这样就增加了指令代码,问接地使得定 点DSP运算速度低于浮点DSP。典型的浮点处理器,如 TI公司的C6000系列,几乎所有的嵌入式微控制器都为 定点处理器,如TI公司的C2000系列。因为浮点DSP的 价格更加昂贵,因此定点DSP仍然有其巨大的优势。但 是任何算法都需要进行浮点运算,因此如何提高在定点 DSP上进行的浮点运算的速度和精度,就成为了用户开发 时必须要考虑的关键问题。TI公司专门为定点处理器 TMS320C2000系列提供的IQmath库为解决上述问题提 供了良好的实现方法_2]。 1 数的定标:Q格式 定点DSP不能直接处理小数,编程时处理小数有3 种方法 : ①把变量定义成float类型。该方法编程量最小,但 编译出来的代码最大。 ②把整数变量放大来表示小数。这是许多开发定点 DSP的程序员经常使用的方法,但程序不具有可移植性。 ③采用整数定标的方法来确定小数,即采用Q格式 来表示小数。对于定点处理器而言,不管定义哪种类型的 数据最终都采用整型数据进行具体的运算。 整数定标的实质就是通过确定小数点位于哪一位,从 而确定小数的精度,通常用Q格式表示。一个32位有符 号定点数的Q格式如下: 31 0 s IIIIIII.ffffffffffffffffffffff 其中,S是符号位,I是整数部分,f是小数部分。定点数的 大小按下式计算“]: 2 +2 +…+2。+2。・2 +2 +…+2—0 比如Ql5定点数的小数点位于第15位的右侧,小数 0.25用Q15表示则为2000H。这样很简单地用一个整数 格式表示了一个小数,对于定点DSP来说处理小数就与 处理整数完全相同了。需要注意的是,采用Q格式数据 进行算法设计的时候必须考虑溢出,各种Q格式数据表 示的范围和精度参考文献I-2]。
paper@mesnet.com.cn(投稿专用) Microcontro11ers&Embedded Svstems 3
9 2 TMS320F28 12定点DSP处理器 作为TI公司C200O系列DSP典型产品,定点处理器 TMS320F2812具有很高的性价比,广泛应用于工业控制, 特别是应用于处理速度、处理精度方面要求较高的领 域 。TMS320F2812整合了Flash存储器、A/D转换器、 事件管理器、QEP以及多种通信模块,具有强大的控制和 信号处理能力,便于用户开发高性能的数字控制系统。特 别是TI公司为C28xx内核专门设计的IOmath库能够实 现在定点DSP处理器上进行精确的浮点运算和复杂的控 制算法。 3 IQmath库及其应用 IQmath库是高度优化和具有高精度的数学函数库集 合。IQmath库里面包含的函数都是采用Q格式定点数 作为输入/输出,允许程序设计人员在定点TMS320F281XX 处理器上进行浮点算法设计,从而提高运算速度。 3.1 IQmath库组成 IQmath库可以在c/c++程序设计中使用,它包含4 个部分: ◆IQmath头文件IQmathI ib.h ◆包含所有函数和数值表的目标文件IQmath.1ib ◆命令连接文件IQmath.cmd ◆调试用的GEL文件IQmath.gel 3.2 IQmath库函数 IQmath库中主要包括以下函数(用户在程序设计开 发时可以直接调用): ◆格式转换函数IQ()、IQN()、IQtoF()、IQtolQN()等 ◆算术运算函数IQmpy()、IQdiv()等 ◆三角运算函数IQsin()、IQcos()、IQatan2()等 IQmath库中的各个函数及其含义参考文献[2]。 3.3 IQmath库函数应用 下面说明如何在一个c程序中使用IQmath库。首 先要安装IQmath库,可以从TI公司的网站http:// WWW.dspvillage.ti.corn免费下载得到。然后新建一个工 程,将IQmath.1ib,IQmath.cmd添加到工程。同时,还要 把IQmath.gel添加到工程中,因为IQ变量的变换和调整 都是通过GEL函数来实现的。按以上步骤设置完以后, 就可以在C语言程序中利用IQmath库里面的函数了。 需要注意的是,IQmath.cmd必须包含以下内容: MEM0RY( PAGE 0: BOOTR0M:origin=0x3ff000,length一0x000fc0 RAMH0:origin=Ox3f8000,length一0x002000 } SECTIONSf IQmathTables:load—B00TR0M,type—NOLOAD,PAGE—O IQmath:load—RAMH0,PAGE一0 ) 4 PARK变换浮点算法的定点数实现 在现代交流电机控制领域,空间矢量控制法(SVP— WM)使得交流电机的控制策略能像直流电机的控制策略 一样,可以实现转矩电流和磁通的单独控制,因此成为主 流的交流伺服驱动控制策略 。利用DSP强大的计算能 力和信号处理能力,SVPWM的电流和磁通控制均可以采 用软件实现。TMs32OF2812处理器专门为电机控制设有 两个事件管理器(EVA/EVB)和编码器电路(QEP),因此 成为运动控制的最佳选择之一。图1是采用 TMS320F2812实现SVPWM控制算法的系统结构框图。
图1 TMS320F2812实现SVPWM控制算法系统结构框图 从图1可以看出,PARK变换是SVPWM控制算法 中最为复杂的变换之一,是 一个旋转矢量i 从静止二相 坐标系(a一口)变换到同步旋 转的二相坐标系(d—q)。 PARK变换坐标映射如图2 所示。 图2 PARK变换 坐标映射图 由图2可以得到PARK变换的方程式 ]: ( (一 .sin 0e)(i:o) 因为PARK变换是一个浮点算法,如果在定点处理 器TMS320F2812上采用浮点运算来实现,代价很高。采 用浮点类型进行编程将产生十分庞大的代码,而且在循环 计算中势必影响系统的效率和性能。采用IQmath库可 以将浮点算法转换为定点数算法,这样运算速度可以明显 提高,这对实时性要求很好的运动控制系统的设计十分有 40《牟 机乌嵌入式系碗应用》l盔日囡墨叠霾嘲 adv@mesnet.corn.cn(广告专用) \、f
\ 效。利用IQmath库实现PARK变换的程序段如下: #include”IQmathLib.h” //iQmath头文件 #include”park.h” #define GLOBA1 Q 24 //全局IQ值为Q24格式 void parkcalc(PARK*v){ iq COSang,sineang; //三角函数值,Q24格式 sineang一一IQsin(v>0 ); //0 以弧度表示 COSang=一IQ>COS(v>0 ); v一>i d一IQmpy(v>i 。,COSang)十_IQmpy(v>i。B,sine ang); v一>i 一IQmpy(v一>i ,COSang)一IQmpy(v>i ,sine ang); } 图3是利用Embedded Target for TI C2000 DSPⅢ集 成开发工具对IQmath库编写的SVPWM程序计算PWM 占空比的波形图。
图3利用IQmath编写的SVPWM程序的PWM占空比 5 结 论 利用IQmath库可以在32位定点处理器 TMS320F2812上实现浮点算法与定点算法之间的无缝连 接,能够极大地增强定点DSP的运算能力;在不牺牲时间 周期的情况下可以实现高精度计算,能够快速地完成对浮 点算法的转换、植入和执行;还可以根据应用系统不同要 求相应地调整运算精度,与直接采用ANSI C语言相比效 率更高。豫 参考文献 [1]Texas Instruments.3 2一Bit—Digital Signal Controller TMS320F2812,2003—04. [2]Taxas Instruments Inc.IQmath Library Module user’s Guide C28XX foundation Software,2O02一O6. [3]王璐刚,陈林康,曾岳南,等.DSP C2000程序员高手进阶 EM].北京:机械工业出版社,2005. E4]孙俪明.TMS320F2812原理及其C语言程序开发[M].北 京:清华大学出版社,2008. Es]寇宝泉,程树康.交流伺服电机及其控制[M].北京:机械工 业出版社,2008。 E6]苏奎峰,蔡昭权,吕强,等.TMS320X281xDSP应用系统设计 EM].北京航空航天大学出版社,2008. [7]The MathWorks,Inc.Embedded Target for the TI TMS320C2000 DSP Platform For Use with Simulink User’S Guide,2003—1 1. 彭志明《硕士研究生)≯釜要研究领域为重业机器人运动控制系统。 曩一* …奠 ■(牧稿肆期:201融04-26)