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设计中做到既省资源又省调试

相关推荐
FPGA小迷弟1 天前
【无标题】
fpga开发·dsp开发·fpga·sdr·无线电
szxinmai主板定制专家1 天前
【工控实战】RK3568/RK3588 8路隔离CAN/CANFD完整解决方案|多路总线并行通信、车载/工控量产落地
人工智能·fpga开发·zynq·mpsoc·半导体设备
szxinmai主板定制专家1 天前
【嵌入式实战】RK3588+GMSL多路相机采集方案|SerDes长距离低延时视频流落地教程
人工智能·单片机·机器人·边缘计算·zynq
郝旭帅电子设计团队1 天前
Xilinx FPGA的BANK标号命令规则
fpga开发·郝旭帅电子设计团队·郝旭帅
威嵌神州1 天前
天脉 3 开发环境与 BSP 适配:IDE license、驱动开发、飞腾平台
ide·驱动开发·嵌入式硬件·fpga开发
FPGA小迷弟2 天前
FPGA 应用技术能力的完整闭环(5-8)
fpga开发·dsp开发·fpga·sdr·无线电
狂奔蜗牛(bradley)2 天前
搞定100ns抖动:ARM+FPGA混合EtherCAT主站实战方案
嵌入式硬件·fpga开发
free-elcmacom2 天前
FPGA学习笔记<2>Verilog输入
fpga开发·硬件工程
学习FPGA的电气小兴兴2 天前
基于FPGA的CORDIC向量模式实现arctan运算,Verilog HDL实现
嵌入式硬件·fpga开发·数字信号处理·verilog·fpga·cordic·arctan
xxy222412 天前
ARM裸机开发(4)GPIO与LED/按键驱动详解——引脚复用与电气特性配置
arm开发·gpio