1. Either go for the Gowin FPGAs from China. You can get good boards for cheap from Ali.
2. There are FPGAs that now have a FOSS chain. They are very interesting too.
scottapotamas 7 hours ago [-]
Depends on what you're wanting to do.
The OSS toolchains have matured a lot since then, with parts from Lattice being fairly well supported if you don't want to touch a vendor's tooling.
Gowin have some of the more interesting new parts which sit on a different part of the cost/feature curve. The Tang Nano boards seem fairly popular but I only have experience with far larger GW5 parts.
The newer parts from Intel/AMD have increasingly impressive hard-peripherals and internal features, but not that relevant unless you know what you want/need.
ForgotMyUUID 4 hours ago [-]
CMOD S7 by Diligent. Slightly higher than 100 bucks but it is definitely a starter's choice.
eqvinox 5 hours ago [-]
Or, how about you just run the FPGA toolchain on WASM:
+1. I've used this with Lattice UP5K for some experimental development. I wanted to be able to quickly skip between working on Windows and Linux. Worked well at the time.
paaloeye 8 hours ago [-]
Outside of hello worlds, I’m always struggling to find a use case for such small boards. Any ideas?
gregsadetsky 7 hours ago [-]
I've started to dabble in this only very recently. I have two iCEBreaker boards [0] in the mail right now that I'm excited for.
From what I understand, one of the big advantages of the up5k chip (the same chip on the webfpga and the icebreaker) is that there's an open toolchain that runs in seconds (at this chip size), which is not the case in the closed/Vivado/"typical fpga" part of the world. (feel free to correct me)
Purely in simulation this week, I had Claude (Fable) design a working Tetris out of 1400 relays - originally, this was for a Minivac web simulator that I/Fable had built [1]. Then, it compiled the relay netlist to Verilog and ran it on the simulated chip, comparing this (bezerk) port relay-for-relay against the original simulator. All matching (total llm time: less than an hour). I had it also make a viz of the netlist blinking through one simulated run [2] - sort of like visual6502.org..!
Today, I (Fable) ported tinystories [3], a very small language model to this exact same chip. It's currently "golfing" to get it to fit onto the real chip size (it's ~10% over, I'm hopeful). EDIT: it just golfed it! ~~7 tokens/sec at 12Mhz in simulation!
None of these are "use cases", but these boards seem small/cheap enough that you can do new deranged things with them, which is very very exciting to me. I see a great future.
A trick to fit language models of this size it to remove the word to embeddings from the NN, and have a database to look up a dictionary of words and their embeddings. This way the LLL only need the "core" and you do the reverse for loopup again (kind of Text->RAG->LLM->RAG->Text). Have an example here: https://punnerud.github.io/pyspell/
The example have a limited language of around 1000 words, but make it possible to do Python (like) programming with LLM on an ESP32.
gregsadetsky 5 hours ago [-]
wow, that tailscale-in-browser demo is wild..!
re: language model - here, the embedding lookup, layers, logits all run on-chip and loops its own output back.
the only off-chip piece is the id to string table, i.e. the chip (once I get it!) will speak token ids and my laptop will print them as letters
punnerud 2 hours ago [-]
The demo use WASM/browser when available, but also supports running only on ESP32. Figured out I could offload and give the users a better experience when available.
Thanks for noticing the Tailscale demo. Created a Tailscale-Rust client that supports NAT-traversial, encryption etc. and manage to run on ESP32 (together with the local LLM). Just the Tailscale part can be found here: https://github.com/punnerud/tailscale-mpe-rust
gsliepen 3 hours ago [-]
For FPGAs in general: When latency is important. Even a $1 MCU has a huge amount of compute power nowadays, and they can simulate many things, but if you need to deterministically react within 1 microsecond to what happens on a pin, and your MCU doesn't already have a hardware peripheral that does exactly what you want, you're probably going to need an FPGA.
Some recent advances, like the Raspberry Pi Pico's PIO units, have made it possible to do things that MCU's couldn't do before, like emulating a ROM chip. But there are limits to what the PIOs can do.
If it comes to pure computation and not latency, you need some very specific use case before an FPGA becomes better than a regular CPU. Most likely when it involves massive parallelism and custom caches and interconnects. Although nowadays NPUs are starting to fill that niche.
For tiny boards in particular: getting experience and having fun.
leeter 8 hours ago [-]
Examples include:
* replacements for the C64 PLA, CIA, and potentially the SID
* Glue logic for a bread board project where it would require a lot of 74 or 4k series logic
* Translating TTL to VGA
etc.
These are things people have used FPGAs for quite commonly
duskwuff 7 hours ago [-]
ICE40UP5K is large enough to synthesize a simple RISC-V CPU with some basic peripherals. It's not huge or fast, but it's capable enough.
em3rgent0rdr 6 hours ago [-]
Note, if you need a barebones CPU but want to save on gates, you can go with a serial (1-bit) CPU, e.g. SERV which only takes up 198 LUTs on ice40,[1] leaving plenty of space to do other things.
You mean it's large enough to synthesize several application specific RISC-V cores and let them form an embedded distributed system.
israrkhan 5 hours ago [-]
performing glitch attacks on embedded systems, consoles, phones etc.
tehlike 7 hours ago [-]
small what boards? Do esp32 boards count?
unwind 6 hours ago [-]
Presumably small FPGA boards, like the $47 one in the linked article
Small boards have less I/O pins than larger boards typically, and small/cheap FPGA chips on small boards are also more limited than larger, more expensive parts.
Browser-based FPGA tooling is super interesting. Could really lower the barrier for hobbyists, or just make demos much more accessible.
ygouzerh 6 hours ago [-]
Would a direct pitch to some HFT shops works better than kickstarter, to raise money for FPGA related work? They are ones of the main users in term of production usage. This project might be useful for them, for training / PoC / quick prototyping.
bywater 4 hours ago [-]
Using something like this for quick prototyping or educational demos would be super handy. Beats installing all the heavy tools.
sage981 4 hours ago [-]
Neat for quick experiments without needing local tooling. Could really lower the barrier to entry for learning FPGAs.
d_finch 4 hours ago [-]
Always wanted to dabble with FPGAs but the setup was daunting. This could finally be the low-friction entry point I needed.
snvzz 7 hours ago [-]
Why do the synthesis in the cloud, and not locally?
duskwuff 7 hours ago [-]
+1. Especially given that it can even run in the browser - https://yowasp.org/
samus 7 hours ago [-]
I guess it's for people who only have a smartphone. Or a potato that is ok for browsing, but not for FPGA synthesis.
IshKebab 5 hours ago [-]
No thanks. I remember Mbed. Web-based IDEs are fine for hello world and blinky, but you're going to want a real one very soon, and then you'll find there isn't one because they put all their effort into the shitty web-based one.
Even Arduino has a real app. It's not that hard.
imhoguy 6 hours ago [-]
My first thought: yet another web browsers standard.
It's capable enough to run a risc v softcore
1. Either go for the Gowin FPGAs from China. You can get good boards for cheap from Ali.
2. There are FPGAs that now have a FOSS chain. They are very interesting too.
The OSS toolchains have matured a lot since then, with parts from Lattice being fairly well supported if you don't want to touch a vendor's tooling.
Gowin have some of the more interesting new parts which sit on a different part of the cost/feature curve. The Tang Nano boards seem fairly popular but I only have experience with far larger GW5 parts.
The newer parts from Intel/AMD have increasingly impressive hard-peripherals and internal features, but not that relevant unless you know what you want/need.
https://yowasp.org/
('mad propz' to Catherine/whitequark)
From what I understand, one of the big advantages of the up5k chip (the same chip on the webfpga and the icebreaker) is that there's an open toolchain that runs in seconds (at this chip size), which is not the case in the closed/Vivado/"typical fpga" part of the world. (feel free to correct me)
Purely in simulation this week, I had Claude (Fable) design a working Tetris out of 1400 relays - originally, this was for a Minivac web simulator that I/Fable had built [1]. Then, it compiled the relay netlist to Verilog and ran it on the simulated chip, comparing this (bezerk) port relay-for-relay against the original simulator. All matching (total llm time: less than an hour). I had it also make a viz of the netlist blinking through one simulated run [2] - sort of like visual6502.org..!
Today, I (Fable) ported tinystories [3], a very small language model to this exact same chip. It's currently "golfing" to get it to fit onto the real chip size (it's ~10% over, I'm hopeful). EDIT: it just golfed it! ~~7 tokens/sec at 12Mhz in simulation!
None of these are "use cases", but these boards seem small/cheap enough that you can do new deranged things with them, which is very very exciting to me. I see a great future.
[0] https://1bitsquared.com/products/icebreaker
[1] https://minivac.greg.technology/tetris/
[2] https://necessary-doom-48128.ondis.co/
[3] https://arxiv.org/abs/2305.07759
The example have a limited language of around 1000 words, but make it possible to do Python (like) programming with LLM on an ESP32.
re: language model - here, the embedding lookup, layers, logits all run on-chip and loops its own output back.
the only off-chip piece is the id to string table, i.e. the chip (once I get it!) will speak token ids and my laptop will print them as letters
Thanks for noticing the Tailscale demo. Created a Tailscale-Rust client that supports NAT-traversial, encryption etc. and manage to run on ESP32 (together with the local LLM). Just the Tailscale part can be found here: https://github.com/punnerud/tailscale-mpe-rust
Some recent advances, like the Raspberry Pi Pico's PIO units, have made it possible to do things that MCU's couldn't do before, like emulating a ROM chip. But there are limits to what the PIOs can do.
If it comes to pure computation and not latency, you need some very specific use case before an FPGA becomes better than a regular CPU. Most likely when it involves massive parallelism and custom caches and interconnects. Although nowadays NPUs are starting to fill that niche.
For tiny boards in particular: getting experience and having fun.
* replacements for the C64 PLA, CIA, and potentially the SID
* Glue logic for a bread board project where it would require a lot of 74 or 4k series logic
* Translating TTL to VGA etc.
These are things people have used FPGAs for quite commonly
[1] https://github.com/olofk/serv
Small boards have less I/O pins than larger boards typically, and small/cheap FPGA chips on small boards are also more limited than larger, more expensive parts.
Edit: precise price.
https://a.co/d/05f9gq9A
“KooingTech 150MHZ Machine Pulse Chip Mode Chip ACE V3 for X360 Slim”
Even Arduino has a real app. It's not that hard.