News:

Attention: For security reasons,please choose a user name *different* from your login name.
Also make sure to choose a secure password and change it regularly.

Main Menu

Open-source 1024-point FFT accelerator on the Trenz ICEZero

Started by ka_ru, June 04, 2026, 09:32:16 AM

Previous topic - Next topic

ka_ru

I built a complete, fully open-source FFT engine around the Trenz ICEZero (TE0876-03-A) — the iCE40HX4K + 4 Mbit SRAM Raspberry Pi HAT. It does a 1024-point complex FFT (16-bit Q1.15, block-floating-point output), talks to the Pi over SPI (up to 14 MHz, streaming BULK_READ), and uses the on-board SRAM as a double-buffer on both input and output so compute, readout and the next upload overlap → ~500 FFT/s, ~0.2 W. The whole flow is 100% Yosys + nextpnr + icestorm (no vendor tools), it programs straight from the Pi's GPIO (no external programmer, ~2.3 s), and uses only ~34% of the HX4K.

Verified on real hardware against NumPy: DC/ramp/sine correlate 1.000000, an 18–34 kHz chirp 0.999987 (spectrum below). Code, docs and the SPI protocol spec: 👉 https://github.com/ipmgroup/fftd — thanks to Trenz for a genuinely hackable little board, questions and PRs welcome!

(attach: chirp_fft_comparison.png — FPGA vs NumPy spectrum of the 18–34 kHz chirp)