修改时间 08-02-2019 10:04 AM
这个问题困扰了我很久,8路写ddr,1路读ddr 链接到axi interconnector 上
Block design
器件为7Z035, MIG 为64bit 800M,已经做了异步时钟处理。
写为64bit * 200M * 8ch, 读为256bit * 200M * 1ch,Mig 为 512bit * 200M,interconnector slave 通道添加了 packet fifo。
上电后正常运行,几个小时(可能20min~20hour)ddr读写出现问题。
通过ila 发现 write ddr 数据没有问题,但是ila查看读取同一地址 数据不同(已经检查过,期间没有其他数据写入)。
错误数据:1f1e1d1c 5b5a5958 17161514 53525150 0f0e0d0c 4b4a4948 07060504 43424140
正确数据:1f1e1d1c 1b1a1918 17161514 13121110 0f0e0d0c 0b0a0908 07060504 03020100
可以发现数据低32bit 的每个byte的第7bit翻转。
此时复位mig 的 sresetn(axi接口复位信号),数据依然错误(每次读取都有错误),一旦复位了sys_rst,读数据恢复正常。lian
之前与xilinx 的工作人员联系过,使用Example design做了一下window margin check,还不理解数据的含义.
window margin check
想问问大家,又没有什么思路,能确定问题。通过example design 正常运行1天也没啥毛病。附件为mig 的xci文件。
修改时间 08-02-2019 02:39 PM
你跑的window check是按照ug586来做的“automated margin check”吗?每个DDR单独跑example design的时候有没有数据错误?问题发生在多块板上吗?DDR频率跑多少?