一度因为DDR3的IP核使用而发狂。

后来因为解决问题,得一感悟。后面此贴会完整讲述ddr3 ip的使用。(XILINX K7)

感悟:对于有供应商支持的产品,遇到问题找官方的流程。按照官方的指导进行操作。由于使用软件版本不同可能语法之间有出入或着不兼容,此时常识寻找下载版本最接近的官方Guide来操作,你就会发现解决那些莫名其妙问题的突破点。

问题:

1.综合

a.问题:Unable to set attribute "DQS_AUTO_RECAL" with value "0" on instance <phaser_in_gen.phaser_in> of block <PHASER_IN_PHY>. This property is already defined with value "1" on the block definition by a VHDL generic or a Verilog parameter. Apply the desired value by overriding the default VHDL generic or Verilog parameter. Using an attribute is not allowed.

定位到代码:

generate

if ( PO_DATA_CTL == "TRUE" || ((RCLK_SELECT_LANE==ABCD) && (CKE_ODT_AUX =="TRUE")))  begin : phaser_in_gen

//(* DQS_AUTO_RECAL = DQS_AUTO_RECAL, DQS_FIND_PATTERN = DQS_FIND_PATTERN *)

PHASER_IN_PHY #(...)

phaser_in(...)

else

...

根据code中,if语句里面的几个表达式真值最终括号中真值是0,因此不执行if转而执行else。因此这个部分就用不上了,所以code如何就不管。虽不知(*...*)是何语法,但问题可能出在这里。因此注释掉,重新综合。就可以了。

2.USE_DM_PORT=1 or =0.1代表使能DM(数据掩码)功能。(可以用,原因有待探究)

即写入的数据是否有一部分需要被屏蔽掉。如果在IP核生成时选择checked dm,一般生成的代码中USE_DM_PORT会为1,这样就会正确生成bit文件。如果手动改为0(同在ip核生成页面选择not checked dm一样),就会导致实现过程失败。那么纠结的问题在于:仿真时USE_DM_PORT设为0,可以得到预期的结果(写了数,然后读,读到的数就是写进去的数)。而设为1时,结果就是错误的。读出来的数并非写进去的数,而且看到仿真图中,写数据时,dm线是X(不定值)。dm为1则屏蔽数据。但是后来将USE_DM_PORT设为1,并下板运行。发现读到的数据通过串口发回来,恰好是写进去的数据。

3.另一个在map过程中出现的问题。

是关于双向数据引脚的约束问题。通过官方的solution解决,“CONFIG DCI_CASCADE = "33 32 34";”具体后面再加上来。

现在达到的效果:连续写入8次数据,然后连续读出来,数据正确。继续做一下只取其中几次的数据...看是否正确2015.11.15?

4.要读的数据相应的地址(已查明)—查看内存颗粒相应手册。关于Burst Type的解说。

引用其中一句话:The ordering of accesses within a burst is determined by the burst length, the burst type, and the starting column address。

在一个突发传输中访问数据的顺序取决于突发长度、类型及开始的列地址。

真相如下图。


突发长度BL=8.本实例中采用的ddr3,是一个rank,数据位宽64bit,那么进行一次数据突发传输,将传送8*64bit的数据。如果进行8次这样的突发传输——

写:他们的列地址依次是10‘h0、10'h8、10'h10、10'h18、10'h20、10'h28、10'h30、10'h38.等

读:他们的列地址依次是10‘h0、10'h8、10'h10、10'h18、10'h20、10'h28、10'h30、10'h38.等

问题现象:

读地址是上面写的地址时,数据读取正确。假如赋予的读地址是10'h3、10'h5等,那么读出来的数据就不是我们以为的10'h3-10'ha地址对应的数据。

转载:http://blog.csdn.net/dawnhan/article/details/49783535

