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 同步接口不支持突发长度8?

Guru**** 2465890 points
Other Parts Discussed in Thread: HALCOGEN, RM48L952

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638972/rm57l843-emif-synchronous-interface-doesn-t-support-burst-length-8

器件型号:RM57L843
主题中讨论的其他器件:HALCOGENRM48L952

背景简介:

  • RM57连接16位 SDRAM 的定制板(让我将其简称为 Board1)。
  • RM57的另一个定制板通过 EMIF 同步接口连接 FPGA。  (让我将其简称为 Board2)。

环境:

  • HALCOGEN 4.7.0
  • TI ARM 编译器16.9.4
  • CCS 7.3

EMIF 配置:

 

测试代码:

  • CODE_R32 -从 EMIF 地址读取32个字节。
    • void test_ldm32 (uint32_t addr){
      asm ("\tSTMFD sp!、{R3-R10}");
      asm ("\tLDMIA r0!、{R3-R10}");
      asm ("\tLDMFD sp!、{R3-R10}");
      } 
  • CODE_R16 -从 EMIF 地址读取16个字节。
    • void test_ldm16 (uint32_t addr){
      asm ("\tSTMFD sp!、{R3-R6}");
      asm ("\tLDMIA r0!、{R3-R6}");
      asm ("\tLDMFD sp!、{R3-R6}");
      } 
  • CODE_R8 -从 EMIF 地址读取8个字节。
    • void test_ldm8 (uint32_t addr){
      asm ("\tSTMFD sp!、{R3-R4}");
      asm ("\tLDMIA r0!、{R3-R4}");
      asm ("\tLDMFD sp!、{R3-R4}");
      } 
  • CODE_R4 -从 EMIF 地址读取4个字节。
    • void test_ldm4 (uint32_t addr){
      asm ("\tSTMFD sp!、{R3}");
      asm ("\tLDMIA r0!、{R3}");
      asm ("\tLDMFD sp!、{R3}");
      } 
  • CODE_W32 -向 EMIF 地址写入32个字节。
    • void test_STM32 (uint32_t addr){
      asm ("\tSTMFD sp!、{R3-R10}");
      asm ("\tSTMIA r0!、{R3-R10}");
      asm ("\tLDMFD sp!、{R3-R10}");
      } 
  • 上述所有测试代码均使用0x80000000作为输入参数。 因此地址必须与16个字节对齐。

问题详细信息:

  • Board1:为简单起见、使用示波器仅检测 EMIF_CLK 和 EMIF_nDQM[0]上的信号。
    • CODE_R32:
      • 正如我们所知、nDQM 信号用于选择突发读取事务中的有效字节。 我们可以看到有4组有效的 nDQM 信号。 每个组持续4个 CLK 周期、这意味着突发长度为4、而不是8。 然后总事务计数为4x4=16、因此32个字节、这正是预期值。
    • CODE_R16:
      • 我们可以看到、突发长度为4、总事务计数为4x2=8、因此为16字节。  
    • CODE_R8:遗憾的是没有屏幕截图。 突发长度为4、总传输计数为4、因此为8个字节。
    • CODE_R4:遗憾的是没有屏幕截图。 突发长度为2、总传输计数为2、因此为4个字节。
    • Code _W32:
      • 这与 CODE_R32的情况类似。
  • Board2;使用 FPGA 自动绘制信号图。
    • CODE_R32:
      • 我们可以看到、有2个突发读取组。 在每个突发组中、nDQM 持续4个 CLK 周期、Nwe 在某个点被拉低、这意味着发出突发终止信号。 然后、我可以确保突发读取提前终止。

问题:

  • 这个问题大大影响了 RAM 的 r/w 性能。 此问题是否有解决方法?
  • 我们有另一个使用 RM48L952的定制板、它通过 EMIF 同步接口连接 FPGA。 但 RM48工作正常、突发长度能够达到预期的8、而没有提早拉低 Nwe。 RM48和 RM57中的 EMIF 控制器看起来非常相似。 他们为什么有这种不同的行为?

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

    您好 Canfoderiskii、

    RM48和 RM57使用相似的 EMIF 模块、并且它们应该支持相同的突发大小。 我们将对此问题进行调查。

    您的电路板上使用了哪种 SDRAM? HDK 上使用的 SDRAM 是 IS42S16400F-7BL、SDRAM 时序参数以下列形式列出:

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

    您好、QJ Wang:

    我们使用的 SDRAM 是 MT48LC4M16A2P-6AIT:J、电气特性与 IS42S16400F-7BL 相似。
    此 SDRAM 芯片支持猝发长度8、甚至全页模式。

    根据 RM57 TRM、EMIF 始终将 SDRAM 配置为突发长度8。 因此、我不明白为什么会发生这个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、是否有任何更新的状态? 已经有一段时间了。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Canfoderiskii、

    很抱歉、我没有机会为电路板接线以进行 SDRAM 测试。

    实际上、我不理解您的说法:"每个组持续4个 CLK 周期、这意味着突发长度为4 "。

    每个 DQM (低电平)表示1个32位或16位事务。 每个 DQM 的时钟数意味着事务(读取或写入)需要4个时钟周期。 我将在明天进行测量。 很抱歉耽误你的回答。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、王。

    感谢你的答复。

    我只是说突发传输包含四个16位传输。 (RM57和 RM48都只支持16位数据宽度)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、王。

    是否有任何进展? 我们是否至少可以确保硅没有此类缺陷、而是由其他问题引起的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Canfoderiskii、

    我没有得到我们的 EMIF 专家的反馈。 我已经向我们的设计团队确认、EMIG 确实支持突发长度0f 8。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、非常感谢您的确认。

    这个问题可被视为回归、这会导致 EMIF 性能从 RM48降级。 我认为、作为一款较新的产品、RM57在各个方面都优于 RM48。