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

相关文章

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

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