【ZYNQ7000学习之旅 - 01】EMIO练习

【ZYNQ7000学习之旅 - 01】EMIO练习

ZYNQ7000 EMIO练习参考

背景

准备

功能

生成XSA文件

编写APP

总结

xilinx ug1165

pynq z-2 用户手册

zynq7000 MIO有53个,在BANK0和BANK1,并且直接与PS相连;EMIO有64个,在BANK2和BANK3,与PL相连;PS可以通过EMIO连接PL端的引脚。

Vivado2020.1

Vitis2020.1

pynq z-2

使用PL端口的SW0和LED1,SW0作为AXI GPIO,LED1作为EMIO;SW0的切换实现LED1的亮灭。

新建vivado工程;

创建Block Design;

添加zynq ip,做好基础设置;

添加EMIO,在MIO Configuration->I/O Peripherals->GPIO->EMIO GPIO,选择1个EMIO。

zynq会生成如下的一个gpio:

添加AXI GPIO,选择通道1,1位宽,设置如下:

自动连线得到如下图(axi timer是后续用来做定时器中断用的,本章节忽略):

接着就是添加引脚约束,生成bit流文件;

加入vitis之后,vivado好像就不生成hdf文件了,而是生成.xsa文件,点击File->Export Hardware Platform,选择:

在Vivado中,launch vitis:

手动创建vitis工程,选择工作区

还是和以前SDK一样创建一个裸机的hello world工程,一路next。

参考了UG1165的demo,接着上代码:

#include

#include "platform.h"

#include "xil_types.h"

#include "xgpio.h"

#include "xtmrctr.h"

#include "xparameters.h"

#include "xgpiops.h"

#include "xil_io.h"

#include "xil_exception.h"

#define PS_PIN_DIRECTION_OUT0x1

#define PS_PIN_DIRECTION_IN0x0

#define PL_PIN_DIRECTION_OUT0x0

#define PL_PIN_DIRECTION_IN0x1

#define PS_ENABLE_OUTPIN0x1

#define PS_DISABLE_OUTPIN0x0

#define CHANNEL10x1

#define CHANNEL20x2

#define LED1_ON()XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberEMIO,1)

#define LED1_OFF()XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberEMIO,0)

u32 ReadStatus = 0;

int main()

{

XGpioPs psGpioInstancePtr;//emio

XGpio GPIOInstance_Ptr;//mio

XGpioPs_Config *GpioConfigPtr;

XTmrCtr TimerInstancePtr;

int iPinNumberEMIO = 54;//mio 有53个

int xStatus;

//ps gpio initialize

GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);

if(GpioConfigPtr == NULL)

return XST_FAILURE;

xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,

GpioConfigPtr, GpioConfigPtr->BaseAddr);

if(XST_SUCCESS != xStatus)

print(" PS GPIO INIT FAILED \n\r");

XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberEMIO, PS_PIN_DIRECTION_OUT);

XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberEMIO, PS_ENABLE_OUTPIN);

//axi gpio initialize

XGpio_Initialize(&GPIOInstance_Ptr,XPAR_AXI_GPIO_0_DEVICE_ID);

XGpio_SetDataDirection(&GPIOInstance_Ptr, CHANNEL1, PL_PIN_DIRECTION_IN);

if(XST_SUCCESS != xStatus)

print("AXI GPIO INIT FAILED\n\r");

// loop start

while(1) {

ReadStatus = XGpio_DiscreteRead(&GPIOInstance_Ptr, CHANNEL1);

if (ReadStatus == 0x1) {

LED1_ON();

} else if(ReadStatus == 0x0) {

LED1_OFF();

}

}

return 0;

}

PS通过EMIO可以控制PL端的引脚

【ZYNQ7000学习之旅 - 01】EMIO练习相关教程

