What a great project.
SPI should be fine.
"It is possible to find SPI adapters on the market today that support up to 100 MHz serial interfaces, with virtually unlimited access length. " And if you keep your circuit traces short, you should definitely be fine.
In any case audio is usually sampled at 44Khz, and these FPGAs circuits run in the 30-80 Mhz range, so you have a 1000 clock cycles to do something.
Many of the SOC's have an Axi interface running to the FPGA. That is usually 32 bits wide. Some FPGAs will have ADC and DAC, saving space.
So solution #1 is an SOC with a built in Axi interface.
But they are often quite expensive.
Solution #2 is a soft core microprocessor on the FPGA.
Here is the smallest soft core I know of which runs C on an FPGA.
Great idea, I will add it into the work I am doing!
I suspect that the SOC's get quite expensive, so an FPGA with a soft cpu core is cheaper, and thus really good for encouraging lots of users to hack on it.
> Such a component would ideally be very small (4-9 mm2), consume very little power (<1 mA), and have few connectors.
I run on the Lattice ICE40UltraPlus. Here is the packaging.
> 30-ball WLCSP (2.15 x 2.55 mm)
You can leave most balls disconnected.
And the data sheet.
https://www.latticesemi.com/en/Products ... 3118BDC07F
The other thing you should probably do is input the raw data directly into the FPGA. Have the FPGA do the band pass filtering, run an FFT on it, and report the data, or maybe even do the frequency shifting, and inverse FFT. Then pass that to the microprocessor, or to the soft core.
I plan on doing FFT on my many core FPGA.
You can read more about my plans.
The FFT software already exists for a single core, I just have to parallelize it to be faster. Does not look that hard, and is most needed.
We actually have a whole discussion group about the FFT.
here is a discord invite.
By the way, my plan was to just run 4 cables from a circuit board in a backpack. Two lavalier microphones, and two earbuds! I would much prefer to use your device.
I am happy to voice chat.