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.

[参考译文] RM57L843:奇数 EMIF 异步时序行为

Guru**** 2461790 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638291/rm57l843-odd-emif-async-timing-behavior

器件型号:RM57L843

异步 EMIF 访问具有一些非常奇怪的行为。  

对于所有以下操作、我们在 CE2上运行、CE2CFG 值设置为0x00360230、总线时钟为96MHz

1)在8位配置芯片选择(设置/选通/保持设置为1/4/4)和96MHz 总线时钟上运行 writeb (strb)操作、得到以下图表(绿色:/CS、黄色:/WI)。 /CS 脉冲似乎跨越4个总线周期。 writel (str)操作所需的时间相同,但同时具有4个/we 周期。  

2)对于1/4设置、读取操作似乎具有正确的/CS 和/OE 周期(再次为绿色:/CS 黄色:/OE)、但背靠背传输存在巨大延迟。 正如您在本例中看到的、延迟时间大约是单个字节总线事务的两倍!

对于具有"紧密耦合存储器"的 RT MCU 而言、这都是令人惊讶 的、因为在跨总线(例如从高速 UART)拉高带宽时、这些延迟会很大。 我们是否缺少任何可以删除这些伪影的配置(写入时似乎始终是32位操作、读取时事务之间的较大延迟)?

谢谢

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

    您好 Brian、

    revA 器件存在"异步 EMIF 访问中的额外 WE/OE 脉冲"问题。 勘误表中列出了这一点:

    此问题已在 RevB 器件中得到修复。

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

    我们使用的是 RevB 器件。没有额外的/OE 或/WE 脉冲(正如您从示波器屏幕截图中看到的那样)。  感谢您的参考、但它不适用于此问题。

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

    当连接到一个8位异步存储器时、EMIF_BA[1]和 EMIF_BA[0]引脚提供字节地址的最低有效位。 它们应该被连接至内存芯片的 ADDR[1]和 ADDR[0]。

    您可以为 EMIF_CS2 (0x60000000)区域尝试不同的设置吗? 例如、使用器件模式或严格排序模式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 QJ、

    我不确定您的评论是如何适用的。 我们了解8位总线的寻址、这不是问题。 连接到 EMIF (在本例中为 UART)的器件运行正常。 我们的问题是_不_总线不工作、而是效率非常低。 对应具有60ns 总线周期的器件的读取需要260ns、而对应具有50ns 总线周期的器件的写入需要400ns。 这意味着总线利用率极低、总线上的 CPU 访问需要额外的时钟周期。

    我们已经将 MPU 中的这个区域映射到器件模式。 由于 Cortex-R5的"低中断延迟(lil)"特性、需要提前执行此操作、当发生器件中断时、该特性将放弃并重新发出读取操作以减少延迟。 对于 UART、这将导致 FIFO 数据在被放弃的读取时丢失。 严格排序模式会禁用此功能。

    我鼓励您重新阅读该问题。 简短的总结是

    - EMIF 上的读取操作在访问之间有一个巨大的延迟(175ns)、这与配置无关
    -写入操作似乎占用总线32位周期。 /we 信号循环正确次数、但/CE 脉冲远长于指定的配置。 示例 配置的8位 CECFG 上的 STRT 提供一个/WE 周期、但/CE 在4x 周期内保持有效。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很好奇、您是否尝试设置 EMIF 连接并重现此行为?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Brian、

    很抱歉耽误你的时间。 我尝试在异步 SRAM 上重现此问题。 我没有使内存板正常工作、稍后我将发布测试结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Brian、

    正如我提到过的、EMIF NOE/Nwe 上有一个错误、并且已在 RevB 器件上修复。 这是我在 RevB 器件上的测试结果。 它按预期工作。 我使用设置(7)、选通(63)和保持(7)的最大值。   

    在图中、通道1是 CS2、通道2是 NOE、通道3/4:nDQM0/1。  

    读取的字节:读取4次

    2.半字(16位)读取:读取4次

    3.阅读文字:阅读4次

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

    您好 Brian、

    在 RevA 器件中、从渐近存储器读取数据或向渐近存储器写入数据时有一个额外的 NOE 或 Nwe 脉冲。  

    1.使用 revA 器件将一个32位数据写入16位异步存储器。 插入一个额外的 Nwe 脉冲(第3个脉冲)、nCS 在第3个额外的 Nwe 脉冲时保持低电平。

    2.使用 RevB 芯片将32位数据写入16位异步存储器。 第三个 Nwe 脉冲消失、但 nCS 仍需要与修订版 A 中相同的时间。 向异步存储器写入数据所需的时间将比预期的要长。  

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

    感谢您获得此设置、以便您可以进行测试。 尽管总线看起来很简单、但我认为您关于"按预期工作"的说法并不完全准确。 我想您仍然忽略我提出的两点。  

    1) 1)通过使总线尽可能慢地运行、您已将读取问题的表现降到最低。 您的缩放级别使得很难准确看到、但它看起来/CS 失效时间(当/CS 变为高电平时、后续读取之间的时间)大约为150 - 200ns。 由于您的总线周期配置为大约800ns (8 + 64 + 8) x 10ns、150ns-200ns 的延迟看起来很小。 如果您回顾一下我的示例、该示例具有更短的设置、选通和保持时间、则相同的延迟比实际读取周期的长度长的两倍多。 我建议您将设置/选通/保持时间更改为最短的值、以突出我所说的问题。

    2) 2)您未运行相同的写入测试。  

    请注意、总线配置为16位。 将总线设置为8位将使写入问题更加明显。  

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

    泵?

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

    我进行了许多测量、并看到了大延迟(CS 高电平)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否会将外部存储器接口的延迟称为"预期行为"? 这极大地限制了该接口的可用性、因为它确实会减慢所连接外设的控制流程。 在未来的芯片中是否可以通过任何方式解决这一问题?