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

How can I investigate failing calibration on Spartan 6 MIG DDR

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

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

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

我相当确信这是一个时间问题,可能与 DQS 居中有关。但是因为在启用时我无法完成校准,所以我没有连续的 DQS 调整。所以我假设它可以在禁用校准的情况下工作,直到时间漂移。

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

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

谢谢

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

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

  1. 就这块板子吗?还是所有人都在这样做?你检查过了吗?如果它是一块板,并且 RAM 是 BGA 样式,那么它可能是一个糟糕的工作。将你的手指轻轻向下推到芯片上,看看你是否得到不同的结果......之后变得更加以硬件为中心
  2. 您在自定义电路板上 运行 的 FPGA 图像是否能够在您的开发套件上工作?很多时候,我知道这是不切实际的,但我想我会问,因为它排除了您在 devkit 上使用的图像具有 FPGA 限制,而您在自定义图像中没有。

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

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