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

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO