FPGA|CPLD|ASIC论坛
直播中

yangzhixiong11

8年用户 423经验值
擅长:模拟技术
私信 关注
[经验]

【PYNQ-Z2试用体验】在PYNQ上运行代码的分析

`上一篇帖子我主要是对板子烧好了镜像文件和正常启动和连接,这篇帖子主要介绍,我在PYNQ上运行的第一个例子和代码的分析.
1.硬件需求:
a.PYNQ-Z2板子(已安装好镜像文件);
b.网线;
c.micro u***线
2.启动板子,看到LD0-LD3全部亮起则表示启动正常;
3.通过谷歌浏览器访问:http://192.168.2.99:9090,和板子连接成功的电脑会打开jupyter,然后输入用户和密码,用户和密码都是xilinx;
3.png
4.打开base>board 文件夹中的board_btn_leds.ipynb 文件,然后点击工具栏的run 图标或者选择Cell->Run 运行代码。
1.png
4.png

2.png

5.然后你就可以在开发板上按BTN0,板子上的LD4和LD5没按一次BTN0会变化一次,按BTN1,板子上的LD0-LD3会从左到右亮起,按BTN2,板子上的LD0-LD3会从右到左亮起,按BTN3会关闭LD0-LD5.
5.png
6.代码分析:
9.png 10.png

<
from time import sleep
from pynq.overlays.base import BaseOverlay

base = BaseOverlay("base.bit")

Delay1 = 0.3
Delay2 = 0.1
color = 0
rgbled_position = [4,5]
//import PYNQ对开发板的支持文件
for led in base.leds:
    led.on()    //启动LED都亮起
while (base.buttons[3].read()==0):  //按下BTN3时LED全灭
    if (base.buttons[0].read()==1):    //按下BTN0时LD4/LD5变化
        color = (color+1) % 8
        for led in rgbled_position:
            base.rgbleds[led].write(color)
            base.rgbleds[led].write(color)
        sleep(Delay1)         

    elif (base.buttons[1].read()==1):  //按下BTN1时LED的变化
        for led in base.leds:
            led.off()
        sleep(Delay2)
        for led in base.leds:
            led.toggle()
            sleep(Delay2)

    elif (base.buttons[2].read()==1):
        for led in reversed(base.leds):
            led.off()
        sleep(Delay2)
        for led in reversed(base.leds):
            led.toggle()
            sleep(Delay2)                  

print('End of this demo ...')
for led in base.leds:
    led.off()
for led in rgbled_position:
    base.rgbleds[led].off()
>
表面看代码很简单,但是分析内部实现的话估计就复杂了,好了今天就到这,我去寻找他底层的代码,看这些是如何实现的。



` 6.jpg

更多回帖

发帖
×
20
完善资料,
赚取积分