overminded 发表于 2021-1-17 10:32:01

PYNQ-Z2零基础学习详解

本人在学习PYNQ,想用自己的理解来解释零基础学习过程中的一些坑,同时采用非官方语言来介绍如何使用PYNQ。大家有什么问题可以给我留言。


简介:PYNQ是“python productivity for zynq”的缩写,它是一块开发板,是赛灵思公司出品,能用python来简化开发赛灵思公司的zynq的芯片的。通常FPGA开发都是采用硬件描述语言的(如verilog)的。pynq实现了用python纯软件编程。片上系统SOC包含两部分,PS和PL端(是什么不知道,先记住),用Python编程,主要是对PS端的简化。

day 0
       搭建硬件
其实就是利用win32磁盘工具给SD卡烧录一个镜像,也即linx系统。然后将SD卡插到PYNQ-Z2里面。最后上电看一看灯的闪烁是否符合要求就行。
注意:1.通过读卡器给TF卡烧录系统后,会弹出不可用,是否格式化的窗口。点否即可。
2。供电模式要设置正确,如果使用电源适配器给PYNQ供电,要更改跳线。(USB供电的模式电流小)
3.可以直接用网线连接电脑和PYNQ,也可以通过路由器连接。通过路由器连接,PYNQ就可以上网。电脑连WIFI,电脑通过网线和PYNQ连接,PYNQ也可以上网!

day 1
    搭建软件环境
就是说,不能直接在pynq上编程,要在计算机上编。大概有3种方式:
1.计算机和PYNQ网线直连,进入jupyter,然后编程,把程序下载到pynq里
2.在文件管理器打开pynq的文件列表,把编号的程序拖进去
3.通过串口连接,最快,适用于没网的情况。设备里出现usb serial convert A和usb serial convert B而没有出现端口号时,可以下载个360驱动试一试。看端口下是COM几,我这次是COM10。打开串口终端,可以发送指令。可以ping一下
注意:1.使用串口时,要使用专用可传输数据的USB线,不能用仅可充电的USB线,线在PYNQ那里要确认插入进去
         2.搭建软件环境指的是在自己笔记本电脑上登陆upyter页面,这样就可以利用python在电脑上给pynq编程了。
         3.如果在打开设备管理器时,找不到com口,可以点击查看,再点击显示隐藏设备,灰色的口是没有连接的,黑色的就是正确的。
串口和路由器这两种连接方式是可以共存的
https://img-blog.csdnimg.cn/20190119114721632.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE5MA==,size_16,color_FFFFFF,t_70

day 2
今天,用day1的第一种方法中的jupyter来给pynq的板子点亮第一个LED灯。
led灯直接连接到了PYNQ的PL端,为了通过python控制led,我们要先导入overlay。私以为,通过路由器连接是最好最安全的方法。是在线编程
代码如下:



from pynq.overlays.base import BaseOverlay


base_overlay = BaseOverlay("base.bit")


base_overlay.leds[0].on()


import time


while True:


    #base_overlay.leds.on()


    #time.sleep(0.5)


    #base_overlay.leds.off()


    #time.sleep(0.5)


    for i in range(0,8):


      base_overlay.rgbleds[4].write(i)


      time.sleep(0.1)先插入overlay,再令灯闪灭。给大家介绍一些英文文档供大家学习:
https://pynq.readthedocs.io/en/latest/index.html
https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.led.html
https://pynq.readthedocs.io/en/latest/pynq_package/pynq.lib/pynq.lib.rgbled.html
day 3
今天来学习使用拨码以及按键,会一些python语法,然后查阅文档,是很好的学习方法。该代码段功能主要是通过读取按键与拨码的值来控制灯的闪灭



from pynq.overlays.base import BaseOverlay


base_overlay = BaseOverlay("base.bit")


if (base_overlay.switches[0].read()==0 and base_overlay.switches[1].read()==0) :


    base_overlay.leds[0].on()


elif (base_overlay.switches[0].read()==0 and base_overlay.switches[1].read()==1) :


    base_overlay.leds[1].on()


elif (base_overlay.switches[0].read()==1 and base_overlay.switches[1].read()==0) :


    base_overlay.leds[2].on()


elif (base_overlay.switches[0].read()==1 and base_overlay.switches[1].read()==1) :


    base_overlay.leds[3].on()#注意python的elif和and和C语言不一样


#btn = base_overlay.buttons.read()#按键


#print(btn)


#sw = base_overlay.switches.read()


#print(sw)


#base_overlay.switches.wait_for_value(1)#等待拨码值为1才执行下一句


#print("switch on")


#base_overlay.buttons.wait_for_value(1)#等待按键值为1才执行下一句


#print("btn pressed")


import time


while 1:


    if base_overlay.buttons[0].read() == 1 :#按键


      for i in range(0,8):


            base_overlay.rgbleds[4].write(i)


            time.sleep(0.1)day 4
用串口shell指令,直面linux系统。用putty打开后的界面,在里面输入sudo apt-get install vim安装vim(需笔记本联网)
输入密码的时候,xilinx不显示,输入完成后直接回车即可
然后新建一个源码文件:sudo vim test.py
输入xilinx密码
就可以进入编译环境辣!
进入编译环境,先点击i进入编辑模式,默认是指令模式
最后保存,也可以下载到pynq中运行编写的代码
day 5
我们还可以参与pynq社区里的项目
从github上安装BNN社区项目出现这种情况是因为你的PYNQ没有连接路由器(也可能其他原因,反正是玄学,同样的情况第二次就不行了)。
https://img-blog.csdnimg.cn/20190120164117802.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE5MA==,size_16,color_FFFFFF,t_70
解决方法是在通过串口连接板子的同时,电脑连路由器LAN口,PYNQ连另一个LAN口
成功界面:
https://img-blog.csdnimg.cn/20190120164324855.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4OTE5MA==,size_16,color_FFFFFF,t_70
以上步骤是将项目下载到pynq板子上,之后我们就可以从jupyter上运行代码辣!

day 7
今天基于vivado在PL端操作,之前是基于PS端。
在安装好vivado之后,需要先导入板层文件,这样开发就会变得快多了。
在创建好vivado工程之后,编程之前,加载 XDC 约束文件,控制引脚分配。
创建工程的时候,有Boards和Parts,要确认选择了Boards后选择PYNQ-Z2
用vivado的供电方式如下:

mj8abcd 发表于 2021-1-17 16:00:19

972204656 发表于 2021-2-2 08:53:10

看看了

daicy 发表于 2021-2-2 09:32:44

小龙 发表于 2021-2-2 21:56:48

eastsnow001 发表于 2021-3-22 19:39:55

支持楼主,不错。

kingweison 发表于 2023-4-12 09:19:50

sen1 发表于 2023-4-13 08:50:24

sen1 发表于 2023-4-13 08:50:31

phw611 发表于 2023-4-14 11:07:01

页: [1]
查看完整版本: PYNQ-Z2零基础学习详解