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.

[参考译文] MSP430F5438A:64位分频

Guru**** 2538950 points
Other Parts Discussed in Thread: MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1042120/msp430f5438a-64-bit-division

器件型号:MSP430F5438A

MSP430F5438A 是定点控制器、需要为应用广泛执行64位除法以保留数据分辨率。

控制器需要花费大量时间来执行64位除法。

您是否具有高效的64位除法代码(C 代码/ASM 代码)?

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

    除非有硬件支持、否则64/64位分频将会很慢。 您需要多长时间?您需要多快?

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

    您好、Ankal、

    我不知道64位除法的代码、只是在有东西的情况下进行了一些挖掘。

    我是否可以询问应用是什么?

    不确定这是否有用、但 您是否了解 过 MSP430 IQMath 库

    为方便起见、此处 提供 了用户指南的链接。

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

    每个64位数除法花费300到400微秒。

    应< 30微秒

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

    几个月前、我写了一个小程序(F2系列)来测量长/长(32位)除法(真正的模数)、每个 CPU 时钟大约为420个、在 MCLK=16MHz 时、这个值大约为27usec。

    我的第一个猜测(不看它)对于 long long/long long (64位)将是原来的4倍。  您的 MCLK 的速度有多快?

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

    MCLK 为24MHz

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

    30us? 这允许每个环路大约12个周期。 不可能。 即使非常小心。

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

    我找到了该程序、将其更改为测量"/"、并将其移至 F5529 (MPY32)。  

    虽然420个 MCLK 的长/长时间大致相同、但长/长时间约为14160个 MCLK、或长/长时间约为35倍。

    这么多东西都是第一次猜测。

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

    问题的一部分是、将三个64位变量放入寄存器要困难得多。 如果它们不在寄存器中、那么与它们一起 fidding花费 的时间要多得多。

    我很确定我可以编写一个比 C 库快得多的64位除法例程、前提是我有此动机、但我没有使用这样的东西。 如果我需要这么快的速度、我只会使用某种类型的 ARM、或者可能是 RISC-V

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

    您好、Ankal、

    现在已经有几天了、所以我将假定您的问题已经解决、您可以继续进行您的项目。
    我将此帖子标记为已解决,但如果不是这种情况,请单击“这不能解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

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

    大家好、David、由于我们处于应用开发的最后阶段、我们将无法进行重大更改。

    请您与我们分享64位除法 C/asm 代码、如果该代码改善的处理时间很短、也会有所帮助。

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

    我说过我想我可以写它、但我没有任何动力来写它。 我没有代码。

    您必须认真考虑自己的要求。 如果您需要低于30us 的结果、则64位除法是非启动器、您必须放弃64位定点。 非常大。 我从未需要任何这么大的东西。

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

    David、感谢您的回答。

    目前、我们使用的64位分频代码需要~400微秒。

    我们无法找到64位除法函数的 asm 代码、这可能一定会缩短处理时间。

    处理时间~250微秒的代码也很有帮助。

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

    如果  不是64位除法的汇编代码、请与我们分享 C 代码。

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

    您好、Ankal、

    我联系了我们的 SW 团队、看看他们是否有一些可能有帮助的东西、但不幸的是、他们没有。

    为此,我已用尽了我的资源

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

    C 库源代码位于您的 CCS 目录中的 tools/compiler/ /lib/src.  

    此时、我将寻找通过使用较小(缩放)的数字或减少操作来减少强度的方法。 您对您的数字了解多少?

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

    大家好、Bruce McKenny、

    目前、我们使用 的是工具/编译器/中提供的 C 库源代码 /lib/src

    是的。 我们正在尽可能减少应用中64位运算的数量。

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

    您好、Ankal、

    我们已经为您听过、现在已经有一段时间了、因此我将假定您能够继续进行您的项目。
    我将此帖子标记为已解决,但如果不是这种情况,请单击“这不能解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。