0

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

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

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

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

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

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

谢谢

4

1 回答 1

2

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

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

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

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

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