MIO与EMIO的关系解析GPIO、MIO、EMIO的区别-飞外网

点亮流水灯,共使用了三种方式:
(1)PS通过MIO点亮PS端LED
(2)PS通过EMIO点亮PL端LED
(3)PS通过AXI点亮PL端LED。

1. MIO与EMIO



EMIO依然属于PS,只是连接到了PL,再从PL输出信号。

2. PS通过MIO点亮PS端LED



从电路中看得很清楚,这两个LED直接连接在MIO0和MIO13上,所以直接在这两个端口输出高低电平就可以控制灯闪烁了。

首先建立.bd文件,添加zynq的ip核,去掉PL的资源(包括PS-PL configuration——general——Enable Clock Resets中的FCLK_RESET0_N以及AXI None Secure Enablement——GP Master AXI Interface中的GP0以及Clock Configuration——PL Fabric Clocks中的FCLK_CLK0)。

在外设I/O中,打开UART1,对应MIO48、49口,打不打开都无所谓,打开调试用。此时在MIO中已经看到UART1已经分配了管脚,然后在GPIO里,打开MIO。



最后在DDR里,找到所用的DDR芯片,比如我用的是HA-125。这样所有的平台就搭好了。直接generate out products——create HDL wrapper——export Hardware——lanuch SDK。

进入SDK,建立工程。首先引头文件xgpiops.h

对MIO0和MIO13,初始化引脚。

s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr, u32 EffectiveAddr);
这个函数初始化gpio,第一个参数需要一个XGpioPs的结构体指针,直接在函数开头实例化就好了,结构体的组成在.h文件。第二个参数是一个XGpioPs_Config类型结构体指针,这个结构体的内容:

