关于DDR3漏数据的问题
时间:10-02
整理:3721RD
点击:
大家好,DDR3中有个app_rdy信号,它在空闲的时候会时不时拉低,当拉低的时候就无法写入或读出数据。那么,我在连续写入或者读出一段数据的时候,应该如何保证数据全部写入或读出呢?大家有遇到这个问题吗?求大神指点
不会是他刷新信号把,如果你用的IP的话,我觉得IP里面应该会做个机制解决这种冲突
不过还是看文档把,我没用过你的IP,也许没解决这种冲突你就需要外部自己加
MIG IP里也有指令、数据的调度,当数据超过缓存深度时,肯定要向用户接口给出中断提示,比如说app_rdy拉低。在ddr用户接口空闲时,由于ddr3颗粒会有刷新等机制,此时也是需要暂停用户接口访问的。
xilinx没法保证你说的“连续全部数据的写入或读出”,因为core里的数据缓存fifo的深度是有限的,core本身也需要产生刷新指令等,所以没法保证app_rdy一直为高。需要你的用户逻辑去做仲裁和调度,去适配MIG core的时序。
一个好的控制器设计,是在明确你系统的传输带宽、延时等性能要求的前提下,自己设计好仲裁和调度控制,然后去适配ddr3控制器的用户接口时序。
是IP刷新这个信号,所以不知道该怎么解决。实测连续读写确实会在app_rdy拉低的时候漏数据
明白了。谢谢。
4,5楼讲得很清楚了,这个IP处理这种冲突的方式是加了缓存,这个办法处理的能力有限,你连续读写IP处理不了,所以给个rdy信号通知你一下,让你控制下读写速度。根据这个信号你外部写个处理逻辑。
自己加个RAM去做缓冲
