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

相关文章

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

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