PYNQ学习笔记一:使用MicroBlaze做协处理器驱动传感器模块
前言
PYNQ项目是一个支持Xilinx Zynq器件的开源软件框架,目的在于借助Python降低Zynq嵌入式系统开发门槛,有丰富的组件:
- 可编程逻辑的控制
- Jupyter Notebook接口
- 预安装的Python库
- 网络/USB/UART接口
PYNQ官网http://www.pynq.io
我手上这块开发板是PYNQ-Z1,上手有一段时间了,还是没玩出什么名堂来。主要是网上关于PYNQ的资料太少,中文资料几乎没有,我手头上的资料只有官方的文档和Github上的代码,对我这种英文不好的人来说太难。我觉得PYNQ功能确实很强大(虽然我不怎么会用),Jupyter也非常友好,好东西不应该被埋没。
我也分享一些我的学习心得,跟大家共同学习。(怎么感觉给自己开了个大坑?)
话不多说,直接进入正题。
一、为什么要用MicroBlaze
虽然PYNQ提供了直接控制IO的Python库,但是光靠Python控制IO口和其他模块通信是不现实的。如果需要一个IIC,SPI之类的接口和其他模块通信,还是需要用MicroBlaze。PYNQ提供的例程是使用MicroBlaze控制IO,然后用Python控制MicroBlaze。
比如这个控制LED灯条的例程:
# Make sure the base overlay is loaded
from pynq.overlays.base import BaseOverlay
base = BaseOverlay("base.bit")
from pynq.lib.arduino import Grove_LEDbar
from pynq.lib.arduino import ARDUINO_GROVE_G4
# Instantiate Grove LED Bar on Arduino shield G4
ledbar = Grove_LEDbar(base.ARDUINO,ARDUINO_GROVE_G4)
ledbar.reset()
ledbar.write_binary(0b1010100000)
看Python库就可以知道,它是为Microblze写好程序,