2357|0

56

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

玩转Zynq连载31——[ex53] 基于Zynq PS的EMIO控制 [复制链接]

 

1 ZynqGPIO概述

         参考文档《玩转Zynq-基础篇:Zynq PSGPIO外设.pdf》。

         关于EMIOMIO,这里多啰嗦两句。简单的理解,MIOPS系统原生的,和PL没啥关系;但是EMIOPSPL的引脚用,所以它们就有千丝万缕的关系,PL的工程里面势必要做点什么。MIOPS系统里面分配好对应的信号功能后,在PL的代码里面就不需要写任何的逻辑,甚至引脚分配都不需要(生成的PS系统会自动分配)。但是EMIO就要在PS的系统中引出,然后在PL顶层源码中申明端口类型,做引脚分配(因为EMIO用的就是PL的引脚)。

         关于MIOEMIO的关系,更形象直接的可以示意如图所示。MIOEMIO都是PS的一部分,但是MIO可以直接连接到Zynq芯片的引脚上,和PL无关;而EMIO需要通过PLIO才能连接到Zynq芯片的引脚上。EMIO的存在,其实是给用户更大的PSGPIO扩展的灵活性,这也是FPGA+ARM独有的架构。因此,EMIO怎么用,很有必要好好玩玩。

 

2 EMIOPS系统配置

         打开ZYNQ7 Processing System的配置页面Peripheral I/O Pins,勾选GPIO EMIO选项,查看Periperals最右侧的EMIO列,对应的EMIO显示按钮变绿了,则表示该EMIO功能开启,EMIO引脚将会引出到PS系统。

         完成配置后,回到ZYNQ7系统框图中,可以看到多了一个名为GPIO_0的接口。

         展开GPIO_0接口,实际上有364bit的信号,分别代表inputGPIO_I)、outputGPIO_O)和inoutGPIO_T)。在实际使用中,根据我们的引脚方向,连接对应位的引脚即可。例如,GPIO_I[0]GPIO_O[0]GPIO_T[0]实际上对应的都是一个EMIO,如果我只用这个EMIO连接一个作为outputLED,那么我在PL上只要引出GPIO_O[0]并作引脚分配就可以了。

         选中GPIO_0,右键单击,弹出菜单中点击Create Interface Port...,引出一个port用于PL工程的顶层连接。

         可以命名为GPIO_EMIO

         完成GPIO_EMIO引出后如图所示。

 

3 EMIOPL的使用和引脚分配

         Sources --> IP Sources中选择Block Designs -->zstar_zynq_ps,单击右键,弹出菜单中选中Generate Output Products...

         接着我们可以再次操作,单击右键菜单的Create HDL Wrapper...选项。

         打开后,看到PS系统的例化部分如图所示,可以复制到我们的新建的顶层源码中,在顶层源码中重新设置接口映射。

         在实例zstar_ex52中,我们直接使用PS系统生成的zstar_zynq_ps_wrapper.v模块做顶层模块,但是这样的方式其实对于含有PL代码的工程来说灵活性不够好。我们更建议大家把这个zstar_zynq_ps_wrapper.v模块里面例化的PS系统例化到我们自己为PL工程专门新建的顶层源码中,在这个顶层源码中,我们也可以例化其它的PL逻辑模块。

         废话不说了,先新建一个zstar.vVerilog模块,然后做如下编辑。

         若要将新建的zstar.v模块作为PL工程的顶层模块,需要先选中zstar.v模块,右键单击选中菜单项Set as Top

         同时需要打开Sources --> Constraints - constrs_1下的约束文件zstar.xdc,增加led[2:0]的引脚约束。

 

4 导出PS硬件配置和新建SDK工程

         参考文档《玩转Zynq-工具篇:导出PS硬件配置和新建SDK工程.pdf》。

         SDK中,新建Empty的模板工程,名称为GPIO_EMIO_project

 

5 EMIO控制编程

         展开新建的工程GPIO_EMIO_project,选中文件夹src,单击右键,弹出菜单中选择New --> Source File

         新建一个名为main.cDefault C source template源文件。

         输入EMIO控制的bit2-0引脚的程序,程序中实现EMIO0EMIO1EMIO2循环拉高,逐次点亮3LED中的1个。

 

6 板级调试

         Zstar板子上,设置跳线帽P3JTAG模式,即PIN2-3短接。

         连接好串口线(USB线连接PCUSB端口和Zstar板的UART接口)和Xilinx下载线(下载器连接PCUSB端口和Zstar板的JTAG插座)。使用5V电源给板子供电。

         接着参考《玩转Zynq-工具篇:SDK在线运行裸跑程序.pdf》将zstar.bit文件和GPIO_EMIO_project.elf文件烧录到Zynq中运行起来。

         程序运行起来后,我们就可以看到Zstar板上PL侧的3LED指示灯D3D2D1逐个闪烁起来。



此内容由EEWORLD论坛网友ove学习使我快乐原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自FPGA/CPLD论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表