创建 Pynq Overlay
本文使用环境:
Xilinx Design Tools Vitis Unified Software Platform 2021.1 (version 2021.1.1)
Pynq 2.6.1
Arty Z7
参考:
定制PYNQ的overlay_bramblewalls的博客-CSDN博客https://blog.csdn.net/bramblewalls/article/details/80045922
如何自定义一个Digilent PYNQ-Z1 Overlay_哔哩哔哩_bilibilihttps://www.bilibili.com/video/av837866431/
Overlay Design Methodology — Python productivity for Zynq (Pynq)https://pynq.readthedocs.io/en/v2.6.1/overlay_design_methodology.html
- 打开 Xilinx Vitis HLS 2021.1,Create Project 或 File->New Project...
Project name: hls_adder
Top Function: hls_adder
Solution Configuration->Part Selection: xc7z020clg400-1
Explorer->hls_adder->Source,右键 New File...,选择之前创建好的 hls_adder.cppvoid hls_adder(int a, int b, int& c) { #pragma HLS INTERFACE ap_ctrl_none port=return #pragma HLS INTERFACE s_axilite port=a #pragma HLS INTERFACE s_axilite port=b #pragma HLS INTERFACE s_axilite port=cc = a + b; }
Project->Index C Source,Run C Synthesis
Solution->Export RTL
- 打开 Xilinx Vivado 2021.1,File->Project->New... 或 Quick Start->Create Project
git clone git@github.com:cathalmccabe/pynq-z1_board_files.git
将 pynq-z1.zip 复制到 F:\Xilinx\Vivado\2021.1\data\boards\board_files 解压或直接复制 pynq-z1 文件夹。
Create Block Design
Add IP (Ctrl+I),添加 ZYNQ7 Processing System,Run Block Automation。
Tools->Settings...->Project Settings->IP->Repository->IP Repositories->Add,选择之前创建的 Vitis HLS 项目 hls_adder/solution1/impl/ip,否则后续会提示 Duplicate IP。
在 Block Design - pynq_hls_adder 的 Diagram 窗口中 Add IP (Ctrl+I),添加 Hls_adder,选中 hls_adder_0,在 Block Properties 中 Name 改为 scalar_add。Run Connection Automation。Renerate Layout。保存。
在 Sources 选项卡中展开 Design Sources (1),右键 pynq_hls_adder (pynq_hls_adder.bd) (3),Create HDL Wrapper... Let Vivado manage wrapper and auto-update
Flow Navigator->PROGRAM AND DEBUG->Generate Bitstream。
Open Block Design,File->Export...->Export Block Design...
- 启动 Arty Z7 开发板,设置网络连接, 等待 LD0 ~ LD5 闪烁后 LD0 ~ LD3 亮起,LD8、LD9 闪烁,打开浏览器访问 pynq:9090,输入密码登录,打开 Jupyter Notebook 界面,上传位于 pynq_hls_adder 文件夹下的 pynq_hls_adder.tcl 和 pynq_hls_adder\pynq_hls_adder.runs\impl_1 下的 pynq_hls_adder_wrapper.bit 重命名为 pynq_hls_adder.bit 以及 pynq_hls_adder\pynq_hls_adder.gen\sources_1\bd\pynq_hls_adder\hw_handoff 下的 pynq_hls_adder.hwh。或者也可以在文件资源管理器中输入 \\pynq,登录
即可访问 pynq。注意:如果直接在文件资源管理器中创建文件夹可能会失败,提示目标文件夹访问被拒绝
这时需要在 Jupyter Notebook 新建一个 Terminal 通过命令行来新建目录。 - 新建一个 Jupyter Notebook,运行
from pynq import Overlay overlay = Overlay('/home/xilinx/pynq/overlays/adder/pynq_adder.bit')
注意:如果之前没有同时拷贝 HWH 文件会报错:
/usr/local/lib/python3.6/dist-packages/pynq/pl_server/device.py:641: UserWarning: Users will not get PARAMETERS / REGISTERS information through TCL files. HWH file is recommended.warnings.warn(message, UserWarning)
接下来参考文档中的代码执行即可。
overlay? add_ip = overlay.scalar_add add_ip? add_ip.register_map add_ip.register_map.a = 3 add_ip.register_map.b = 4 add_ip.register_map.c add_ip.write(0x10, 4) add_ip.write(0x18, 5) add_ip.read(0x20)
创建驱动:
from pynq import DefaultIPclass AddDriver(DefaultIP):def __init__(self, description):super().__init__(description=description)bindto = ['xilinx.com:hls:hls_adder:1.0']def add(self, a, b):self.write(0x10, a)self.write(0x18, b)return self.read(0x20)
这一步 Overlay Tutorial 没有解释清楚 binto 后面的内容,bindto 的解释在 Python Overlay API — Python productivity for Zynq (Pynq)https://pynq.readthedocs.io/en/v2.6.1/overlay_design_methodology/python_overlay_api.html#creating-ip-drivers打开 Vivado 之前创建的项目 pynq_hls_adder,Flow Navigator->PROJECT MANAGER->IP Catalog 窗口中 Interfaces 选项卡,右键 User Repository->Properties... (Ctrl+E),在 Repository Properties 中底部选择 IPs 选项卡,点击 Hls_adder,右侧 Details 显示 VLNV: xilinx.com:hls:hls_adder:1.0,这与 Tutorial 中默认的不同。
如果没有改 bindto,会导致运行 AddDriver 并重载 overlay 后 overlay 中 IP Blocks scalar_add 仍然是 pynq.overlay.DefaultIP 而不是 __main__.AddDriver,之后的 overlay.scalar_add.add(15,20) 也会报错 AttributeError: ‘DefaultIP’ object has no attribute ‘add’ (参见 Overlay Tutorial AddDriver doesn't work - Support - PYNQ)。接下来执行overlay = Overlay('/home/xilinx/pynq/overlays/adder/pynq_adder.bit') overlay? overlay.scalar_add.add(15,20)
即可。
创建 Pynq Overlay相关推荐
- zynq7035单板创建PYNQ镜像V2.6
1 步骤 本次设计是在zynq7035器件上进行,创建PYNQ框架v2.6版本,构建需要如下步骤: 编译环境准备 构建硬件平台 构建PYNQ镜像 在Jupyter Notebook中测试PYNQ 文件 ...
- Docker Host创建swarm overlay网络
Docker Host创建swarm overlay网络 依赖 修改系统参数 关闭防火墙 连接Swarm 更改hostname 创建overlay网络 测试 依赖 准备三台虚拟机vm1,vm2,vm3 ...
- Overlay在PYNQ 2.0中的变化以及如何有效地使用它
本笔记概述了Overlay类在PYNQ 2.0中的变化以及如何有效地使用它. 重新设计的Overlay类有三个主要的设计目标 1.允许覆盖用户以一致的方式找出覆盖内的内容 2.为新硬件设计的开发人员提 ...
- overlay的设计
overlay由两个主要部分组成; PL设计(比特流)和项目框图Tcl文件(the PL design (bitstream) and the project block diagram Tcl fi ...
- PYNQ例程一:1.3 PYNQ Overlays
Xilinx®Zynq®All Programmable device是基于ARM®Cortex®-A9双核处理器(简称处理系统或PS)集成FPGA fabric(简称可编程逻辑或PL)的SOC.PS ...
- Docker 新网络 overlay 网络
Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式. 这样不但能够充分利用成熟的IP路由协议进程数据分发,而且在Overlay技术 ...
- xul 创建一个按钮
MDN Mozilla 产品与私有技术 Mozilla 私有技术 XUL Toolbars 添加工具栏按钮 (定制工具栏) 添加工具栏按钮 (定制工具栏) 在本文章中 创建一个 overlay 在工具 ...
- PYNQ实验二:音频播放
它使用音频插孔HP + MIC播放录音;它可以从HP + MIC或LINE_IN上的麦克风输入.预先录制的音频样本也可以作为输入. from pynq.overlays.base import Bas ...
- 什么是overlay?如何定制overlay?
---------------------------------------------------------------------------------------------------- ...
最新文章
- 6个整改!2018年国家重点实验室评估结果公布
- iOS百度地图的使用
- 分类器评价与在R中的实现:混淆矩阵
- 模拟器显示屏上方的信号和电池图标不显示设置
- linux文件编程(1)—— open、write、read、lseek、阻塞问题
- 全球域名商解析新增保有量15强:爱名网落榜
- mysql没有写入权限_MySQL的权限系统
- HDOJ-2036 求多边形面积
- 【C/C++】顺序容器list和vector
- python requests session_Python requests模块session代码实例
- 剑指offer——面试题7:用两个栈实现队列
- easyui-textbox锁定按钮不锁定_刘诗雯锁定世界杯参赛资格!孙颖莎不满足要求,无缘对阵伊藤美诚...
- TortoiseSVN删除前任账号,添加自己账号
- 因为生活简单,所以内心强大
- Storj:A Peer-to-Peer Cloud Storage Network(点对点云存储网络)
- win10 无法访问samba文件,提示SMB1是不安全协议解决方案
- 离散数学 —— 集合论(集合的传递性与自反性、幂集、交集、并集、相对补集、绝对补集、对称差或异或、序偶或序对、集合的规模或基数)
- 一个简单的税利计算器(网页版)
- (LeetCode)Java 求解正则表达式匹配
- 微信小程序小打卡前端获取