Skip to content

Instantly share code, notes, and snippets.


Piotr Esden-Tempski esden

View GitHub Profile
esden /
Created Jun 29, 2020
Installing and running nmigen with native binary toolchain on Windows 10

This guide describes the steps necessary to setup the FPGA tools, python, nmigen and zadig drivers for the iCEBreaker-fpga development board on Windows 10.

Download the following software:

Install the following in whichever order:

  • git
esden / icebreaker-ftdi-public-template.conf
Last active Jul 5, 2020
Just the ftdi programming template for icebreaker.
View icebreaker-ftdi-public-template.conf
# The Vendor ID and Product ID seem to identify a particular chipset
# to target. I used the libftdi utilities and OS X USB Prober app to
# poke around and figure out what numbers to use.
# The rest of the fields are settings which can be written to the
# FT2xx with the --flash-eeprom option.
esden /
Last active May 11, 2020
Esden's (1BitSquared) Streaming setup and a bunch of the tools I use on stream.
View edid-4k-samsung-tv.txt
Section "Monitor"
Identifier "SAMSUNG"
ModelName "SAMSUNG"
VendorName "SAM"
# Monitor Manufactured week 2 of 2014
# EDID version 1.3
# Digital Display
DisplaySize 1110 620
Gamma 2.20
Option "DPMS" "false"
esden / single-led-panel-pmod-phy.wd
Created Mar 19, 2019
Wavedrom listing describing the timing diagram of an iCEBreaker single Pmod LED Panel driver
View single-led-panel-pmod-phy.wd
{signal: [
{name: 'R', wave: 'x4343434343434343x..........', data: ['R1[0]','R0[0]','R1[1]','R0[1]','R1[2]','R0[2]','R1[3]','R0[3]','R1[4]','R0[4]','R1[5]','R0[5]','R1[6]','R0[6]','R1[7]','R0[7]']},
{name: 'G', wave: 'x4343434343434343x..........', data: ['G1[0]','G0[0]','G1[1]','G0[1]','G1[2]','G0[2]','G1[3]','G0[3]','G1[4]','G0[4]','G1[5]','G0[5]','G1[6]','G0[6]','G1[7]','G0[7]']},
{name: 'B', wave: 'x4343434343434343x..........', data: ['B1[0]','B0[0]','B1[1]','B0[1]','B1[2]','B0[2]','B1[3]','B0[3]','B1[4]','B0[4]','B1[5]','B0[5]','B1[6]','B0[6]','B1[7]','B0[7]']},
{name: 'SCLK', wave: 'hn.......h....', period:2, phase:0.5},
{name: 'LATCH', wave: '0........10...', period:2},
{name: 'BLANK', wave: 'x.......1..0..', period:2},
{name: 'ARST', wave: '1.............', period:2},
{name: 'ACLK', wave: '0........10...', period:2}
esden /
Last active Jan 16, 2021
FAQ: Collection of links and information about RGB LED Panels and FPGA

A common name for the interface is HUB75

The displays use shift registers for columns and two sets of row multiplexers.

Typical organization

32x32 panel

  • Organized in two halfs of 16x32 tiles
  • 32 bit long RGB column drive shift registers
  • 4 bit to 16 row drive demultiplexers
esden / led-demo.pcf
Last active Oct 25, 2018
This is the generated verilog from @scanlime icebreaker-icestudio-ledmatrix design af3b1559
View led-demo.pcf
# Code generated by Icestudio 0.4.0-dev
# Thu, 25 Oct 2018 18:32:14 GMT
set_io v5beaf0[4] 28
set_io v5beaf0[3] 31
set_io v5beaf0[2] 34
set_io v5beaf0[1] 38
set_io v5beaf0[0] 43
set_io vb20513[5] 3
set_io vb20513[4] 48
esden /
Last active Aug 5, 2020
Starting a new KiCad Project esden style.

Create a new directory:

mkdir myhardware-git
cd myhardware-git

Initialize git:

git init
esden / bmp_tpwr_en.scr
Last active Sep 17, 2020
Small gdb script to enable Black Magic Probe Target Power 'tpwr'.
View bmp_tpwr_en.scr
#!/usr/bin/env arm-none-eabi-gdb -nx -batch -x
# The Black Magic Probe has level shifter buffers on its frontend,
# this gdb script enables Black Magic Probe target power,
# this is needed if you are not providing reference voltage from your target.
# Do not run this script or enable target power if you have VREF connected.
# The BMP side TPWR is connected to the 3.3V regulator of the Black Magic Probe
# and it has no protections, so don't fry your target or Black Magic Probe by
# being hasty and not thinking about what you are doing. :D