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.

[参考译文] AM3352:DDR 问题

Guru**** 2551110 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/603477/am3352-ddr-issue

器件型号:AM3352

我们的定制板(基于 BeagleBone Black)的第一个版本将 AM3352与单个 Micron MT41K256M16HA-125搭配使用、我们已成功将 U-Boot/SPL 和 Linux 移植到该平台。

第二个旋转使用单个 Micron MT41K256M16TW-107进行 BOM 修改、布局未更改。

我一直在尝试发现第二次旋转的 DDR 时序、很遗憾我看到 了"数据无处不在!" 此处所述的症状

我正在尝试将 RAM 配置为6-6-6 800MT/s @ 400MHz。 使用 MT41K256M16的数据表 、我得出了以下值:

存储器数据表符号 存储器数据表值 和功能
TCK 2.5. ns
TRP 15. ns
tRCD 15. ns
TWR 15. ns
趋势   37.5. ns
TRC 52.5 ns
tRRD 10. ns
tWTR 10. ns
TxP 3. TCK
tAOND 2. TCK
tXSNR 170 ns
tXSRD 512 TCK
tRTP 10. ns
tCKE 3. TCK
tRFC 160 ns

并通过 CAD:

参数
DDR 时钟频率 400 MHz
PHY_INOP_CLKOUT 1
布线长度(英寸)
字节0 字节1
DDR_CK 迹线 0.823 0.823
DDR_DQSx 跟踪 1.064 0.969
中间值(每字节通道)
WR DQS 7b. 7d
RD DQS 40 40
RD DQS 门 F6 F2
CCS 代码中使用的种子值
DATAx_PHY_RD DQS_SLAVE_RA比 40
DATAx_PHY_FIFO_WE_SLAVE_RA比 F4
DATAx_PHY_WR DQS_SLAVE_RA比 7C
寄存器值
CMDx_PHY_CTRL_SLAVE_RA比 100

GEL 文件:

//
//EMIF 参数
//********
// DDR3 400MHz 设置--需要修改

#define ALLOPP_DDR3_READ_DELAY_0x07 //RD_Latency =(CL + 2)-

1 //400MHz 4Gb 设备设置-需要修改
#define ALLOPP_DDR3_SDRAM_TIMIN1 0x0AAAE51B
#define ALLOPP_DDR3_SDRAM_TIMING2 0x24437FDA
#define ALLOPP_DDR3_SDRAM_TIMING3 0x000003FF #define ALLOPP_SDRAM_TRIGN2 0x24437FDA #define ALLOPP_CIVENDLE_TREMIRQ_TREMEND#define

#define #define #define AL61PP_C
//动态 ODT = 2 (RZQ/2)
//SDRAM 驱动器= 0 (RZQ/6)
//CWL = 0 (CAS 写入延迟= 5)
//CL = 4 (CAS 延迟= 6)
//ROWSIZE = 6 (15行位)
//pagesize = 2 (10列位)
#define ALLOPP_DDR3_REF_CTRL 0x00000C30 //400 * 7.8us = 0xC30
#define ALLOPP_DDR3_ZQ_CONFIG 0x50074BE4 

总结:

  1. 软件调平总是失败、全部为零
  2. "数据无处不在!" 查看具有持续刷新功能的0x8000000时

请提供建议。

