top of page

Light Up ZC706 LEDs Using Push Buttons with VHDL

  • Writer: Zach Pfeffer
    Zach Pfeffer
  • Apr 28, 2020
  • 2 min read

Updated: May 14, 2023


This post shows how to use VHDL to connect SW7, SW9 and SW8 to LCR PL GPIO LEDS using VHDL.


This post picks up right after [link].


Prerequisites

This post assumes Vivado 2018.2 and the Digilent cable drivers have been installed.


Push Buttons




LEDs




Note: This table is correct. Table 1-28 on page 60 of the ZC706 Evaluation Board User Guide UG954 (v1.8) August 6, 2019 is not correct (GPIO_LED_CENTER's I/O Standard is not right)

Steps

Step 1: Right-click Design Sources


Step 2: Click Add Sources...

Step 3: (A) Click Add or create design sources and (B) click Next >

Step 4: Click Create File


Step 5: (A) Click the down arrow and click (B) VHDL


Step 6: (A) Enter buttoned as the File name: and (B) click OK


Step 7: Click Finish


Step 8: Define the module

A)

Enter in:

GPIO_SW_LEFT

GPIO_SW_CENTER

GPIO_SW_RIGHT

...and

GPIO_LED_LEFT

GPIO_LED_CENTER

GPIO_LED_RIGHT

...and mark the Direction of the 3 GPIO_LED Port Names: out


B) Click OK


Step 9: Double click buttonled


You should see:


Step 10:

Enter the following between begin and end Behavioral;


GPIO_LED_LEFT <= GPIO_SW_LEFT; GPIO_LED_CENTER <= GPIO_SW_CENTER; GPIO_LED_RIGHT <= GPIO_SW_RIGHT;


buttonled.vhd should look like this:


Step 11: Click save


Step 12: Click Open Elaborated Design


Step 13: Click OK


You should see pop-up status windows like:

...and then:

Step 14: (A) Click Window and (B) click I/O Ports


Step 15: (A) Click I/O Ports, (B) fill in the Package Pin as listed and (C) set in the I/O Std to LVCMOS15 for the CENTER ports and LVCMOS25 for the other ports (as shown above):


Step 16: Click Run Synthesis


Step 17: Click Save


Step 18: (A) Set File name: to constraints0 and (B) click OK


Step 19: Accept the defaults and click OK

You should see some status in the upper right corner:


Step 20: Click OK to Run Implementation


Step 21: Accept defaults and click OK

You should see the status of Implementation in the upper right corner:

Note: implementation will take longer than synthesis


Step 22: (A) Select Generate Bitstream and (B) click OK


Step 23: Accept defaults and click OK

You will see the status of Generate Bitstream in the upper right corner

Note: This will take a little bit of time to complete (not as much as Implementation)


Step 24: (A) Click Open Hardware Manager and (B) click OK


Step 25:

Plug the power supply into the board:


Plug the Micro-B end of a Micro-B to Standard-A USB cable into the Digilent USB-to-JTAG interface:


Plug the Standard-A end of a Micro-B to Standard-A USB cable into the computer


Power on the ZC706


Step 26: Click Open target


Step 27: Click Auto Connect


Step 28: Click Program device


Step 29: Click Program

You should see:


Now when you press SW7, SW9 and SW 8, the PL LEDs will light up as seen here:


Extra


To see the constraints that get saved:

A) Click PROJECT MANAGEMENT

B) Expand Constraints (1)

C) Double click on constraints0.xdc (target)

D) Examine


Here is the content of constraints0.xdc as text:


set_property PACKAGE_PIN G2 [get_ports GPIO_LED_CENTER] set_property PACKAGE_PIN Y21 [get_ports GPIO_LED_LEFT] set_property PACKAGE_PIN W21 [get_ports GPIO_LED_RIGHT] set_property PACKAGE_PIN K15 [get_ports GPIO_SW_CENTER] set_property PACKAGE_PIN AK25 [get_ports GPIO_SW_LEFT] set_property PACKAGE_PIN R27 [get_ports GPIO_SW_RIGHT] set_property IOSTANDARD LVCMOS15 [get_ports GPIO_LED_CENTER] set_property IOSTANDARD LVCMOS25 [get_ports GPIO_LED_LEFT] set_property IOSTANDARD LVCMOS25 [get_ports GPIO_LED_RIGHT] set_property IOSTANDARD LVCMOS15 [get_ports GPIO_SW_CENTER] set_property IOSTANDARD LVCMOS25 [get_ports GPIO_SW_LEFT] set_property IOSTANDARD LVCMOS25 [get_ports GPIO_SW_RIGHT]


References

© 2025 by Centennial Software Solutions LLC.

bottom of page