PYNQ-Z2 AXI_GPIO实现按键控制led

前言

本文着重总结了使用PYNQ-Z2板子在配置zynq PS ip核的过程,我之前因为此处配置不对出了很多错,比如无法生成bit,下载程序出错等,看了很多博客,这样配置目前是不会出错的。

另外我之前尝试使用emio控制pl的按键和led,按键输入没问题,但是输出有小问题:不接led,就可以正常输出1,接上led就输出就一直是0,没找到原因,所以只能使用axi来实现按键控制led的功能。

本人水平有限,文中有任何不对的地方,欢迎指正!^-^

注意:本文使用的是pynq板文件,如果使用的是芯片文件,配置过程会有所不同,需要注意

c5ba116660e84f74adbdb1abf2868ba5.png

实验任务

利用AXI GPIO IP核,实现PS读取PL端的四个按键状态,并输出到PL端的四个led,实现一个按键控制一个led灯

硬件设计

块设计

添加zynq与axi gpio ip核

zynq 配置:

1.常规配置:

开启uart0:

437a73530edf4451afb7f62d3509e4da.png

配置DDR,这里pynq电路图里的ddr3型号其实并不包含在这里面,但选用这个也可以正常使用,可能是兼容的,注意需要设置16bit

67548e032a9745d187415e297bea76eb.png

2.pynq独特配置

在用户手册里可以看到,需要更改时钟为50Mhz

d37e1b2520574eb49b59f7959e2b5749.png

7bf2a633509940bd8ccf9982f2432e3b.png

MIO中bank1改为1.8v,也可以在电路图中找到:

1e02c1563b7542ddb7a2cb0e82eafb98.png

3e8e88beeac0415384a0db703eac275d.png

7d4ab2f2b6de4e629d6f9c125419b2cb.png

zynq 配置结束

axi gpio ip核配置如下,因为用的板文件,这里直接按提示选择led和按键就行:

7e7c04d929194d1e931a5c5ea0ba4d92.png

自动连接IP核:

efd9cee7a35d4690b45ebca5edf1c3a0.png

这里会自动添加两个ip核,一个是AXI互联,一个是提供复位信号的,这里可以不过多了解

验证之后就可以生成顶层 HDL

管脚定义

由于前面自动选择了led与按键,可以看到这里系统已经自动配置好了管脚:
d870c7bf42ea4846bd07c750d6bdfcdc.png

导出硬件

生产bit流并导出到SDK

软件设计

主函数代码如下:

#include "xil_printf.h"
#include "xil_io.h"
#include "xgpio.h"
#include "xparameters.h"

int main()
{
	print("Hello World\n\r");

	//实例变量
    XGpio led_key;

	//初始化器件驱动
	XGpio_Initialize(&led_key,XPAR_AXI_GPIO_0_DEVICE_ID);

	//设置io方向 Bits set to 0 are output and bits set to 1 are input.
    XGpio_SetDataDirection(&led_key,1,0b0000);
    XGpio_SetDataDirection(&led_key,2,0b1111);

    XGpio_DiscreteWrite(&led_key,1,0b0000);

    while(1)
    {
    	int a=XGpio_DiscreteRead(&led_key,2);
    	XGpio_DiscreteWrite(&led_key,1,a);
    }

    return 0;
}

实验现象

ad4ab2adf2e4420f97bfec20f884065a.png

 286b6c4da534462c892294ebf9ea2ad4.pngc392e1f6af8a44cebb0cdf4e0e448a61.pngb908614306044af19b494965a71afb01.png63d8f8cc0b8f478390a4a1484e074eff.png

 

03-08
### PYNQ-Z2 硬件规格 PYNQ-Z2 是一款基于 Xilinx Zynq-7020 SoC 的开发板,该平台融合了 ARM 处理器与可编程逻辑的优势。ARM Cortex-A9 双核处理器提供强大的处理能力,而 FPGA 部分则允许用户实现定制化的硬件加速功能[^1]。 具体来说,PYNQ-Z2 主要特性如下: - **SoC**: Xilinx Zynq-7020 XC7Z020-1CLG484C - **RAM**: 512MB DDR3 SDRAM - **Flash**: 4GB eMMC Flash, 512Mb QSPI Flash - **接口支持** - HDMI 输入/输出端口 - USB OTG 接口 - MicroSD 卡槽 - PMOD 和 Arduino 兼容扩展接口 - **电源管理**: 支持多种供电方式,包括 microUSB 或外部直流适配器 ### 使用教程 对于初学者而言,官方提供了详尽的入门指南来帮助熟悉环境设置以及基本操作流程。首先需安装必要的软件工具链,如 Vivado HLS、Vivado Design Suite 和 Jupyter Notebook Server。之后可以通过 Python 库轻松访问底层硬件资源并执行各种任务,比如配置 ADC/DAC 模块或运行神经网络推理引擎等。 为了更好地理解如何利用 PS-XADC 接口初始化 XADC,在实际项目中可以参照特定的应用实例来进行学习实践。这通常涉及到编写相应的驱动程序代码以确保正确读取传感器数据或将这些数值用于进一步分析处理。 ```python from pynq import Overlay overlay = Overlay('base.bit') adc_values = overlay.xadc.read() print(adc_values) ``` 上述脚本展示了加载预编译比特流文件并将 XADC 组件集成到应用程序中的方法。 ### 开发资源 开发者社区围绕 PYNQ 平台构建了大量的共享资料库,涵盖了从基础概念介绍到高级案例研究的内容范围。除了官方网站上的文档外,GitHub 上也有许多开源项目可供参考借鉴。特别是针对机器视觉领域的需求,有专门面向图像识别优化过的框架和算法集合被发布出来供爱好者们探索尝试[^2]。 此外,关于目标检测方面的工作,如果考虑采用深度学习技术,则可能需要用到像 Faster R-CNN 这样的先进架构配合 ResNet101 作为骨干网路结构,从而达到高效精准的目标定位效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值