
Example project · UC 01
A complete logging system. On one FPGA.
An example project that turns a single FPGA into a smart data logger. A RISC-V processor samples sensors over SPI, I²C and GPIO, buffers data in DDR, records to an NVMe SSD and streams live over 1G Ethernet.
Conceptual illustration
The problem
Field loggers are usually a microcontroller plus a PC plus glue.
Typical data loggers split the work across a microcontroller for the sensors, a separate storage path and a PC for networking. Each extra piece adds latency, cost and a place where samples can go missing. Putting a processor, sensor interfaces, memory, storage and networking on one FPGA gives a small, deterministic system that you can still program in software.
The prompt
Build an FPGA-based smart data logger using a RISC-V processor integrated with SPI, I²C, GPIO, timer, AXI interconnect, DMA, DDR memory controller, 1Gb Ethernet MAC and PCIe/NVMe host IPs.
An example request. Compatibility and availability are confirmed for each selected configuration.
What SIGPT reads into it.
The prompt names the IP directly. SIGPT turns it into a working system: what each block is for and how they connect.
RISC-V control plane
Runs the logging application, configures peripherals and manages files and the network. SIGPT picks a grade that fits the device and your throughput needs.
SPI, I²C and GPIO capture
Sensor buses and discrete inputs, with pins taken from the board profile. The timer sets sample rates and provides timestamps.
AXI and DMA
An AXI interconnect joins the processor and peripherals. DMA moves sample blocks to DDR without loading the CPU.
DDR memory controller
DDR holds program memory and a log buffer that absorbs bursts while the SSD writes.
PCIe / NVMe host
Continuous log recording to an NVMe SSD over PCIe. The data path is sized from your sample rates.
1G Ethernet MAC
Live streaming, remote configuration and log download over a standard network.
A simple conceptual architecture.
The prompt names a RISC-V. The firmware comes with it.
You don’t have to ask for firmware. Because the prompt includes a RISC-V, SIGPT generates a standard firmware stack for it automatically. Most of this prompt is a list of IP, so the firmware stays standard except for one functional phrase.
Standard firmware stack
- Boot and startup codeReset vector, clock and memory setup, linker script
- Board support packageRegister headers and interrupt map, from the same spec as the RTL
- A driver for every selected IPInit, read, write, interrupt and DMA hooks
- Bring-up self-testChecks each peripheral and memory at power-on
- UART console and JTAG debugStatus, register peek and poke, and logs
- Build filesMakefile and standard RISC-V GCC toolchain
A basic logging loop
smart data logger
The only function the prompt describes, so SIGPT adds a simple logging loop- Read each sensor on a timer tickDefault rate, configurable from the console
- Timestamp samples and write records to NVMe via DMASimple fixed-size record format
- Live stream over 1G EthernetBasic UDP output
sample the I²C sensors at 1 kHz, store CSV files rotated hourly, and serve them over HTTP. Anything you don’t describe stays standard.
IP needed
What SIGPT would assemble.
Selected from 140+ 3rd-party FPGA-proven IPs. Eleven IP blocks, all named in the prompt.
Validation steps
How it would be proven on hardware.
Board validation is its own milestone, separate from bitfile generation. Any results are measured on your setup, and none are shown here.
- Program the bitfile, load the generated firmware and check the self-test results on the UART console.
- Connect SPI and I²C sensors and GPIO inputs, and confirm each one is sampled at its configured rate.
- Record continuously to the NVMe SSD and check timestamps and sequence numbers for gaps.
- Stream live data and download logs over 1G Ethernet.
- Compare sample rates, recording continuity and network behaviour with the agreed acceptance criteria.
From lab bench to fleet.
Once the logger passes in the lab, choose how to take it further.
Start from this prompt. Make it yours.
We’ll prefill your request with this use case. Edit it to match your requirements.