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.

[参考译文] TMS320F280048:TMS320F280048

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/859521/tms320f280048-tms320f280048

器件型号:TMS320F280048

您好!

库函数是否可用于两个浮点值的模2? 如果是,那是什么?

谢谢、

维克多

 

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

    维克多

    您能否稍微澄清一下要求?

    -您希望模2:除法、乘法、...的运算结果是什么?

    您对舍入的期望是什么:舍入为零、舍入为最近...?

    此致、

    Richard

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

    您好 Richard、

    例如、模2除法   24.6  MOD2DIV  7.1 = 3.3、 四舍五入到最近。 当然、我可以 通过简单的 while 环路中的减法来实现它

    但是、我很好奇 TI 是否提供了更多智能算法和 LIB 功能。

    谢谢、

    维克多

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

    维克多

    我相信您所描述的实际上是24.6模数7.1、换句话说、不涉及模数2操作。 然后、这将属于我们在28004x TMU 指令集中支持的浮点除法类别。 因此、在您的项目中启用 TMU 后、标准除法运算应该会生成/使用适当的 TMU 浮点除法指令(执行该指令需要5个流水线周期)。

    Richard、Victor、

    请告诉我的理解是否不正确。

    谢谢、

    Sira

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

    Sira、

    你是对的、抱歉。 此操作的 C 函数名称是什么? 是否有此类功能的用户手册?

    谢谢、

    维克多

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

    维克多

    我认为仅仅使用"/"将会起作用。 %不会这样做、因为它仅适用于整数操作数。 FMod()将处理浮点操作数,但我不知道 TI 编译器将用 TMU 指令替换此调用。

    谢谢、

    Sira

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

    尊敬的 Victor:

    我想更好地阐明我的上述几点:

    您可以使用 C 库函数 Fmod 来执行模运算、但这非常慢。 似乎需要200个周期。

    如果您尝试计算 FMod (a、b)、一个更快的选项是:

    C=(a/b)-((((((int)a/b)*b);

    因此、有两个除法(如果启用了 TMU、编译器将使用 DIVF32实现、这非常快)和一个乘法。

    谢谢、

    Sira

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

    抱歉、上面有拼写错误。 正确的公式为:

    fmod (a、b)= a -(int)(a/b)*b);

    谢谢、

    Sira