1、由于ZCU106板子的sdk调试一直没有成功,因此还是基于ZYNQ7000板子写了一个ps侧读写内存的内容
2、实验软硬件:Vivado 2019.1、Xilinx sdk 2019.1、ZYBO板子(xc7z010clg400-1 )
3、实验过程:
step1:在VIvado中建立工程:miz701_sys,芯片选择xc7z010clg400-1
step2:在IP INERGATOR中
点击创建,然后搜索ZYNQ
双击。 然后点击Diagram的
自动运行模块,弹出的窗口点击OK。 变成了下面这样
step3:我们将CLK0与ACLK相连接。然后双击模块更改设置
①
②
③根据ZYBO文档,上一篇有,找到对应的ddr3型号,然后做以下设置。
④然后变成了下面这样
step4:添加两个AXI BRAM模块,然后双击修改设置
step5:点击
自动布线 ,弹出的窗口根据下面图片更改。然后点击OK
然后就变成了这样
step6:输出模型,生成HDL
然后就变成了这样
step7:直接综合、实现、产生Bit
step8:第七步产生了bit文件,然后我们直接Open Target,将Bit文件烧录到板子上。如果这步没有烧录,那么在sdk的时候我们需要勾选()选项,后面会讲到。
step9:输出硬件说明,然后启动SDK
step10:建立应用
step11:双击ddr/src/helloword.c文件,修改为。然后ctrl+B编译。
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h" //这个头文件下面包含很重要的IO读写函数
#include "xparameters.h" //这个头文件里把硬件的地址映射等参数都写成了宏定义方便使用
int main()
{
int num;
int rev;
xil_printf("------The test is start...------\n\r");
//XPAR_AXI_BRAM_CTRL_0_S_AXI_BASEADDR是axi_bram_ctrl_0的地址,Xil_Out32通过控制axi_bram_ctrl_0,向blk_mem_gen_0写数据
for( num=0; num<15; num++ )
{
Xil_Out32(XPAR_BRAM_0_BASEADDR + num*4, 0x10000000+num); //
}
//XPAR_AXI_BRAM_CTRL_1_S_AXI_BASEADDR是axi_bram_ctrl_1的地址,Xil_In32 通过控制axi_bram_ctrl_0,把blk_mem_gen_0里的数据读出来
//PS和PL可以在blk_mem_gen_0里共享数据
for( num=0; num<15; num++ )
{
rev = Xil_In32(XPAR_BRAM_0_BASEADDR + num*4);
xil_printf( "The data at %x is %x \n\r",XPAR_BRAM_0_BASEADDR + num*4,rev);
}
xil_printf("------The test is end!------\n\r");
return 0;
}
step12:右键ddr文件夹,设置debug。
然后出现界面,双击红色框
出现下述界面。
红色框住部分即为步骤8中的烧录bit文件操作。Vivado版本低的话只能先烧录Bit。
step13:连接UART
点解绿色按钮
step14:右键ddr文件夹
出现下面内容就是是实验成功啦!