Hardware#
The Hardware protocol is the async
interface to physical FPGA devices. It compiles a Circuit, uploads it to an
FPGA, takes a measurement (waveform capture or pulse counting), and stores the
result on the Measurement object.
The protocol is designed for future server-client concurrency: multiple FPGAs
can be driven in parallel via asyncio.gather(), with per-device
serialization to respect the exclusive USB access required by iceprog.
For details on the serial communication protocol, see MCU Serial Protocol.
Implementations#
Microcontroller.py — Serial-based implementation using pyserial to communicate with an MCU that bridges the host to an ICE40 FPGA. Supports waveform and pulse-count measurement modes.