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 301d ago

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

Update attachment
Cyao
Cyao 1h spent working 302d ago

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

Update attachment
Cyao
Cyao 1h spent working 302d 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 10 months ago

That’s amazing! congratulations :yay:

Cyao
Cyao 1h spent working 303d 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 304d 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 306d 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 306d 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 306d ago

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

Update attachment
Cyao
Cyao 5m spent working 307d ago
  • Updated firmware docs
  • Responded to elecrow email
  • Got 300+ stars!!!
Praveenkushinpi Praveenkushinpi 10 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 308d 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 309d ago

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

Update attachment
Cyao
Cyao 37m spent working 309d ago

Sold 2 icepi zeros :O

Update attachment
Cyao
Cyao 25m spent working 310d ago

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

Update attachment
Cyao Cyao 10 months ago
Thxx!
yessa yessa 10 months ago
wow awesome!
Cyao
Cyao 20m spent working 311d 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 312d 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 313d ago

Switched to make build system ;D

Update attachment
Cyao
Cyao 1h spent working 314d 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 10 months ago
Nice! Want to see what youl make with it 
Cyao Cyao 10 months ago
Thanks!
Pegoku Pegoku 10 months ago
Wow! So cool!
Cyao
Cyao 18m spent working 314d 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 314d 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 10 months ago
woah you already got a prototype
Cyao Cyao 10 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 10 months ago
that is one big button
Cyao
Cyao 45m spent working 315d 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 11 months ago
Thanks!
somebody else somebody else 11 months ago
this is really cool!
Cyao
Cyao 1h spent working 315d 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 316d 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 316d 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 317d 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 318d 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 11 months ago
:3
krunch krunch 11 months ago
:3
Cyao
Cyao 19m spent working 319d 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 320d 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 321d 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