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等软硬件开发,另外分享生活中的趣事以及感悟。目的是建立一个平台记录学习过的知识,并分享出来自认为有用的与感兴趣的道友相互交流进步。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值