Radiona.org / Zagreb Makerspace
FPGA Boards
KiCad
ULX3S is a fully open source, compact, robust, and affordable FPGA dev board equipped with a balanced selection of additional components and expansions. Although it was designed primarily as a teaching tool for mastering the principles of digital circuit design, ULX3S incorporates a wide array of features and interfaces that allow it to serve as a broadly useful module for installation in complex devices.
Built around a powerful Lattice Semiconductor ECP5-series FPGA chip and supported by the latest open-source toolchains, ULX3S is one of the most powerful and desirable platforms available for FPGA enthusiasts. It comes equipped with onboard Wi-Fi, display, buttons, LEDs, and storage. Flash it with an over-the-air (OTA) update using the Wi-Fi connection or take advantage of the onboard OLED display and buttons to browse the contents of an SD card and select a bitstream.
Due to its battery-backed RTC, ULX3S can power down completely and wake up only in response to certain events. This feature makes it perfect for use in low-power applications such as battery-powered remote sensor nodes.
And if you’re not the low-power type, on-board peripherals like SDRAM, USB, digital video out, FM/ASK antenna, ADC, and DAC make it an audio/video powerhouse for signal processing and synthesis, motor control, and SDR use cases. It can emulate arcade machines and retro computers like the Minimig (Amiga) or modern systems like the F32C (MIPS/RISCV). It has 56 GPIO pins, all routed as differential pairs, and a PMOD compatible pinout, which opens it up to a wide range of expansion options.
Finally, if you are just starting out with FPGAs, you can use the Arduino IDE to program ULX3S in seconds.
Software engineers, embedded developers, and programmers learning Verilog will enjoy having a built-in ESP32 that can work cooperatively with or independently of the FPGA. Program the ESP32 natively using C/C++ with the Arduino IDE, the Visual Micro extension for Visual Studio, or the Espressif IDF commandline toolchain. You can also configure the ESP32 for use with MicroPython, Espruino, the JavaScript SDK, NodeMCU, LUA, mruby, .Net C# nanoFramework, and more!
ULX3S has been actively developed since 2016 and is the result of a collaboration between Radiona.org / Zagreb Makerspace and FER – the Faculty of Electrical Engineering and Computing – at the University of Zagreb in Croatia.
Our PCB design was authored by Electronic Mechanic Aerodynamic Research & Development (EMARD).
ULX3S | Lattice ECP5 Evaluation Board | Lattice ECP5 Versa | TinyFPGA EX | FleaFPGA 'Ohm' | KONDOR AX | TrellisBoard | |
---|---|---|---|---|---|---|---|
Model | ECP5 12F, 45F, or 85F | ECP5 85F | ECP5 45F | ECP5 12F, 45F, or 85F | ECP5 25F | ECP5 85F | ECP5-5G 85F |
License | OSHW | Proprietary | Proprietary | OSHW | OSHW | Proprietary | OSHW (MIT) |
Price Range | $99 - $155 | $100 | $250 | Unreleased | $45 | $1500 - $2000? | $500 - $1000 |
Schematics Published? | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Design Files Published? | Yes | No | No | Yes | No | No | Yes |
Physical Dimensions | 94 × 51 mm | 180 × 100 mm | 165 × 110 mm | 61 × 18 mm | 65 × 30 mm | 180 × 130 mm | 200 x 112 mm |
FPGA | |||||||
LUT Capacity | 12 K – 84 K | 84 K | 44 K | 12 K – 84 K | 24 K | 84 K | 84 K |
Embeded Memory (Kbits) | 3744 (on 85F) | 3744 | 1944 | 3744 (on 85F) | 1008 | 3744 | 3744 |
Peripherals | |||||||
USB-Serial JTAG | FT231X | FT2232H | FT2232 | None | FT230X | FT2232 | FT2232H |
Programming Over... | USB-JTAG, EXT-JTAG, Wi-Fi-ESP32-JTAG, SD-ESP32-JTAG | USB-JTAG, EXT-JTAG | USB-JTAG, EXT-JTAG | USB-bootloader, EXT-JTAG | USB-JTAG, EXT-JTAG | USB-JTAG, EXT-JTAG | USB-JTAG |
Direct USB to FPGA | Yes | No | No | Yes | Yes | No | via EHCI |
User IOs | 56 | 178 | Up to 29 | 42 | 29 | 365 | 104 |
Differential Pairs | 28 | 9 | Unknown | No | 12 | Unknown | 36 |
Single-Ended | 5 | 178 | Unknown | 42 | 29 | Unknown | 22 |
SERDES | 0 | 9 | 1 | 0, 2 (only EX85-5G variant) | 0 | 4 | 4 (PCIe x2 and m.2 x2) |
PMOD Connector Placeholders | 4 | 1 | No | No | No | No | 2 |
User Buttons | 7 | 3 | 2 | 1 | No | 2 | 4 |
DIP Switches | 4 | 8 | 8 | No | No | 10 | 8 |
User LED | 8 | 8 | 8 | 1 | 1 | 8 | 12 |
Indicator LED | 3 | 9 | 10 | 1 | No | 6 | 13 |
Onboard Clock | 25 MHz | 12 MHz, 50 MHz, 200 MHz | 100 MHz | 48 MHz, 200MHz | 25 MHz | 100 MHz | 12 MHz, 100 MHz, programmable |
Flash | 32–128 Mbit QSPI | 128 Mbit QSPI | 128 Mbit QSPI | 64 Mbit QSPI | 8 Mbit SPI | 64 Mbit QSPI | 128 Mbit |
Onboard RAM | 32 MB SDRAM | No | 1024 MB DDR3 | up to 16 MB HyperRAM | 32 MB SDRAM | 512 MB DDR3 | 1 GB |
Video Out | Digital (GPDI), Analog Composite PAL/NTSC (3.5 mm jack) | No | No | No | Digital (GPDI) | Digital (HDMI) | DVI via TFP410 |
Audio Out | Digital S/PDIF (3.5 mm jack), Digital (GPDI), Analog stereo (3.5 mm jack) | No | No | No | Digital (GPDI) | Digital (HDMI) | No |
ADC | MAX11125 | No | No | No | Sigma-Delta | No | No |
Storage | Micro-SD | No | No | Micro-SD | Micro-SD | Micro-SD, 8 GB eMMC | Micro-SD |
Ethernet | Via ESP32, USB | No | Yes | No | No | Yes | Gigabit (RGMII) |
Display | Placeholder for 0.96" SPI color OLED SSD1331 | No | 14-segment LED | No | No | No | No |
Antenna | 27, 88–108, 144, 433 MHz FM/ASK onboard | No | No | No | No | No | No |
RTC (Real-time Clock) | MCP7940N, Low Power Sleep, Wakeup | No | No | No | No | No | No |
Power | |||||||
Power Input | USB 5 V | 12 V | 12 V | USB 5 V | USB 5 V | 12 V | USB-C 5 V, barrel jack 12 V |
GPIO Bank Voltage Levels | 3.3 V, 2.5 V (jumper selectable) | 3.3 V | 3.3 V | 3.3 V | 3.3 V | 3.3 V | 3.3 V, 2.5 V, 1.8 V |
Power Reserve to Drive External Circuits | 3.3 V at 1 A, 2.5 V at 1.5 A | Unknown | Unknown | Unknown | Unknown | Unknown | 3.3 V, 2.5 V, 1.8 V at 2 A |
Software | |||||||
Open Source Toolchain | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Arduino Support (FPGArduino) | Yes | Not yet | Not yet | Not yet | Yes | Yes | No |
Confirmed Working Retro Games Consoles | Yes | No | No | No | Yes | No | No |
You will find setup and configuration guides, tutorials, and sample code in our FPGA Odysseus repository on GitHub. Additional resources are available in our Community Projects repository, or you can also reach out to other ULX3S developers through our Gitter community.
"This is a really awesome dev board option that a newer FPGA developer can definitely grow into, and more experienced developers can really do some amazing things with."
Produced by Radiona.org / Zagreb Makerspace in Zagreb, Croatia.
Sold and shipped by Crowd Supply.
ULX3S development board with a Lattice ECP5 (LFE5U-12F-6BG381C) FPGA. 12k LUTs and a whole lot more.
ULX3S development board with a Lattice ECP5 (LFE5U-85F-6BG381C) FPGA. 84k LUTs and a whole lot more.
A set of three expansion boards for ULX3S: one dual-USB board with support for IR send and receive, one Digital Video board for GPDI input or as a second GPDI output, and one OV7670 camera connector.
Zagreb, Croatia · radiona.org
Radiona.org / Zagreb Makerspace works to enhance the visibility of makers' open source culture and sustainable production, as well as to help connect all possible fields of Science, Technology, Engineering, Art, and Mathematics (STEAM).