Zybo XADC Demo



This simple XADC demo is a verilog project made to demonstrate usage of the Analog to Digital Converter hardware of the Zybo

  • An XADC IP core is used to read the voltage differences of each of the four vertical pairs of pins - channels - of the XADC Pmod Port.
  • The LED associated with a channel brightens when that channel's voltage increases.
  • The four user switches control which XADC channels will be read.

Features Used

Not Used Used
4 user switches X
4 user LEDs X
5 user push buttons X
Micro SD card connector X
HDMI Sink and HDMI Source X
16 Bit VGA port X
Audio codec w/ three 3.5mm jacks X
10/100/1000 Ethernet PHY X
512MiB 800Mt/s DDR3 Memory X
Serial Flash X
Five Pmod ports X
Pmod for XADC signals X



  • Basic familiarity with Vivado
    • This experience can be found by walking through our “Getting Started with Vivado” guide


  • Zybo Zynq board
  • Micro-USB cable
  • Wires and a voltage to measure


  • Vivado Design Suite 2016.X
    • Newer/older versions can be used, but the procedure may vary slightly


Zybo XADC Project Repository – ZIP Archive GIT Repo

Download and Launch the Zybo XADC Demo

1) Follow the Using Digilent Github Demo Projects Tutorial. This is an HDL design project, and as such does not support Vivado SDK, select the tutorial options appropriate for a Vivado-only design. Return to this guide when prompted to check for additional hardware requirements and setup.
2) In order to use the demo, you will need to connect a circuit to the XADC Pmod Port in order to measure a voltage. The following example shows a voltage divider that produces each voltage between 0 and 1 Volt in increments of 0.1 Volts. This circuit uses a chain of ten 1KOhm resistors in series with two parallel 47KOhm resistors tied to the 3V3 and GND pins of the XADC Pmod header to create these voltages. Each of the 'n' pins, the lower row, of the XADC port are connected to ground.


Voltages to be measured should only be in the range of 0 to 1 Volt.

3) Once you have connected your circuit to your Zybo, return to the Github Demo Projects tutorial to finish programming your board.

Using the Zybo XADC Demo

1) Each channel will control the brightness of an LED as shown in the following table.
Channel Name LED #
AD14 LD0
AD15 LD2
2) Specific channels can be enabled and disabled by toggling the user switch that is adjacent to it's LED.
3) Changing voltages through reconfiguring the circuit while the demo is running is fine. If you built the example circuit above, feel free to move jumpers around to test out the different nodes of the voltage divider.