PYNQ基础

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开发板的以下几点信息:

  1. 采用ARM+FPGA的方案(即Processing System+Processing Logic)
  2. ARM端兼容GIGe、USB、CAN等多种丰富的外设接口。在官方给的Image文件中已经打好了USB接口的摄像头、网卡等设备的驱动,后期可以很方便地使用它。
  3. ARM端支持多种外部存储设备(Flash,DRAM,SRAM)
  4. FPGA端主要负责一些高速外设接口,例如PCIE、HDMI、Pmod接口、音频输入等。

外设

以下整理几个可能会用到的外设。

HDMI

HDMI模块与FPGA通过AXI总线互联,相比传统的板级连接速度更快,抗干扰能力强。PYNQ-Z1与Z2支持略低于1080p 60Hz的传输速率(因为像素时钟略低),ZCU104系列支持4k 60Hz的视频传输。

HDMI传输需要利用Video subpackage。
Block Diagram

HDMI-In

HDMI-In

HDMI-Out

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之间):

通道in1in2in31
out1c1c2c3c10
out2c4c5c6c11
out3c7c8c9c12

例如·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
来自于官方文档
在这里插入图片描述

  1. 如图安装JP4/Boot跳帽。
  2. 使用USB供电时时,设置JP5/Power到USB的位置;使用12V外接供电时设置跳帽到REG
  3. 把烧写了image文件的Micro SD卡插入卡槽。
  4. 用USB线将PROG-UART/J14接口连接到PC。
  5. 使用网线连接ETHERNET接口到PC。
  6. 打开开关,Red LD13灯亮说明有供电, 几秒后Yellow/Green LD12 / Done指示灯亮说明设备开始工作。一分钟后能看到
    Blue LD4LD5和四个Yellow/Green LD0-LD3指示灯闪。过一会蓝色LED灭,黄色和绿色LED常亮,说明系统已经成功启动。

连接到Notebook

确认好PYNQ开发板已经连接到局域网中,可以通过PC端的web程序进入PYNQ所在的局域网地址,例如192.168.2.99。此时需要输入账号和密码(默认均为xilinx

镜像的使用(Windows)

在windows系统可以使用Win32 Disk Imager软件烧写image文件到Micro SD卡。

  1. 安装Win32 Disk Imager
  2. 将Micro SD用读卡器连接到电脑上。
  3. 以管理员模式打开软件。
  4. 选择image文件。
  5. 选择Micro SD卡对应的盘符。
  6. 点击Write开始烧写。

更新记录

日期内容
7月12日添加内容:PYNQ背景、特性、配置方法
7月13日完善内容:外设介绍、image镜像的使用方法
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值