∿ LEARN DSPFrom signal to HF transceiver
Part roadmap

Streaming and real-time operation

Go from a full array to consecutive blocks and keep the processing state.

Goal

Go from a full array to consecutive blocks and keep the processing state.

Prerequisites: Parts 04–06, 09, 13–14.

Future lessons

  1. Sample-by-sample and block processing; the state of FIR/IIR filters, NCOs, sample rate converters and loops.
  2. Ring buffers, FIFO queues, timestamps, latency and throughput.
  3. Block boundaries, reset, gaps, buffer underrun and overrun; pausing the source when the receiver is overloaded (backpressure).
  4. Operations per sample, memory use and data rate; what Python can and cannot do.

Lab plan

  • Split the input into blocks of different sizes and compare with processing of the full array; take the delay and the filter tail into account.
  • Check that the NCO phase and the filter states are kept at the boundaries.
  • Measure the processing time and the latency; audio connection is optional.

We do the experiments in Python with NumPy, SciPy and Matplotlib. We keep the parameters, units and plots. The base models use float64 and complex128; we add bit-depth limits in separate experiments.

Completion criteria

  • I get the same result for different block sizes within the selected precision.
  • I can tell the difference between average speed and a guarantee to finish before a deadline; a fast Python run does not prove hard real time.

Result for the main project

Streaming block interfaces and a working Python chain.