zynq的emio和axi_【ZYNQ7000学习之旅 - 01】EMIO练习相关推荐

  1. Vue学习之旅-01

    Vue01 1. 初体验 2. 插值操作 3. 动态绑定属性 4. 计算属性 5. 事件监听 6. 条件判断 1. 初体验 初体验 <!DOCTYPE html> <html lan ...

  2. hadoop学习之旅1

    大数据介绍 大数据本质也是数据,但是又有了新的特征,包括数据来源广.数据格式多样化(结构化数据.非结构化数据.Excel文件.文本文件等).数据量大(最少也是TB级别的.甚至可能是PB级别).数据增长 ...

  3. 基于设计模式的学习之旅-----访问者模式(附源码)

    基于设计模式的学习之旅-----访问者模式 1.初始访问者模式 2.什么是访问者模式 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 3.模 ...

  4. WCF学习之旅—WCF服务的WAS寄宿(十二)

    上接    WCF学习之旅-WCF服务部署到IIS7.5(九) WCF学习之旅-WCF服务部署到应用程序(十) WCF学习之旅-WCF服务的Windows 服务程序寄宿(十一) 八.WAS宿主 IIS ...

  5. 基于 Android NDK 的学习之旅-----资源释放

    基于 Android NDK 的学习之旅-----资源释放 做上一个项目的时候因为与C引擎交互频繁,有时候会突然莫名其妙的的整个应用程序直接挂掉.因为我是学Java 开始的,所以对主动释放内存没多大概 ...

  6. java message bus_【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例...

    今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支 ...

  7. 基于 Android NDK 的学习之旅----- C调用Java

    2019独角兽企业重金招聘Python工程师标准>>> 基于 Android NDK 的学习之旅----- C调用Java 许多成熟的C引擎要移植到Android 平台上使用 , 一 ...

  8. 我的angularjs源码学习之旅2——依赖注入

    依赖注入起源于实现控制反转的典型框架Spring框架,用来削减计算机程序的耦合问题.简单来说,在定义方法的时候,方法所依赖的对象就被隐性的注入到该方法中,在方法中可以直接使用,而不需要在执行该函数的时 ...

  9. NGUI从入门到实战第1章开启NGUI学习之旅

    NGUI从入门到实战第1章开启NGUI学习之旅 NGUI是Unity最重要的插件之一.使用NGUI可以高效地为游戏添加界面.本书将带领大家学习NGUI.作为NGUI学习之旅的第一站,本章会在整体上介绍 ...

最新文章

  1. 【评分】团队作业-随堂小测(同学录)
  2. 转:图解C#的值类型,引用类型,栈,堆,ref,out
  3. acer p245 linux换win7,宏碁Acer笔记本预装Win8改Win7设置教程
  4. 公共方法-完整的for循环-for else
  5. Sprint Application bootstrap的研究和调试
  6. Insider Dev Tour 2019 | 以技术之力,展现传承魅力
  7. C51存储器类型与51单片机的物理区域
  8. 清华开学,713分寒门学霸揭露一个真相:别抱怨读书苦,那是你看世界的路
  9. java 寻找和为定值的多个数_算法笔记_037:寻找和为定值的两个数(Java)
  10. html提交表单使用python计算_教你使用Python实现新个税计算器
  11. 【资源下载】921页《用Python3带你从小白入门机器学习实战》教程手册
  12. 自动化测试中的测试执行自动化
  13. Julia: using Gadfly using Cairo的一个郁闷的问题!
  14. Unity技术分享之Mac环境下dll反编译
  15. jQuery boxy弹出层对话框插件中文演示及讲解
  16. win10下卜卦占星工具
  17. 简单的Dos命令/一行代码实现恶意程序
  18. 机器学习——基础知识
  19. 2022年中国云市场份额:阿里云腾讯云下降
  20. 基于SpringBoot+jpa+Erupt的出入登记签到打卡系统

热门文章

  1. vlan跨交换机 udp广播_网络交换VLAN基础入门
  2. 2017.8.14 分手是祝愿 失败总结
  3. 2017.4.24 聪明的质检员 思考记录
  4. 2017.3.30 寿司晚宴 失败总结
  5. eclipse--基本配置
  6. oracle 数据补齐月份,Oracle自定义函数--增加月份
  7. 字符串比较中NSNumericSearch选项的工作原理
  8. 前端技术演进(六):前端项目与技术实践
  9. C# 计算代码执行时间
  10. 让百度地图API支持HTTPS