器件型号: AM2431
尊敬的专家:
使用 PRU 读取和写入 I/O 时、我们注意到可能存在延迟。 请帮助确认此问题是否存在以及是否有任何解决方法。
将 PRU 用作 SPI 从器件、在检测到 CS 的下降沿后、我们会将 SDO 拉高。 该代码仅包含两条指令、但 SDO 电平在 21ns 后上升。 电流测试表明 CS 引脚的检测延迟、就像 GPIO 输入引脚中存在延迟一样。
下面是测试代码和波形。







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 读取和写入 I/O 时、我们注意到可能存在延迟。 请帮助确认此问题是否存在以及是否有任何解决方法。
将 PRU 用作 SPI 从器件、在检测到 CS 的下降沿后、我们会将 SDO 拉高。 该代码仅包含两条指令、但 SDO 电平在 21ns 后上升。 电流测试表明 CS 引脚的检测延迟、就像 GPIO 输入引脚中存在延迟一样。
下面是测试代码和波形。







您好:
请共享您用于设置信号的宏。
我期望信号有 2 个 PRU 时钟信号从处理器引脚进入 R31、并在处理器引脚上可以观察到大约 2 个写入 R30 的时钟信号(如果在 333MHz 下运行、则每个时钟周期 3ns)。 加上在 AM335x 上执行 2 条指令的时间、我使用从 GPO 引脚到 GPI 引脚的简单环回线进行了测试、并观察到总共 6 个时钟周期来写入、读取和执行指令(5ns/时钟)。 较长的环回导线增加了额外的时钟周期、因为电子传输所需的时间更长。 当我在 AM64x EVM 上使用更长的 PCB 布线进行测试时、我认为同一测试有 7 个时钟周期(3ns/时钟)。
此致、
Nick
我预计信号从处理器引脚进入 R31 将有 2 个 PRU 时钟信号、写入 R30 的大约 2 个时钟信号可以在处理器引脚上观察到(如果在 333MHz 下运行、则每个时钟周期为 3ns)。 [/报价]您是否意味着 PAD 与 R30/R31 之间路径的延迟是 2 个时钟? 什么是时钟单元? 它不应该是路径上的 PRU 时钟。
我制作了一个时序图来帮助理解代码的延迟、是不是正确?
在评估其能力时、延迟是一个非常重要的特性。 记录下来会很好。
尊敬的 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。
-托马斯
我正在深入研究电路设计、以确保我了解 R30 和 R31 的信号路径(即,尝试隔离什么是 IO/PCB 延迟、以及 R30/R31 和引脚之间的延迟是多少)。
输入路径上肯定有一个单路触发器 (PCB -> IO ->触发器-> PRU.R31)。 因此、我认为它看起来像这样、但我正在与设计团队核实:
时钟 1:信号锁存到触发器中(如 Thomas 所说,信号从异步进入同步时钟源)
时钟 2:信号 锁存到 R31 中
时钟 3:QBBS 识别到 R31 的变化
如果星期五没有回复、请 ping 通该线程。
此致、
Nick
您好、Nick、
是否有更新? 也许此输入路径延迟数据可以帮助讨论另一个主题:
您好、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) 如果您在启用设置的情况下运行测试、然后将其禁用、改进是否足够大以进行测量。

