SoldierCrab is an embeddable FPGA SoM (System-on-Module) designed for use in high-speed audio and USB applications. It is the brain of tiliqua and other apf.audio products, and looks like this:
A high-level block diagram:
SoldierCrab has the following core features:
- ECP5 FPGA: -25K or -45K variant, caBGA256 (note: SERDES/PCIe not available in this package!)
- HyperRAM / oSPI-RAM: tested up to 3.2Gbit/sec, or 3.8Gbit/sec with timing violations :)
- USB2 HS PHY: 480Mbit/sec, with exposed ID, it can be used in device or host mode
- 1V1 / 1V8 / 2V5 regulators onboard, 3V3 is all that's needed
- PROGRAMN internally looped back for multibooting bitstreams / internal bootloader
- 2 indicator LEDs on the PCBA
- 48MHz master clock
- Card edge is basically: 47 exposed general purpose pins + 4-pin JTAG + USB2
- 22mmx22mm board size with M.2 E-key card edge (see 'Physical Compatibility' below)
There are currently 2 revisions of SoldierCrab in the wild.
- R2.0: LFE5U-45 with 7KL1282GAHY02 (3.3V HyperRAM, tested up to 200MB/sec)
- R3.0: LFE5U-25 with APS256XXN-OBR (1.8V oSPI-RAM, tested up to 400MB/sec)
PDF schematics for both can be found in the schematics-pdf
folder.
The SoldierCrab is 22mmx22mm (+/- 0.3mm) with an M.2 E-key connector and offset mounting hole. The mounting hole is offset such that this board is physically compatible with the SparkFun MicroMod format, however we do not claim electrical compatibility with it (even though this SoM will work with some MicroMod boards, the JTAG and I2C connections are in the wrong place for us to claim complete compatibility - this is intentional design choice to save routing space whilst trying to remain close to some kind of SoM standard).
On my carrier boards, as a connector I am using a TE Connectivity 2199230-4.
A nice resource for designing appropriate carrier boards can be found here. However, keep the above in mind, make sure your JTAG and I2C pinouts match the SoldierCrab ones.
Aside from in the schematic, you can find a (tested!) version of the SoM pinout in amaranth-boards
format here in the Tiliqua repository.
These pins on the M.2 connector are best for differential outputs (e.g. DVI).
6 are adjacent on the same side:
[(13, 15), (20, 22), (52, 54), (58, 60), (62, 64), (68, 70)]
2 are almost adjacent (1 pin gap) on the same side:
[(55, 59), (67, 71)]
10 not adjacent (>1pin gap or different sides):
[(6, 17), (11, 19), (34, 35), (38, 41), (37, 43), (40, 47), (46, 57),, (63, 69)]
If you are interested in prototyping with this SoM, feel free to send me an email. They are not generally available yet, but I plan to make it available on my store soon.
In theory, this SoM could bootload itself over the ULPI USB2 PHY, however I haven't started on this yet. This means a carrier board must expose the JTAG pins for an external programmer (check the schematic).
- The Cynthion project from Great Scott Gadgets.
- The OrangeCrab project from Greg Davill.
- Inspired by Sparkfun Micromod, even though we are not 100% compatible with it.
Copyright (C) 2024 S. Holzapfel
The files in this project are largely covered under the CERN Open-Hardware License V2 CERN-OHL-S, mirrored in the LICENSE text in this repository. This LICENSE and copyright notice do NOT apply to imported artifacts in this repository (i.e datasheets, third-party 3D models, symbols or footprints), or to dependencies released under a different (but compatible) open-source license.
As an addendum to the above license: if you create or manufacture your own derivative hardware, the name apf.audio
, the names of any apf.audio
products and the names of the authors, are not to be used in derivative hardware or marketing materials, except where obligated for attribution and for retaining the above copyright notice.
For example, your adaptation of "apf.audio SoldierCrab" could be called "Sandy Modular - Clawcruncher".