14_AXI4_DDR实验
通过自定义一个AXI4接口的IP核,通过AXI_HP接口对PS端DDR3进行读写测试。
实验过程
- 自定义IP核
- 设计Block Design
ZYNQ芯片的配置在“hello world”实验的基础上,做出一下修改:
- 添加自定义的IP核
- 添加按键消抖模块
- 连接好引脚,Generate;Create HDL;设计I/O Ports;导出BitStream
代码
#include "stdio.h"
#include "xil_printf.h"
#include "xil_cache.h"
#include "xil_io.h"
int main()
{
int i;
char c;
Xil_DCacheDisable(); //关闭数据缓存
xil_printf("AXI4 PL DDR TEST !\n");
while(1) //不断判断输入的字符
{
scanf("%c",&c);
if(c == 'c')
{
printf("START !\r\n");
for(i=0;i<4095;i=i+4) //
{
printf("%d is: %d\n",i,(int)(Xil_In32(0x10000000+i)));
}
/*通过一个 for 循环开始从地址 0x1000_0000 读取 DDR3 存储器的数据
* 读取的存储空间大小为 4KB
*/
}
}
return 0;
}
实验现象:在串口中输入“c”,程序会打印从 DDR3 中读出数据,串口打印出了 DDR3 存储空间中从地址 0x1000_0000 开始的 1024 个数据,每个数据 占 4 个字节;开发板上电后,在没对该地址空间进行写操作之前,DDR3 中的数据是随机的。
按下按键,LED1点亮,再次输入“c”,DDR3 中指定的 4KB 存储空间中读出的数据依次为 1 到 1024, 与 AXI4_RW_TEST IP 核写入的数据一致。
该实验,视频中讲解了波形Debug
参考
-
正点原子 启明星ZYNQ之嵌入式SDK开发指南_V2.0.pdf