This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28069:IQmath 库中_IQ (A)函数的执行时间

Guru**** 2535150 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/937462/tms320f28069-execution-time-of-_iq-a-function-in-iqmath-library

器件型号:TMS320F28069

您好!

当我将常量浮点值传递给_IQ()函数时,它的执行时间比我通过浮点变量传递相同值的情况要短得多。 从代码片段中可以看出、当 I pass 1.0是恒定值 ti _IQ (N)函数时、执行时间为5个周期。 当我将浮点变量传递给函数时、它的执行时间为291个周期。 为什么两种情况的执行时间与 如何使第二种情况的执行时间与第一种情况等效之间有如此大的差异? 我需要这样做是因为我的应用程序对时间很敏感,我不能使用常量值作为_IQ()函数的参数。

//第一个案例

void IQ_CONV ()
{
_IQ temp;
temp =_IQ (1.0);
}

//第二个案例

void IQ_CONV ()
{
_IQ temp;
float val;
val = 1.0;
temp =_IQ (val);
} 

谢谢、

Mayuri

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mayuri、

    _iq()是一个宏。 如果您查看提供的 samplpleC 示例并查看反汇编、您可以清楚地看到这些值是预处理的、执行时间不应更改。 例如,语句:  

    step.Xsize =_IQ (0.314159265); 

    转换为:

    MOVB AH、#0x59
    SPM
    0 MOV AL、#0x652b 

    您能否分享周期测量的截屏?

    -Shantanu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shantanu、

    我理解您的说法、但您尝试通过浮点变量执行周期传递相同的值、在本例中为0.314159265、这会显著增加。 我已附加了两个案例的快照。 您可以在第一个图像(case1.png)中看到、我测量了执行以下行的执行时间:

    #define STEP_X_SIZE 0.314159265

    STEP.Xsize =_IQ (STEP_X_SIZE)

    这只需4个周期、如图像右下角所示。

    如图(case2.png)所示、执行以下行所需的执行时间为240个周期、如图右下角所示。

    float ff = STEP_X_SIZE;

    step.Xsize =_IQ (ff);  -->此行需要240个周期。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mayuri、

    对拖延表示歉意。 我尝试复制您的问题、但未成功。 它可能与您的项目设置、目标文件格式、配置等有关 您可以共享您的.project 文件吗?