Hello!
I am designing an FPGA expansion card.
I’m posting here to get some input / advice on some technical choices.
Here is the basic idea:
An FPGA dev board, that can communicate through USB / to a µC with some analog and digital outputs/inputs available . It should be rugged enough to not need special care with ESD. I want to have access to all the FPGA fabric (so no bootloader for the programming)
Here are some things that are mostly set:
FPGA :
ICE40LP8K-CM81 - there was a nice modified footprint used by the tinyFPGA BX to use it on 4 layers boards - it’s also one of the most powerful FPGAs usable with OSS-CAD-SUITE that are still small enough
FPGA programmer / µC:
RP2040 - programming the FPGA as an SPI slave, it’s the cheapest option and quite easy to implement. the remapping of the communications pins will make routing easier . It’s quite big, but it’s so cheap and easy to use that i don’t really see any alternative.
USB HUB:
USB2422 - it needs two ports to get the FPGA and the RP2040 connected - and this is the cheapest / smallest that i could find. It’s only a single transaction type, but it shouldn’t really matter with the small throughput that each device can have.
analog IOs:
SGTL5000XNLA3 - quite cheap, quite small, and as two inputs and two outputs
Power:
MPM38111 - couldn’t find something smaller that had two rails that could do 1.2 and 3.3V at a reasonable price - if you know of any, let me know!
digital IO connector:
USB -C - i will need to design a key to make it non-reversible - it adds a step for making a board, but at least breakouts are easy to find and it’s durable
analog IO connector:
3,5mm jack - one input and one output will go on it, the other two will be on the USB - C
Everything seems to fit and should be doable on a 4 layer board with only one side with components, and 0.2mm vias without the need to cap them.
I could maybe add capacitive buttons used through the RP2040, but it would add a level of difficulty in routing the bottom layer. I will see when the project will be a little more advanced.
Any input / changes that you think would be interesting is welcome.