ZYNQ7020笔记:MIO、EMIO、GPIO的区别及应用
ZYNQ 7020 之所以强大在于它把ARM Cortex-A9处理器系统PS和FPGA逻辑PL集成在一个芯片里。而连接PS与外部世界的就是MIO、EMIO、GPIO。很多初学者分不清它们的区别今天这篇文章就用最直白的方式讲清楚。1 概述如下图所示MIOPS直接自带的硬件引脚不占用PL资源固定54根。EMIOPS通过PL“延伸”出来的虚拟引脚占用PL的IO资源最多可以扩展64根。表现在FPGA上如下图所示UART0当我们选择MIO接口时在PL端是看不到的因为它直接走PS端但是当我们选择EMIO时我们就可以在ZYNQ7 Processing System ip核看到UART_0端口提示我们需要将此连接到PL端的引脚上。2 外设接口和选择如下图所示ZYNQ上有很多外设接口有的外设是可以自主选择MIO还是EMIO的但并非所有的外设接口都是可以选择的。2.1 MIOPS的原装外设接口ZYNQ 7020的PS集成了一堆常用外设控制器UART、I2C、SPI、CAN、SDIO、以太网MAC、USB等。这些控制器的物理引脚通常可以路由到MIO上。MIO一共有54个分成Bank032位和Bank122位。优点不消耗任何PL逻辑资源LUT、FF、BRAM等全都不用。布线固定信号质量好可靠性高。不需要配置FPGA仅靠ARM程序就能跑。局限性只有54个而且很多外设会占用多个MIO比如以太网需要十几根。功能固定只能作为PS外设的专用引脚不能随意自定义。实际用法把常用的高速或标准接口UART调试口、以太网、SD卡优先挂在MIO上。2.2 EMIOPS的扩展外设接口当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和EMIOZYNQ还有一种扩展IO的方式在PL里例化AXI GPIO IP核通过AXI总线与PS通信。对比项MIOEMIOAXI GPIO资源占用无仅IOBLUTFFIOB延迟最低较低较高总线访问延迟灵活性固定可加工完全自定义适用场景标准外设扩展GPIO、信号调理大量数据交互、自定义外设建议能用MIO先用MIO。MIO不够、且只是简单扩展IO或信号整形用EMIO。需要PS直接访问PL侧大量寄存器或自定义外设用AXI GPIO。3 总结MIO是PS的原生引脚固定、可靠、省资源优先用它接标准外设。EMIO是PS经过PL延伸出来的虚拟引脚灵活、可加工、扩展数量多适合在MIO不够或需要信号处理时使用。AXI GPIO是PL实现的全逻辑GPIO资源消耗最大但最灵活适合PS与PL深度交互的场景。理解了这三者的区别你就能在ZYNQ设计中做到既省资源又省调试。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2628813.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!