Sorry, you need to enable JavaScript to visit this website.

MicroZed + FMC control LEDs without Linux

Zedboard forums is currently read-only while it under goes maintenance.

Unsolved
9 posts / 0 new
nowksru
Junior(0)
MicroZed + FMC control LEDs without Linux

Hello,
My plan is to control LEDs on the FMC Carrier Card without installing any OS on the MicroZed (XC7Z020).
 
I first tried the FMC Carrier Card Linux User IO Tutorial , because it's apparently the only tutorial available for the MicroZed including the FMC-CC.
 
I did the tutorial step by step and also using the pre-built SD-Image. Both without any success. Only the "Power Good" (on the FMC-CC) and the power LED on the MicroZed switch on, but not the "DONE" LED on the FMC-CC. I also connected a terminal with teraterm, where nothing happened. For this tutorial I used Vivado 2013.3 as recommended.
 
 I am able to use the MicroZed by itself and control the LED on the MicroZed like in this tutorial. The steps I changed to try get it running on the FMC-CC are that I added the constraint file and I made 6 EMIO pins external inside Vivado for the FMC-CC and changed the pins that I controlled via xgpiops according to the MicroZed_HW_UG_v1_4.pdf in SDK. For this I used Vivado 2014.1 and did the programming using JTAG .
 
Am I missing a point? Is there any tutorial that someone can recommend me for achieving my goal?
 
Thanks in advance.

JFoster
Moderator(76)
Hi,

Hi,

Did you make a GPIO block in your Vivado block diagram? Also please share the constraints you used.

-Josh

nowksru
Junior(0)
Hello,

Hello,
I only created the 'processing_system7_0' block, inside which I activated the 'EMIO GPIO (width)' with 6 IOs (4 LEDs + 2 buttons on the FMC-CC). In the block diagram I then made the 'GPIO_0' port of the PS external and renamed it to emio_user. These steps I made are the ones from the FMC Carrier Card Linux User IO Tutorial and I used the constraints provided within the tutorial.
 
The constraints file only includes the necessary ports for the tutorial:
 
# User IO
#NET JX1_LED0     LOC = R19  | IOSTANDARD=LVCMOS18;  # "JX1_LED0"
set_property PACKAGE_PIN R19 [get_ports {emio_user_tri_io[0]}]
#NET JX1_LED1     LOC = V13  | IOSTANDARD=LVCMOS18;  # "JX1_LED1"
set_property PACKAGE_PIN V13 [get_ports {emio_user_tri_io[1]}]
#NET JX2_LED2     LOC = K16  | IOSTANDARD=LVCMOS18;  # "JX2_LED2"
set_property PACKAGE_PIN K16 [get_ports {emio_user_tri_io[2]}]
#NET JX2_LED3     LOC = M15  | IOSTANDARD=LVCMOS18;  # "JX2_LED3"
set_property PACKAGE_PIN M15 [get_ports {emio_user_tri_io[3]}]
#NET JX2_PB0      LOC = G19  | IOSTANDARD=LVCMOS18;  # "JX2_PB0"
set_property PACKAGE_PIN G19 [get_ports {emio_user_tri_io[4]}]
#NET JX2_PB1      LOC = G20  | IOSTANDARD=LVCMOS18;  # "JX2_PB1"
set_property PACKAGE_PIN G20 [get_ports {emio_user_tri_io[5]}]

set_property IOSTANDARD LVCMOS18 [get_ports {emio_user_tri_io[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {emio_user_tri_io[1]}]
set_property IOSTANDARD LVCMOS18 [get_ports {emio_user_tri_io[2]}]
set_property IOSTANDARD LVCMOS18 [get_ports {emio_user_tri_io[3]}]
set_property IOSTANDARD LVCMOS18 [get_ports {emio_user_tri_io[4]}]
set_property IOSTANDARD LVCMOS18 [get_ports {emio_user_tri_io[5]}]

# Bank 34, Vcco = 1.8V
#set_property IOSTANDARD LVCMOS18 [get_ports -filter { IOBANK == 34 } ]
 
-Urs
 

JFoster
Moderator(76)
Hello Urs, 

Hello Urs, 

I am assuming you set your VADJ on the carrier card to 1.8V?

Have you taken a look at this?

http://forums.xilinx.com/t5/Xcell-Daily-Blog/Using-the-MicroZed-Button-f...

-Josh

nowksru
Junior(0)
Hi Josh,

Hi Josh,
that is exactly the tutorial I was attempting. I actually just tried to do it again (MicroZed not connected to the FMC-CC) and noticed that the button is working (switch value changes from 0 to 1 on the console when pushed), but the LED never illuminates.
I even tried to just switch it on with
XGpioPs_WritePin(&Gpio, ledpin, toggle);
inside the while loop, but didn't succeed.
 
I set the VADJ jumper to 3V3 ( as its stated in the FMC Carrier Card Linux User IO Tutorial).
 
-Urs

nowksru
Junior(0)
XGpioPs_WritePin(&Gpio,

XGpioPs_WritePin(&Gpio, ledpin, 1);
is what I used to test the LED, not
XGpioPs_WritePin(&Gpio, ledpin, toggle);
This was a copy paste issue.
 
-Urs

JFoster
Moderator(76)
Hello URS,

Hello URS,

If your boards set to 3.3V you should change your constraitns to reflect this, from lvcmos18 to lvcmos33.

-Josh

nowksru
Junior(0)
no success

Hi Josh,
I changed now all the from lvcmos18 entries inside the constraints file to lvcmos33, but it doesn't work either.
I am also wondering, shouldn't the four LEDs on the FMC-CC at least switch off when I am running my configuration on the MicroZed? Because they are illuminating the whole time.
Also I am still not able to illuminate the LED 'D3' on the Microzed. So far I am only able to read the state of the button on the MicroZed.
 
To make sure, these are the pins I defined in the SDK for the EMIO pins:

#define led_fmc 54
#define led_fmc 55
#define led_fmc 56
#define led_fmc 57
#define pbsw_fmc 58
#define pbsw_fmc 59
 
And these for the button and the LED 'D3' on the MicroZed:

#define ledpin 47
#define pbsw 51
 
-Urs
 

nowksru
Junior(0)
PL side working

I managed now to control the LEDs on the FMC-CC via the PL, but still have no clue why it is not working via the PS.