PYNQ2之ZYNQ的PS读写DDR

1、前期准备

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

问题一:串口打印问题

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

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

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

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

这时候去新建工程,在选择FPGA芯片类型的时候,选择board,我的vivado版本为17.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。

修改main文件如下所示:
#include "stdio.h"
#include "platform.h"
#include "xparameters.h"
#include "xparameters_ps.h"<br>#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;
}

运行,输出如下所示:

猜你喜欢

转载自blog.csdn.net/weixin_39813867/article/details/83513070
今日推荐