赛灵思
直播中

王文雨

7年用户 211经验值
私信 关注
[问答]

怎么在zedboard上测试DDR读写?

我想在zedboard上测试DDR读/写。
zedboard上的DDR大小为512M。
根据UG585,分配给DDR的地址是0x00100000到0x3fffffff,即1023M。
我的设计如下:
1.从PL侧写入32位数据到地址0x00100000-0x3fffffff。
2.写入操作完成后,开始从PL侧读取地址0x00100000-0x3fffffff中的数据。
将从DDR读取的数据与写入DDR的数据进行比较。
结果如下:
1.从0x30000000-0x3fffffff读取的数据是正确的
2.从0x20000000-0x20080000读取的数据是正确的
3.从其他地址读取的数据在高5位中有一些错误的位
所以我想知道如何为512M DDR选择合适的地址。
此外,由于我在PS中使用了DDR控制器,我不确定PS中的代码是否会占用某些DDR地址。
有人能够解决我的问题吗?
谢谢。
我是FPGA的新手。
但是我知道如果我努力工作,一切都会好的。

回帖(6)

陈苏文

2019-10-22 08:43:21
@huhanvictoryyou可能正在以裸机进行这些测试,在这种情况下,PS&
PL指代相同的ddr位置是相同的。
您的问题很可能与缓存问题有关。
您需要在从PS写入之前刷新缓存,然后PL才能读取它,并且您需要在从PL写入之前使缓存无效,然后PS才能读取它。
这假设您使用的是其中一个HPx端口而不是ACP。
您可以使用以下功能:
Xil_DCacheFlush和Xil_DCacheInvalidate
- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。
在原帖中查看解决方案
举报

陈苏文

2019-10-22 08:52:27
@huhanvictoryyou可能正在以裸机进行这些测试,在这种情况下,PS&
PL指代相同的ddr位置是相同的。
您的问题很可能与缓存问题有关。
您需要在从PS写入之前刷新缓存,然后PL才能读取它,并且您需要在从PL写入之前使缓存无效,然后PS才能读取它。
这假设您使用的是其中一个HPx端口而不是ACP。
您可以使用以下功能:
Xil_DCacheFlush和Xil_DCacheInvalidate
- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。
举报

王聪

2019-10-22 08:59:00
亲爱的@huhanvictory,请帮助我理解如何在超出威廉希尔官方网站 板可用RAM空间的地址空间进行写入和读取?
谢谢!
举报

常小丽

2019-10-22 09:15:34
首先,需要自定义IP来控制读写地址。
(打开vivado,工具 - 创建和打包新IP - 创建一个新的AXI4外设)。然后你可以使用axi_mem_interconnect将地址映射到处理系统中的ddr。
希望它对你有所帮助。
我是FPGA的新手。
但是我知道如果我努力工作,一切都会好的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分