Rotator

From GNU Radio
Revision as of 23:46, 1 March 2023 by Jvictors (talk | contribs) (expand introduction, add a simple example)
Jump to navigation Jump to search


The Rotator block performs a frequency translation. This operation is called a rotation because if you plot the real and imaginary numbers in a complex sample (I and Q) in a complex unit circle, rotating around this circle produces a wave at a given frequency. Making such a rotation clockwise or counterclockwise produces a positive or negative frequency, which is effectively what this block does mathematically.

Mathematical Description

The phase increment (in radians) is the amount of additional phase shift added to the signal every sample. So, the rotator block is the equivalent of multiplying by a complex sine. The "increment" is the amount of additional phase shift added to the signal every sample. So, the block is the equivalent of multiplying by a complex sine.

Parameters

(R): Run-time adjustable

Phase Increment (R)
Acts as the rotational velocity.

Example Flowgraph

Example 1

In the example below, the Rotator block shifts a stream of samples down 50 kHz. In this example, a Frequency-Shift Keying signal is captured slightly offset because the HackRF One generates a large spike at the exact center frequency. The solution is to simply capture at an offset and then use the Rotator to re-adjust the frequency alignment as desired.

Example 2

In the example below a constant source, set to 0.5, is fed into the rotator, thus producing a sine wave. The phase increment is set to 0.01 radians and the sample rate is 100kHz, so that equates to 1000 radians every second, or 1000/(2pi) = 159 cycles per second. This corresponds to a period of about 6ms, as shown in the time sink.

Rotator-ex.png

Source Files

C++ files
TODO
Header files
TODO
Public header files
TODO
Block definition
TODO