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)等,更改时需要构建一个4×3的色彩空间转换算子,共包含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基础分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/6717.html