1 概述
本文用于讲解ZYNQ中的EMIO的作用以及使用方法。
ZYNQ说明:
1)ZYNQ分为PL侧与PS侧。
2)PL侧为逻辑部分,即常说的FPGA。
3)PS侧为软件侧,即常说的RAM侧。
4)本文以ZYNQ-7000系列 xc7z045ffg676为例讲解EMIO。
使用开发工具:vivado 2017.4 ,SDK
本文例程:设置两个EMIO,第一个作为输出,点亮LED,第二个作为输入,输入KEY的电平。
2 参考
3 EMIO定义及作用
EMIO 是扩展的MIO,MIO在PS侧,EMIO是在PL侧扩展MIO的功能。
即EMIO是在PL侧连接使用PS侧资源的扩展通道接口。可扩展到pin上,也可以扩展到运用上,如下图所示:
EMIO与MIO一样归属于GPIO,ZYNQ-7000的GPIO共有54(MIO)+64(EMIO)=118个。如下图所示:
当然这个EMIO的序号也可通过PS侧的xgpiops.h中查看,比如下图:
4 PL侧设置
在做ZYNQ的开发时,是PL与PS协调的一个过程。需要先在PL侧建立工程,之后再将PL侧的bit导出到PS侧进行开发。
PL侧设置如下:
\1) 在vivado中新建工程后在bd中添加zynq的ip。
\2) 之后双击IP点开设置界面,如下所示:
\3) 再点击GPIO,找到EMIO的设置,选择想要设置的位宽,本例程设置为2。如下所示:
\4) 再点击ok完成zynq的ip设置。
\5) 再点击run block automation完成ip周围的设置
\6) 在bd上点击greate HDL wrapper创建顶层文件,之后再设置gpio的连接管脚xdc即可完成PL侧的工程设置
\7) 再点击generate bitstream 生成bit文件,
\8) 再通过file/export/export hardware 将bit硬件导出到ps侧
\9) 再通过file/launch sdk 启动sdk进入ps侧的代码操作。
5 PS侧的设置
\1) 在导出的SDK中,点击file/new/application project建立运用工程,设置好工程名后点击下一步。
\2) 之后点击hello world工程模板。
\3) 之后在*bsp下面点击system.ss即可看见驱动,导入gpio的examples。
\4) 之后根据需要在例程中到gpio的初始化代码、输入输出使能代码搬移到自己工程的main.c文件下。
\5) 再根据自己的运用场景设置输入输出值以及运用即可。比如本例程
6 上板操作
\1) 连接上线缆后,点烧写PL的BIT文件;
\2) 再运行PS侧的debug AS/1 launch***即可烧写完成
\3) 之后在板子上即可看见LED的闪烁,以及在SDK terminal上看见打印的读出数据。
7 Sdk terminal说明
SDK terminal是SDK自带的串口调试助手,用于SDK内部的串口打印与数据发送。
打开方式为:在sdk terminal串口点击+号,选择端口,之后点击ok即可。如下图所示。