本文使用环境:

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

  1. 打开 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.cpp

    void 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

  2. 打开 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...

  3. 启动 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 通过命令行来新建目录。
  4. 新建一个 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)
  5. 创建驱动:

    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相关推荐

  1. zynq7035单板创建PYNQ镜像V2.6

    1 步骤 本次设计是在zynq7035器件上进行,创建PYNQ框架v2.6版本,构建需要如下步骤: 编译环境准备 构建硬件平台 构建PYNQ镜像 在Jupyter Notebook中测试PYNQ 文件 ...

  2. Docker Host创建swarm overlay网络

    Docker Host创建swarm overlay网络 依赖 修改系统参数 关闭防火墙 连接Swarm 更改hostname 创建overlay网络 测试 依赖 准备三台虚拟机vm1,vm2,vm3 ...

  3. Overlay在PYNQ 2.0中的变化以及如何有效地使用它

    本笔记概述了Overlay类在PYNQ 2.0中的变化以及如何有效地使用它. 重新设计的Overlay类有三个主要的设计目标 1.允许覆盖用户以一致的方式找出覆盖内的内容 2.为新硬件设计的开发人员提 ...

  4. overlay的设计

    overlay由两个主要部分组成; PL设计(比特流)和项目框图Tcl文件(the PL design (bitstream) and the project block diagram Tcl fi ...

  5. PYNQ例程一:1.3 PYNQ Overlays

    Xilinx®Zynq®All Programmable device是基于ARM®Cortex®-A9双核处理器(简称处理系统或PS)集成FPGA fabric(简称可编程逻辑或PL)的SOC.PS ...

  6. Docker 新网络 overlay 网络

    Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式. 这样不但能够充分利用成熟的IP路由协议进程数据分发,而且在Overlay技术 ...

  7. xul 创建一个按钮

    MDN Mozilla 产品与私有技术 Mozilla 私有技术 XUL Toolbars 添加工具栏按钮 (定制工具栏) 添加工具栏按钮 (定制工具栏) 在本文章中 创建一个 overlay 在工具 ...

  8. PYNQ实验二:音频播放

    它使用音频插孔HP + MIC播放录音;它可以从HP + MIC或LINE_IN上的麦克风输入.预先录制的音频样本也可以作为输入. from pynq.overlays.base import Bas ...

  9. 什么是overlay?如何定制overlay?

    ---------------------------------------------------------------------------------------------------- ...

最新文章

  1. 6个整改!2018年国家重点实验室评估结果公布
  2. iOS百度地图的使用
  3. 分类器评价与在R中的实现:混淆矩阵
  4. 模拟器显示屏上方的信号和电池图标不显示设置
  5. linux文件编程(1)—— open、write、read、lseek、阻塞问题
  6. 全球域名商解析新增保有量15强:爱名网落榜
  7. mysql没有写入权限_MySQL的权限系统
  8. HDOJ-2036 求多边形面积
  9. 【C/C++】顺序容器list和vector
  10. python requests session_Python requests模块session代码实例
  11. 剑指offer——面试题7:用两个栈实现队列
  12. easyui-textbox锁定按钮不锁定_刘诗雯锁定世界杯参赛资格!孙颖莎不满足要求,无缘对阵伊藤美诚...
  13. TortoiseSVN删除前任账号,添加自己账号
  14. 因为生活简单,所以内心强大
  15. Storj:A Peer-to-Peer Cloud Storage Network(点对点云存储网络)
  16. win10 无法访问samba文件,提示SMB1是不安全协议解决方案
  17. 离散数学 —— 集合论(集合的传递性与自反性、幂集、交集、并集、相对补集、绝对补集、对称差或异或、序偶或序对、集合的规模或基数)
  18. 一个简单的税利计算器(网页版)
  19. (LeetCode)Java 求解正则表达式匹配
  20. 微信小程序小打卡前端获取

热门文章

  1. kafka之主题操作kafka-topics命令
  2. 酒店预订分销系统和分销商
  3. 奖状自定义生成(可生成多张)
  4. ios代码混淆-字符串加密的优点和其他破解方法
  5. ae渲染存在偏移_以后请不要问我AE和PR有什么区别了...
  6. Fedora 26 安装搜狗拼音输入法 sogoupinyin
  7. juniper SRX55 简单配置
  8. MinIO 中的图片在前端列表渲染时报错 404
  9. 华为平板 M3(青春版)ROOT教程 华为平板 M3一键root步骤
  10. 数字孪生:如何撑起一个万亿市场的产业变革?