首页 > 代码库 > ddr3调试经验分享(一)——KC705上的ddr3初始化不成功

ddr3调试经验分享(一)——KC705上的ddr3初始化不成功

  最近在玩KC705上的ddr3.开始信誓旦旦的说要自己写controller。

  于是开始读datasheet,在镁光的官网上弄了一个ddr3 的module的仿真模型,仿真读写有效的之后就屁颠屁颠的跑的群里问大家这个clock怎么匹配。然后才知道有PHY这个东西,不用PHY就玩ddr,秀逗了!

   下面的过程以及结论也许对于有些人也有些秀逗,但是对于我这个初玩ddr的人来说,它还真的卡了我一个星期了。

 

  先用MIG 玩通ddr3,再想着怎么玩MIG生成的PHY吧。

       一,按照XTP196上的步骤step by step 。文档上的vivado是2014版本,我的是2016稍微有点差异。感觉有差异就参考rdf0186-kc705-mig-c-2014-3这个官方例子中的top层进行修改。比如例子中当然没有说这LED灯的控制程序你需要copy一下这里的顶层。工程做完了,编译生成bit下载到板子,ddr初始化成功。

   二,自己按照XTP196上的MIG配置,再生成一个自己的project。然后用modelsim仿真一下发现ddr3初始化是成功的。自己加上一个简单的LED接口,并约束到管脚。生成bit后下板子 —— 初始化不成功

    2.1 对比example 中的xci与自己工程中的xci发现一模一样。

    2.2对比example中的top层和自己的top层,还是一模一样。

          初步认定是约束问题

 

        免费版的Diffuse 软件不支持xdc文件的对比,好吧,自己来。

    2.3 对比ddr的pin绑定管脚以及电平 ,还是一模一样。

        再对比剩下的部分,把example中的约束一点一点的删,每删除一次就重新生成bit下板子。最后终于发现了一个东西,打开它初始化就成功了,关闭它初始化就失败了。

        set_property DCI_CASCADE {32 34} [get_iobanks 33]。

  在UG586中对它是这么描述的

        技术分享

 

     是不是ddr的pin用到了bank33,32,34。所以需要这个约束呢?  

 

 

       没有具体去查,以后再补上吧

 

ddr3调试经验分享(一)——KC705上的ddr3初始化不成功