User manual
Table Of Contents
- Zynq-7000 All Programmable SoC
- Table of Contents
- Ch. 1: Introduction
- Ch. 2: Signals, Interfaces, and Pins
- Ch. 3: Application Processing Unit
- Ch. 4: System Addresses
- Ch. 5: Interconnect
- Ch. 6: Boot and Configuration
- Ch. 7: Interrupts
- Ch. 8: Timers
- Ch. 9: DMA Controller
- Introduction
- Functional Description
- DMA Transfers on the AXI Interconnect
- AXI Transaction Considerations
- DMA Manager
- Multi-channel Data FIFO (MFIFO)
- Memory-to-Memory Transfers
- PL Peripheral AXI Transactions
- PL Peripheral Request Interface
- PL Peripheral - Length Managed by PL Peripheral
- PL Peripheral - Length Managed by DMAC
- Events and Interrupts
- Aborts
- Security
- IP Configuration Options
- Programming Guide for DMA Controller
- Programming Guide for DMA Engine
- Programming Restrictions
- System Functions
- I/O Interface
- Ch. 10: DDR Memory Controller
- Introduction
- AXI Memory Port Interface (DDRI)
- DDR Core and Transaction Scheduler (DDRC)
- DDRC Arbitration
- Controller PHY (DDRP)
- Initialization and Calibration
- DDR Clock Initialization
- DDR IOB Impedance Calibration
- DDR IOB Configuration
- DDR Controller Register Programming
- DRAM Reset and Initialization
- DRAM Input Impedance (ODT) Calibration
- DRAM Output Impedance (RON) Calibration
- DRAM Training
- Write Data Eye Adjustment
- Alternatives to Automatic DRAM Training
- DRAM Write Latency Restriction
- Register Overview
- Error Correction Code (ECC)
- Programming Model
- Ch. 11: Static Memory Controller
- Ch. 12: Quad-SPI Flash Controller
- Ch. 13: SD/SDIO Controller
- Ch. 14: General Purpose I/O (GPIO)
- Ch. 15: USB Host, Device, and OTG Controller
- Introduction
- Functional Description
- Programming Overview and Reference
- Device Mode Control
- Device Endpoint Data Structures
- Device Endpoint Packet Operational Model
- Device Endpoint Descriptor Reference
- Programming Guide for Device Controller
- Programming Guide for Device Endpoint Data Structures
- Host Mode Data Structures
- EHCI Implementation
- Host Data Structures Reference
- Programming Guide for Host Controller
- OTG Description and Reference
- System Functions
- I/O Interfaces
- Ch. 16: Gigabit Ethernet Controller
- Ch. 17: SPI Controller
- Ch. 18: CAN Controller
- Ch. 19: UART Controller
- Ch. 20: I2C Controller
- Ch. 21: Programmable Logic Description
- Ch. 22: Programmable Logic Design Guide
- Ch. 23: Programmable Logic Test and Debug
- Ch. 24: Power Management
- Ch. 25: Clocks
- Ch. 26: Reset System
- Ch. 27: JTAG and DAP Subsystem
- Ch. 28: System Test and Debug
- Ch. 29: On-Chip Memory (OCM)
- Ch. 30: XADC Interface
- Ch. 31: PCI Express
- Ch. 32: Device Secure Boot
- Appx. A: Additional Resources
- Appx. B: Register Details
- Overview
- Acronyms
- Module Summary
- AXI_HP Interface (AFI) (axi_hp)
- CAN Controller (can)
- DDR Memory Controller (ddrc)
- CoreSight Cross Trigger Interface (cti)
- Performance Monitor Unit (cortexa9_pmu)
- CoreSight Program Trace Macrocell (ptm)
- Debug Access Port (dap)
- CoreSight Embedded Trace Buffer (etb)
- PL Fabric Trace Monitor (ftm)
- CoreSight Trace Funnel (funnel)
- CoreSight Intstrumentation Trace Macrocell (itm)
- CoreSight Trace Packet Output (tpiu)
- Device Configuration Interface (devcfg)
- DMA Controller (dmac)
- Gigabit Ethernet Controller (GEM)
- General Purpose I/O (gpio)
- Interconnect QoS (qos301)
- NIC301 Address Region Control (nic301_addr_region_ctrl_registers)
- I2C Controller (IIC)
- L2 Cache (L2Cpl310)
- Application Processing Unit (mpcore)
- On-Chip Memory (ocm)
- Quad-SPI Flash Controller (qspi)
- SD Controller (sdio)
- System Level Control Registers (slcr)
- Static Memory Controller (pl353)
- SPI Controller (SPI)
- System Watchdog Timer (swdt)
- Triple Timer Counter (ttc)
- UART Controller (UART)
- USB Controller (usb)

Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 385
UG585 (v1.11) September 27, 2016
Chapter 14: General Purpose I/O (GPIO)
These bits can be used as general purpose outputs since the output driver is disabled at reset. The
system can start using these as outputs after the voltage mode has been read during system boot.
14.2.4 Interrupt Function
The interrupt detection logic monitors the GPIO input signal. The interrupt trigger can be a positive
edge, negative edge, either edge, Low-level or High-level. The trigger sensitivity is programmed
using the INT_TYPE, INT_POLARITY and INT_ANY registers.
If an interrupt is detected, the GPIO's INT_STAT state is set true by the interrupt detection logic. If the
INT_STAT state is enabled (unmasked), then the interrupt propagates through to a large OR function.
This function combines all interrupts for all GPIOs in all four banks to one output (IRQ ID#52) to the
interrupt controller. If the interrupt is disabled (masked), then the INT_STAT state is maintained until
cleared, but it does not propagate to the interrupt controller unless the INT_EN is later written to
disable the mask. As all GPIOs share the same interrupt, software must consider both INT_MASK and
INT_STAT to determine which GPIO is causing an interrupt.
The interrupt mask state is controlled by writing a 1 to the INT_EN and INT_DIS registers. Writing a
1 to the INT_EN register disables the mask allowing an active interrupt to propagate to the interrupt
controller. Writing a 1 to the INT_DIS register enables the mask. The state of the interrupt mask can
be read using the INT_MASK register.
If the GPIO interrupt is edge sensitive, then the INT state is latched by the detection logic. The INT
latch is cleared by writing a 1 to the INT_STAT register. For level-sensitive interrupts, the source of the
interrupt input to the GPIO must be cleared in order to clear the interrupt signal. Alternatively,
software can mask that input using the INT_DIS register.
The state of the interrupt signal going to the interrupt controller can be inferred by reading the
INT_STAT and INT_MASK registers. This interrupt signal is asserted if INT_STAT=1 and INT_MASK=0.
GPIO bank control is summarized as follows:
• INT_MASK: This register is read-only and shows which bits are currently masked and which are
un-masked/enabled.
• INT_EN: Writing a 1 to any bit of this register enables/unmasks that signal for interrupts.
Reading from this register returns an unpredictable value.
• INT_DIS: Writing a 1 to any bit of this register masks that signal for interrupts. Reading from
this register returns an unpredictable value.
• INT_STAT: This registers shows if an interrupt event has occurred or not. Writing a 1 to a bit in
this register clears the interrupt status for that bit. Writing a 0 to a bit in this register is ignored.
• INT_TYPE: This register controls whether the interrupt is edge sensitive or level sensitive.
• INT_POLARITY: This register controls whether the interrupt is active-Low or active High (or
falling-edge sensitive or rising-edge sensitive).
• INT_ON_ANY: If INT_TYPE is set to edge sensitive, then this register enables an interrupt event
on both rising and falling edges. This register is ignored if INT_TYPE is set to level sensitive.










