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。所以需要这个约束呢?  还是因为我在MIG中把这个钩子选上了所以才需要的。

 

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值