Icepi Zero - Raspberry Pi Zero FPGA Equivalent

Icepi Zero - Raspberry Pi Zero FPGA Equivalent

•  •  28 updates •  22h 36m

Your portable FPGA in a Raspberry Pi Zero form (OSHWA certified! 450+ Github stars, entire dev batch sold for 200$)

By Cyao

Timeline

Cyao
Cyao 25m spent working 68d ago

Updates:
Reflashed firmware
Customers received icepis, they are happy :yay:
updated project banner

Update attachment
Cyao
Cyao 1h spent working 69d ago

worked more on dvi/hdmi, this still isn't working ugghhhhhhhhhhhhhhhhhh

Update attachment
Cyao
Cyao 1h spent working 69d ago

Work done:
Pinout diagram made
My project is OSHWA certified! It's now a true open source hardware project https://certification.oshwa.org/fr000026.html

Update attachment
virtualfuzz virtualfuzz 2 months ago

That’s amazing! congratulations :yay:

Cyao
Cyao 1h spent working 70d ago

Continued implementing HDMI (DVI via tmds).

This is soooooooo complex. The TMDS protocol is cursed. Had to do extensive searching and waveform debugging

Update attachment
Cyao
Cyao 50m spent working 71d ago

Dug into ECP5 PLL generation in order to generate my HDMI clock, buuut it's super undocumented and requires quite a lot of maths stuff.... Also made the start of my VGA code!

Update attachment
Cyao
Cyao 1h spent working 73d ago

Redid the HDMI routing!
Now this is much better: It respects the rule of 3! Also the impedance is matched to the HDMI spec, the inter and intra pair skew respected.
USB impedance recalculated too!
Also some misc fixes!

Update attachment
Cyao
Cyao 1h spent working 73d ago

Optimized the routing of a few things:
Left side level shifter
The USB pull resistor & io traces
Improved gnd plane integraty
Next step: OSHW certification!

Update attachment
Cyao
Cyao 24m spent working 73d ago

Tried to redo HDMI routing, but decided that my old one was good

Update attachment
Cyao
Cyao 5m spent working 74d ago
  • Updated firmware docs
  • Responded to elecrow email
  • Got 300+ stars!!!
Praveenkushinpi Praveenkushinpi 2 months ago

you are doing great watching all those stars and USB-C feels which most of SOC's lack in best of luck Cyao

Cyao
Cyao 46m spent working 75d ago

Updates:
1. Fixed gerber files not on github
2. Pushed a few fixes onto the github repo
3. Submitted icepi zero to crowdsourcing :)
4. Got hackaday post https://hackaday.com/2025/05/29/icepi-zero-a-pi-zero-for-fpga/

Update attachment
Cyao
Cyao 39m spent working 76d ago

Routed a few USB I/O configured pull resistors - had like no space left...

Update attachment
Cyao
Cyao 37m spent working 76d ago

Sold 2 icepi zeros :O

Update attachment
Cyao
Cyao 25m spent working 77d ago

Added a memtest example, also advertised a lot on reddit & co.

Update attachment
Cyao Cyao 3 months ago
Thxx!
yessa yessa 3 months ago
wow awesome!
Cyao
Cyao 20m spent working 78d ago

Polished the readme and shipped the project! Multiple reddit communities like this one: https://www.reddit.com/r/embedded/comments/1kwx5p7/i_built_the_fpga_raspberry_pi_zero_equivalent/

Cyao
Cyao 1h spent working 79d ago

Successfully implemented a UART module! Includes the receiver and transmitter: Currently it just deserializes the data, then re-serializes the data to send it back via usb uart (The FTDI chip)
But this isn't the standard Arduino uart code - it's implemented in the hardware level (think about w/ transistors)

https://github.com/cheyao/icepi-zero/commit/c4abb07bcfd9b90a4741b2cbd0cf13a63da69339

Cyao
Cyao 18m spent working 80d ago

Switched to make build system ;D

Update attachment
Cyao
Cyao 1h spent working 81d ago

Got HDMI working!!!! This thing was a hell to compile. Tried to compile a core afterwards but failed lol - didn't have enough patience

Update attachment
Lukas Lukas 3 months ago
Nice! Want to see what youl make with it 
Cyao Cyao 3 months ago
Thanks!
Pegoku Pegoku 3 months ago
Wow! So cool!
Cyao
Cyao 18m spent working 81d ago

Made a custom built version of nextptr: Had to use gcc because clang didn't have embed, and this wasnt documented anywhere sob

Anyways I made the custom version just to get this image: An image representation of the insides of the fpgas. All white lines are physical connections and the white squares are configured LUTs (think of them of slightly more advanced logic gates)

Update attachment
Cyao
Cyao 1h spent working 81d ago

Now the button is an counter! Didn't know it would be so hard - fixed another lpf bug, and made multiple verilog revisions. Yosys is so unhelpful when the code isn't synthesable

krunch krunch 3 months ago
woah you already got a prototype
Cyao Cyao 3 months ago
That's the chip ;p The button is on the back side, so I can directly press the main chip to activate the button
cskartikey cskartikey 3 months ago
that is one big button
Cyao
Cyao 45m spent working 82d ago

Just got the button -> led to work! Turns out it's that yosys will automatically unpack arrays with a length of 0 into a single wire, and that will cause the lpf assignment to fail. But nexptr won't report this assignment fail...

Cyao Cyao 3 months ago
Thanks!
somebody else somebody else 3 months ago
this is really cool!
Cyao
Cyao 1h spent working 82d ago

Succeeded at downloading the official ecp5 programming tool! It's fucking legacy stuff but I need to test if the pullups are broken

Update attachment
Cyao
Cyao 21m spent working 83d ago

tried to make a counter module but on the hardware it didn't work,,,, I'm debugging it tomorrow.

I suspect it's a bad lpf pin

Update attachment
Cyao
Cyao 1h spent working 83d ago

Got mr. blinky to work!!! Had to setup a whole toolchain because fpgas are so undocumented :sob:

Also made a pr to openfpgaloader! https://github.com/trabucayre/openFPGALoader/pull/553

Cyao
Cyao 24m spent working 84d ago

Finished the f lpf file!!! Added another 100+ lines of pinout, manually browsing the schematic is becoming so painful.

But good news: I also prettified the schem! :D

Update attachment
Cyao
Cyao 1h spent working 85d ago

Added 100+ lines to the lpf file while reverse engineering the io format.

Crawled through my schematic & pcb editor to find all the pins.

Also fixed multiple typos on the schematic :sob:

Update attachment
Cyao Cyao 3 months ago
:3
krunch krunch 3 months ago
:3
Cyao
Cyao 19m spent working 86d ago

Started writing the lpf file for my icepi-zero. It involves a large amount of schematic browsing and googling since this format is quite cryptic.
A lpc basically maps physical pins to virtual pins, while configuring the pin's capabilities.

Update attachment
Cyao
Cyao 25m spent working 87d ago

I've changed the one button on the back to two of them. Then moved a lot of traces & vias around by small amounts to ensure the ground plane continuity and better manufaturability. Also finished tuning all the traces

Update attachment
Cyao
Cyao 42m spent working 88d ago

Impedance matched USB & HDMI's traces according to the JLCPCB's 4 layer stackup, and started experimenting w/ kicad's auto length tuning

Update attachment