Xilinx DDR3 IP核使用问题汇总(持续更新)和感悟的更多相关文章

  1. 从Xilinx FFT IP核到OFDM

    笔者在校的科研任务,需要用FPGA搭建OFDM通信系统,而OFDM的核心即是IFFT和FFT运算,因此本文通过Xilinx FFT IP核的使用总结给大家开个头,详细内容可查看官方文档PG109.关于 ...

  2. PCIE xilinx v5 IP核使用前的研究

    外带一个月前啃的一个星期,加本星期心无旁骛,啃出些心得,广惠后人.但愿有用. trn信号是数据链路层的信号 TLP包是数据链路层传给transaction层的包 解包需要一个transaction的协 ...

  3. 《WCF技术剖析》博文系列汇总[持续更新中]

    原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...

  4. 中国.NET:各地微软技术俱乐部汇总(持续更新中...)

    中国.NET:各地微软技术俱乐部汇总(持续更新中...)   本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by ​史记微软. ...

  5. redis日常使用汇总--持续更新

    redis日常使用汇总--持续更新 工作中有较多用到redis的场景,尤其是触及性能优化的方面,传统的缓存策略在处理持久化和多服务间数据共享的问题总是不尽人意,此时引入redis,但redis是单线程 ...

  6. 跟我学SpringCloud | 终篇:文章汇总(持续更新)

    SpringCloud系列教程 | 终篇:文章汇总(持续更新) 我为什么这些文章?一是巩固自己的知识,二是希望有更加开放和与人分享的心态,三是接受各位大神的批评指教,有任何问题可以联系我: inwsy ...

  7. xilinx DMA IP核(一) —— loop测试 代码注释

    本篇笔记中的代码来自:米联科技的教程“第三季第一篇的DMA_LOOP环路测试” 硬件的连接如下图所示: 图:DMA Loop Block Design 橘色的线就是DMA加FIFO组成的一个LOOP循 ...

  8. 优步UBER司机全国各地最新奖励政策汇总(持续更新...)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://didi-uber.com/archiv ...

  9. 痞子衡嵌入式:史上最强i.MX RT学习资源汇总(持续更新中...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MX RT学习资源. 类别 资源 简介 官方汇总 i.MXRT产品主页 恩智浦官方i.MXRT产品主页,最权威的资料都在这里,参考手 ...

随机推荐

  1. 【状压DP】旅行商问题

    给定一张带权有向图,要求从顶点0出发,经过每个结点恰好一次后再返回0,求边权和的最小值. 2<=n<=15 0<=d(i,j)<=1000 样例 5 80 1 30 3 41 ...

  2. CSS box-flex属性,然后弹性盒子模型简介(转)

    一.淡淡的开头语 昨天趁着不想工作的时间间隙闲逛24ways,在My CSS Wish List一文中,见到了个新鲜的CSS属性,就是题目中的box-flex,以前没有见过,顿生疑惑,不知是骡子还是马 ...

  3. .NET反编译

    http://www.cnblogs.com/powertoolsteam/archive/2011/01/05/1926066.html

  4. 使用hsdis查看jit生成的汇编代码

     http://blog.csdn.net/unei66/article/details/26477629 JVM 有 HotSpot引擎可以对热代码路径进行有效的 JIT优化,大幅度提升计算密集代码 ...

  5. Quartz 2.3 动态添加、修改和删除定时任务

    下面直接上代码: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qu ...

  6. UI控件---UIWebView

    UIWebView是内置浏览器控件,可以用来浏览网页,文档等,今天就试着做一个简易的浏览器! 定义url的初始化方法和返回,前进,刷新三个方法,实现UIWebViewDelegate协议 @inter ...

  7. 【spring data jpa】jpa实现update操作 字段有值就更新,没值就用原来的

    示例代码如下: /** *复杂JPA操作 使用@Query()自定义sql语句 根据业务id UId去更新整个实体 * 删除和更新操作,需要@Modifying和@Transactional注解的支持 ...

  8. Microsoft office(1)分页符和分节符

    Microsoft office下的页面布局中的分页符和分节符的区别: 分页符:标记一页的终止并开始下一页的点 分节符:插入分节符并在下一页开始新节 一般情况下,分节符在分页符外围,分节符一般是各种格 ...

  9. Kubernetes环境下调整WebLogic JVM基本参数

    基于Kubernetes启动WebLogic后,发现JVM的最大heap size一直在700多M左右,通过 kubectl logs 察看pod启动状态,发现日志中并没有-Xms和-Xmx参数.日志 ...

  10. Zabbix的SNMPTrap监控配置

    SNMPTrap监控主要用于设备发生故障时的主动通知的监控.以下简单记录下Zabbix的SNMPTrap的配置方法. 一.SNMPTrap监控的处理流程说明 1.监控对象发送SNMPTrap信息到sn ...