分享

IQmath基本使用方法

 lixinxinjn 2013-01-13


IQmath基本使用方法(2812为例子)

IQmath基本使用方法(2812为例子)
一. 配置CMD

PRAMH0         : origin = 0x100000, length = 0x008000    
BOOT_ROM       : origin = 0x3ff000, length = 0x000fc0
IQmathTables   : > BOOT_ROM, type = NOLOAD, PAGE = 0
IQmath         : > PRAMH0,   PAGE = 0

二. 载入gel文件,加入IQmath库和头文件
IQmath.gel
IQmath.lib
IQmathLib.h

三.定义全局Q格式,和调试Q格式
#define GLOBAL_Q     20 //全局为Q20格式,默认为Q24格式
long GlobalQ = GLOBAL    //调试用为Q20格式(这样可以使用_IQ(x)在监视器中查看)

//-----------------------------
IQmath中常用的变量和字符
QN    16bitQ格式
IQN   32bitQ格式 N表示Q多少
int 16bit
long 32bit
_iq = _iqN = long
F 浮点数输入
S 浮点字符串
P 正数最大值
N 负数最大值

格式转化函数
一般情况下IQ都有IQN版本的函数
float _IQtoF(A)         //_iq浮点转成正常浮点
float _IQNtoF(A)
int _IQtoQN(A)          //iq和q(16bit)的转化
long _IQint(A)          //提取iq的整数部分
_IQ(float F)            //浮点转化成iq
_IQN(float F)
_atoIQ(char *s)         //字符串转化成iq
_IQfrac(A)              //提取iq的小数部分
_IQtoIQN(A)             //全局iq和普通iq的转化      
_IQNtoIQ(A)
_QNtoIQ(int A)

算术函数
long _IQmpyI32int(A, B) //N*long IQ乘long 返回整数部分
long _IQmpyI32frac(A, B)//N*long IQ乘long 返回小数部分
_IQmpy(A, B)            //N*N乘法
_IQrmpy(A, B)           //N*N四舍五入的乘法最后保存结果前(四舍五入)
_IQrsmpy(A, B)          //N*N四舍五入的饱和处理乘法(如果Q26[-32,+32],如果相乘结果超过也会限制到这个范围)
_IQmpyI32(A, B)         //N*long IQ乘long
_IQmpyIQX(A, A1, B, B1) //N1*N2两个不同的Q格式乘法,返回全局Q格式
_IQdiv(A, B)            // N/N iq除法

三角函数
_IQsin(A)
_IQsinPU(A)             //正弦函数(标幺值),你占这个圆周的几分之几为单位如果sin((0.25*PI)/(2*PI))
_IQcos(A)
_IQcosPU(A)

_IQatan2(A, B)           //第四象限反正切 tan-1(sin, cos)
_IQatan2PU(A, B)         //第四象限反正切 tan-1(sin, cos)
_IQatan(A, B)           //定点反正切    tan-1(1),,1=sin/cos

_IQNsin(A)
_IQNsinPU(A)            //正弦函数(标幺值),你占这个圆周的几分之几为单位如果sin((0.25*PI)/(2*PI))
_IQNcos(A)
_IQNcosPU(A)
_IQNatan2(_iqA, B)      //第四象限反正切 tan-1(sin, cos)
_IQNatan2PU(_iqA, B)    //第四象限反正切 tan-1(sin, cos)
_IQNatan(A, B)          //定点反正切    tan-1(1),,1=sin/cos

数学函数
_IQNsqrt(A)             //平方根        a^0.5
_IQNisqrt(A)            //平方根倒数    1/a^0.5
_IQNmag(A, B)           //求模运算(sqrt(A^2 + B^2)

_IQsqrt(A)              //平方根        a^0.5
_IQisqrt(A)             //平方根倒数    1/a^0.5
_IQmag(A, B)            //求模运算(sqrt(A^2 + B^2)

其它函数
_IQsat(A, long P, long N)//IQ数值的限幅函数 把A限制到[N P]之间
_IQNabs(A)              //IQ数据的绝对值    |A|

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多