ZYBO-Z7的PYNQ框架移植测试

2023-10-25 17:30
文章标签 移植 框架 测试 pynq z7 zybo

本文主要是介绍ZYBO-Z7的PYNQ框架移植测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ZYBO-Z7的PYNQ框架移植测试

在成功移植PYNQ框架到ZYBO-Z7开发板后笔者做了一个简易的test来测试PL与PS侧的交互。
移植过程参照:ZYBO-Z7开发板的PYNQ框架移植

这里笔者通过调用开发板上的四个LED和Switch来达到测试目的。

一:建立Vivado工程
与正常的开发流程相同,同样也是在Vivado中完成PL侧设计,只不过移植了PYNQ后我们可以在jupyter notebook上利用python来完成原本在SDK上进行的PS侧设计工作。

  1. Create block design
    这一设计中需要添加一个 ZYNQ7000 以及两个 AXI GPIO IP核。
    更改两个AXI GPIO中的设置如下:
    AXI GPIO SW
    AXI GPIO LED
    进行完Automation的设计图如下:
    在这里插入图片描述
    这里设计方面基本采用默认设置,需要特别注意的是你引出的SW以及LED的交互端口的名字需与你的约束文件中一致(图中为sw和led),同时需要记住你的两个AXI GPIO IP核的命名,在之后的Python调用中会用到。
  2. 添加约束文件(ZYBO-Z7板的约束如下,其他开发板请参考对应的master.xdc文件):
##Switches
set_property -dict { PACKAGE_PIN G15   IOSTANDARD LVCMOS33 } [get_ports { sw[0] }]; #IO_L19N_T3_VREF_35 Sch=sw[0]
set_property -dict { PACKAGE_PIN P15   IOSTANDARD LVCMOS33 } [get_ports { sw[1] }]; #IO_L24P_T3_34 Sch=sw[1]
set_property -dict { PACKAGE_PIN W13   IOSTANDARD LVCMOS33 } [get_ports { sw[2] }]; #IO_L4N_T0_34 Sch=sw[2]
set_property -dict { PACKAGE_PIN T16   IOSTANDARD LVCMOS33 } [get_ports { sw[3] }]; #IO_L9P_T1_DQS_34 Sch=sw[3]##LEDs
set_property -dict { PACKAGE_PIN M14   IOSTANDARD LVCMOS33 } [get_ports { led[0] }]; #IO_L23P_T3_35 Sch=led[0]
set_property -dict { PACKAGE_PIN M15   IOSTANDARD LVCMOS33 } [get_ports { led[1] }]; #IO_L23N_T3_35 Sch=led[1]
set_property -dict { PACKAGE_PIN G14   IOSTANDARD LVCMOS33 } [get_ports { led[2] }]; #IO_0_35 Sch=led[2]
set_property -dict { PACKAGE_PIN D18   IOSTANDARD LVCMOS33 } [get_ports { led[3] }]; #IO_L3N_T0_DQS_AD1N_35 Sch=led[3]
  1. 完成后Generate HDL然后生成bit流,export hardware这些不做赘述。完成后进入工程的文件夹,找两个文件 bit 以及 bd.tcl,这里网上很多教程说的很粗率,请大家注意一定要是bd.tcl文件而不是wrapper.tcl在这里插入图片描述
  2. 复制出这 bit 和 tcl 这两个文件到\\PYNQ\Xilinx\pynq\overlays\ZYBO,修改名称为ZYBO.bit,ZYBO.tcl
    在这里插入图片描述
    另:文件夹路径输入\PYNQ\Xilinx可以直接访问板上文件
    准备工作完成!

二:Jupyter Notebook上的编程
进入Jupyter Notebook,方法参考ZYBO-Z7开发板的PYNQ框架移植
在右上角可新建python工程
在这里插入图片描述
进行PS侧PL侧的交互那么一个根本问题就是我们要提供给PS侧的开发平台这个板的硬件信息,这也是Overlays所起到的作用。PYNQ官网支持的三块板子会提供Overlays包,像我们自己移植的只好自己dowaload了。这里建议大家参考一下Jupyter Notebook官方提供的Overlays使用例程,在 common/overlay_download.ipynb中。
在这里插入图片描述
首先我们进行硬件信息的导入,在新建的python文件中输入:
在这里插入图片描述
首先查看一下开关是否成功控制,这里overlay之后所跟的为你Vivado设计中开关的AXI GPIO模块名(笔者设计中为SW,不一样的请查看自己的设计自行修改):
在这里插入图片描述
用read命令来读取开关的输入信息,这里笔者将四个开关均处于关闭状态点击Run之后返回如下结果(其他按四位二进制换算同理,例:开启开关1则返回1,开启1,2则返回3):
在这里插入图片描述
开关输入读取正常。
LED的测试方法同上,如下图:
在这里插入图片描述
这里笔者是让LED读取SW的输入,即打开对应开关Run后便会点亮对应的LED。

框架测试结束。

小结:
Vivado实现PL侧设计,Jupyter notebook来实现PS侧控制,overlay_download中提供.bit 和 bd.tcl 文件。
Life is short, I use Python.

Fin

这篇关于ZYBO-Z7的PYNQ框架移植测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284107

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接