EMIO

ZYNQ EMIO使用及可重用封装

为了快速实现算法板级验证,PC端需要通过JTAG或以太网与FPGA形成通路。最简单便捷的方案是利用协议栈芯片,用户可以无视底层,利用简单的SPI协议读写寄存器实现复杂的TCP UDP等网络协议。当然带宽会受限于SPI接口有效速率,本文采用芯片为W5500,支持10M/100M自适应,其理论值高达80Mbps,基本达到算法验证的要求。

  ZYNQ可以通过灵活的EMIO模拟SPI接口,从而在最少改动官方demo的前提下移植C语言驱动程序。本文着重讲述EMIO的C语言软件驱动方式及可重用封装,封装后可以接口方式被其他应用程序直接调用,非常方便。直接上代码,再加以说明。
/*
* EMIO_ope.c
*
*/

#include "xgpiops.h"
#include "xparameters.h"
#include "xstatus.h"
#include "W5500.h"
#include "EMIO_ope.h"

static XGpioPs psGpioInstancePtr;

int EMIO_init()
{
XGpioPs_Config* GpioConfigPtr;
int xStatus;

//--EMIO的初始化

Zedboard学习笔记之——EMIO的使用

Zynq7020有两种GPIO,一种是上一篇讲的MIO,它是属于PS端的;另一种就是EMIO,属于PL端,有64bit,这种在操作时,需要分配引脚约束。Zedboard上有8bit的LED,通过EMIO来驱动。下面就来讲讲EMIO驱动LED的详细过程。注意这里还是采用EDK的方式,当然也可以采用纯verilog来驱动LED,这种方式相信大家都做过。

首先,打开上一篇MIO的Vivado工程,双击ZYNQ ip核,进行配置:


MiZ702学习笔记5——EMIO使用详解

上次讲到MIO的使用,初步熟悉了EDK的使用,这次就来说说EMIO的使用。如你所见zynq的GPIO,分为两种,MIO(multiuse I/O)和EMIO(extendable multiuse I/O)

MIO分配在bank0和bank1直接与PS部分相连,EMIO分配在bank2和bank3直接和PL部分相连。除了bank1是22-bit之外,其他的bank都是32-bit。所以MIO有53个引脚可供我们使用,而EMIO有64个引脚可供我们使用。

使用EMIO的好处就,当MIO不够用时,PS可以通过驱动EMIO控制PL部分的引脚,接下来就来详细介绍下EMIO的使用。

EMIO的使用和MIO的使用其实是非常相似的。区别在于,EMIO的使用相当于,是一个PS + PL的结合使用的例子。所以,EMIO需要分配引脚,以及编译综合生成bit文件。

我们从添加ZYNQ的IP开始讲,这次添加一个配置更加简洁的ZYNQ IP:

Zynq-7000的MIO和EMIO之区别

Zynq7000系列芯片有54个MIO,可以在XPS环境下将这些MIO直接配置为外设的引脚,不需要添加约束文件,MIO信号对PL部分是透明的,不可见。

同时Zynq可以配置多达63个EMIO引脚,这些引脚可以配置到PL部分,也可以配置为外设的引脚,不过需要添加约束文件指定封装引脚。

可以参考这个视频:

XPS软件配置好后,生成SDK后,板级支持包会自动配置MIO和EMIO管脚的外设用途,BSP中的外设驱动程序会初始化这些引脚。

原文链接: http://blog.csdn.net/linyangspring/article/details/38061241

问题:关于EMIO部分,管脚设置是在XPS设置还是在UCF文件指定?专家解答:一般是在XPS中的PCW中,当然也可以手动编写.ucf

视频:如何配置Zynq-7000的MIO和EMIO

了解如何使用PlanAhead/XPS流程将信号输出到“现实世界”。

本视频向您演示了如何在PlanAhead/XPS流程中使用MIO或者EMIO将信号输出到“现实世界”中。

问题:在SDK下,我为zynq顺利完成了UART1口的调试,在这里使用的是MIO引脚输出(为MIO48和MIO49),我调用系统提供的函数Uart_Ps_Tx()就能顺利完成串口发送,底层的函数已经帮助用户

同步内容