README.md

February 26, 2026 ยท View on GitHub

Notes for Colorlight-5A-75B

Colorlight 5A-75B pinout

|-------|------|
| J30   | TDO  |
| J29   | TDI  |
| J28   | TMS  |
| J27   | TCK  |
|-------|------|

FPGA pinout

ATTENTION: For exact pinout (which varies depending on the board revision), please see https://github.com/q3k/chubby75/tree/master/5a-75b.

Image Credit: Anton Blanchard.

Programming Colorlight-5A-75B using Bus Pirate with OpenOCD:

sudo openocd -s /usr/local/share/openocd -f buspirate-flash.cfg

Programming Colorlight-5A-75B using CMSIS-DAP with OpenOCD:

sudo openocd -s /usr/local/share/openocd -f cmsisdap-flash.cfg

Programming Colorlight-5A-75B using pico-dirtyJtag (preferred):

Flash https://github.com/phdussud/pico-dirtyJtag to the Raspberry Pi Pico board.

PicoJTAG
GPIO16TDI
GPIO17TDO
GPIO18TCK
GPIO19TMS
sudo openFPGALoader --cable dirtyJtag --detect

sudo openFPGALoader --cable dirtyJtag -v blink.bit

Log:

$ sudo openFPGALoader --cable dirtyJtag -v blink.bit
empty
Jtag frequency : requested 6000000Hz -> real 6000000Hz
found 1 devices
index 0:
	idcode 0x41111043
	manufacturer lattice
	family ECP5
	model  LFE5U-25
	irlength 8
File type : bit
Open file: DONE
b3bdffff
Parse file: DONE
bitstream header infos
Part: LFE5U-25F-6CABGA256
idcode: 41111043
IDCode : 41111043
displayReadReg
	Config Target Selection : 0
	Done Flag
	BSE Error Code
		No err
Enable configuration: DONE
SRAM erase: DONE
Loading: [==================================================] 100.00%
Done
userCode: 00000000
Disable configuration: DONE
displayReadReg
	Config Target Selection : 0
	Done Flag
	BSE Error Code
		No err

Programming Colorlight-5A-75B using STM32 + DirtyJTAG with UrJTAG:

Programming Colorlight 5A-75B (15ECP5FPGAboard)with2 ECP5 FPGA board) with 2 STM32 "Blue Pill" based JTAG adapter is fun. Thanks to DirtyJTAG and UrJTAG! The Blue Pill might be the cheapest JTAG programmer around (< 2 USD on AliExpress)?

Flash DirtyJTAG firmware to Blue Pill (STM32F103C8T6):

st-flash write dirtyjtag.bluepill.bin 0x8000000

DirtyJTAG Pinout:

The bluepill build of DirtyJTAG has the following pinout:

STM32JTAG
PA0TDI
PA1TDO
PA2TCK
PA3TMS
PA4TRST
PA5SRST

Run blinky example on the FPGA:

$ sudo jtag

UrJTAG 2019.12 #ae2cacce
Copyright (C) 2002, 2003 ETC s.r.o.
Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors

UrJTAG is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
There is absolutely no warranty for UrJTAG.

warning: UrJTAG may damage your hardware!
Type "quit" to exit, "help" for help.

jtag> bsdl path .
jtag> cable dirtyjtag
jtag> detect
IR length: 8
Chain length: 1
Device Id: 01000001000100010001000001000011 (0x41111043)
  Filename:     ./BSDLLFE5U25FCABGA256.bsm
jtag> svf /tmp/blink.svf ref_freq=100000

Done ;)

This works but I have no idea what many of these things are. Time to learn... ;)

References