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

ZYNQ 7020 之所以强大,在于它把ARM Cortex-A9处理器系统(PS)和FPGA逻辑(PL)集成在一个芯片里。而连接PS与外部世界的,就是MIO 、EMIO、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设计中做到既省资源又省调试。

相关推荐
ERROR:9916 小时前
AMD Ross没有介入Vivado的私生活
fpga开发
Riwuarua17 小时前
从近似 0 基础开始 FPGA 开发——Part.18:FPGA 复位系统与可靠启动设计
fpga开发
智感子2 天前
测控链路:从传感器到上位机
人工智能·嵌入式硬件·fpga开发
szxinmai主板定制专家3 天前
基于Zynq的高精度多通道数据采集卡完整解决方案(工业振动/高速采集/边缘传输)
fpga开发·zynq·数据采集卡
szxinmai主板定制专家3 天前
基于TI AM62x+FPGA的24bit高精度数据采集卡设计(振动/风电/发动机监测)
人工智能·fpga开发·arm+fpga·rk3588+fpga
szxinmai主板定制专家3 天前
基于 ARM+FPGA 雕刻机控制系统的设计
arm开发·人工智能·fpga开发·rk3576·半导体设备
阿钱真强道3 天前
课时02 嵌入式技术应用设计实训 | GPIO 输入与外部中断:按键
外部中断·gpio·按键·nvic·stm32f103·嵌入式入门·消抖
吉他英雄一里4 天前
zynq入门教程
fpga开发·zynq
XMAIPC_Robot4 天前
RK3576/RK3588+FPGA+AI数据采集系统:实时性与边缘AI算力兼顾
人工智能·fpga开发·机器人·数据采集·rk3588+fpga·rk3576+fpga
火花页.4 天前
【正点原子ZYNQ领航者7020】PS写ramPL读ram实验
zynq