-
PYNQ上手笔记 | ① 启动Pynq
2018-10-11 22:00:31今天刚刚到手一块PYNQ-Z2,确认过眼神,是我想要的板子,话不多说,开干。 PYNQ项目是一个支持Xilinx Zynq器件的开源软件框架,有丰富的组件: 可编程逻辑的控制 Jupyter Notebook接口 预安装的Python库 ...上百篇原创人工智能系列教程,从理论到实战,手把手带你掌握人工智能,点击☞这里☜进入传送门~
今天刚刚到手一块PYNQ-Z2,确认过眼神,是我想要的板子,话不多说,开干。
PYNQ项目是一个支持Xilinx Zynq器件的开源软件框架,目的在于借助Python降低Zynq嵌入式系统开发门槛,有丰富的组件:
- 可编程逻辑的控制
- Jupyter Notebook接口
- 预安装的Python库
- 网络/USB/UART接口
要使用Pynq,需要Pynq image和Zynq芯片,目前Pynq项目支持三个板:
参考教程Pynq入门指南Getting Started章节,设置并启动Pynq开发板,对Pynq开发板有个初步的认识。
1.PYNQ-Z2image
1.1.下载映像文件
PYNQ-Z2映像文件是一个可启动的Linux映像,包括PYNQ Python包和其它开源包,可以从PYNQ-Z2官网下载到。
下载与板子适配的PYNQ-Z2版本映像文件:
1.2.SD中烧录映像文件
开源工具Win32diskimager可以将原始磁盘映像写入可移动设备中,在嵌入式开发中经常会用到,比如Android或者Ubuntu on Arm等,在此使用这个工具将映像文件烧录到SD卡中(SD卡至少8GB)。
2.开发板环境配置
2.1.启动方式
首先将已经烧录好PYNQ-Z2映像文件的SD卡插入开发板卡槽中,然后通过右上角BOOT跳线帽选择从SD卡启动。
2.2.网络
开发板连接到网络后可以更新软件包,需要通过以太网电缆连接到一台可以上网的路由器上。
2.3.电源
开发板支持两种供电方式,一种是USB供电,同时作串口使用,一种是12v电源供电,根据左下角跳线帽选择,这里使用第一种方式,打开电源开关即可看到红色电源灯亮起,表示供电正常。
3.终端
开发板启动后,可以通过串口终端软件Xshell或者开源免费的Putty连接到Pynq(确保串口线已连接),设置如下:
- COM端口:可以在“设备管理器”—> “端口”中查到;
- 波特率:115200
- 数据位:8
- 奇偶校验:无
然后点击连接即可成功连接开发板:
使用命令ifconfig
查看开发板ip地址:
使用hostname
查看主机名:
4.PC端远程访问
确保电脑和开发板在同一网段下
4.1.ping测试
首先在windows命令行下对开发板进行ping测试,测试命令为
ping+上一步获取的开发板ip地址
:
4.2.访问主板上的文件
开发板上运行了Samba文件共享服务,允许从网络访问Pynq主区域,便于和开发板之间传送文件,如图,在windows资源管理器中输入
\\pynq\xilinx
:
注:用户名和密码都为xilinx。
4.3.Jupyter Notebook
Pynq使用Jupyter Notebook环境提供示例和文档,使用浏览器可以交互式查看和运行笔记本文档。
在开发板和电脑之间可以ping通时,使用浏览器访问http://之前获取的ip地址:9090
即可连接到Jupyter Notebook(若保证网络没有问题却还是无法连接,可以等一会再连接),用户名和密码都是xilinx:
-
PYNQ is an open-source project from Xilinx that makes it easy to design embedded systems with Zynq All Programmable Systems on Chips (APSoCs). Using the Python language and libraries, designers can ...
-
Pynq-LicensePlateRecognition:基于FPGA-Pynq的车牌识别系统。FPGA-Pynq的LPR系统-源码
2021-03-11 15:39:08Pynq-LicensePlate识别 Pynq的LPR系统 -
【PYNQ Lab1 】PYNQ框架初识 PYNQ学习心得总结
2021-04-08 23:47:48PYNQ简介 PYNQ 是 一种框架,可以简单理解为ZYNQ上的python。PYNQ是Xilinx的一个开源项目,其硬件本质还是ZYNQ。很多人以为PYNQ是独立的一种开发板,但其实其pynq最初本质就是代码框架,并没有实体架构的,现在出的...PYNQ简介
PYNQ 是 一种框架,可以简单理解为ZYNQ上的python。PYNQ是Xilinx的一个开源项目,其硬件本质还是ZYNQ。很多人以为PYNQ是独立的一种开发板,但其实其pynq最初本质就是代码框架,并没有实体架构的,现在出的PYNQ -Z2 Z1本质上其实还是ZYNQ芯片。
PYNQ的优势:
PYNQ的优势是减少了RTL级别开发的难度,使得现在主流Pyhton可以加入到硬件开发这一领域中,并且大量的python库函数可以方便使用。简单来说使用PYNQ会减少开发周期,大大提高ZYNQ开发速度。并且使用更多丰富的库。
PYNQ的内部实现要点:
- 硬件库 overlay。
- pynq使用python对处理器和overlay进行编程。
- pynq是基于web的体系架构,pynq并入了开源的Jupyter notebook架构。可以直接在Zynq的ARM上运行 IPython 内核和web服务器。也就是说我们主要通过web浏览器对其进行编程。
要注意的点:
PYNQ并不是通过Python语言对FPGA直接编程,而是一种从python到RTL的映射,内部实现仍然是RTL的,只是向上封装了一套接口,提供给python语言。
PYNQ架构:
主要是分四层:
1.FPGA硬件层
2.Linux内核
3.python软件层
4.jupyter notebook的应用层硬件层:主要还是Zynq那一套 PL+PS,但是现在整个关于fpga的部分被称作 overlay,面向多用户生成不同的bitstream,可以通过软件API调用,动态切换FPGA的一些功能。
软件层:其运行在ZYNQ的PS里面。主要是由Ubuntu系统内的python组成。PYNQ的API库则提供了连接软硬件的功能,这使得我们可以从python访问到硬件资源。
应用层主要由运行在 Python 之上的 Jupyter Notebook 和 IPython 构成。Jupyter Notebook 是一个基于浏览器的交互式计算环境,基于Python 内核和 Websocket 协议。在 Jupyter Notebook 提供的环境中,可以在其中记录代码、运行代码并查看结果,可视化数据分析并查看输出结果。这些特性使其成为一款执行端到端数据科学工作流程的便捷工具,可以用于数据清理、统计建模、构建和训练机器学习模型,可视化数据以及许多其他用途。通过 Jupyter 创建的交互式 notebook 文档,支持实时代码、交互式小部件、绘图、Markdown、方程式、图像和视频。注意:PYNQ同时包含了软件驱动和硬件驱动,所以必需同时部署二者才能正常工作。
关于Overlay
Overlay相当于一种模式的IP, 但是在PYNQ下,fpga的一些PL设计叫做Overlay。可以用Python接口来编程和控制overlay。默认启动时会下载base的overlay到PL中。base overlay相当于是开发板的参考设计。
新的overlay可以上传或者复制到开发板上。并且可以在系统运行的时候加载到PL中。
Overlay主要三部分:
- 配置FPGA的bit流文件
- tcl文件,配置IP的hwh文件
- Python的API
实例:
from pynq import Overlay overlay_design = Overlay("base.bit")
更多学习资源:
http://www.pynq.io/
https://pynq.readthedocs.io/en/latest/ -
PYNQ资料大全,案例、板卡信息、pynq框架
2019-07-28 10:48:28最全pynq资料:几种pynq开发案例,BNN框架代码、PYNQ原型框架搭建过程及代码,pynq板卡信息,电路图,约束, -
pynq文档!
2018-06-12 10:56:25pynq,说明 如何 配置 硬件及软平台 以及 通过 四个实例 四个实例 四个实例 四个实例 学习 使用 Python对 PYNQ PYNQ-Z1 开发板 开发板 编程。 指导 手册的内容包括: • 软硬件准备 • PYNQ-Z1硬件设置 • 连接到... -
PYNQ基础
2020-07-13 00:24:35PYNQ背景 开发板简介 以下介绍翻译于官方pynq.io PYNQ是Xilinx公司的开源项目。为了增强Xilinx平台的易用性,PYNQ能够使用Python语言和库进行编程,且使用者能够去更好地使用可编程逻辑和微处理器来去实现更多的...PYNQ背景
开发板简介
以下介绍翻译于官方pynq.io
PYNQ是Xilinx公司的开源项目。为了增强Xilinx平台的易用性,PYNQ能够使用Python语言和库进行编程,且使用者能够去更好地使用可编程逻辑和微处理器来去实现更多的电子系统。PYNQ能够和Zynq, Zynq UltraScale+, Zynq RFSoC, Alveo, AWS-F1一起使用,来开发各种高性能应用。例如:
- 并行运算
- 高速图像处理
- 硬件加速算法
- 实时信号处理
- 高速通信
- 低延迟控制
在官方的描述中还提到,PNYQ的原理是在ZYNQ设备的上的ARM处理器中运行Linux系统,并且利用CPython作为解释器,实现Python代码的支持。
基于Jupyter Notebook的开发环境
Jupyter Notebook是一个基于浏览器的交互型计算环境(也有人称为交互式笔记本)。PYNQ在主板的ARM处理器中运行了Notebook服务器,因此可以通过web程序来连接到PYNQ开发环境,并在Notebook服务器上运行python程序。
- 优点:python简单易用,应用开发速度快;
- 缺点:只有支持有限的python库(详细:Package)
PYNQ特性
布局
来自于官方文档: PYNQ Overlays
官方给出的布局说明图中可以总结出PYNQ开发板的以下几点信息:
- 采用ARM+FPGA的方案(即Processing System+Processing Logic)
- ARM端兼容GIGe、USB、CAN等多种丰富的外设接口。在官方给的Image文件中已经打好了USB接口的摄像头、网卡等设备的驱动,后期可以很方便地使用它。
- ARM端支持多种外部存储设备(Flash,DRAM,SRAM)
- FPGA端主要负责一些高速外设接口,例如PCIE、HDMI、Pmod接口、音频输入等。
外设
以下整理几个可能会用到的外设。
HDMI
HDMI模块与FPGA通过AXI总线互联,相比传统的板级连接速度更快,抗干扰能力强。PYNQ-Z1与Z2支持略低于1080p 60Hz的传输速率(因为像素时钟略低),ZCU104系列支持4k 60Hz的视频传输。
HDMI传输需要利用Video subpackage。
HDMI-In
HDMI-Out
色彩空间转换
可以看到,无论是HDMI-In还是HDMI-Out,都有一个color_convert block,且这个block是可以更改的。默认时为BGR(24-bit),可以转换为RGB(24-bit)、RGBA(32-bit)、YCbCr(24-bit)等,更改时需要构建一个4x3的色彩空间转换算子,共包含12个系数(浮点数,-2到+2之间):
通道 in1 in2 in3 1 out1 c1 c2 c3 c10 out2 c4 c5 c6 c11 out3 c7 c8 c9 c12 例如·BGR空间转换到RGB空间时,in1( B )、in2( G )、in3( R )分别对应于out3、out2、out1,因此色彩空间转换算子应为:
[0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0]
例程
from pynq import Overlay from pynq.lib.video import * #Init:Set up an instance of the HDMI-in, and HDMI-out. base = Overlay('base.bit') hdmi_in = base.video.hdmi_in hdmi_out = base.video.hdmi_out #Setup colorspace,default:24-bit BGR colorspace_in = base.video.hdmi_in.color_convert colorspace_out = base.video.hdmi_out.color_convert bgr2rgb = [0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0]#RGB colorspace colorspace_in.colorspace = bgr2rgb colorspace_out.colorspace = bgr2rgb #Configuration hdmi_in.configure() hdmi_out.configure(hdmi_in.mode) #Execution hdmi_in.start() hdmi_out.start() #To connect a simple stream from HDMI-in to HDMI-out, the two streams can be tied together. hdmi_in.tie(hdmi_out) #This takes the unmodified input stream and passes it directly to the output. frame = hdmi_in.readframe() #Add frame processing code here. hdmi_out.writeframe(frame)
使用PYNQ
基本配置
可以根据官方的介绍文档进行基本设置Getting Start
来自于官方文档
- 如图安装JP4/Boot跳帽。
- 使用USB供电时时,设置JP5/Power到USB的位置;使用12V外接供电时设置跳帽到REG
- 把烧写了image文件的Micro SD卡插入卡槽。
- 用USB线将PROG-UART/J14接口连接到PC。
- 使用网线连接ETHERNET接口到PC。
- 打开开关,Red LD13灯亮说明有供电, 几秒后Yellow/Green LD12 / Done指示灯亮说明设备开始工作。一分钟后能看到
Blue LD4 、LD5和四个Yellow/Green LD0-LD3指示灯闪。过一会蓝色LED灭,黄色和绿色LED常亮,说明系统已经成功启动。
连接到Notebook
确认好PYNQ开发板已经连接到局域网中,可以通过PC端的web程序进入PYNQ所在的局域网地址,例如192.168.2.99。此时需要输入账号和密码(默认均为xilinx)
镜像的使用(Windows)
在windows系统可以使用Win32 Disk Imager软件烧写image文件到Micro SD卡。
- 安装Win32 Disk Imager。
- 将Micro SD用读卡器连接到电脑上。
- 以管理员模式打开软件。
- 选择image文件。
- 选择Micro SD卡对应的盘符。
- 点击Write开始烧写。
更新记录
日期 内容 7月12日 添加内容:PYNQ背景、特性、配置方法 7月13日 完善内容:外设介绍、image镜像的使用方法 -
PYNQ-master
2018-08-11 10:33:29xilinx专门推出的Python语言结合zynq之PYNQ系列,该代码是针对PYNQ的代码例程。 -
PYNQ包
2019-06-26 16:27:15所有PYNQ代码都包含在pynq Python包中,可以在Github存储库中找到。 要了解有关Python包结构的更多信息,请参阅官方python文档。 基础模块: pynq.ps - 便于管理处理系统(PS)和PS / PL接口。 pynq.pl - 促进可编程...所有PYNQ代码都包含在pynq Python包中,可以在Github存储库中找到。
要了解有关Python包结构的更多信息,请参阅官方python文档。
基础模块:pynq.ps - 便于管理处理系统(PS)和PS / PL接口。
pynq.pl - 促进可编程逻辑(PL)的管理。
pynq.overlay - 管理叠加层的状态,驱动程序和内容。
数据移动模块:pynq.mmio - 实现PYNQ内存映射IO(MMIO)API
pynq.gpio - 通过包装Linux Sysfs API实现PYNQ通用IO(GPIO)
pynq.xlnk - 为PYNQ DMA实现连续内存分配
附加模块:pynq.interrupt - 实现PYNQ asyncio
pynq.pmbus - 用于从PMBus读取功率测量值的PYNQ类
pynq.uio -
子包:pynq.lib - 包含带有PMOD,Arduino和Logictools PYNQ库驱动程序的子包,以及各种通信控制器(GPIO,DMA,视频,音频)的驱动程序
-
PYNQ开发教程.pdf
2020-09-28 09:23:35PYNQ开发教程.pdf PYNQ开发教程.pdf PYNQ开发教程.pdf PYNQ开发教程.pdf PYNQ开发教程.pdf -
PYNQ学习资料
2018-11-09 10:51:21PYNQ-Z1的中文学习资料,包含一些文档和各种的代码。 -
PYNQ板卡
2019-02-27 20:02:37看了PYNQ的相关资料,对PYNQ板卡有了一些自己的看法和观点,1、先说核心芯片。 PYNQ开发板的核心芯片是赛灵思公司的ZYNQ7020,该芯片由2个部分构成——PS和PL, 上图为ZYNQ的系统结构图,通俗的理解是PS是... -
【PYNQ】PYNQ的视频资料介绍
2021-02-06 22:46:34Digilent(迪芝伦)PYNQ目录微信公众号:PYNQ开源社区百度/CSDN博客BilibiliGitHub/ Gitee(开源项目)Xilinx官方代码库PYNQ官网中国大学MOOCGoogleZYNQ电子书别的大佬总结的PYNQ入门资料结语 微信公众号:PYNQ开源... -
pynq 环境搭建_PYNQ系列学习(一)——Pynq开发环境配置
2021-01-17 19:22:36PYNQ项目是一个新的开源框架,使嵌入式编程人员在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq All Programmable SoC(APSoC)的功能。与常规方式不同的是,通过PYNQ,用户可以使用Python进行APSoC编程,并且... -
pynq 环境搭建_PYNQ系列学习(一): Pynq开发环境配置
2021-02-09 00:45:30PYNQ项目是一个新的开源框架,使嵌入式编程人员在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq All Programmable SoC(APSoC)的功能。与常规方式不同的是,通过PYNQ,用户可以使用Python进行APSoC编程,并且... -
PYNQ IP脚本
2018-11-07 13:26:02pynq实验时 自动配置IP的脚本 和 自动恢复IP的脚本,建议用管理员模式运行 -
BNN on PYNQ
2018-05-31 10:29:19该文章是描述BNN在PYNQSHANG 实现的,可在GitHub上找到教程,需要PYNQ开发板 -
PYNQ-TinyYoloV3 ON THE PYNQ
2020-05-19 21:52:56Today,You can use python to develop FPGA,it is PYNQ. The brief specification of PYNQ Z2 is as follows, with some parameters I am concerned about bolded: ZYNQ XC7Z020-1CLG400C •650MHz dual-core ... -
PYNQ_RFSOC_Workshop:公开采购PYNQ和RFSoC研讨会资料-Source material
2021-03-24 23:01:50PYNQ RFSoC研讨会 PYNQ和RFSoC研讨会的设计和笔记本的集合-ZCU111的。 入门 在ZCU111 PYNQ SD卡映像上,已经包含这些笔记本。 开始使用此图像的步骤是: 从下载“ ZCU111 PYNQ映像”文件。 有关以下步骤的信息,请... -
PYNQ ADC
2020-04-06 09:54:30PYNQ ADC 对内部电压 温度监控 三种方式 PS-XADC AXI XADC (DRP,性能最高) PL JTAG AXI XADC 使用IP核 ref https://www.cnblogs.com/milinker/p/5820479.html PS-XADC 直接利用ps调用 ADC介绍 报警... -
PYNQ开发板基础工程
2021-01-14 11:01:06PYNQ开发板基础工程,可以实现串口打印,PL和PS控制LED亮灭,有问题可以留言,看到会解答。 -
bnn_pynq.zip
2020-07-12 16:06:06pynq上的BNN -
05_PYNQ Library详解 - Pynq MicroBlaze
2019-10-19 20:12:32PYNQ库提供了对子系统Pynq MicroBlaze的支持。它允许我们加载预编译好的应用,并且可以在Jupyter中创建编译新的应用。 接下来,我们按照如下顺序逐一介绍: MicroBlaze Subsystem MicroBlaze RPC MicroBlaze ... -
基于pynq的简易HDMI服务器
2020-08-06 16:49:31基于pynq的简易HDMI服务器 基于pynq的简易HDMI服务器基于pynq的简易HDMI服务器 基于pynq的简易HDMI服务器 将hdmi信号发在socket上 -
pynq_quiz-源码
2021-02-16 07:29:36PYNQ测验信息 PYNQ的好处 PYNQ提供了许多独特的功能。 我们在下面重点介绍其中一些好处: 开源的 访问硬件库,就像它们是软件库一样 不需要下载额外的软件 使用pip install命令轻松进行项目安装 高度定制和灵活 为... -
pynq笔记
2019-03-11 20:31:06PS/PL Interfaces Zynq在ps和pl之间有9个axi接口。(M:master 主 S:slave 从) 在PL端,有4xAXI主(M)hp(高性能)端口,2xAXIGP(通用)端口,2xAXI从(S...有四个pynq类用于管理Zynqps(包括ps dram)和pl接口之间的数据...