编辑:随附 datasheet.e2e.ti.com/.../4Gb_5F00_DDR3L.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这实际上是相同的存储器。 您是否尝试过旧设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、原始设置是我第一次尝试的设置。 它们不适用于我们的修订版 B
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Stephen:

    我的问题是错误的!

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

    我发现刷新时序参数与数据表中的预期值不同

    对于4Gb、trfc 为104 CK = 260ns。 但您已将其设置为160ns。 相应的 tXSNR 应为270ns
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dwarakesh 注意到的是正确的。 请仔细检查您的时间安排。 计时寄存器设置应该是唯一的差异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢大家。 通过这些更改、数据更改似乎不太随机、但我仍然看到"全零"和"数据在任何地方更改"。

    我附加了一个5秒的动态 GIF 来显示我看到的内容。

    还有什么东西稍微有点偏吗?

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

    e2e.ti.com/.../AM335x_5F00_DDR_5F00_register_5F00_calc_5F00_tool-_2D00_-micron.xls

    e2e.ti.com/.../3718.RatioSeed_5F00_AM335x_5F00_boards.xls

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

    您能否尝试以下计时:(使用我在下面的帖子中的表格)

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

    谢谢、我已经尝试过这些计时。

    请参阅随附的 GIF、了解运行从器件比率搜索程序后的行为。 它似乎与以前类似?

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

    在 AM335x_DDR_register_calc_tool - micron.xls 中、您使用的是 DDR2的工作表、而不是 DD3的工作表。 我不确定会有什么区别。 但是、您可以通过输入正确的 DDR3表并进行检查来尝试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、我的... 感谢您注意到这位 Dwarakesh!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、这应该是正确的:

    e2e.ti.com/.../7384.AM335x_5F00_DDR_5F00_register_5F00_calc_5F00_tool-_2D00_-micron.xls

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

    不幸的是、我仍然看到同样的问题。

    谢谢您指出、Dwarakesh -我甚至没有注意到其他的工作表!

    ALLOPP_DDR3_SDRAM_时序 现在几乎与 Rev A 相同、事实上它们实际上在 Rev A 板上工作、但我必须使用不同的_PHY_constants:

    #这适用于修订版 A...
    #define CMD_PHY_CTRL_SLAVE_RA比 0x80
    #define CMD_PHY_INOP_CLKOUT 0x0
    
    #define DATA_PHY_RD_DQS_SLAVE_RA比0x39
    #define DATA_PHY_FIFO_WE_SLAVE_RA比0x97 //RD DQS 门
    #define DATA_PHY_WR_DQS_SLAVE_RA比0x41
    #define DATA_PHY_WR_DATA_SLAVE_RA比0x7B //写入数据
    
    #define ALLOPP_DDR3_READ_LAY_READ 0x07 //RD_Latency =(CL + 2)- 1
    
    #define ALLOPP_DDR3_SDRAM_TIMING1 0x0AAAD4DB
    #define ALLOPP_DDR3_SDRAM_TIMING2 0x266B7FDA
    #define ALLOPP_DDR3_C0_TIMING3 0x501F867F
    
    #define ALLOPP_DDR3_SDRAM_SDRAM_CNGRAM_0x5332配置
    

    我似乎无法使从器件比率程序返回除了零以外的任何值来返回 Rev B、即使我尝试 Rev A 种子值也是如此。 实际上、如果我这么做、那么内存浏览器也会显示所有零。

    那么、使用我们讨论过的内容...

    #这是我目前为止为修订版 B....提供的内容。
    #define CMD_PHY_CTRL_SLAVE_RA比 0x100
    #define CMD_PHY_INOP_CLKOUT 0x1
    
    #define DATA_PHY_RD_DQS_SLAVE_RA比0x40
    #define DATA_PHY_FIFO_WE_SLAVE_RA比0xF4 //RD DQS 门
    #define DATA_PHY_WR_DQS_SLAVE_RA比0x7C
    #define DATA_PHY_WR_DATA_SLAVE_RA比0x80 //写入数据#define ALLOPP_DDR3_READ
    
    延迟0x07 //RD_Latency =(CL + 2)- 1
    
    #define ALLOPP_DDR3_SDRAM_TIMING1 0x0AAAD4DB
    #define ALLOPP_DDR3_SDRAM_TIMING2 0x266B7FDA
    #define ALLOPP_DDR3_C0_TIMING3 0x501F843F
    
    #define ALLOPP_DDR3_SDRAM_SDRAM_CNGRAM_0x5332配置
    

    在上面、我仍然在内存浏览器中看到相同的"数据更改"。。。

    有一点我觉得奇怪的是、RatioSeed 电子表格中的种子值不起作用、不用于 Rev A、如果布局没有改变、我会认为这两个板之间的种子值是相同的? 当我最初为修订版 A 进行启动时、我刚刚使用了教程中的 BeagleBone Black 种子值、这些值有效。

    现在、当我尝试 Rev B 时、我已经尝试了 Rev A 中的种子值以及 RatioSeed 电子表格中提供的种子值。 如果我使用 Rev A SEED 值、我会在存储器浏览器中看到全为零、如果我使用 RatioSeed 电子表格值、那么我会看到数据根据之前发布的 GIF 发生变化。

    我现在处于亏损状态。 这是否是修订版 B 上阻抗匹配的问题? 或者我是否缺少了什么?

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

    您好!

    我们都犯了这个错误。 昨天我提到了错误的工作表:)。 Biser 是正确的回答者、因为他是硬件方面的专家、但根据我非常有限的知识、种子比率展板应填充您实际布局中的布线长度。 如果版本 A 和版本 B 之间的布局发生了变化、您可能需要提供正确的更改值、并且尝试使用各种其他电路板可能不起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经确认布局未发生变化、因此修订版 A 和 B 的布线长度相同
    因此、理论上、从器件比率值应相同。
    我知道 Biser 建议在修订版 A 上使用修订版 A 从动比时使用的时序寄存器值。
    这反过来又意味着相同的 GEL 文件应该适用于两个修订版本、并且原始时序实际上也应该适用于修订版本 B。
    从逻辑上讲、我认为这可能是某种类型的硬件问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stephen、很多时候、当软件调平算法返回零时、这是因为处理器不处于监控器模式。  我经常在 CCS 中看到这种情况、尤其是6.x 版和更高版本。  CCS 将在加载程序时将处理器置于用户模式。

    加载文件后,通过执行脚本 Script->default->AM335xStartState,确保处理器处于管理员模式,然后再执行软件调平算法。  您可以在 CCS 窗口的右下角检查处理器模式、如下所示

    此致、

    James

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

    James、您好、感谢您的建议、但似乎主管模式已正确激活、无需运行脚本。

    我已经上传了下面 CCS 会话的完整截屏视频(5MB 动态 GIF)、以防您发现其他内容? 在截屏视频中、我使用 SeedRatio 电子表格中的种子值、 虽然我在使用修订版 A 中的种子值时会看到相同的行为。如果我使用修订版 A 中的时序寄存器、或者像在截屏视频中一样使用 Biser 提供的时序寄存器、我也会看到相同的行为。 我还尝试了上述所有组合、效果相同。

    当我对 rev A 板执行完全相同的过程时、使用 rev A 计时寄存器或 Biser 提供的计时寄存器可以正确地进行调平(将 rev A 种子值输入 GEL 文件和控制台中)。

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

    Stephen、您能不能尝试将 Read_Latency 提高1。  如果仍然无法正常工作、请尝试2

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、感谢您迄今提供的帮助。 我只是想添加一些可能相关或可能不相关的内容。 详细信息中的时钟速度 Stpechen 通过 DDR 时钟频率400进行发送、但存储器速度为800 mghz。 这是问题吗? 数据移动速度太快?

    非常感谢

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

    Paul、这不应该是问题。  我们支持400MHz 的 DDR 时钟频率(即800m T/s)。  我们支持400MHz 运行的最低速度等级为 DDR-1600、这两款器件都满足要求。

    是否有 READ_DERA延迟 测试的结果?

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢大家的帮助和澄清。 我们的布局存在与 DDR_VREF 相关的问题。