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.

[参考译文] LP-MSPM0G3507:MATHACL ATAN2操作的时钟周期/繁忙期间

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1370949/lp-mspm0g3507-clock-cycles-busy-period-for-mathacl-atan2-operation

器件型号:LP-MSPM0G3507

工具与软件:

MATHACL ATAN2的设置包括一个 NUMITER 值、用于说明需要多少次迭代。  但是、在参考手册的第5.4.2节中、它只说明了需要写入 CTL、OP1和 OP2、然后从 RES1读取结果。  这是 MathIQ 源文件中实现的过程。  在读取 RES1之前、是否无需等待迭代完成?  参考手册描述了 NUMITER 需要更长的时间才能计算出较高的值、但并未说明如何在示例中实现该值、并且指出没有状态位(大概包括 BUSY 位)。

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

    您好、Alan:

    我现在正在查看我们的文档、特别是 MSPM0 G 系列 TRM、位于第5.4.2节、我看到该函数的说明包括 CTL。 NUMITER 字段用于计算反正切的迭代次数。

    在同一文档的表5-5中、我还看到了 CTL。 NUMITER 用于指示该操作的迭代次数。 我们在这里看到的是同一个文档、还是我遗漏了什么?

    看看 SDK 中的 MATHACL 示例、可以 看到我们没有演示 ATAN2函数、但我们演示了其他 TRIG 函数、并包括一个等待状态的函数。 需清除的 BUSY 位。 ATAN2运算应以类似的方式执行。  

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

    迪伦

    对不起,我解释自己很差。

    TRM 5.4.2结尾的文本如下:

    没有提到在步骤3和步骤4之间可能需要等待的情况。

    当我提到一个例子时,我应该更清楚-我正在查看 mathIQ 库的源代码,特别是函数_IQNatan2 (),其中执行了以下行:

    再次重申、我假设配置操作数和读取结果之间需要等待。

    (现在我再次看看、我看到触发操作数在 TRM 中列为 OP2、但在上面第286行的注释中列为 OP1。  您能解释一下吗?)

    鉴于 TRM 配置部分或 mathIQ 代码中没有提到等待、NUMITER 对时序有何影响、我如何确保等待足够长?

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

    啊、我明白你的意思了。

    我将寻找一些内部文档、看看这是否只是 TRM 和 mathIQ 库中的一个空白部分。 从逻辑上讲、如果函数需要更多的迭代、那么应该需要更长的时间。  

    我应该能够在明天一天结束之前找到更多有关这方面的信息、因此请期待收到回复。

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

    迪伦

    感谢您的参与。  仅在 TRM 的以下文本中提到了使用 Busy to Wait:

    然而、这与 mathIQ 库并不一致、也不能真正指示应如何使用 RES1/RES2来检查结果(除非您只应检查寄存器是否发生更改、这似乎有点模糊)。

    该片段也与 mathIQ 库中的触发顺序相矛盾,所以,如果你能够对它进行评论,那将会很有帮助。

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

    您好、Alan:

    很抱歉这里的响应延迟了。 我在我们的内部文档中找到了更清晰的信息。

    因此、MATHACL 外设的确切行为是、当您尝试在结果准备就绪之前读取结果寄存器时、数据总线将停止、直到准备就绪。 那么应该发生的情况是、在操作完成之前、您只能在函数中读取寄存器。 实际上、这会导致器件等待直到结果准备就绪、而代码未明确表示这样做。 这也意味着源代码正在等待正确的数据可用、即使源代码似乎没有这样做。

    对我来说、这是一个文档问题、我将在 TRM 中提交一个 TT 来更好地解释这一点、因为我可以公开发现的任何地方都没有解释这种行为、当然、我们的许多客户也会想知道如何从数学加速器获得正确的结果。  

    如果您有更多未解决的问题、或者我是否可以帮助您解决任何其他问题、请告诉我。

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

    迪伦

    我刚刚意识到、仍然存在编写操作数的顺序的问题。  TRM 指出 OP2是启动计算的触发器、但 mathIQ 库代码(和注释)将 OP1称为触发器。  您能解释一下吗?

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

    很抱歉、我第一次错过了那个。

    检查我们的器件规格后、看起来 OP1似乎被列为触发器、如 MathIQ 库代码中所示。  

    这是我要列出的另一个待更新的 TRM 错误。 感谢您指出这一点、如果您还有其他问题、敬请告知。