ULX3S prebuilt binaries (emard__ulx3s-bin)

Field Value
Upstream https://github.com/emard/ulx3s-bin
Reviewed at 2a40f50 (upstream date 2022-04-19), reviewed 2026-09-27
License none stated in the repo (binaries built from third-party sources, each with its own license)
HDL / framework n/a: prebuilt .bit/.bit.gz/.svf/.vme/.img files, no HDL sources
Toolchain Mixed: Diamond-era .vme (2018–2019), open flow .bit.gz (2020+)
Programmer ujprog, FleaFPGA-JTAG, openFPGALoader, OpenOCD; ESP32 serial tools
Target FPGA(s) 12F / 25F / 45F / 85F (depends on folder), plus ECP5-5G m85f and ULX4M DFU images
Board revision(s) v1.7(patch), v1.8, v2.0/v3.0.x (v20), v3.1.4, v3.1.7
Activity 327 commits, 2018-03-11 → 2022-04-19. Mostly emard, some Goran Mahovlic and davor. Dormant since 2022

What it is

The quickstart and factory-test kit for the board: known-good bitstreams to check a new board, set up the FT231X and ESP32, install bootloaders, and try demos. It is also a catalogue of the earliest designs people ran on the ULX3S. Each folder points to a source project.

Contents (one bullet per folder, fpga/… unless stated)

Folder Function tags What it is Source project
f32c/ soc-cpu, video-dvi, rtc-power, adc, audio-dac, examples Board self-test: f32c MIPS/RISC-V SoC plus selftest-mcp7940n.bin. Checks RTC, EDID, ADC, DAC, buttons, switches and LEDs, and prints results on serial and DVI. Also BASIC, galaga, a synth and a slides viewer f32c/f32c (rtl/proj/lattice/ulx3s)
passthru/ esp32, uart USB-serial → ESP32 bridge for flashing the ESP32, per revision and chip emard/ulx3s-passthru
dfu/ bootloader, usb-device, esp32 Recommended bootloader: DFU on US2 plus ESP32 passthru on US1, multiboot .img (12F/25F/45F/85F on v20, v314, v317; ULX4M) emard/had2019-playground (fork of smunaut’s HAD2019 badge)
tinyfpgasp/, tinyprog/ bootloader, usb-device Older TinyFPGA-style US2 bootloader, 2018 tinyfpga/TinyFPGA-Bootloader fork
memtest/ sdram SDRAM memory test at 112–210 MHz with various clock phases (32/64 MB), 2019 unknown (emard)
emi/v3.1.7/ sdram SDRAM memtest EMI variant for v3.1.7, 2021 unknown
oled/ oled-lcd OLED + button test (25F/45F), 2018 unknown (emard ulx3s-misc?)
rtc/ rtc-power, video-dvi, oled-lcd RTC clock shown on DVI + ST7789, set with buttons unknown
usb/ usb-host, video-dvi, oled-lcd USB1.0 low-speed HID host on US2, shows reports as hex unknown (likely emard/ulx3s-misc usbhost)
eth/ ethernet, video-dvi LAN8720 RMII on GP/GN 9–13; hdl4fpga DHCP + ping responder hdl4fpga (hdl4fpga/hdl4fpga)
scope/ adc, video-dvi, oled-lcd, ps2, usb-device, ethernet 4-channel storage oscilloscope with mouse GUI on 800×600 or OLED; USB CDC-Ethernet on US2 hdl4fpga ScopeIO
slides-hdl4fpga/ video-dvi, sdram, esp32 Graphics slides viewer fed from ESP32 MicroPython hdl4fpga
c64/ retro-computer, esp32 Commodore 64 (free ROMs) for 12F/85F, PRG loader + OSD over ESP32 unknown (FPGA64-derived?)
oberon/ retro-computer, soc-cpu, sdram Project Oberon RISC5 workstation (12F, 85F; cache edition from PNRU) unknown (emard/oberon?)
litex/linux/ soc-cpu, linux, sdcard, video-dvi Linux on LiteX/VexRiscv, 50 MHz, framebuffer on GPDI, rootfs on SD litex-hub/linux-on-litex-vexriscv
debugblink/flashblink flash-spi Probe flash pins with a wire from GP27 to check BGA soldering unknown
diamond/ toolchain Scripts to run Lattice Diamond on Debian/Ubuntu —
esp32/ (top) esp32 esptool/espefuse, efuse burn script, websvf binaries, MicroPython v1.14 + esp32ecp5, RTC demo emard/LibXSVF-ESP, emard/esp32ecp5
usb-jtag/ (top) programmer-tool ujprog, FleaFPGA-JTAG, OpenOCD, ftx_prog binaries for Linux/RPi/Win/macOS f32c/tools, emard/FleaFPGA-JTAG
pcb/ (top) board-hw Gerbers for PCB v3.1.3 emard/ulx3s

“unknown” = the source is not stated in the repo; guesses are marked with ?.

How to use (from README)

Board bring-up: program the FT231X with ftx_prog, load f32c/…selftest…bit, upload f32c-bin/selftest-mcp7940n.bin with f32cup.py, then read serial at 115200 or the DVI screen. After that: passthru to flash, burn the ESP32 efuse (3.3 V flash, WROOM only), upload websvf.

DFU bootloader install: openFPGALoader -b ulx3s --unprotect-flash --file-type bin -f multiboot.img.gz. Enter it by holding BTN1 while plugging US2 (LEDs D0–D2 on).

Reuse notes

  • Best known-good bitstreams for checking hardware before debugging your own design (self-test, memtest, flashblink).
  • memtest/ file names give a reference for how fast SDRAM runs on ULX3S (up to ~200 MHz with a tuned clock phase). Pass/fail results are not recorded in the repo.
  • hdl4fpga (scope, eth, slides) is a major reusable-core source: DVI, RMII, USB CDC-ECM, PS/2. Review it.
  • The README’s hardware bring-up notes (diode test of BGA pins, regulator jumpers RP1–3, < 50 mA idle current) are useful for anyone assembling boards.

Open questions

  • Sources for memtest, emi, oled, rtc, usb, c64, oberon, flashblink need to be located.

Back to top

Generated from the JSON in data/ by the scripts in .claude/skills. Facts cite the upstream file at the reviewed commit; verify before reuse.

This site uses Just the Docs, a documentation theme for Jekyll.