You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 21 Next »

FPGA's and SoC can be used for many more advanced functions as making a LED to blink. However "LED Blinky" is considered a "Hello World" for systems that can not otherwise say Hello.

Requirements

To make LED to Blink (under user control) following requirements are needed:

  1. Some Programmable Device: MCU, CPU, CPLD, FPGA, SoC
  2. Working Programming or Configuration interface or means to boot the Programmable Device
  3. Timing Source (Clock), can be external or internal, must be be enabled
  4. Active Power to all required power domains of the Programmable Device
  5. Release of main Reset
  6. LED Connected to some user controllable I/O Port of the Programmable Device
  7. LED must be assembled with right polarity and proper current limiting resistor
  8. Valid I/O Voltage applied to the I/O Bank with the user LED

If any of those requirements are missing, you will most likely fail with the simple task to get an LED to Blink.

 

Programmable Device

 

Timing Source

 

 

Valid I/O Voltage

It is very common that modern Integrated Circuits have separate power supply pins for I/O Voltage. That voltage if applied control the output levels from the device, if the Voltage is too low or missing then it is not possible to have enough current from the device I/O Pin to make a LED Lit.

FPGA and SoC SoM's can have fixed and user controlled Voltages for the I/O Banks. It is important to assure that the I/O Bank that controls the LED has a valid Supply Voltage applied.

If you are not sure about the I/O Banks Voltage supplies then there are some options to try.

DONE LED

If there is on board LED directly connected to FPGA "DONE" output, then it is also possible to control it as long as it is possible to configure the FPGA (or PL portion of Zynq). For Zynq the PS subsystem is not needed if configuration is done via JTAG.

The good thing about Done LED is that if it is available it has fixed location, there is no need to assign it to some pin and it has fixed available power as well. The tricky parts is that DONE output is controlled by FPGA Primitive so the code to control the Done LED is different from that of normal PL I/O Controlled LED.

MIO LED

If there is a LED directly connected to lower MIO Bank of the Zynq then this LED is also always controllable, as this Bank has to be powered for the device to boot. This LED can also be controlled if the PL portion of the Zynq is not configured or even un-powered.

VIO LED

This is an option that is always available as long as we have JTAG Connection to the PL.

Example of VIO LED, the SoM being used is Kintex UltraScale TE0841, the LED is implemented in F32C Softcore Bootloader that is waiting for Arduino IDE to download a sketch. There is no limit for the number of virtual LED's. It is also possible to attach those VIO LED's to Zynq GPIO when using EMIO mulitplexing, so the same GUI would show LED's controlled by Zynq PS during boot or running Linux.

 

LED's on TE SoM's and Baseboards

 MIO LEDDONE LEDUser LED PLNotes
TE0710-   
TE0711-   
TE0712-No*Yes*LED's are routed to PL I/O by System Control CPLD
TE0714-NoYesOne fixed LED on PL,1.8V or 3.3V I/O Voltage always present
TE0720MIO7Yes, FixedYes*System control CPLD can remap the LED functions during FSBL
TE0725-YesYesLED's power always available
TE0741-   
TE0745MIO - 
TE0782    
TE0841--Yes 

 

 

Base User LED'sNotes
TE0701up to 8 maxAll LED's controlled by the System Control CPLD, some require user I/O Bank voltage
TE07032*User supplied I/O Voltage
TE0705  
TE07060Can use RJ45 LED's as PL User LED's

 

Blinky Examples

 

Arduino F32C

 

SoMVariantClockRAMNotes
TE0712    
TE0725    
TE0841    

F32C_Demo availability of designs and prebuilt images ready to be used with Arduino IDE.

 

 

 

 

 

 

 

  • No labels