我们手中这块A7-50T的开发板上便集成了位宽为16bit,容量位256MB的DDR3-SDRAM。这次我们就着手测试一下开发板的DDR3存储。
测试内容为将DDR3扩展为MicroBlaze软核的存储空间。这样不但省掉我们用HDL语言去编辑整个用户时序,还可以在生成MicroBlaze软核时配置较小的片上缓存,而将较大的程序空间分配如DDR3内,从而可以节省出有限的片上缓存空间用于数据接口的缓存。
测试步骤:
1. 新建一个工程,在其内部新建一个Block Design,将我们需要的IP核加入到Block Design中,分别为UART核和MIG,新建完工程如图1。
![](http://www.openhw.org/data/image/6/317/DDR3_2.png)
2. 修改clk_wizard,增加一个输出clk_out2,如图2
![](http://www.openhw.org/data/image/3/85b/DDR3_3.png)
3. 修改MIG,修改系统时钟为no buffer如图3,分配sys_rst为MIG的复位信号,如图4
![](http://www.openhw.org/data/image/6/206/DDR3_4.png)
![](http://www.openhw.org/data/image/c/6ed/DDR3_5.png)
4. 在SDK中编辑测试代码如下,对存储空间为0x80000000起始地址的64K DDR3存储空间进行存取校验
#include
#include "xparameters.h"
#include "xil_cache.h"
int main()
{
Xil_ICacheEnable();
Xil_DCacheEnable();
print("---Entering main---\n\r");
unsigned int *test_val;
test_val=( unsigned int * ) 0x84000000;
for(unsigned int i = 0;i<65535>{
test_val = i;
}
for(unsigned int j = 0;j<65535>{
if (test_val[j] != j)
{
print("ddr3 test failed!\n\r");
break;
}
}
print("---Exiting main---\n\r");
Xil_DCacheDisable();
Xil_ICacheDisable();
return 0;
}
5. Terminal 输出如图5,DDR3内存图为图6。
![](http://www.openhw.org/data/image/5/679/DDR3_6.png)
![](http://www.openhw.org/data/image/b/1c0/DDR3_7.png)