Using the Signaloid C0-microSD+ as a Hot-Pluggable Co-Processor Module
The Signaloid C0-microSD+ comes with a built-in RISC-V processor, the Signaloid SoC, which
you use to run your own applications. A host computer uses the SD protocol to exchange data
with an application running on the Signaloid SoC, either through a custom application that
runs on the host platform and accesses the module as a block-storage device, or through Unix
tools such as dd. Applications running on the Signaloid SoC take advantage of a subset of
Signaloid's distribution-extended computation to compute how distributions in
the input data affect their outputs.
Signaloid SoC specifications
| ISA | Operating frequency | Available memory |
|---|---|---|
| RV32IMFC | 90 MHz | 320 KiB |
The Signaloid SoC is based on the Lattice RV32RX core, which Signaloid has extended to support a subset of Signaloid's distribution-extended computation, as well as communication with the host device over the SD interface.
Developing applications for the Signaloid SoC
The Signaloid SoC runs custom user code, the device application, which works in conjunction with a host application that runs on the host machine. The host application is responsible for communicating with the device application over the SD interface, using block read and write operations. For the details of the communication scheme, see Host Interface and Protocol.
The C0-microSD+ is a UxHw accelerator, so every device application you build for it is a UxHw application.
Developing UxHw applications
Signaloid provides a toolchain for compiling applications that take advantage of the UxHw distribution arithmetic of the Signaloid SoC. The toolchain is available through the Signaloid CLI, so you do not need to install a local cross-compilation toolchain. You can find pre-compiled UxHw distribution-extended example applications that run on the C0-microSD+ in the Signaloid-Compute-Module-Demo repositories. To build your own UxHw applications, see Developing UxHw Applications.
Next steps
- Developing UxHw Applications, building a device application and its matching host application from the Signaloid application template.
- Host Interface and Protocol, the registers, buffers, and handshake that carry data between the host and the device application.
- Using the Hardware Abstraction Layer, the C library that your device application uses to reach those registers and buffers.
- Using the Python Host Interface, the Python package that your host application uses to reach them from the other side.
- Exchanging Data With the C0-microSD+, recipes for moving distributional data between the host and the module.
- Using the SPI Flash, storing data that survives a power cycle in the on-board flash.