Ultra96 PYNQ入门之二——PS端控制AXI GPIO

Ultra96 PYNQ入门之二——PS端控制AXI GPIO

不合理的地方欢迎批评指正!!!

源代码链接:Ultra96-PYNQ_A-simple-summary

1 简单分析AXI GPIO模块

AXI GPIO模块整体格局与GPIO模块有点类似,有个需要特别注意的地方,就是要理解Python的继承思想

hd_gpio = axi_gpio_design.axi_gpio.Output( parent=axi_gpio_design.axi_gpio.channel1, 
										    start=0, stop=1 )

hd_gpio的Output属性,是继承自channel1。

至于为什么不直接使用Channel类的方法,原因是Input、Output、InOut类有特殊的函数

  • Input类特有的wait_for_value_async、wait_for_value
  • Output类on、off、toggle

这样只有在相应的类中才可以使用相应的函数。

注:以上是个人对Python继承的浅显理解,不当之处还请指正。

2 AXI GPIO的使用

2.1 硬件设计

这里同样使用这6个小家伙作为AXI GPIO示例,约束为可以输入可以输出,具体如何使用,需要软件进一步配置
在这里插入图片描述
很简单的一个设计,可以在Vivado中的TCL控制台通过如下命令,进行快速重建

source 2.axi_gpio.tcl

在这里插入图片描述

2.2 控制AXI GPIO

使用类似的代码,即可进行验证

from time import sleep
from pynq import Overlay
#AxiGPIO可以不导入,直接使用Overlay也可
from pynq.lib import AxiGPIO

axi_gpio_design = Overlay("./data/2.AXI_GPIO.bit")
hd_gpio = axi_gpio_design.axi_gpio.Output( parent=axi_gpio_design.axi_gpio.channel1, 
										    start=0, stop=1 )

for i in range(100):
    sleep(0.1)
    hd_gpio.toggle()

逻辑分析仪的测量结果如下,符合软件设置的间隔。
在这里插入图片描述



原创不易,严禁剽窃!

在这里插入图片描述

欢迎大家关注我创建的微信公众号——小白仓库
原创经验资料分享:包含但不仅限于FPGA、ARM、RISC-V、Linux、LabVIEW等软硬件开发,另外分享生活中的趣事以及感悟。目的是建立一个平台记录学习过的知识,并分享出来自认为有用的与感兴趣的道友相互交流进步。

猜你喜欢

转载自blog.csdn.net/qq_35712169/article/details/106246416