海浦东新区张东路 1387 号 45 幢
电话:+862158893151
邮箱:chinasales@digilentcomcn
wwwdigilentcomcn
PYNQZ1 官方入门指导手册
份指导手册中说明配置硬件软件台通四实例学
Python PYNQZ1 开发板编程指导手册容包括:
• 软硬件准备
• PYNQZ1 硬件设置
• 连接 Jupyter 进行线编程
• 4 PYNQ 入门例程实践
PYNQZ1 程中问题欢迎访问:
wwwDIGILENTcomcncommunity (中文) wwwPYNQio(英文)进行 反馈寻求
支持
2
指导手册目录
指导手册目录 2
1 PYNQ 简介 3
2 Jupyter Notebook 简介 4
3 软硬件准备 4
4 PYNQZ1 硬件设置 5
5 连接 Jupyter 进行线编程 7
6 PYNQ 入门例程实践 14
实验:键控制 LED 14
实验二:录音音频处理 16
实验三: PmodOLED 19
实验四:面部识 21
3
1 PYNQ 简介
PYNQZ1 开发板支持 PYNQ 项目新开源框架嵌入式编程员够
需设计编程逻辑电路情况充分发挥 Xilinx Zynq All Programmable SoC(APSoC)
功常规方式通 PYNQ户 Python 进行 APSoC 编程
代码直接 PYNQZ1 进行开发测试通 PYNQ编程逻辑电路作硬件
库导入通 API 进行编程方式导入编程软件库基相
PYNQZ1 开发板 PYNQ 开源框架硬件台 ARM A9 CPU 运行软件包括:
• 载 Jupyter Notebooks 设计环境网络服务器
• IPython 核程序包
• Linux
• FPGA 基硬件库 API
4
2 Jupyter Notebook 简介
Jupyter Notebook 基浏览器交互式编程计算环境 Jupyter Notebook 编
程时文件里包含代码画图注释公式图片视频 PYNQ 开发板安装
镜文件 Jupyter Notebook 里轻松 Python 编程硬件库 Overlay
控制硬件台交互
3 软硬件准备
1) 硬件准备
PYNQZ1 开发板
太网线
Micro USB 数线
空白 Micro SD 卡(少 8GB 容量)
2) 软件准备
电脑安装支持 Jupyter 浏览器
提示:浏览器新稳定版支持 Jupyter Notebook*:
✓ Chrome
✓ Safari
✓ Firefox
* Jupyter Notebook WebSockets 变沙箱模型决定
支持 Jupyter 浏览器:
Safari低版 5
Firefox低版 6
Chrome低版 13
全部 Opera:CSS 渲染原导致执行时
Internet Explorer 浏览器低版 10
Internet Explorer 浏览器版 10 ( Opera)
基 IE 360 浏览器
* 请注意Safari HTTPS(SSL 安全加密超文链接协议)信证书法正
常工作( WebSockets 法正常工作)
5
获取镜文件
载 PYNQZ1 镜文件解压
空白 SD 卡插入电脑(需 8GB 容量)烧写镜文件
Windows 系统: win32DiskImager 烧写Image File 选择载
镜文件Device 选择 SD 卡位置般会动分配 E 盘 F 盘
Linux 系统MacOS:系统带 dd 命令操作系统烧写
Micro SD 操作细节参考教程 Writing the SD card image
4 PYNQZ1 硬件设置
1 图示跳帽插边两排针设置 boot 跳线(板标记 JP4) SD
位置选择 SD 卡驱动
2 想通 Micro USB 线 PYNQZ1 进行供电需图示跳帽插边两
排针设置电源跳线(JP5) USB 位置( 12V 外部电源 PYNQ
6
Z1 进行供电跳帽插边两排针设置电源跳线(JP5) REG 位
置)
3 已安装镜文件 SD 卡插入 SD 卡槽(图示SD 卡槽开发板方右侧边缘)
4 Micro USB 线 PYNQ 开发板 PROG UART(J14)接口连接电脑
PYNQ 供电作串口通信
5 网线 PYNQ 开发板连接路器电脑(根网线端口选择续操作会
)*
6 开关拨 ON 开 PYNQ等系统启动约分钟两蓝色 LED
四黄绿色 LED 时闪动蓝色 LED 关闭四黄绿色 LED 灯亮时系统
启动完毕
* 关板载太网连接详细说明
PYNQZ1 太网接口设备连接:
连接路器者交换机电脑网络
直接连电脑太网接口
话请开发板连接具太网访问网络更新板子
软件安装新软件包
• 连接网络
果通 DHCP 服务器连接局域网络板子会动获取 IP 址必
须保证足够权限通网络访问设备否板子法正常访问
路器网络交换机(DHCP)
1 板载太网接口连接路器交换机
2 通浏览器访问 httppynq9090
3 更改机名称(根身需求)
4 配置代理(根身需求)
• 直接连接电脑
时需台太网接口电脑时需拥配置网络接口权限通直接
相连访问 PYNQZ1 里需注意非太网电脑
7
具 Internet 访问连接进行桥接否 PYNQZ1 法访问 Internet 没
Internet 连接情况更新者加载新软件包
直接连接电脑(静态 IP)
1 电脑配置静态 IP
2 板载太网接口电脑直接相连
3 访问 http1921682999090
*配置静态 IP 请参见 Assign your PCLaptop a static IP address
5 连接 Jupyter 进行线编程
果PYNQ 通网线连接路器PYNQ 动分配址开 httppynq9090
户名密码 xilinx输入进入界面
果 PYNQ 通网线连接电脑需先设置电脑 IP 址参考 Assign your
PCLaptop a static IP address然开 http1921682999090样输入户名
密码 xilinx进入界面
8
默认机名 pynq默认静态 IP 址 192168299果改变机名称者板
子静态 IP 址需改变访问址第次连接时电脑会花费秒钟时
间确定机名 IP 址
PYNQ 通 Jupyter Notebook 形式提供种示例文档网页形式浏览示
例项目文档者果正运行 PYNQ 镜板子交互式查运
行 Notebook 文档
Jupyter 页 Getting_Started 文件夹中找 Notebook 文档
里许示例文档展示种板载设备
外提供样例展示板载外围设备
9
目前已示例文档进行分类:
common 针性 overlay 示例项目
base PYNQZ1 base overlay 相关示例项目
logictools PYNQZ1 logictools overlay 相关示例项目
开笔记作出修改者执行代码片段notebook 文档会更改
需开新 notebook 时做备份果需恢复原始版
PYNQ Github 项目页面载全部笔记
Running 栏正运行项目
• 访问板载文件
PYNQ 板运行文件享服务:Samba通板子目录作网
络驱动器访问时文件板子电脑间传递
Windows 访问 PYNQ 目录键入:
\\pynq\xilinx # If connected to a NetworkRouter with DHCP
\\192168299\xilinx # If connected to a Computer with a Static IP
者 Linux :
smbpynqxilinx # If connected to a NetworkRouter with DHCP
smb192168299xilinx # If connected to a Computer with a Static IP
10
然会跳出图:
Samba 服务器户名密码 xilinx
注意:果必请修改机名IP 址
• 更改 hostname
果连接 PYNQZ1 开发板已连接入网络建议立更改
机名称通常种情况工作者校园环境会较常见PYNQ 默认 hostname
pynq 终 端 嵌 Jupyter 中 Jupyter 页 pynq9090 界面中 开
New>>Terminal root 权限浏览器中开终端:
Terminal 里输入指令更改 hostname(希板子设置机名换
NEW_HOST_NAME 位置):
sudo homexilinxscriptshostnamesh NEW_HOST_NAME
11
然需重启 PYNQ 生效(新机名重新连接):
sudo shutdown r now
注意:果 root 权限登录需 sudo果 xilinx 进行登录sudo
必须添加命令前果访问板子浏览面步骤通 micro USB
线开终端
• 通 USB 接口连接电脑终端
果需修改板载设置法访问通 Jupyter 访问终端助 USB 接口
通电脑终端控制 PYNQ时需安装终端工具 PuTTY 者 Tera Term
开终端需知道开发板 COM 端口
Windows 控制面板开 Windows 设备理器进行查
开设备理器展开端口项
找 USB 串口 COM 端口例 COM5
旦知道 COM 端口开 PuTTY 列设置:
选择 Serial
输入 COM 端口号
输入波特率
然点击 Open 启动
终端窗口中 Enter(回车)确保命令行:
xilinnx@pynqhomexilinx#
12
完整终端设置:
• 115200 baud
• 8 data bits
• 1 stop bit
• No Parity
• No Flow Control
终端中回车键出现 xilinx@pynq~输入指令控制 pynq输入 hostname
查名称输入 ifconfig 查 IP 址等
< 端口
13
• 设置代理
果开发板连接代理网络中需板设置代理服务器方
教程开终端输入列命令my_http_proxy8080my_https_proxy8080更改
设置:
set http_proxymy_http_proxy8080
set https_proxymy_https_proxy8080
14
6 PYNQ 入门例程实践
面四实验作例子简单介绍 Jupyter 线编程工具
python 语言 PYNQ 编程需更资料示例项目查:wwwpynqio
实验:键控制 LED
开 base>board 文件夹中 board_btn_ledsipynb 文件点击工具栏 run 图标者选
择 Cell>Run 运行代码
项目中 PYNQ 开发板键 0 改变彩色 LED 颜色键 1 开启右
左流水灯键 2 开启左右流水灯键 3 结束运行
代码:
#导入 PYNQ 开发板支持文件
from time import sleep
from pynqoverlaysbase import BaseOverlay
base BaseOverlay(basebit)
Delay1 03
Delay2 01
color 0
#定义寄存器
rgbled_position [45]
for led in baseleds
ledon()
while (basebuttons[3]read()0)
if (basebuttons[0]read()1)
15
color (color+1) 8
for led in rgbled_position
basergbleds[led]write(color)
basergbleds[led]write(color)
sleep(Delay1)
elif (basebuttons[1]read()1)
for led in baseleds
ledoff()
sleep(Delay2)
for led in baseleds
ledtoggle()
sleep(Delay2)
elif (basebuttons[2]read()1)
for led in reversed(baseleds)
ledoff()
sleep(Delay2)
for led in reversed(baseleds)
ledtoggle()
sleep(Delay2)
print('End of this demo ')
for led in baseleds
ledoff()
for led in rgbled_position
basergbleds[led]off()
16
实验二:录音音频处理
进入 base>audio 文件夹点击 audio_playbackipynb
代码分成代码块段代码前解释段功点击工具栏 run 图标
者选择 Cell>Run 次运行面代码块运行中代码块会标[*]图时应
该等运行结束进行步操作运行结束[*]会变成数字表示第段
运行代码记录序
17
Python 代码:
#创建新音频象
from pynqoverlaysbase import BaseOverlay
base BaseOverlay(basebit)
pAudio baseaudio
# 录制三秒音频文件保存
pAudiorecord(3)
pAudiosave(Recording_1pdm)
# 播放刚录制音频文件
pAudioplay()
# 加载预先录制音频文件播放
pAudioload(homexilinxpynqlibtestspynq_welcomepdm)
pAudioplay()
#预处理
#首先 32 位整型缓器转换位 16 位然 16 位字分带位采样 8 位字
import time
import numpy as np
start timetime()
af_uint8 npunpackbits(pAudiobufferastype(npint16)
byteswap(True)view(npuint8))
end timetime()
print(Time to convert {d} PDM samples {02f} seconds
format(npsize(pAudiobuffer)*16 endstart))
print(Size of audio data {d} Bytes
format(af_uint8nbytes))
#通抽取方式 PDM 信号转换 PCM 格式采样率 3MHz 降 32kHz
import time
from scipy import signal
start timetime()
af_dec signaldecimate(af_uint88zero_phaseTrue)
af_dec signaldecimate(af_dec6zero_phaseTrue)
af_dec signaldecimate(af_dec2zero_phaseTrue)
af_dec (af_dec[1010]af_dec[1010]mean())
end timetime()
print(Time to convert {d} Bytes {02f} seconds
format(af_uint8nbytes endstart))
print(Size of audio data {d} Bytes
format(af_decnbytes))
del af_uint8
#浏览器中播放转换完音频信息
from IPythondisplay import Audio as IPAudio
IPAudio(af_dec rate32000)
18
#绘制 PCM 数
# 信号时间推移振幅
matplotlib inline
import numpy as np
import matplotlibpyplot as plt
pltfigure(numNone figsize(15 5))
time_axis nparange(0((len(af_dec))32000)132000)
plttitle('Audio Signal in Time Domain')
pltxlabel('Time in s')
pltylabel('Amplitude')
pltplot(time_axis af_dec)
pltshow()
#绘制信号频谱(振幅)
from scipyfftpack import fft
yf fft(af_dec)
yf_2 yf[1len(yf)2]
xf nplinspace(00 320002 len(yf_2))
pltfigure(numNone figsize(15 5))
pltplot(xf abs(yf_2))
plttitle('Magnitudes of Audio Signal Frequency Components')
pltxlabel('Frequency in Hz')
pltylabel('Magnitude')
pltshow()
#绘制传统时间推移信号频谱图
import matplotlib
npseterr(divide'ignore'invalid'ignore')
matplotlibstyleuse(classic)
pltfigure(numNone figsize(15 4))
plttitle('Audio Signal Spectogram')
pltxlabel('Time in s')
pltylabel('Frequency in Hz')
_ pltspecgram(af_dec Fs32000)
19
实验三: PmodOLED
base>pmod 文件夹里提供种 Pmod 设备程序里 PmodOLED 例
PYNQ 处关闭状态时 PmodOLED 插入 PYNQ JA 接口图然电等
四黄绿色 LED 亮起说明已启动
然开 pynq9090找 base>pmod 文件夹 pmod_oledipynb 文件运行
代码:
#导入 io 定义
from pynqoverlaysbase import BaseOverlay
from pynqlib import Pmod_OLED
base BaseOverlay(basebit)
20
#初始化连接 PmodOLED PmodA
pmod_oled Pmod_OLED(basePMODA)
#清屏输出字符
pmod_oledclear()
pmod_oledwrite('Welcome to the\nPynqZ1 board')
#清屏输出新字符(尝试输出信息)
pmod_oledclear()
pmod_oledwrite('Python and Zynq\nproductivity & performance')
#读取 ip 址输出
def get_ip_address()
ipaddr_slist hostname I
ipaddr (ipaddr_slists)split( )[0]
return str(ipaddr)
pmod_oledclear()
pmod_oledwrite(get_ip_address())
21
实验四:面部识
PYNQ 开发板 HDMI IN 连接电脑 HDMI 接口PYNQ 开发板 HDMI OUT 连接
显示器
开 base>video 文件夹 opencv_face_detect_hdmiipynb提示次运行代码
from pynqoverlaysbase import BaseOverlay
from pynqlibvideo import *
base BaseOverlay(basebit)
hdmi_in basevideohdmi_in
hdmi_out basevideohdmi_out
#初始化
hdmi_inconfigure(PIXEL_RGB)
hdmi_outconfigure(hdmi_inmode PIXEL_RGB)
hdmi_instart()
hdmi_outstart()
#输入检测图片(截屏)
import PILImage
frame hdmi_inreadframe()
img PILImagefromarray(frame)
imgsave(homexilinxjupyter_notebooksbasevideodataface_detectjpg)
img
# opencv 进行面部检测
import cv2
import numpy as np
frame hdmi_inreadframe()
face_cascade cv2CascadeClassifier(
'homexilinxjupyter_notebooksbasevideodata'
'haarcascade_frontalface_defaultxml')
eye_cascade cv2CascadeClassifier(
'homexilinxjupyter_notebooksbasevideodata'
'haarcascade_eyexml')
22
gray cv2cvtColor(frame cv2COLOR_BGR2GRAY)
faces face_cascadedetectMultiScale(gray 13 5)
for (xywh) in faces
cv2rectangle(frame(xy)(x+wy+h)(25500)2)
roi_gray gray[yy+h xx+w]
roi_color frame[yy+h xx+w]
eyes eye_cascadedetectMultiScale(roi_gray)
for (exeyeweh) in eyes
cv2rectangle(roi_color(exey)(ex+ewey+eh)(02550)2)
# OpenCV 面部识结果输出显示器
hdmi_outwriteframe(frame)
# Jupyter 中显示 OpenCV 面部识结果保存 JPEG 格式图片
img PILImagefromarray(frame)
imgsave(homexilinxjupyter_notebooksbasevideodataface_detectjpg)
img
#关闭 HDMI
hdmi_outstop()
hdmi_instop()
del hdmi_in hdmi_out
PYNQ 面部识输出结果:
23
意思手机拍摄 PYNQ 识结果时手机动图片进行面部识
蓝色框 PYNQ 识结果黄色框 Iphone 识结果项目算
法似略胜筹
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档