Using the Signaloid C0-microSD System-on-Module as a Hot-Swappable FPGA Module in Low SWaP Systems

Manufacturing/Robotics

Manufacturing/Robotics

The Signaloid C0-microSD is a low-power System-on-Module (SoM) containing a Lattice iCE40 Field-Programmable Gate Array (FPGA) and 128 Mbit of flash memory in a hot-swappable module that fits into a microSD slot. This allows developers to use the C0-microSD to implement any general-purpose digital logic designs that can be implemented on the iCE40, whilst making use of the small form factor of the microSD and its ubiquity in many embedded hardware platforms as an unused expansion slot.

Why It Matters

The C0-microSD's small form factor allows FPGA developers to add configurable logic designs to systems where existing FPGA SoMs would be prohibitively large. Its ease of use and availability of open source toolchain makes it an useful platform for a variety of use cases.

The Technical Details

The Signaloid C0-microSD module implements proprietary logic that provides an SD block storage device interface to a host system (e.g., Linux, macOS, or some embedded operating system) into which it is plugged: When plugged into a host computer, the C0-microSD will present itself as an unformatted block storage device. A host system can perform block I/O operations to the C0-microSD, just as it would to a regular microSD storage card. Using the same system facilities used to perform block I/O to a regular microSD storage card, a host system can load new FPGA bitstreams or can interact with an instance of a Signaloid RISC-V System on Chip (SoC) that the C0-microSD can be made to load at power-up. Developers can load their custom bitstreams using a Python utility we provide, and could even choose to interact with the C0-microSD using the dd Unix utility, if they choose. Once an FPGA bitstream is loaded into the C0-microSD, powering on the Signaloid C0-microSD without a host computer present causes proprietary built in logic to reconfigure the FPGA with the said custom user bitstream.

For their custom designs, developers can use the two on-board LEDs and up to eleven GPIO pins. The Signaloid C0-microSD exposes six of these GPIOs via the microSD pads. This allows developers to easily place the C0-microSD in a breadboard using a microSD breakout board, allows them to integrate it into their custom PCB design by including a microSD slot or connect it to an existing system that supports microSD cards. Developers can also make use of the 128 Mbit of flash memory connected to the FPGA to store non-volatile data, or to store binaries for the built-in Signaloid RISC-V SoC. And they can use the 1 Mbit of single-port RAM and 120 Kbit of dual-port block RAM contained within the iCE40 FPGA, as part of their custom RTL designs.

Developers can target the FPGA using either the proprietary Lattice toolchain or open source toolchains like the OSS CAD Suite. In addition, the C0-microSD has support for the LiteX design framework. Signaloid provides developers with basic "getting started" examples in the C0-microSD GitHub repository, which demonstrate simple functionality like blinking the LEDs.

Signaloid enables targeting the C0-microSD by providing a reference litex-boards implementation. We have provided a simple example LiteX design in order to demonstrate an easy way to get started with RISC-V cores, and to begin experimenting with additional components within a digital logic design.

For more complex designs, we provide a LiteX implementation of the Lattice hardened I2C controller IP in this repository. We provide an example that extends the RISC-V example to utilize the I2C controller here.

The Takeaway

The C0-microSD's size, ease-of-use, and flexibility make it an ideal choice for extending existing systems that have an unused microSD slot, such as drones, robotics systems, or even programmable logic controllers, with a module that allows them to load their custom FPGA designs. At the same time, because of the built in Signaloid SoC, developers can easily use the C0-microSD to benefit from Signaloid's UxHw technology for performing arithmetic on probability distributions.

Gallery
Schedule a Demo Call
Request Whitepaper
Schedule a Demo Call
Request Whitepaper
Schedule a Demo Call
Request Whitepaper