pynq z2系列PL和PS开发

在pynq上通过PS+PL实现软硬件联合开发

一 实验目标

  1. 点亮开发板下面的三个灯
  2. 在SDK中输出“Hello Word”

二 实验步骤

1.PL端

  1. 启动Vivado,点击创建一个新工程,工程名为pynq_led
    pynq z2系列PL和PS开发_第1张图片

  2. 选择RTL工程
    pynq z2系列PL和PS开发_第2张图片

  3. 选择开发板Boards,在其中选择PYNQ-Z2 pynq z2系列PL和PS开发_第3张图片
    pynq z2系列PL和PS开发_第4张图片

  4. 在左侧导航中选择create block design
    pynq z2系列PL和PS开发_第5张图片
    pynq z2系列PL和PS开发_第6张图片

  5. 在工作框中点击加号添加ZYNQ7 Processing System添加到工作面板中
    pynq z2系列PL和PS开发_第7张图片
    pynq z2系列PL和PS开发_第8张图片

  6. 继续添加 IP,输入 GPIOpynq z2系列PL和PS开发_第9张图片
    pynq z2系列PL和PS开发_第10张图片
    pynq z2系列PL和PS开发_第11张图片

  7. 双击 Zynq 模块,点亮 UART0
    pynq z2系列PL和PS开发_第12张图片

  8. 双击 GPIO,将GPIO的Board Interface置为leds 4bits
    pynq z2系列PL和PS开发_第13张图片

  9. 分别点击Run Block Automation 和 Run Connection Automation
    pynq z2系列PL和PS开发_第14张图片

  10. Run Connection Automation 时需要勾选所有候选项
    pynq z2系列PL和PS开发_第15张图片

  11. 生成如下图
    pynq z2系列PL和PS开发_第16张图片

  12. 右击 design_1.bd,create HDL Wrapper
    pynq z2系列PL和PS开发_第17张图片

  13. 选择默认第二项,点击 OK
    pynq z2系列PL和PS开发_第18张图片

  14. 添加约束文件,点击Open Elaborated Design
    pynq z2系列PL和PS开发_第19张图片

  15. 过程需要等待几分钟,生成后结果如下图所示:
    pynq z2系列PL和PS开发_第20张图片

  16. 在菜单中选择“Window -> I/O Ports”按钮-> Ports”
    pynq z2系列PL和PS开发_第21张图片

  17. 查看管脚约束是否正确
    pynq z2系列PL和PS开发_第22张图片

  18. 点击Generate Bitstream,生成比特流
    在这里插入图片描述

  19. 生成比特流成功将显示如下界面,点击Cancel即可
    pynq z2系列PL和PS开发_第23张图片

  20. 点击工具 栏的 File→Export->Export Hardware
    pynq z2系列PL和PS开发_第24张图片

  21. 勾选 Include bitstream,点击 OK,至此,完成PL端设计
    pynq z2系列PL和PS开发_第25张图片

  22. 点击工具栏的 File→lauch SDK,等待 SDK 启动完成之后,新建工程
    pynq z2系列PL和PS开发_第26张图片

2.PS端

  1. 在SDK中新建工程,工程名为led1
    pynq z2系列PL和PS开发_第27张图片

  2. 工程类型选择Hello World,点击next
    pynq z2系列PL和PS开发_第28张图片

  3. 点开 HelloWorld.c,输入如下代码,其中关于XGPIO的代码可从xgpio.h文件中寻找:
    pynq z2系列PL和PS开发_第29张图片
    pynq z2系列PL和PS开发_第30张图片
    pynq z2系列PL和PS开发_第31张图片
    代码如下:

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "xgpio.h"

int main()
{
    init_platform();
    XGpio led;
    XGpio_Initialize(&led,XPAR_AXI_GPIO_0_DEVICE_ID);//初始化Gpio
    XGpio_SetDataDirection(&led,1,0x00);//设置GPio输入输出方向
    XGpio_DiscreteWrite(&led,1,0x07);//输出0x07,点亮3个灯
    print("Hello World\n\r");

    cleanup_platform();
    return 0;
}
  1. 此时初始时开发板的状态如下图所示:
    pynq z2系列PL和PS开发_第32张图片
  2. 点击 program FPGA,进行比特流文件烧写
    pynq z2系列PL和PS开发_第33张图片
    pynq z2系列PL和PS开发_第34张图片
  3. 烧写完成后,开发板状态如下图所示:
    pynq z2系列PL和PS开发_第35张图片
  4. 连接串口,点击 + 号,Port在个人电脑的设备管理器中可以查看,设置Baud Rate为115200,Data Bits为8
    pynq z2系列PL和PS开发_第36张图片
    pynq z2系列PL和PS开发_第37张图片
  5. 右击led1-> Run As -> Launch on Hardware(GDB) 完成C程序的烧写
    pynq z2系列PL和PS开发_第38张图片
  6. 此时开反板右下角的三个灯被点亮
    pynq z2系列PL和PS开发_第39张图片
  7. 输出Hello World,至此,完成本次实验在这里插入图片描述

你可能感兴趣的:(pynq z2系列PL和PS开发)