ZYNQ中MIO/EMIO GPIO的使用

MIO是PS端的外部引脚,共有54个;EMIO是PL端的外部引脚,共有64个。ZYNQ支持通过配置将PS的控制器信号通过EMIO输出,例如PS自带的UART Controller,如果正常选择引脚只能选择MIO引脚输出,但是通过设置可以选择连接到EMIO引脚。同时EMIO引脚也可以作为PS端的扩展引脚,即经过扩展PS一共可以控制118个引脚。

该例程演示将4个EMIO设置为PS的扩展引脚,这4个EMIO连接着LED。于是,与“将用户逻辑设计封装成IP”中的实验相比,同样是控制外部4个LED,就不需要另外设计一个逻辑模块,并封装成IP作为PS的外设了,可以直接通过SDK的程序进行控制。

ZYNQ中MIO/EMIO GPIO的使用_第1张图片

Step1:在Block Design中加入ZYNQ7 Processing System,在ZYNQ7 Processing System配置中添加EMIO GPIO,如下图所示。通过设置EMIO GPIO Width来选择扩展EMIO GPIO的个数,此时就完成了与内部寄存器之间的对应关系,规则就是从EMIO54开始向上排列。

ZYNQ中MIO/EMIO GPIO的使用_第2张图片

Step2:将ZYNQ的EMIO连接到外部引脚。右击生成的GPIO信号,点击Make External。

ZYNQ中MIO/EMIO GPIO的使用_第3张图片

Step3:约束EMIO与外部引脚Pad的对应关系以及EMIO的电平标准。

方法有两种:

第一种是通过XDC约束文件进行约束,需要先将Block Design生成HDL Wrapper,这样才能知道其引脚名称。

ZYNQ中MIO/EMIO GPIO的使用_第4张图片

第二种方法就是Open Elaborated Design,在GUI中设置电平和引脚。

ZYNQ中MIO/EMIO GPIO的使用_第5张图片

Step4:完成Block Design的综合、实现、生成Bitstream并导入SDK。

Step5:SDK中完成代码的编写,EMIO的代码编写需要包含的库文件是"xgpiops.h"。

ZYNQ中MIO/EMIO GPIO的使用_第6张图片

Step6:如果需要将EMIO作为输入端口,只需要将IO的方向设置为input。对于IO,作为输出的时候需要Enable,但是作为输入是永远使能的,不需要额外的Enable。具体代码如下图所示

ZYNQ中MIO/EMIO GPIO的使用_第7张图片

你可能感兴趣的:(FPGA)