如何调查 Spartan 6 MIG DDR 校准失败

Posted

技术标签:

【中文标题】如何调查 Spartan 6 MIG DDR 校准失败【英文标题】:How can I investigate failing calibration on Spartan 6 MIG DDR 【发布时间】:2016-08-04 14:21:25 【问题描述】:

我在某些定制硬件上遇到了 Spartan 6 (XC6SLX16-2CSG225I) 和 DDR (IS43R86400D) 内存接口的问题。我在 SP601 开发板上试过,一切都按预期工作。

使用示例项目,当我启用 soft_calibration 时,它永远不会完成并且 calib_done 保持低电平。

如果我禁用校准,我可以在我所见的范围内完美地写入内存。但是,当我尝试从中读取数据时,在赛灵思内存控制器停止执行命令之前,我会收到可变数量的成功读取命令。一旦发生这种情况,命令 fifo 就会填满并保持满状态。成功命令的数量从 8 到 300 不等。

我相当确信这是一个时间问题,可能与 DQS 居中有关。但是因为启用后我无法完成校准,所以我没有连续的 DQS Tuning。所以我假设它在时间漂移之前禁用校准。

是否有任何明显的地方我应该寻找校准失败的原因?

我知道这不是一个典型的堆栈溢出问题,所以如果这是一个不合适的地方,那么我会退出。

谢谢

【问题讨论】:

这个问题更合适的地方是Electrical Engineering Stack Exchange。我们确实收到了一些关于 Stack Overflow 的 HDL 问题,但主要是关于逻辑的问题,而不是像这个问题这样的低级硬件细节。 好的,很高兴知道。非常感谢。 【参考方案1】:

不幸的是,校准过程只是在内部调整抽头的同时尝试连续写入和读取内容。它找到成功的一端,然后转向另一个方向并确定成功的点击,然后最终确定在中间的某个位置。

这可能也更以硬件为中心,所以我发布我的想法并让其他人移动线程。

    只有这个板子吗?还是他们所有人都在这样做?你检查过吗?如果它是一块板,并且 RAM 是 BGA 风格,那可能是一份糟糕的士兵工作。将您的手指轻轻向下按在芯片上,看看您是否会得到不同的结果......之后会变得更加以硬件为中心

    您在定制板上运行的 FPGA 映像是否能够在您的开发套件上运行?很多时候,我知道这并不实用,但我想我会问,因为它排除了您在 devkit 上使用的图像具有您在自定义图像中没有得到的 FPGA 约束。

    检查走线的长度公差。应该有一个长度限制。正负 50 密耳之类的东西。没有人喜欢听到他们需要重新旋转电路板,但如果这些都出来了,那就说明了很多。

    信号完整性。你有没有把你的终端电阻放在那里,它们是正确的值吗?你不应该有一个有源探头吗? 您是否获得了正确的 DDR 内存。有时他们使用不同的速度等级,这可能会导致各种问题。 降低接口速度通常有助于第 4 项和第 5 项。因此,如果您只是想完成工作,您可能会要求使用时钟较慢的新 FPGA 映像。

【讨论】:

非常感谢您的详细回复。我调查了所有这些建议,没有一个是负责任的,但调查线显示硬件存在错误。板上的芯片选择被绑在高位而不是低位。一旦我解决了一切问题。

以上是关于如何调查 Spartan 6 MIG DDR 校准失败的主要内容,如果未能解决你的问题,请参考以下文章

v3学院 FPGA专家 带你玩转DDR3

DDR3时钟xilinx MIG

ddr3调试经验分享——KC705_MIG时钟清单

基于MIG IP核的DDR3控制器

基于MIG IP核的DDR3控制器

Xilinx 7系列例化MIG IP core DDR3读写