ZYNQ7020笔记:MIO、EMIO、GPIO的区别及应用

ZYNQ 7020 之所以强大,在于它把ARM Cortex-A9处理器系统(PS)和FPGA逻辑(PL)集成在一个芯片里。而连接PS与外部世界的,就是MIOEMIO、GPIO。很多初学者分不清它们的区别,今天这篇文章就用最直白的方式讲清楚。

1 概述

如下图所示,

MIO:PS直接自带的硬件引脚,不占用PL资源,固定54根。

EMIO:PS通过PL"延伸"出来的虚拟引脚,占用PL的IO资源,最多可以扩展64根。

表现在FPGA上,如下图所示,UART0,当我们选择MIO接口时,在PL端是看不到的,因为它直接走PS端;但是当我们选择EMIO时,我们就可以在ZYNQ7 Processing System ip核看到UART_0端口,提示我们需要将此连接到PL端的引脚上。

2 外设接口和选择

如下图所示,ZYNQ上有很多外设接口,有的外设是可以自主选择MIO还是EMIO的,但并非所有的外设接口都是可以选择的。

2.1 MIO:PS的原装外设接口

ZYNQ 7020的PS集成了一堆常用外设控制器:UART、I2C、SPI、CAN、SDIO、以太网MAC、USB等。这些控制器的物理引脚 通常可以路由到MIO上。MIO一共有54个,分成Bank0(32位)和Bank1(22位)。

优点

  • 不消耗任何PL逻辑资源(LUT、FF、BRAM等全都不用)。

  • 布线固定,信号质量好,可靠性高。

  • 不需要配置FPGA,仅靠ARM程序就能跑。

局限性

  • 只有54个,而且很多外设会占用多个MIO(比如以太网需要十几根)。

  • 功能固定:只能作为PS外设的专用引脚,不能随意自定义。

实际用法:把常用的高速或标准接口(UART调试口、以太网、SD卡)优先挂在MIO上。

2.2 EMIO:PS的扩展外设接口

当MIO不够用,或者你想把PS的某个外设信号引到PL去加工一下再输出时,就要用EMIO

EMIO是PS内部的一根"虚拟导线",一端连着PS的外设控制器(比如UART的TX/RX),另一端却不是直接到芯片引脚 ,而是连接到PL内部的逻辑。你可以:

  • 在PL中把这些信号直接连到PL的IO引脚上(充当扩展IO)。

  • 也可以在中间加反相器、滤波、边沿检测等逻辑,再输出。

配置步骤

  • 在Vivado的ZYNQ IP核配置界面中,勾选想要引出的外设(比如UART1)的"EMIO"选项。

  • 将EMIO信号从ZYNQ IP核引出,连接到顶层模块的端口。

  • 添加XDC约束,分配PL引脚位置。

  • 生成bit文件,烧写到FPGA。

  • 在Vitis中编写PS代码(操作UART时,仍然使用标准驱动)。

注意 :EMIO作为GPIO使用时,引脚编号从54开始,对应Bank2和Bank3(各32位)。编程方法与MIO完全一样(调用XGpioPs_WritePin等函数),但必须先烧写bit文件。

2.3 GPIO

除了MIO和EMIO,ZYNQ还有一种扩展IO的方式:在PL里例化AXI GPIO IP核,通过AXI总线与PS通信。

对比项 MIO EMIO AXI GPIO
资源占用 仅IOB LUT+FF+IOB
延迟 最低 较低 较高(总线访问延迟)
灵活性 固定 可加工 完全自定义
适用场景 标准外设 扩展GPIO、信号调理 大量数据交互、自定义外设

建议

  • 能用MIO先用MIO。

  • MIO不够、且只是简单扩展IO或信号整形,用EMIO。

  • 需要PS直接访问PL侧大量寄存器或自定义外设,用AXI GPIO。

3 总结

  • MIO是PS的原生引脚,固定、可靠、省资源,优先用它接标准外设。

  • EMIO是PS经过PL延伸出来的虚拟引脚,灵活、可加工、扩展数量多,适合在MIO不够或需要信号处理时使用。

  • AXI GPIO是PL实现的全逻辑GPIO,资源消耗最大,但最灵活,适合PS与PL深度交互的场景。

理解了这三者的区别,你就能在ZYNQ设计中做到既省资源又省调试

相关推荐
不会武功的火柴2 小时前
SystemVerilog语法(7)-接口(interface)
嵌入式硬件·fpga开发·仿真·ic验证·rtl
高速上的乌龟2 小时前
Lattice LFCPNX-100 Fpga开发+源码:基于I2c协议的IMU驱动控制
fpga开发
GateWorld3 小时前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之基础三
fpga开发·lcd显示·minilvds·fpga点屏
cjie2214 小时前
图像缩放因子的计算
计算机视觉·fpga开发
XINVRY-FPGA10 小时前
XC7Z010-2CLG400I Xilinx Zynq-7000 FPGA
arm开发·嵌入式硬件·算法·fpga开发·硬件工程·dsp开发·fpga
XINVRY-FPGA11 小时前
XCZU11EG-2FFVC1156I Xilinx Zynq UltraScale+ MPSoC EG FPGA
图像处理·嵌入式硬件·计算机视觉·fpga开发·硬件工程·dsp开发·fpga
unicrom_深圳市由你创科技1 天前
USB通信在FPGA上怎么实现?
fpga开发
GateWorld1 天前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之基础二
fpga开发·lcd显示·minilvds·fpga点屏
禾刀围玉2 天前
基于FPGA的卷积神经网络实现-Step2 卷积模块设计
人工智能·fpga开发·cnn