我们从2011年坚守至今,只想做存粹的技术论坛,记录你的技术足迹,有空就回来看看。  由于网站在外面,点击附件后可能要20秒才弹出下载,请耐心等待,勿重复点击

 找回密码
 立即注册
搜索
查看: 991|回复: 9

[技术文章] PYNQ-Z2零基础学习详解

[复制链接]

该用户从未签到

15

主题

9

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖

发表于 2021-1-17 10:32:01 | 显示全部楼层 |阅读模式
本人在学习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口,可以点击查看,再点击显示隐藏设备,灰色的口是没有连接的,黑色的就是正确的。
串口和路由器这两种连接方式是可以共存的


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


    from pynq.overlays.base import BaseOverlay[/li][li]


    base_overlay = BaseOverlay("base.bit")[/li][li]


    base_overlay.leds[0].on()[/li][li]


    import time[/li][li]


    while True:[/li][li]


        #base_overlay.leds[0].on()[/li][li]


        #time.sleep(0.5)[/li][li]


        #base_overlay.leds[0].off()[/li][li]


        #time.sleep(0.5)[/li][li]


        for i in range(0,8):[/li][li]


            base_overlay.rgbleds[4].write(i)[/li][li]


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


    from pynq.overlays.base import BaseOverlay[/li][li]


    base_overlay = BaseOverlay("base.bit")[/li][li]


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


        base_overlay.leds[0].on()[/li][li]


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


        base_overlay.leds[1].on()[/li][li]


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


        base_overlay.leds[2].on()[/li][li]


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


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


    #btn = base_overlay.buttons[0].read()#按键[/li][li]


    #print(btn)[/li][li]


    #sw = base_overlay.switches[0].read()[/li][li]


    #print(sw)[/li][li]


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


    #print("switch on")[/li][li]


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


    #print("btn pressed")[/li][li]


    import time[/li][li]


    while 1:[/li][li]


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


            for i in range(0,8):[/li][li]


                base_overlay.rgbleds[4].write(i)[/li][li]


                time.sleep(0.1)  [/li]
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没有连接路由器(也可能其他原因,反正是玄学,同样的情况第二次就不行了)。

解决方法是在通过串口连接板子的同时,电脑连路由器LAN口,PYNQ连另一个LAN口
成功界面:

以上步骤是将项目下载到pynq板子上,之后我们就可以从jupyter上运行代码辣!

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

使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2021-1-17 16:00:19 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-6-27 14:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    7

    主题

    478

    回帖

    650

    积分

    PADS-2020国庆特训班

    积分
    650

    终身成就奖

    发表于 2021-2-2 08:53:10 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    44

    回帖

    0

    积分

    一级逆天

    积分
    0

    终身成就奖

    发表于 2021-2-2 09:32:44 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    17

    主题

    110

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖

    发表于 2021-2-2 21:56:48 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    57

    回帖

    8

    积分

    一级逆天

    积分
    8

    社区居民终身成就奖

    QQ
    发表于 2021-3-22 19:39:55 | 显示全部楼层
    支持楼主,不错。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 35 天

    [LV.5]常住居民I

    43

    主题

    4690

    回帖

    3768

    积分

    二级逆天

    积分
    3768

    社区居民忠实会员社区劳模原创达人终身成就奖优秀斑竹奖特殊贡献奖原创先锋奖

    QQ
    发表于 2023-4-12 09:19:50 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    29

    主题

    1427

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2023-4-13 08:50:24 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    29

    主题

    1427

    回帖

    0

    积分

    二级逆天

    积分
    0

    终身成就奖特殊贡献奖原创先锋奖

    发表于 2023-4-13 08:50:31 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    前天 11:01
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    3

    主题

    1205

    回帖

    866

    积分

    二级逆天

    积分
    866

    终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2023-4-14 11:07:01 | 显示全部楼层
            
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表