基于基于IQmath库的定点库的定点DSP算法设计算法设计
基于IQmath库的定点DSP算法设计,基于IQmath库的定点DSP算法设计彭志明,李琳(华南理工大学工业机器人
研究室,广州510640)摘要:基于TI公司提供的IQmath库实现在定点DSP芯片TMS320F28xx上进行精确的浮点
运算,方便开发人员采用C/C++编写浮点
摘要:基于TI公司提供的
关键词:IQmath库;TMS320F28xx;浮点运算;实时性
引言
DSP数字信号处理器分为定点和浮点两种基本类型,它们之间最大差异在于浮点DSP比
1 数的定标:Q格式
定点DSP不能直接处理小数,编程时处理小数有3种方法:
①把变量定义成float类型。该方法编程量最小,但编译出来的代码最大。
②把整数变量放大来表示小数。这是许多开发定点DSP的程序员经常使用的方法,但程序不具有可移植性。
③采用整数定标的方法来确定小数,即采用Q格式来表示小数。对于定点处理器而言,不管定义哪种类型的数据最终都采用
整型数据进行具体的运算。
整数定标的实质就是通过确定小数点位于哪一位,从而确定小数的精度,通常用Q格式表示。一个32位有符号定点数的Q格
式如下:
其中,S是符号位,I是整数部分,f是小数部分。定点数的大小按下式计算:
比如Q15定点数的小数点位于第15位的右侧,小数0.25用Q15表示则为2000H。这样很简单地用一个整数格式表示了一个
小数,对于定点DSP来说处理小数就与处理整数完全相同了。需要注意的是,采用Q格式数据进行算法设计的时候必须考虑溢
出,各种Q格式数据表示的范围和精度参考文献。
2 TMS320F2812定点DSP处理器
作为TI公司C2000系列DSP典型产品,定点处理器TMS320F2812具有很高的性价比,广泛应用于工业控制,特别是应用于
处理速度、处理精度方面要求较高的领域。TMS320F2812整合了Flash存储器、A/D转换器、事件管理器、QEP以及多种通
信模块,具有强大的控制和信号处理能力,便于用户开发高性能的数字控制系统。特别是TI公司为C28xx内核专门设计的
IQmath库能够实现在定点DSP处理器上进行精确的浮点运算和复杂的控制算法。
3 IQmath库及其应用
IQmath库是高度优化和具有高精度的数学函数库集合。IQmath库里面包含的函数都是采用Q格式定点数作为输入/输出,
允许程序设计人员在定点TMS320F281xx处理器上进行浮点算法设计,从而提高运算速度。
3.1 IQmath库组成
IQmath库可以在c/C++程序设计中使用,它包含4个部分:
◆IQmath头文件IQmathLib.h
◆包含所有函数和数值表的目标文件IQmath.lib
◆命令连接文件IQmath.cmd
◆调试用的GEL文件IQmath.gel
3.2 IQmath库函数
IQmath库中主要包括以下函数(用户在程序设计开发时可以直接调用):
◆格式转换函数IQ()、IQN()、IQtoF()、IQtoIQN()等
◆算术运算函数IQmpy()、IQdiv()等
◆三角运算函数IQsin()、IQcos()、IQatan2()等
IQmath库中的各个函数及其含义参考文献。
3.3 IQmath库函数应用
下面说明如何在一个C程序中使用IQmath库。首先要安装IQmath库,可以从TI公司的网站http://
WWW.dspvillage.ti.com免费下载得到。然后新建一个工程,将IQmath.lib,IQmath.cmd添加到工程。同时,还要把
IQmath.gel添加到工程中,因为IQ变量的变换和调整都是通过GEL函数来实现的。按以上步骤设置完以后,就可以在C语言
程序中利用IQmath库里面的函数了。需要注意的是,IQmath.cmd必须包含以下内容:
评论0