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.

[参考译文] TMS320F280039C:CLA 和 C2000 对于浮点数具有不同的舍入模式

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1623728/tms320f280039c-cla-and-c2000-having-different-rounding-modes-for-floating-point-numbers

器件型号: TMS320F280039C

我知道、本质上、CLA 和 CPU 对于浮点数具有不同的舍入模式、CLA 会截断该数字、并且可以进行更改以匹配 CPU 的功能。

用于更改模式的汇编指令:
__asm(“ MSETFLG RNDF32=1“);  

我想知道 CLA 默认为截断而不是 CPU 舍入模式是否有具体原因。 我主要关心的是启用 RNDF32 是否对 CLA 有任何有意义的性能影响。  在我的应用中、额外的精度很有用、因此如果没有明显的缺点、我希望启用它。
 
该问题出现在 CLA 上执行的以下代码行中:

 uint32_t pwmPeriodTicks_cla =(DEVICE_SYSCLK_FREQ /(float) freq);

其中、我的 freq 等于 1000000、DEVICE_SYSCLK_FREQ 等于 C2000 ((uint32_t)(((20000000UL)* 48)/(2 * 4 * 1)))。

pwmPeriodTicks 在 CPU 中等于 120、但在 CLA 中变为 119。  

我的问题是:
出于性能原因、默认的 CLA 截断行为是否有意为之?
启用 RNDF32=1 时是否会造成任何有意义的性能损失?
是否作为保持 CLA 和 C28x 结果一致的建议方法启用 RNDF32?

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

    对此有任何更新? 我主要担心性能

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

    您好、Syafiq、  

    出于性能原因、默认 CLA 截断行为是有意为之?

    默认情况下、C28x FPU 也具有相同的舍入模式、但在 main () 之前运行的 C init 例程会设置您使用的舍入模式。  

    启用 RNDF32=1 时是否会造成任何有意义的性能损失?

    编号 这些指令两种方式都采用相同数量的周期。

    是否启用 RNDF32 作为保持 CLA 和 C28x 结果之间一致性的推荐方法?

    是 — 我们建议将舍入模式设置为相同。

    此致、

    Lori