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.
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.
(R): Run-time adjustable
- Phase Increment (R)
- Acts as the rotational velocity.
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.
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.
- C++ files
- Header files
- Public header files
- Block definition