PYNQ2之ZYNQ的PS读写DDR

1、前期准备

       和前面的不一样这里需要用到DDR,所以需要在PS中正确配置DDR,这也是看别人zedboard板卡教程自己却一直实行不了的原因。

问题一:串口打印问题

       首先是串口驱动问题,网上下载驱动,安装一直提示未正确安装驱动,设备工作不正常。

      解决方法:板卡接上电脑,开机,然后联网,打开360驱动大师,然后会出现一个未安装驱动的USB设备,然后点击安装驱动,有时候可能需要反复安装多个驱动,直到提示正确安装驱动。

问题二:PYNQ2板卡的预配置设置问题

     首先需要PYNQ2的配置文件,这个可以在tul官网下载。然后将文件夹pynq-z2放在如下目录:

PYNQ2之ZYNQ的PS读写DDR_第1张图片

这时候去新建工程,在选择FPGA芯片类型的时候,选择board,我的vivado版本为17.2 如下图所示:

PYNQ2之ZYNQ的PS读写DDR_第2张图片

然后在添加ZYNQ后,点击run block automation时候会发现,已经配置好。如果没有配置,需要关机重启,然后新建工程。

2、新建工程

        首先新建一个工程。然后Create Block Design,然后右击Add ip,选择zynq,编译,将输出时钟接在输入时钟后,generate outputs products,create HDL wrapper,编译,生成bit,export加bit文件,launch SDK。注意不需要xdc文件!具体过程和上篇一样。

3、SDK端设计

        SDK的界面类似于eclipse,新建APP,然后输入随意的名称,选择hello world的工程。

首先什么也不改,首先下载bit,然后运行dubug,串口打印hello world。

PYNQ2之ZYNQ的PS读写DDR_第3张图片

修改main文件如下所示:
#include "stdio.h"
#include "platform.h"
#include "xparameters.h"
#include "xparameters_ps.h"
#include "xil_printf.h" #include "xil_io.h" #define DDR_BASEARDDR XPAR_DDR_MEM_BASEADDR + 0x10000000 int main() { init_platform(); int i; int rev; xil_printf("Hello World\n\r"); for(i=0; i<32; i++) { Xil_Out32(DDR_BASEARDDR+i*4,i); } for(i=0; i<32; i++) { rev = Xil_In32(DDR_BASEARDDR+i*4); xil_printf("the address at %x data is : %x \n\r" ,DDR_BASEARDDR+i*4, rev); } cleanup_platform(); return 0; }

运行,输出如下所示:

PYNQ2之ZYNQ的PS读写DDR_第4张图片

你可能感兴趣的:(ZYNQ)