Skip to Content

Waveform

GET/waveform/modcods
POST/waveform/thresholds
POST/waveform/generate
POST/waveform/ber

Purpose

The signal-processing surface: what modulation and coding schemes exist, at what signal-to-noise they decode, and what a modulated signal looks like.

The threshold endpoint is the one that closes the loop with link budgeting, because it produces a decoder threshold that was measured rather than assumed.

GET /waveform/modcods

Lists every DVB-S2 modulation and coding scheme with its framing parameters. No request body.

curl -s http://127.0.0.1:8080/waveform/modcods
[ { "name": "qpsk-1/4", "index": 1, "modulation": "qpsk", "rate": "1/4", "bits_per_symbol": 2, "normal": { "kbch": 16008, "code_rate": 0.24703703703703703 }, "short": { "kbch": 3072, "code_rate": 0.18962962962962962 } } ]

Response elided; the list covers the full MODCOD set.

The normal and short blocks show that the effective code rate differs from the nominal one, and differs between frame sizes. Nominal rate 1/4 is 0.247 on the normal FECFRAME and 0.190 on the short one, because the BCH outer code and framing overhead consume different fractions of a 64,800-bit frame than of a 16,200-bit frame.

Use code_rate, not the name, when computing throughput. The name is a label.

POST /waveform/thresholds

Measures the Es/N0 at which a MODCOD actually decodes, by simulating the real encoder, channel, and decoder.

ParameterTypeUnitDefaultRequiredDescription
modcodstringn/a—YesA single MODCOD name, for example `qpsk-1/2`. Singular; the CLI takes a comma-separated `--modcods` list.
framestringn/ashortNo`normal` for the 64,800-bit FECFRAME, `short` for 16,200 bits.
pilotsbooleann/afalseNoAccount for pilot blocks in framing overhead.
framesintegercount—NoFrames simulated per Es/N0 grid point. Bounds what error rate can be resolved.

The field is modcod, singular, and takes one scheme. The CLI flag is --modcods and accepts a comma-separated list or all. Sending an array here fails:

Failed to deserialize the JSON body into the target type: missing field `modcod`

Example

curl -s -X POST http://127.0.0.1:8080/waveform/thresholds \ -H 'content-type: application/json' \ -d '{"modcod":"qpsk-1/2","frames":5}'
{ "modcod": "qpsk-1/2", "frame": "short", "pilots": false, "esn0_db": 1.5, "spectral_efficiency": 0.8488400488400488, "ebn0_db": 2.2117413831980843 }
Response fields.
ParameterTypeUnitDefaultRequiredDescription
esn0_dbnumberdB—NoSymbol energy to noise density at which the scheme decodes. This is what a link budget must deliver.
spectral_efficiencynumberbit/sym—NoInformation bits carried per symbol.
ebn0_dbnumberdB—NoEnergy per information bit to noise density.

Frames bound the confidence

The example uses frames: 5, which is fast and not quotable. With N frames you cannot resolve packet error rates much below 1/N, and real operating points are specified several orders of magnitude lower.

The same MODCOD measured at 5 frames here reports 1.5 dB, where a 10-frame run reported 1.75 dB. That spread is the measurement noise, not a change in the decoder, and it is why a threshold destined for a design review needs a far larger frame count.

Use Es/N0 for link budgeting, because it is what the channel delivers. Use Eb/N0 when comparing how efficiently two schemes use energy per bit. They rank schemes differently, and quoting the wrong one understates or overstates the requirement.

POST /waveform/generate

Produces a standards-conformant modulated waveform and returns IQ samples. It supports CCSDS TM, CCSDS TC, and DVB-S2, each with a different option set.

The output is a clean transmit-side signal with no channel impairments. Doppler and delay are applied separately, which keeps a failure attributable to the impairment rather than the signal.

POST /waveform/ber

Runs a Monte Carlo bit-error-rate sweep over an Es/N0 range for a modulation and coding chain, returning the measured curve alongside the closed-form theoretical one where theory exists.

The theory column is the validation. A chain that tracks theory where a closed form exists is a chain you can trust where none does.

See also

Question? Give us feedbackDocuments Varaha Constellation Designer main (pre-release)
Last updated on