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.

[参考译文] AM2431:有关 PRU IO 控制延迟的问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1603957/am2431-question-about-pru-io-control-delay

器件型号: AM2431

尊敬的专家:

使用 PRU 读取和写入 I/O 时、我们注意到可能存在延迟。 请帮助确认此问题是否存在以及是否有任何解决方法。

将 PRU 用作 SPI 从器件、在检测到 CS 的下降沿后、我们会将 SDO 拉高。 该代码仅包含两条指令、但 SDO 电平在 21ns 后上升。 电流测试表明 CS 引脚的检测延迟、就像 GPIO 输入引脚中存在延迟一样。

下面是测试代码和波形。

0.0.png

0.1.png

1.0.png

2.0.png

2.1.png

2.2.png

4.jpg

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

    您好:

    请共享您用于设置信号的宏。

    我期望信号有 2 个 PRU 时钟信号从处理器引脚进入 R31、并在处理器引脚上可以观察到大约 2 个写入 R30 的时钟信号(如果在 333MHz 下运行、则每个时钟周期 3ns)。 加上在 AM335x 上执行 2 条指令的时间、我使用从 GPO 引脚到 GPI 引脚的简单环回线进行了测试、并观察到总共 6 个时钟周期来写入、读取和执行指令(5ns/时钟)。 较长的环回导线增加了额外的时钟周期、因为电子传输所需的时间更长。 当我在 AM64x EVM 上使用更长的 PCB 布线进行测试时、我认为同一测试有 7 个时钟周期(3ns/时钟)。

    此致、

    Nick

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

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

    您好、Nick、

    请仔细检查我的响应、CS_PIN 来自 SPI 主器件、它是下降沿、应该在最多 2 条指令内由 PRU GPI 检测到、因此它应该是 6ns(3ns/时钟)、而不是 21ns。

    谢谢

    Kelven

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

    您好、Nick、

    SET 引脚宏来自 TI、请参阅以下内容

    M_PRU_SET_PIN  。宏 PRU_PIN

      迭代     R30、r30  、  PRU_PIN

    .endm

    设置信号只是 1 条指令、因此对于 CS_PIN 检测、应在  2 条指令内、 SDO_PIN 将在 2+1 = 9ns 内上升。

    谢谢

    Kelven

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我预计信号从处理器引脚进入 R31 将有 2 个 PRU 时钟信号、写入 R30 的大约 2 个时钟信号可以在处理器引脚上观察到(如果在 333MHz 下运行、则每个时钟周期为 3ns)。 [/报价]

    您是否意味着 PAD 与 R30/R31 之间路径的延迟是 2 个时钟? 什么是时钟单元? 它不应该是路径上的 PRU 时钟。

    我制作了一个时序图来帮助理解代码的延迟、是不是正确?

     在评估其能力时、延迟是一个非常重要的特性。 记录下来会很好。

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

    汇编方案的目的是:
    当检测到 CS_PIN 为低电平时、SDO_PIN 将作为高电平输出、CS_PIN 来自外部 SPI 主器件、CS_PIN 低电平信号检测将在最多 2 条指令(3ns/时钟)范围内、因此最大断开时间应为 2*3ns = 6ns、SDO_PIN 输出将为 1 条指令、总时间应在+3ns = 9ns、如下图所示。

    ...

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

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

    尊敬的 Kelven:

     3 周期延迟是来自 PRU 指令的数字延迟。 IO 焊盘、PCB、连接器存在额外的模拟延迟。 尤其是 IO 焊盘、它集成了一个多路复用器来选择不同的引脚模式、施密特触发选项和去抖逻辑。 您可以检查是否禁用施密特触发和去抖逻辑以获得最小延迟。 但是、您可以在 IO 焊盘上选择各种选项这一事实意味着存在固定的延迟。  

    TRM 一章“5.1.1.3 CTRL_MMR0 和 PADCFG_CTRL0_CFG0 功能说明“包含有关焊盘设置的详细信息。  

    因此、我们只能确认、18ns + 3ns 延迟是此实现所能实现的更优延迟。 这是否会导致您的应用出现问题? 您正在寻找的 CS 和 SDO 之间的最大延迟是多少?

    -托马斯

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

    尊敬的 Thomas:

    感谢您的确认。

    请仔细检查上述波形:

    步骤 1. 当检测到 CS_PIN 下降沿时、SDO_PIN 将在 SPI_CLK 之前输出低电平、延迟为 21ns、得到确认;

    步骤 2. 当检测到第 1 个 SPI_CLK 上升沿时、SDO_PIN 将保持低电平;在这里、如果 SDO_PIN 保持低电平、但延迟仍然存在、则也是 21ns、请确认???

    步骤 3. 当检测到第二个 SPI_CLK 上升沿时、SPO_PIN 将输出高电平、延迟是否仍然存在? 当时是 21ns、请确认???  

    简要总结:无论 SPI_CLK 上升沿是第 1 个、第 2 个或第 3 个、SPI_CLK 上升沿检测+ SDO_PIN 输出始终存在 21ns 延迟

    请帮助您再次确认要点。

    谢谢

    Kelven

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

    尊敬的 Thomas:

    感谢您的确认。

    请仔细检查上述波形:

    步骤 1. 当检测到 CS_PIN 下降沿时、SDO_PIN 将在 SPI_CLK 之前输出低电平、延迟为 21ns、得到确认;

    步骤 2. 当检测到第 1 个 SPI_CLK 上升沿时、SDO_PIN 将保持低电平;在这里、如果 SDO_PIN 保持低电平、但延迟仍然存在、则也是 21ns、请确认???

    步骤 3. 当检测到第二个 SPI_CLK 上升沿时、SPO_PIN 将输出高电平、延迟是否仍然存在? 当时是 21ns、请确认???  

    简要总结:无论 SPI_CLK 上升沿是第 1 个、第 2 个或第 3 个、SPI_CLK 上升沿检测+ SDO_PIN 输出始终存在 21ns 延迟

    您能否帮助您再次确认这一点?  每个 SPI_CLK 上始终存在 SPI_CLK 上升沿检测+SDO_PIN 输出的 21ns 延迟。

    谢谢

    Kelven

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

    尊敬的 Kelven:

     对于 SPI 外设模式(外部 CS 和 CLK),默认情况与上述情况相同 — 21ns。 请注意、在我的测量结果中、异步时钟源产生 18ns 的固定延迟和 3ns 抖动 — 与 AM243x 相比、外部时钟通过不同的振荡器运行。 只有在 AM243x 和外部 SPI 器件使用相同的时钟基准时、才会有 3ns 的抖动。  

    如果外部 SPI 器件对于 CS 和 CLK 具有固定时序、我们可以优化 SDO 上的延迟。 使用 CS 作为第一个 SDO 的基准、并使用之前的时钟边沿来将 CLK 传输到 SDO。  

    -托马斯

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

    尊敬的 Thomas:

    感谢您的支持。

    是的、我们按照您的建议设计了 SPI 从器件、SPI 从器件工作正常。

    谢谢  

    Kelven

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

    我正在深入研究电路设计、以确保我了解 R30 和 R31 的信号路径(即,尝试隔离什么是 IO/PCB 延迟、以及 R30/R31 和引脚之间的延迟是多少)。

    输入路径上肯定有一个单路触发器 (PCB -> IO ->触发器-> PRU.R31)。 因此、我认为它看起来像这样、但我正在与设计团队核实:
    时钟 1:信号锁存到触发器中(如 Thomas 所说,信号从异步进入同步时钟源)
    时钟 2:信号 锁存到 R31 中
    时钟 3:QBBS 识别到 R31 的变化

    如果星期五没有回复、请 ping 通该线程。

    此致、

    Nick

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

    感谢您发送编修。

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

    您好、

    线程所有者将在 2 月 17 日的一周内停止工作。 如果您在这周内没有收到更新、请 ping 通该线程。

    感谢您的耐心。

    此致、
    Harshith

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

    您好、Nick、  

    是否有更新? 也许此输入路径延迟数据可以帮助讨论另一个主题:

     RE:AM2432:SPI 外设模式开关特性 

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

    您好、Tony、

    感谢您的 ping、我几周前开始回复此问题、然后丢失了我的草稿。

    我画了一个图形,现在... 我似乎无法将图像复制/粘贴到 e2e 回复中。 我会通过电子邮件将图形发送给您、如果 e2e 允许我们再次复制/粘贴图像到回复中、欢迎在几天后再次向我发送 ping。 或者、您也可以使用我发送给您的图像回复 e2e。

    文本说明

    如果我们要读取信号、然后根据输入驱动输出信号:

    5 从输入信号锁存至 PRU 子系统内的输入触发器开始、到输出信号由输出触发器驱动、需要进行 PRU 时钟转换。 这是 PRU 同步时钟域中的固定时间:每时钟 3ns 时为 15ns、每时钟 5ns 时最高为 25ns、具体取决于 PRU 的时钟频率。

    您仍需要考虑 PCB 布线延迟以及信号通过 PRU 触发器和处理器引脚之间的异步逻辑所需的额外延迟。 我被告知、预计会有几纳秒的额外延迟。

    当您将这两个延迟源相加时、18-21ns 的延迟对于测量从 PCB 上其他位置发送信号并等待看到响应信号的测量来说是绝对合理的。

    此致、

    Nick

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

    以下是之前的图表:

    要点:我们在 PRU 同步时域中使用 5 个 PRU 时钟(如果 PRU 内核以 3ns 运行、则为 15ns)。 额外的延迟来自 PRU 子系统之外的异步逻辑。 我还没有花时间尝试 Thomas 关于禁用施密特触发和去抖逻辑的建议、以可能减少异步逻辑中花费的时间、因此我不确定是否 1) 这些设置默认处于启用状态;2) 如果您在启用设置的情况下运行测试、然后将其禁用、改进是否足够大以进行测量。