Observer Simplifies Multi-Sensor Aggregation on FPGAs — By Giving Each Its Own RISC-V CPU

Designed to communicate with sensors that use different protocols, Observer offers easy aggregation without using too many resources.

Gareth Halfacree
3 months agoFPGAs

Free and Open Source Silicon Foundation (FOSSi Foundation) director Olof Kindgren has released Observer, a platform designed to aggregate heterogeneous sensors on field-programmable gate arrays (FPGAs) — by attaching a RISC-V CPU to each sensor interface.

"A sensor aggregation platform needs a separate interface for each sensor it needs to collect data from and takes care of communication with the sensor and any required post-processing or data reduction of the sensor data. The end result is then converted to a common format and combined with other sensors' data into an aggregated data stream," Kindgren explains of the project. "The bad news is that implementing the logic for sensor communication, post processing and format conversion directly in an FPGA can quickly become very time-consuming. This is a task much better suited for a CPU. On an FPGA it's no problem to add a soft CPU, but the more sensors that are connected to the CPU, the harder it will have to keep up with any real-time aspects of the data collection.

"Observer deals with this by attaching a CPU to each sensor interface that handles all bring-up and data collection from the sensor and produces a well-formed data packet which is then forwarded to a common aggregation node. By using the small SERV RISC-V CPU it is possible to do this without costing much resources. This has a number of benefits. Data collection and post processing from each sensor can be done completely independent of the others. It allows for power savings by doing complex data reduction very close to the sensor and allowing unused nodes to shut down when not in use. Depending on the complexity of the sensor interfacing or post processing, each node can independently decide to do this using a couple of lines of assembly code, a bare-metal C program or even run a RTOS [Real-Time Operating System] such as Zephyr."

Kindgren's Observer is split into three core components, named for the parts of a transistor: Collector, Base, and Emitter. The Collector, as the name implies, interfaces directly with a sensor to collect the data using any form of protocol required; the Base controls the flow of data, communicating with the Collector over the open Wishbone interface standard; the Emitter, which is common to all sensors, acts as a packet-switched multiplexer which receives information from the Base over an AXI stream interface and sends the results out via a UART serial connection.

Observer is available now, via Kindgren's GitHub repository.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Related articles
Sponsored articles
Related articles