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.

[参考译文] AM5749:GPMC_FCLK 频率

Guru**** 2553260 points
Other Parts Discussed in Thread: ADS8422, ADC3660, AM5749

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/977468/am5749-gpmc_fclk-frequency

器件型号:AM5749
主题中讨论的其他器件:ADS8422ADC3660

您好!

我目前正在开发 GPMC 并行端口和 ADC (ADS8422)之间的接口。 为了满足 ADC 要求、我需要正确设置 RdAccessTime 和 PageBurstAccessTime 参数。 相关时间(以 ns 为单位)根据若干 GPMC_FCLK 周期进行计算。 但是、由于基频为266MHz、它们中每个的最大周期与所花费的周期不符。

例如、RdAccessTime 的最大周期数为"31"。 在266MHz 时、周期延迟为3.75ns、因此31个周期为116.5ns。 要求的延迟应大于550ns。

是否可以将 GPMC_FCLK 从266MHz 降低到50MHz? GPMC 时钟域中是否有预分频器?

此致、

Sylvain

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

    [引用 user="Sylvain Palmeri">为了符合 ADC 要求,我需要正确设置 RdAccessTime 和 PageBurstAccessTime 参数。 相关时间(以 ns 为单位)根据若干 GPMC_FCLK 周期进行计算。 但是、由于基频为266MHz、每个周期的最大周期与所花费的周期不匹配。[/QUERP]

    您是否考虑从 ADC 获取 BUSY 信号并连接到 AM57xx 的等待信号?

    [引用 user="Sylvain Palmeri">例如,RdAccessTime 的最大周期数为'31'。 在266MHz 时、周期延迟为3.75ns、因此31个周期为116.5ns。 请求的延迟应大于550ns。[/报价]

    我尝试将此延迟与 ADS8422数据表相匹配。  我找不到它。  你可以告诉我吗?

    [引用 user="Sylvain Palmeri"] GPMC 时钟域中是否有任何预分频器?

    请在技术参考手册中查找"TIMEPARANULARITY "和"GPMCFCLKDIVIDer"。  简而言之、如果您最大程度地利用这两个参数、则可以在 GPMC_FCLK 上针对这些参数实现有效的/8 (33.25MHz)。

    编辑2021年2月10日:抱歉、我误操作了 GPMCFCLKDIVIDER。  这主要应用于从 GPMC_FCLK 派生的 GPMC_CLK 信号的速度。  它不会根据需要对所有时序进行分频。  只有 TMIAPARANULARITY 才会这样做。

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

    Brad、您好!

    感谢您的反馈。

    我同意参数"TIMEPARAGRANULARITY "、因为页面模式连续数据最大访问时间由以下公式定义: PageBurstAccessTime×(TimeParaGranularity + 1)。

    但公式中未包含"GPMCFCLKDIVIDER"。 对于我来说、除了我错了、这个参数允许同步器件的 GPMC_CLK 输出被偏离、但是 GPMC_FCLK 不受影响。

    在同步模式下、时序取决于 GPMC_CLK 周期、但我无法使用该模式。

    我没有在 TRM 中的任何位置读取时序基于 GPMC_CLK 周期、因此即使我更改 GPMCFCLKDIVIDER 并且我 REACH 以减少 GPMC_CLK、我也看不出它如何帮助增加  

    RdAccessTime...

    我忘记了在 ADC 前面使用多路复用 器、最大转换时间为150ns、因此即使 BUSY 信号连接到 WAIT 输入、也需要等待150ns 才能启动新的转换。 这会影响应降低至2.5MHz 的采样率、第一个采样的 RdAccessTime 参数以及 GPMC 模块同步后的 PageBurstAccessTime、以确保在 BUSY 信号为高电平时下一个地址切换。

    GPMC EDMA 读取是异步的。 最坏的情况是当 ADC 的 ACQ 模式结束时(红线)、ADC 输入(ADCIN)准备好进行采样。 因此、我需要等待下一个 ACQ 并保持地址不变、直到下一个 ACQ (在 BUSY 信号为高电平期间)。

    对于下一个 ACQ、由于转换时间延迟、当 BUSY 信号为高电平时、我需要释放地址输出。 地址将自动保持不变(破折号线)、直到繁忙变为低电平。

    此致、

    Sylvain

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

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

    Sylvain、

    抱歉、我没有仔细阅读您的回答、因为我看到您将我的回答标记为"已验证"。  正确的做法是、我在 GPMCFCLKDIVIDER 上犯了个错误。  我认为、您应该能够回到我之前的回答并"解析"它。  无论如何、让我们继续这里的讨论。  我只删除其他帖子是否正常?

    该多路复用器会产生很多问题!  我正在尝试考虑一些解决方案...

    你可以减慢所有的时钟速度、使 GPMC 变慢、但这会影响系统范围、所以我不喜欢这个解决方案。

    使用一些 GPIO 作为多路复用器选择器的作用是什么。  然后、您可以调整 GPIO、然后读取数据。  这样、多路复用器将超出 GPMC 时序。

    您可能会将 ICSS PRU 代码写入此接口的位 bang。  不过、引脚可能会很紧。  如果数据转换器支持8位模式、则该模式可能是一个选项。

    此致、
    Brad

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

    Brad、您好!

    感谢您的回复。 我很高兴再次见到你!

    [引用 user="Brad Griffies">您应该可以返回到我之前的回复并"取消解析"、我认为。  无论如何、让我们继续这里的讨论。  如果我只删除其他帖子、是否正常?

    我尝试了许多选项将消息标记为"未解析"、但没有成功。 我不知道如何切换回、但我们可以在此处继续、并删除另一个帖子、以确保正确。

    是的! 这款多路复用器在我脖子上的位置绝对是一个毫石、因为我花时间尽可能快地找到一个 ADC、当我深入了解全局功能时、结果不如预期的好。 但是、我的目标是验证功能、并且能够首次从 ADC 捕获信号。 ^^、我将优化计时、并确保找到更快的多路复用器 Δ Σ

    好的...

    [引用 user="Brad Griffies">1. 您可以减慢所有时钟速度以使 GPMC 变慢、但这将涉及系统范围、因此我不喜欢该解决方案。

    我不会触摸 L3时钟域、因为我不知道它可能产生什么副作用、以及它可能会影响到哪个其他模块。

    [引用用户="Brad Griffies">2. 将一些 GPIO 用作多路复用器选择器。  然后、您可以调整 GPIO、然后读取数据。  这样、多路复用器将超出 GPMC 时序。[/QUERP]

    这是我第一次关注、但 GPIO 在200ns 内切换。 我想更改 busty 信号上升沿上的多路复用器地址。 150ns 的转换时间本来是透明的、因为它会在 BUSY 信号的高电平状态期间花费。

    但轮询总线信号需要200ns、切换 IO 需要200ns、并且在最大225ns 的转换期间、BUSY 保持高电平 这是不兼容的。 这就是我想使用 DMA 执行转换的原因。

    [引用用户="Brad Griffies">3. 您可能会将 ICSS PRU 代码写入此接口的位 bang。  不过、引脚可能会很紧。  如果数据转换器支持8位模式、则该模式可能是一个选项。[/quot]

    我在一些帖子中看到了这个选项、但我不知道这个解决方案会导致什么:控制由 DSP 实现。 如果数据由另一个内核进行采样、我认为从 PRU 传输数据将会面临一定的延迟。 我对 PRU 设备(新 RTOS 项目...)并不是很熟悉。 因此、我担心项目延迟太多。

    此致、

    Sylvain。

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

    [引用 user="Sylvain Palmeri">是的! 这款多路复用器在我脖子上的位置绝对是一个毫石、因为我需要尽可能快地找到一个 ADC、当我更深入地了解全局功能时、结果不如预期的好。[/引述]

    您正在采样多少个 ADC 通道?  我与其他客户在使用高速 ADC 接口方面遇到了困难。  到目前为止、我发现的最佳选择是 ADC3660。  您可以以3.125MSPS 的速率将两个通道接入 McASP (即、两个通道之间的总计6.25MSPS)。  特定的 ADC 过采样、以便您实际上可以从更高的采样率开始、并通过抽取提高 SNR。  这也有助于降低抗混叠滤波器的成本。

    是否可以选择这样的选项?

    [引用 user="Sylvain Palmeri"]我不会触摸 L3时钟域,因为我不知道它可能产生什么样的副作用

    我同意这不是一个非常理想的解决方案。

    [引用 user="Sylvain Palmeri">这是我第一次关注、但 GPIO 在200ns 内切换。 我想更改 busty 信号上升沿上的多路复用器地址。 150ns 的转换时间本来是透明的、因为它会在繁忙信号的高电平状态下花费。[/引述]

    刚刚吃了一个 epiphany!  这是 GPIO 建议和 PRU 建议的组合。  如果您在 PRU 上编写了一些超级简单的代码、只轮询该 BUSY 引脚、然后使 GPIO 输出递增、该怎么办?  我在这里假设您只是按顺序循环输入。  希望这是对的。  有什么东西可以用吗?  这将避免 PRU 和 DSP 之间数据传输的一些复杂性、但仍允许您控制多路复用器而不影响 GPMC 时序。

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

    电源  如果您不知道 PRU 具有访问时间为5ns 的本地 I/O、即可以看到使用 CPU 访问 GPIO 外设所需的访问时间比~200ns 大有改进。   

    另一件事...  我希望您计划使用 DMA 从 GPMC 执行这些读取操作。  如果您使用的是 CPU、您将看到访问之间的间隙。

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

    我恐怕没有其他选择、因为我已经开发了用于测试 ADS8422的电路板。 它完全符合我的需求。 该板类似于用于连接主板的评估板、包括来自 AM5749的并行端口输出(GPMC)。 验证后、该 ADC 将集成到下一个原型中。

    我正在考虑使用 DSP 和 PRU 拆分函数的想法。 GPMC 的地址引脚与 PRU GPIO 不共享、这一点我不知道。 但这是一个很好的主意。 我将检查修改是否简单。

    为了回答您的 PS 问题、我看到了比较 ARM 和 PRU 切换 I/O 的基准测试 5 ns 超出了我的预期! 关于 DMA、我已经测试了 GPMC 与 FPGA 评估板的通信。 我在使用和不使用 DMA 的情况下进行了测试、我同意、DMA 无疑是交换数据的最有效方式。 这就是我要使用它的原因、因此当 DMA 传输完成时、相关中断将启动控制、所有操作都将自动完成。

    很遗憾、无法调整时间... 这将是不修改我刚刚启动制造^^的电路板的最佳方法

    此致、

    Sylvain

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

    Sylvain、

    我快速查看了是否有任何 GPMC 地址引脚与 PRU 引脚重叠。  它看起来不像它。  是否有任何方法可以修改您的电路板以使其正常工作?  我假设您需要旋转电路板-希望这是可能的。

    我只是想到了另一个想法。  这是公认的半烘焙、但如果可能、我想帮助您避免旋转电路板...  我想知道是否可以执行某种类型的"虚拟访问"来使多路复用器进入正确状态。  例如、它甚至不必是虚拟读取。  它可以是假写入。  我不记得在访问之间地址引脚会发生什么情况。  我希望他们能够保持之前的值、以最大限度地减少不必要的切换。  在这种情况下、如果 GPMC 上唯一的一个器件是数据转换器、也许您可以先执行虚拟写入、然后执行虚拟读取来获取数据。

    此致、
    Brad

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

    Brad、您好!

    假写入不会有将 GPMC 数据置于输出模式的风险、并且会与 ADC 输出发生冲突? 并增加 CPU 时间以手动管理所有这些内容。

    修改很小、我只需从已用于以太网的 PRU_ICSS 获取 IO。 我可以使用一些22欧姆的电阻器来获取 GPO。 我认为这是获得 ADC 性能的最佳方法。 我已经重新绘制了图表、到目前为止一切都是正确的。

    非常感谢您抽出宝贵的时间参加 Brad。 如果您需要、我可以向您提供我的进度更新、但我不知道是否会通知您帖子是否已关闭。

    此致、

    Sylvain。    

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

    Sylvain、

    [引用 user="Sylvain Palmeri"]假写入不会使 GPMC 数据处于输出模式并与 ADC 输出冲突?

    当未选择总线的芯片选择时、我希望数据转换器不会驱动总线、但这可能不是一个有效的假设。  我还假设了访问之间 GPMC 地址引脚的行为。  我们需要确认所有这些项目、然后再继续使用此选项。

    [引用 user="Sylvain Palmeri">修改不大,我只需从已用于以太网的 PRU_ICSS 获取 IO。 我可以使用一些22欧姆的电阻器来获取 GPO。 我认为这是获得 ADC 性能的最佳方法。 我已经重新绘制了图表、到目前为止所有内容都是正确的。

    从性能角度来看、PRU 方法会更好、因此如果您已经找到了使用该方法的方法、我认为这是最佳选择。

    您能告诉我您打算用于 PRU 信号的精确焊球编号和多路复用器模式吗?  我想简单地检查一下您在做什么。 PRU 引脚和模式很多、因此我不希望出现任何混淆。

    [引用 user="Sylvain Palmeri">非常感谢您抽出宝贵的时间参加 Brad。 如果您需要、我可以向您提供我的进度更新、但我不知道您是否会收到关闭帖子的通知。

    如果您在此处做出响应、我仍会收到通知。  但是、此帖子最终将锁定、您将无法作出响应。  我不记得确切的时间范围。

    我很高兴我们能够找到前进的道路!  祝您在项目中好运!  周末愉快!

    此致、
    Brad

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

    Brad、您好!

    我发现了另一个避免使用 PRU 的想法(并尽量减少修改)。 通过将 CNVST 信号连接到 GPMC_WAIT (而不是 ADC 的忙线)、影响如下:

    1:CNVST 信号由 EPWM2产生、因此我可以使用周期事件对 GPMC 读操作进行三次采样。 GPMC 读取将与转换同步。 这是一个很大的改进。

    2.地址将在前一次转换期间递增,因此多路复用器延迟将是透明的。

    这允许获得 ADC 性能(4MHz)

    唯一不方便的是我需要在一开始执行的虚拟转换、但关于性能的增益、我可以解决这个问题!

    下图更新了图:

    请告诉我您的看法是什么?

    此致、

    Sylvain。

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

    Sylvain、

    聪明的想法!  我的一个潜在问题是从 PWM DMA 事件到 GPMC 读取的延迟。  事件从 PWM 传播到 DMA 将会有一定的延迟、然后是延迟、由 DMA 处理并排队、然后是该访问进入 GPMC 的互连延迟、最后是进入外部访问。

    在相关的注释中、我建议您将其中一个 EDMA 队列专用于读取 GPMC。  这些传输将被长时间阻止、因此您不希望有一组其他传输在后面排队。  同样、您不希望时序敏感型 GPMC 访问在任何其他数据传输后排队。

    此致、
    Brad

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

    Brad、您好!

    我同意,这些拖延必须具有特点。 优点是它们位于等待状态、因此我可能需要调整页面猝发和页面访问时间。 我希望不会有不好的惊喜。

    关于 DMA、我希望在 DMA 传输期间禁用 IRQ。 您认为 DMA 参数有什么更有效的东西吗? 老实说、我对 DMA 流程不太熟悉。 我找到了一种使其工作的方法、基于一些示例。 因此、可能需要了解一些有用的信息来改进我使用它的方式。   

    此致、

    Sylvain。

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

    [引用 user="Sylvain Palmeri">关于 DMA,我希望在 DMA 传输期间禁用 IRQ。 您认为 DMA 参数有什么更有效的东西吗? [/报价]

    AM57xx 中有3个不同的 EDMA 控制器、即两个 DSP 子系统中的每一个以及一个芯片级控制器。  我假设您将使用 DSP 的本地 EDMA 控制器。  在给定的 EDMA 子系统中、有一个称为"通道控制器"和"传输控制器"的东西。  从较高层次看、通道控制器为您提供64个虚拟通道。  另一方面、传输控制器提供物理通道。  DSP EDMA 有两个传输控制器、这意味着两个传输可以在任何时候物理进行。  我的重点是确保您同时使用这两个传输控制器、至少如果您将 EDMA 用于其他任何用途。  如果这是唯一的 DMA 传输、那么您不必担心这一点。

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

    Brad、您好!

    只是我的进度的更新。 我还没有 ADC 板、但可以测试 GPMC 设置。

    同步器信号(绿色)在上升沿复位 EPWM2 (CNVST 黄色)、并在下一个 CNVST 下降沿启动 DMA 传输(蓝色信号 GPMC_CS0)。 红色信号显示 WAIT1信号(=CNVST)变为低电平后的地址切换(GPMC_A0)。 它似乎按预期工作:)

    您对 IRQ 延迟的怀疑是合理的。 因此、在 CNVST 下降沿和 CS 变为低电平之间需要一些延迟。 在这里、我展示了多路复用器所需的150ns、以确保 ADC 输入在 ADC 的采集模式之前存在。 为了保持一定的裕度、我将采样频率降至3.3MHz。

    此致、

    Sylvain。

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

    感谢您的更新。  这一切看起来都令人鼓舞。

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

    Brad、您好!

    只是一次更新。 我终于通过 EDMA 实现了 GPMC 读取正常工作:

    (以蓝色表示多路复用器输出)

    再次感谢您的支持:)

    此致、

    Sylvain。