typedef struct { u16 DeviceId; /**rameter.h头文件,里面定义了分配的各种资源的ID。

基地址就在配置信息查了,如何获得gpio的配置信息:

首先实例化一个XGpioPs_Config类型的指针。使用XGpioPs_LookupConfig函数,它能够在配置信息中找到对应ID的配置信息:

所以就很明确了:

xgpio_config = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);//找分配的MIO配置信息(基地址)status = XGpioPs_CfgInitialize(&xgpio, xgpio_config,xgpio_config->BaseAddr);//初始化if(status!=XST_SUCCESS)//初始化成功return XST_FAILURE;
然后就是定义gpio口的属性,包括输入输出和端口使能:

XGpioPs_SetDirectionPin(&xgpio, LED1, 1);//outputXGpioPs_SetDirectionPin(&xgpio, LED2, 1);//XGpioPs_SetOutputEnablePin(&xgpio, LED1, 1);//enableXGpioPs_SetOutputEnablePin(&xgpio, LED2, 1);
再后面就在while(1)中循环点灯,用XGpioPs_WritePin函数输出高低电平。

这是纯PS点流水灯。

3. PS通过EMIO点亮PL端LED

通过EMIO点PL端LED,在配置zynq ip核时,基本步骤差不多,包括去到PL资源等,唯一不同的是,在GPIO里,勾上EMIO并且分配宽度是4(因为我的小板子PL端有四个LED)。

生成了新的系统:



把刚分配的带宽4的EMIO(GPIO_0)绑定到这四个管脚上。

然后输出bitstream文件,导入到SDK中时,要加上这个比特流文件。进入SDK

初始化程序还是一样,头文件也是xgpiops.h,这还是PS操作。

xgpio_config = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);status = XGpioPs_CfgInitialize(&xgpio, xgpio_config, xgpio_config->BaseAddr);if(status!=XST_SUCCESS)return XST_FAILURE;
后面就是设置引脚工作模式:

这里的引脚号从54开始,因为从54后才是EMIO引脚:



4. PS通过AXI点亮PL端LED

这个就是PL与PS协同点灯了。

首先配置zynq ip核,PL部分保留,因为用到了AXI,另外MIO gpio都去掉。其余配置都一样。添加AXI gpio IP核,并且设置宽度为4,最后Run connection Automation,加入其它必要组件,调整连线:



之后再绑定gpio_led管脚到四个LED上,综合并生成bitstream文件,导入到SDK。

引用头文件:XGpio.h

然后还是对引脚进行初始化和设置工作模式:

XGpio_Initialize(&GpioOutput, XPAR_AXI_GPIO_0_DEVICE_ID);XGpio_SetDataDirection(&GpioOutput,1,0x0);//outputXGpio_DiscreteWrite(&GpioOutput,1,0x0);
协同点灯还是要先比特流文件,在运行SDK程序。

5. 总结

① 对MIO或EMIO gpio进行操作,都属于PS,引用xgpiops.h文件,对AXI_gpio引用xgpio.h

② 涉及PL引脚或操作时,生成比特流文件并且导入SDK,运行时先FPGA。

③ PL输出信号绑定引脚。


浅谈电机控制中的MCU选型 通讯模块用于单片机跟外部进行信息传输,比如串口通讯模块,可以支持上位机跟单片机之间的通讯,像串口程序.... 发表于 06-30 12:27 •
XDC约束可以用一个或多个XDC文件,也可以用Tcl脚本实现;XDC文件或Tcl脚本都要加入到工程的.... FPGA设计论坛 发表于 06-30 11:27 •
下一个级别,TrustFLEXv,提供了使用客户选择的证书颁发机构的灵活性,同时仍然受益于预配置.... 星星科技指导员 发表于 06-30 10:57 •
Arria 10 SoC确保系统设计满足现在和未来性能要求 借助 Arria 10 SoC,您可以通过将 GHz 级处理器、FPGA 逻辑和数字信号处理 (.... 星星科技指导员 发表于 06-30 09:50 •
最近两年RISC-V很火,主要原因还是因为这个处理器是开源的。目前市面上也有有很多的书籍讲RISC-V的原理和架... 发表于 06-29 21:36 • 676次
分享一下基于GPIO外设的输出模式编写的demo程序 1、 GPIO 输出 - 流水灯本 demo 基于 BL706_IOT 开发板,连接方式如下:软件代码见 example... 发表于 06-29 17:49 • 3316次
基于CDK集成开发环境新建工程指南 examples 的目录结构在 bl_mcu_sdk/examples 目录下通常存在两层子目录,第一层通常为同一类外设相关的 case 集,一般使用外设... 发表于 06-29 17:41 • 1243次
将 .mcs文件写入Quad SPI或Linear BPI闪存 现在我们必须指定连接到我们特定开发板上的 FPGA/SoC 设备的内存部分。要为您的开发板找到内存部.... FPGA之家 发表于 06-29 09:39 •
需要需求可追溯性的五个主要原因 这为考虑Spec-Tracer改进变更管理、促进更好的项目管理以及提供组织、连接和跟踪 FPGA 开.... 发表于 06-29 09:21 • 121次
简要介绍Modelsim软件做功能仿真的步骤 1、主要介绍Modelsim的安装和使用安装流程双击ModelSimSetup-14.1.0.186-windows.exe,开始安装Altera免费的Modelsim,选择... 发表于 06-28 17:15 • 5949次
基于 FPGA 的快速原型开发平台作为一个周期精确的软件开发平台,能够连接到现实世界的接口以运行.... 星星科技指导员 发表于 06-28 16:04 •
先进FPGA开发工具中的时序分析 1. 概述 对于现今的FPGA芯片供应商,在提供高性能和高集成度独立FPGA芯片和半导体知识产权(I.... 发表于 06-28 15:54 • 276次
整个过程是一系列连续的改进,从快速 TLM 模型开始,在可用时添加更多硬件细节,同时保持足够快的.... 星星科技指导员 发表于 06-28 15:42 • 129次
集成嵌入式平台加速了SoC和嵌入式系统的软件调试和启动 这种跨学科的早期研究改进了设计硬件并加速了 SoC 和嵌入式系统的软件调试和启动。软件开发人员和.... 星星科技指导员 发表于 06-28 15:31 • 1229次
不仅如此,32 位 ARM 生态系统提供了统一的结构,使代码搜索变得更加容易,并使嵌入式软件商店.... 星星科技指导员 发表于 06-28 15:11 • 101次
FPGA不断发展以满足不断变化的计算需求 通用 FPGA 可在逻辑利用率上节省 50% 的典型逻辑,并类似地减少延迟,因此可以轻松支持浮点功能.... 发表于 06-28 14:25 • 136次
分享一份Board配置系统使用指南 1、Board 配置系统使用指南为了践行 一切皆文件 的思想,我们针对嵌入式应用不同的硬件配置需求,提出了一套 Board 配置系统。... 发表于 06-27 17:43 • 4726次
Labview FPGA能否调用DLL文件? 硬件:NI-USB7845R软件:Labview由于实验室设备变动,只能用很贵的7845R,支持FPGA功能。但是我不需要用到FP... 发表于 06-27 17:27 • 1324次
中科亿海微:芯有灵犀 智创未来,世界FPGA珠峰攀登者 中科院团队:托举行业新星 中科亿海微电子科技(苏州)有限公司(企业官网:http://www.ehi.... 发表于 06-27 14:16 • 440次
parameter关键字定义模块特定的参数,该参数在特定模块实例的范围生效。参数用于为模块实例提供不.... FPGA之家 发表于 06-26 10:46 • 275次
LVDS电平以及LVDS25电平能否约束到这个BANK上呢? 当两个banks的I/O口作为LVDS电平时,HR banks的I/O电压VCCO只能为2.5V,H.... FPGA设计论坛 发表于 06-24 11:28 • 279次
BNN 可以检测多达十个 1 秒的关键短语,非常适合通过语音进行 HMI。为了提高检测精度,仅在.... 星星科技指导员 发表于 06-24 10:09 • 582次
MCP23017 16位GPIO扩展器演示板MCP23017 16 位 GPIO 扩展器演示板MCP23017 通过 I2C 提供 16 个 GPIO每个引脚在用作输出时都可以灌... 发表于 06-24 07:23 •
【高云半导体Combat开发套件试用体验】之示例工程编译 使用gw2a18_test工程,编译报错:ERROR (PJ0007) : Please validate Synthesis Tool is GowinSynthesis, or install... 发表于 06-23 17:26 • 657次
LDPC 的研究将继续进行,我们可以期待这些代码在不同的通信场景中会发现更多的适用性。我们很可能.... 星星科技指导员 发表于 06-23 14:10 • 189次
PCIe 设计对设计人员提出了重大挑战。对接口的要求各不相同,具体取决于 PCIe 设备是否必须.... 星星科技指导员 发表于 06-23 10:42 • 218次
为什么要学习FPGA?前景好?薪酬高?没有所谓的中年危机?国家政策大力扶持?为国家技术发展贡献力量?.... 明德扬吴老师 发表于 06-23 08:33 • 519次
在设计过程中,各种考虑因素发挥了特殊作用:指定 FPGA 的 I/O 接口、识别不同的时钟域、定.... 星星科技指导员 发表于 06-22 16:36 • 214次
第一种架构(无特定名称)是围绕一个具有NAND门和锁存器的逻辑单元设计的,每个逻辑单元通过本地互连进.... FPGA之家 发表于 06-22 09:41 • 101次
本设计相位累加器设定为32位,正弦表数据为8位,因此在ROM查找表里的容量为232×8=34,359.... 要长高 发表于 06-21 10:54 • 2567次
该工具套件支持对生成的虚拟引擎进行编译、检查和错误检测、性能预测、分析、调试和可视化。它支持目标.... 星星科技指导员 发表于 06-21 09:15 •
FPGA 深度开发课程 主题 1:VIVADO 开发流程和资源评估  学习目标:  1、掌握 VIVADO 开发流程 2、掌.... 发表于 06-21 06:50 •
xilinx core generator里面的block ram介绍 CORE Generator里有很多的IP核,适合用于各方面的设计。一般来说,它包括了:基本模块,通.... FPGA设计论坛 发表于 06-20 17:21 • 265次
需要门级验证:FPGA 和 ASIC 一样需要设计级验证。但是,FPGA 在门级不是细粒度的,因此它.... 要长高 发表于 06-20 16:13 • 686次
FPGA-串口通信模块(含IP核) ARTIX-xlinx 版本FPGA 串口通信模块(含IP核) 发表于 06-20 11:07 •
在仿真平台中,VIP 不应与特定的仿真器绑定。在仿真平台中,不应将 VIP 绑定到仿真器。同样,.... 星星科技指导员 发表于 06-20 11:06 • 220次
基于Robei EDA工具的隔离病房看护机器人设计 由于主控制板AC620/Inter/EP4CE10F17C8开发板完成整个系统的大部分功能芯片资源已.... 安芯教育科技 发表于 06-20 10:05 • 261次
计数器分频怎么个不稳定法 FPGA生成的DDS数据如何导出到matlab中 答:DR3和RAM一样,是一个存储器件,它的每个内部单元都存储了当前的数据状态值。 明德扬吴老师 发表于 06-20 09:33 • 154次
SoC 是一个成熟的嵌入式系统,需要硬件仿真来验证它是否正常工作。借助硬件仿真,开发团队可以更有.... 星星科技指导员 发表于 06-19 15:30 • 271次
首先,有一些虚拟原型系统,从简单的存根代码到在 QEMU 中运行的虚拟板,再到更高级的虚拟原型系.... 星星科技指导员 发表于 06-19 15:25 • 310次
通过片上仪器和逻辑分析轻松进行FPGA和ASIC调试 随着复杂性的增加和对探测点的访问受限,ASIC 和 FPGA 验证和调试变得乏味且耗时。随着越来.... 星星科技指导员 发表于 06-19 07:40 • 264次
D触发器在FPGA里用得很多,但我经常无法理解D触发器为什么能对数据延迟一个时钟周期(打一拍)。下面.... FPGA设计论坛 发表于 06-17 16:56 • 554次
CTLE(连续时间线性均衡)是一种应用于接收的线性滤波器,可衰减低频信号分量,放大奈奎斯特频率附近.... 要长高 发表于 06-17 11:54 • 3820次
反射是因为阻抗不匹配和stub引起的。例如线宽不一样,就会引起阻抗不匹配,信号传输中经过的耦合电容、.... 要长高 发表于 06-17 11:40 • 3844次
编程复杂,开发周期较长。RTL的开发包括了架构设计,RTL代码,仿真验证,上板调试。一个项目的周期往.... FPGA之家 发表于 06-17 09:59 • 204次
MDY专题课产品的问题解答汇总(JESD204B) 【问题11.31】如果我这里有两个9144芯片,他们之间如何同步呢? 答:1. 时钟同步,采用同一个.... 明德扬吴老师 发表于 06-17 06:53 • 261次
英特尔FPGA中国创新中心打造FPGA生态高地 由中国计算机学会(CCF)组织、CCF重庆会员活动中心承办、重庆电子工程职业学院、重庆海云捷迅科技有.... 科技绿洲 发表于 06-16 15:30 • 347次
电路板设计中,都有电源分配网络系统。电源分配网络系统的作用就是给系统内所有器件或芯片提供足够的电源,.... 电磁兼容EMC 发表于 06-16 10:29 • 242次
图像采集显示流程一般是:FPGA把摄像头采集图像数据缓存到SDRAM,再从SDRAM搬运到LCD驱动.... FPGA之家 发表于 06-16 10:11 • 284次
纵观国内知名的FPGA厂商,基本也都拥有自家的EDA软件和工具链。比如复旦微的自主研发EDA软件Pr.... 要长高 发表于 06-15 16:07 • 2931次
就 FPGA 而言,可在设备的可编程逻辑中例化一个或多个软核处理器,从而使设计人员能够将可编程微控制.... 英特尔FPGA 发表于 06-15 15:41 • 280次
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为 1 C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150 C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器 TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75 C)和测量分辨率(0.0 625 C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm 3mm或1.6mm 1.6mm),可在计算系统中轻松集成。远程结支持-55 C至+ 150 C的温度范围。