Rotator
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[edit]
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[edit]
(R): Run-time adjustable
- Phase Increment (R)
- Acts as the rotational velocity.
Example Flowgraph[edit]
Example 1[edit]
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[edit]
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.
Source Files[edit]
- C++ files
- TODO
- Header files
- TODO
- Public header files
- TODO
- Block definition
- TODO