Using the Signaloid C0-microSD System-on-Module as a General-Purpose RISC-V Platform in Low SWaP Systems

Manufacturing/Robotics

Manufacturing/Robotics

RISC-V is a popular open instruction set architecture (ISA) that provides an alternative to architectures such as ARM. Signaloid uses the RISC-V ISA in the hardware implementations of the Signaloid Compute Engine and we made a conscious decision to allow third parties to reuse some of our platforms as general-purpose RISC-V processor modules. This technology explainer outlines how you can use the Signaloid C0-microSD hardware in SoC (System on Chip) mode, allowing you to quickly build a RISC-V-based embedded hardware or robotics platform, leveraging tools such as the Signaloid Cloud Developer Platform as well as examples we have made available.

Why It Matters

Hardware system-on-modules (SoM) serve as pre-validated components, typically built around a microcontroller, microprocessor, or FPGA, that system designers can use in their higher-level designs. The Signaloid C0-microSD is a miniature processor SoM based on the Signaloid C0 system-on-chip, which uses a soft processor based on the RISC-V ISA. The Signaloid C0-microSD, when used in its SoC mode, can be a versatile and replaceable RISC-V module for your future hardware designs. With more capable variants on the roadmap (higher clock speeds, larger memories) while keeping within the microSD form factor, you can design future-proof RISC-V based system, with a hot-swappable module that is in the miniature microSD form factor and which you can interface with as though it were a standard microSD block storage device. For applications such as state estimation algorithms, probabilistic robotics, and Bayesian edge AI, the C0-microSD's support for Signaloid's technology for deterministic computation with probability distributions allows developers to start with using it as a versatile miniature compute module and to easily take the leap to taking advantage of Signaloid's UxHw technologies when they are ready.

The Technical Details

The C0-microSD module implements proprietary logic that provides a SD block storage device interface and translates I/O operations on that interface into transactions to and from the C0 SoC. This interface allows a host device to interact with the Signaloid SoC within the C0-microSD module using the existing block I/O facilities that are already built into most host operating systems or host device firmware. This block I/O interface makes control and status registers and communication data buffers of the Signaloid SoC visible to any host device interacting with the block I/O interface; similarly, the Signaloid SoC makes these registers and buffers visible to programs, as memory-mapped I/O (MMIO). We provide open-source examples of programs that can run on the C0-microSD to demonstrate applications of using it as a coprocessor for arithmetic or for controlling LEDs and other hardware connected to general-purpose I/O (GPIO) pads that are exposed on the C0-microSD module.

There are two I/O registers (a command register and a status register) and two buffers (a manager out subordinate in or MOSI buffer and a manager in subordinate out or MISO buffer). In typical operation of the C0-microSD in SoC mode, there are two components: a device application running on the C0-microSD and a host application running on a host device into which the C0-microSD module is inserted. The host application sets the C0-microSD SoC command register to send a command to the device application. The device application running on the C0-microSD SoC sets the status register to declare the current status of the device application to the host application. The MOSI data buffer is for sending data from the host application to the device application. The MISO data buffer is for sending data from the device application to the host application. Working with a small number of documented registers is more conducive to learning than starting with the large number of registers present in a standard microcontroller datasheet. Exposing this small set of documented registers and buffers to developers allows them to avoid the difficult problem of simultaneously debugging software and hardware. An example that controls the red LED using the memory mapped control register on the Signaloid SoC is available here.

The GitHub repository accompanying the C0-microSD documentation contains example Makefiles that allow a developer to control the entire build process, including a linker script and assembly startup file. The memory map, that the linker script places the compiled program into, is available here.

Developers who prefer to develop and debug C applications using an emulator or a graphical user interface can use the Signaloid Cloud Developer Platform to develop applications for the C0-microSD. The Signaloid Cloud Developer Platform can compile C applications for the Signaloid SoC, can run those compiled applications over an emulated RISC-V core with properties identical to the Signaloid SoC, and can also provide the compiled binaries for download, to be programmed into the C0-microSD module.

The Takeaway

The Signaloid C0-microSD system-on-module (SoM) is a miniature hot-swappable compute module with the form factor and I/O interface of a standard microSD storage card, and which developers can use to augment their existing hardware designs. When used in its "Signaloid SoC mode", the C0-microSD SoM provides a RISC-V (RV32I) system-on-chip (SoC) that is accessible via a block storage device interface; this allows a host system into which the module is plugged to communicate with programs running in the C0-microSD SoM using existing block I/O facilities without the need for custom drivers. With more capable variants on the roadmap (higher clock speeds, larger memories) while keeping within the microSD form factor, you can design future-proof RISC-V based systems while leveraging the tools, examples, and even cloud-based emulation Signaloid provides. Applications such as state estimation algorithms, probabilistic robotics, and Bayesian edge AI, can be easier to implement or more efficient and accurate when running on Signaloid's UxHw technology. The C0-microSD's support for Signaloid's UxHw technology for deterministic computation on probability distributions allows developers to start with using it as a generic miniature compute module and to easily take the leap to taking advantage of Signaloid's UxHw technologies, when developers are ready.

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