`
上一篇帖子我主要是对板子烧好了镜像文件和正常启动和连接,这篇帖子主要介绍,我在PYNQ上运行的第一个例子和代码的分析.
1.硬件需求:
a.PYNQ-Z2板子(已安装好镜像文件);
b.网线;
c.micro u***线
2.启动板子,看到LD0-LD3全部亮起则表示启动正常;
3.通过谷歌浏览器访问:http://192.168.2.99:9090,和板子连接成功的电脑会打开jupyter,然后输入用户和密码,用户和密码都是xilinx;
4.打开base>board 文件夹中的board_btn_leds.ipynb 文件,然后点击工具栏的run 图标或者选择Cell->Run 运行代码。
5.然后你就可以在
开发板上按BTN0,板子上的LD4和LD5没按一次BTN0会变化一次,按BTN1,板子上的LD0-LD3会从左到右亮起,按BTN2,板子上的LD0-LD3会从右到左亮起,按BTN3会关闭LD0-LD5.
6.代码分析:
<
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()
>
表面看代码很简单,但是分析内部实现的话估计就复杂了,好了今天就到这,我去寻找他底层的代码,看这些是如何实现的。
`