Throttle

Der Drosselblock reguliert die Ausgabe eines Datenstroms auf eine kontrollierte Abtastrate.

1. Beschreibung des Blocks

Der Throttle-Block (blocks.throttle) nimmt einen Eingangsdatenstrom entgegen und gibt denselben Datenstrom mit einer kontrollierten Rate wieder aus. Er führt dazu eine zeitbasierte Verzögerung zwischen den einzelnen Samples ein, sodass die gewünschte Ausgangsabtastrate über einen Timer statt über echte Hardware-Taktung erreicht wird.

2. Technischer Einsatz

Throttle wird benötigt, wenn kein anderes Element im Flowgraph die Datenrate von sich aus begrenzt — normalerweise übernimmt das eine reale Hardwarekomponente wie ein SDR-Empfänger, dessen Sample-Ausgabe an einen physischen Takt gebunden ist. Fehlt eine solche Komponente (z. B. bei einem rein synthetischen Testaufbau mit Signal Source statt echtem SDR), würde GNU Radio den Flowgraph ohne Bremse so schnell wie möglich durchrechnen — mit entsprechend hoher, unnötiger CPU-Last und ggf. Pufferüberlauf in nachgeschalteten GUI-Sinks.

Throttle wird deshalb in der Regel direkt an eine Signalquelle angeschlossen (Signal Source, Vector Source, Noise Source), um deren Ausgaberate künstlich auf die konfigurierte samp_rate zu begrenzen und damit „Echtzeit"-Verhalten zu simulieren.

Throttle regelt die Datenrate über einen Software-Timer, nicht über einen echten Hardware-Takt. Bei mehreren Throttle-Blöcken im selben Flowgraph (oder in Kombination mit einer echten Hardwarequelle) können sich die unabhängigen Timer gegenseitig ins Gehege kommen und zu Pufferüber- oder -unterläufen führen. Faustregel: pro Flowgraph maximal einen Throttle-Block, direkt an der Quelle.

3. Parameter und Dimensionierung

Parameter Typ/Einheit Bedeutung Dimensionierungshinweis
type Enum Datentyp: Complex, Float, Int, Short, Byte muss dem Typ der Quelle entsprechen
samples_per_second (Sample Rate) Hz Zielrate, auf die der Datenstrom gedrosselt wird identisch zur samp_rate-Variable des Flowgraphs
vlen (Vector Length) Integer Anzahl Elemente pro Vektor-Sample Standard 1
ignoretag (Ignore rx_rate tag) Bool ob ein rx_rate-Stream-Tag die konfigurierte Sample Rate überschreiben darf Standard True; bei Zusammenspiel mit einer echten SDR-Quelle ggf. False, um deren tatsächliche Rate zu übernehmen

4. Ein- und Ausgänge

Ein-/Ausgang Typ
Eingang wie type
Ausgang wie type (optional — kann auch als reine Senke ohne weiteren Verbraucher enden)

5. Weitere wichtige Aspekte

Nicht für Präzisionstiming geeignet: Da die Drosselung über einen Software-Timer läuft, ist die tatsächliche Rate nie exakt — für echte Timing-Analysen (z. B. Bitraten-Messung) sollte stattdessen mit einer festen, bekannten Sample-Anzahl gearbeitet werden statt sich auf die Throttle-Genauigkeit zu verlassen.

Live-Parameteränderung: set_sample_rate(...) erlaubt eine Anpassung der Zielrate zur Laufzeit.

Weiterführende Details: Beschreibung im GNU-Radio-Wiki.