TM4C IQmath 使用教程+FPU介绍

TM4C IQmath 使用教程

  1. 介绍

Texas Instruments®Tiva™IQmath Library是一个高度优化和高精度的集合,数学函数为C/ C++程序员无缝地将浮点算法移植到Tiva设备上的定点代码。

这些例程通常用于计算密集型实时应用,其中最优的执行速度和高精度是至关重要的。通过使用IQmath库,它有可能实现比同等代码快得多的执行速度。

IQmath使用起来并没有想象中那么复杂,简单来说就是将浮点数转化为整数计算,然后再将整数转为浮点数。

使用过程中合数选和定义IQ变量,获得更好的计算性能。

IQmath使用手册在TIVAware中:

C:\ti\tivaware_c_series_2_1_4_178\docs

       FPU,编译器默认开启FPU,double型变量计算速度有所下降,1.0默认是double型变量,1.0f为float型变量,计算速度在某些情况下比double快几倍,大概5倍左右,如果对精度要求不是很高可以采用float。

2. 测试分析

代码如下。

while(1)

    {

        MAP_GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_6|GPIO_PIN_7,0);

        for(i=0;i<0xFF;i++)

        {

//           value = 0.4f+0.8f+0.8f*0.8f+79.8f/7.8f;

           c = _IQ24sin(a)+ _IQ24sin(b);

//           value = sin(3.1245)+ sin(2.14);

        }

       MAP_GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_6|GPIO_PIN_7,GPIO_PIN_6|GPIO_PIN7);

       for(i=0;i<0xFF;i++)

      {

//          value =0.4f+0.8f+0.8f*0.8f+79.8f/7.8f;

           c = _IQ24sin(a)+ _IQ24sin(b);

//           value = sin(3.1245)+sin(2.14);

      }

          value1=(float)(c*1.0/m24);

}

      当使用IQmath时候,每秒计算速度在480k左右,当不使用时在每秒计算次数在7k左右。这明显提高了计算三角函数的速度。

     当不用来计算三角函数时候,用来计算乘积运算,计算性能大大降低,不如不使用IQmath的计算速度。实测降低1536k左右。

      在求平方根时,采用,math库函数计算速度为34k/s,而采用IQ时候,计算速度为488k/s。

 

3. IQ变量定义范围

 

4.使用范例

#include "IQmath/IQmathLib.h"

int

main(void)

{

_iq24 X, Y, Z;

X = _IQ24(1.0);

Y = _IQ24(7.0);

Z = _IQ24div(X, Y);

}

其中iq24,定义IQ变量,X = _IQ24(1.0);则将数据1.0转为IQ数据。

    转换关系如下:

浮点数(x)转换为定点数(xq):xq=(int)x*2Q;

定点数(xq)转化为浮点数(x):x=(float)(xq*1.0/2Q);

5. 常用IQ库函数

以IQ30为例。IQ位数之间的转换这里不做说明。

转化一个数据为IQnumber

//*****************************************************************************

//

// Convert a value into an IQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值