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.

[参考译文] TMS570LC4357:异步 EMIF 中的连续录波延迟

Guru**** 2457760 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176310/tms570lc4357-consecutive-writings-delay-in-async-emif

器件型号:TMS570LC4357

我´m 了异步 EMIF、并且观察到了一些关于写入使能信号的行为、这是我不理解的。

 

问题基本上是在连续的文章之间发现的。 WE (写入使能)信号生效之间的时间出奇的高(大约为450 nseg @ EMIF 时钟为50 MHz)、但也是可变的。

 

通常、我使用用于16位(也是 EMIF 接口配置的宽度)元素的循环的来传输数据。 处理器以100 MHz 的频率工作、因此我不会期望这种延迟会像上述循环的连续延迟。

for (i = 0; i < 12U; i++)

    {

        *(Destination + i) = *(Origin + i); //Destination and origin are memory pointers (Uint16_t*).

    }

另外值得一提的是、每4次传输我们的转换都非常短(标记为绿色)、与其他传输(标记为蓝色)相比非常短。

我们还试图使用连续的著作,而不进行任何修改…。

 

观察到的唯一一个似乎具有某种效果的东西是订购更大的事务(例如使用强制转换)、尽管 EMIF 总线的宽度仍然是16位。

    for (i = 0; i < 3U; i++)

    {

        *((uint64*) Destination + i) = *((uint64*) origin + i); //Destination and origin are memory pointers (Uint16_t*).

    }

在这种情况下,我们观察到,在前文提到的连续的我们断言之间有所减少。 观察到的这种减少通常分为四个事务块(每个16位)、然后是一个更大的事务(开始时除外、在"慢速"事务之前只有两个"快速"事务。

 

我猜这种行为可能与 EMIF 外设的内部 FIFO 有关、但我认为所提到的延迟非常高、并限制了接口的可能吞吐量。 事务之间的"缓慢"时间几乎与事务本身相同。

 

如果有人能就如何改善这方面的问题向我提供一些解释或指导,我会很感激:)

 

提前感谢。

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

    您好!

    对于16位数据写入、由于只有1个总线事务、因此在 CS 周期上只有一个我们进行脉冲输入。 对于32位数据写入、由于两个总线传输、在一个 CS 周期中有两个我们脉冲。  

    EMIF 异步接口可在正常模式或选择选通模式下运行。 在正常模式下、nCS 将在整个 EMIF 事务中处于活动状态。 在选择选通模式下、NCS 仅在选通时间期间激活。

    在正常模式下、nCS 在整个 EMIF 总线事务中处于活动状态。 例如、如果写入 EMIF 地址、则 NCS 在整个总线事务(16位写入)中处于活动状态、而 Nwe 在 NCS 处于活动状态时具有两个或三个脉冲。 这是修订版 A 器件中的错误。 但是、在选择选通模式下、NCS 仅在选通阶段有效、这意味着 NCS 实际上与 Nwe 同相激活。 当我们在正常模式下看到额外的 Nwe 脉冲时、我们还会在选择选通模式下看到额外的 nCS。

    此错误已在 RevB 和更高版本器件中修复。 在写入事务期间、额外的 Nwe 脉冲已被移除。 但是、除了消除额外的 W我们 脉冲之外、缩短有源 NCS 的额外持续时间还存在一些技术难题。 当切换至选择选通模式时、这些额外的 NCS 持续时间将保持为两个额外的 NCS 脉冲。 但是、当这些额外的 NCS 脉冲处于活动状态时、Nwe 和 NOE 不活动。 因此、从存储器访问支架点来看、这应该是可以的。 对存储器的所有写入和读取应使用有效的 Nwe 和 NOE 进行限定。

    对于读取、我们不仅能够去除额外的 NOE 脉冲、还能够缩短 nCS、从而提高 EMIF 性能/带宽。 因此、在读取期间、在正常模式或选择选通模式下都不会出现额外的 NOE 或 NCS 脉冲。

    这种额外的 CS 持续时间将降低吞吐量、但不会导致数据丢失。

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

    感谢  您的快速回答。

    我对额外脉冲有点敬畏、因为这些脉冲在我已经检查的 SOMO SysClicon 勘误表文档中公开。 但我不确定这些问题是否与我试图解释的问题有关。

    我认为我的问题可能与以下方面有关:  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/253032/rm48hdk-emif-read-delay-issue-in-between-two-consecutive-read-cycles

    具体而言、在"持续评论"中、您在其中发布了一个包含说明的链接(但链接现在似乎已断开)。

    但在该线程中、它是关于读取操作的、我的问题是关于写入操作的问题(在读取时、我可能会观察到类似的情况、我可以检查)。

    问题是写入之间的延迟、一方面非常长、另一方面不是恒定的。 在原始帖子中的图像中、可以看到绿色的"短"延迟和蓝色的"长"延迟。

    我已经尝试过正常模式、选通模式、优化 o2、o0、等待延长周期启用和禁用、但这些情况似乎对上述延迟没有任何影响。 唯一一件看起来修改这些延迟行为的事情是软件级事务的大小(总线宽度始终为16位)、正如我在第一个帖子中尝试解释的那样(如果不清楚、我可以尝试再次阐述)。

    希望这一解释能说明我想解释的内容。

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

    当把16位数据写入 EMIF 异步存储器时、1~3我们将生成脉冲。 有时它只产生一个我们脉冲、有时产生两个脉冲或三个脉冲。 这就是您看到交易之间我们高电平的不同持续时间的原因。

    对于32位或64位访问、在相同的 CS 周期内、两个16位写入之间没有额外的 WI 脉冲。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="186225" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1176310/tms570lc4357-consecutive-writings-delay-in-async-emif/4428207 #4428207"]

    具体而言、在"持续评论"中、您在其中发布了一个包含说明的链接(但链接现在似乎已断开)。

    [/报价]

    我认为链接的线程是 EMIF -周期之间的延迟。 该线程描述了 EMIF 中突发访问的影响。

    [使用 了如何查找断开的 e2e 链接的新位置 来查找断开的链接]

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

    非常感谢您的链接。 这似乎解释了我观察到的行为、尽管我未能通过将外部存储器区域设置为该线程中建议的"器件不可共享"来修改它。

    我观察到、通过使用具有64位元素的 DMA、可以大大缓解问题、正如此处所建议的那样。 问题是、在我正在工作的项目中、可能无法使用 DMA 方法。

    就在 DMA 方法的时序捕获对任何人都有用的情况下、DMA 方法的时序捕获是:

    现在、我们没有处于"高"状态的"如此长"脉冲。