Zynq AXI-GPIO

硬件:Xilinx Zynq-7000 SoC ZC706app

版本:vivado2015.4设计

Zynq上有三种GPIO方式,AXI-GPIO是其中一种,须要建立一个AXI-GPIO核,AXI总线链接至ZYNQ。code

而后配置GPIO的宽度和初始状态。blog

All Outputs:设置成输出,根据须要配置。get

GPIO Width为GPIO的数量,这边配置成2it

Default Output Value为GPIO初始状态,这边为了让2路GPIO都为高状态设置成0x00000003(0‘b 11)io

从新Create HDL Wrapper,找到引脚 ,生成一个两个位宽的引脚output [1:0]gpio_rtl_tri_o,而后再对这两个引脚约束。class

set_property PACKAGE_PIN J15 [get_ports gpio_rtl_tri_o[0]]
set_property IOSTANDARD LVCMOS15 [get_ports gpio_rtl_tri_o[0]]
set_property PULLUP true [get_ports gpio_rtl_tri_o[0]]

set_property PACKAGE_PIN H14 [get_ports gpio_rtl_tri_o[1]]
set_property IOSTANDARD LVCMOS15 [get_ports gpio_rtl_tri_o[1]]
set_property PULLUP true [get_ports gpio_rtl_tri_o[1]]

 

至此FPGA部分设计完成,生成镜像。配置

下面是PS部分的设计。硬件

找到AXI设备,设置方向,配置电平

//获取设别
int status = XGpio_Initialize(&gps,XPAR_AXI_GPIO_0_DEVICE_ID);
//设置方向,channel 1,全部方向都为输出
XGpio_SetDataDirection(&gps, 1,0x00);
//设置电平,channel 1,全部输出都为0
XGpio_DiscreteWrite(&gps, 1,0);