Frequency Shifting

From GNU Radio
Jump to navigation Jump to search

This tutorial describes how to perform frequency shifting, causing the frequency of a signal to change.

Frequency Shifting

Frequency shifting is the process of changing the position of a signal within the frequency domain. Equivalently, it can be stated that frequency shifting is the process of changing the center frequency of a signal. Frequency shifted can be implemented many different ways, although this tutorial will focus on the simple method of multiplication by a complex sinusoid.

Multiplying a signal by a complex sinusoid with frequency f Hz will translate or shift the center frequency of the signal by f Hz. For example, to frequency shift a signal by 1 MHz a complex signal must be generated with frequency 1 MHz, and then multiplied against the desired signal in order to frequency shift it.


Build Example Signal

First an example signal needs to be built. A simple signal of filtered noise is created. Drag in the following blocks and connect them:

  • Noise Source
  • Throttle
  • Low Pass Filter
  • QT GUI Frequency Sink


Frequency shifting flowgraph.png

The flowgraph is an offline simulation to the choice of sampling rate is somewhat arbitrary, but a sample rate of 10 MHz is chosen to realistic number.

Frequency shifting samp rate properties.png

The low-pass filter properties are updated to define the cutoff frequency and transition width:

  • Cutoff Freq: samp_rate/8
  • Transition Width: samp_rate/16

Frequency shifting low pass properties.png

Running the flowgraph then displays a simulated signal:

Frequency shifting example signal.png

The signal has not been shifted yet and therefore has a center frequency of 0 Hz.

Create Complex Sinusoid

A complex sinusoid is added to the flowgraph which will be used later to perform the frequency shifting. Add the following blocks and connect them to the flowgraph:

  • Variable
  • Signal Source

Frequency shifting flowgraph sinusoid.png

The flowgraph is an offline simulation to the choice of sampling rate is somewhat arbitrary, but a sample rate of 10 MHz is chosen to be a realistic number.

Frequency shifting new center frequency properties.png

The variable new_center_frequency is then used for the frequency in the signal source block:

Frequency shifting signal source properties.png

Increase the number of ports on the QT GUI Frequency Sink:

Frequency shifting frequency sink properties.png

Now run the flowgraph:

Frequency shifting run flowgraph.png

You can now see the new complex sinusoid that has been created and displayed in red:

Frequency shifting signal and complex sinusoid.png

The frequency shifting process will apply the blue signal against the red complex sinusoid, centering it at 1 MHz.

Perform Frequency Shifting

Add the Multiply block into the flowgraph and connect it such that it accepts the outputs from Low Pass Filter and Signal Source:

Frequency shifting flowgraph multiply.png

The multiply block now performs the frequency shifting, moving the center frequency of the signal up to 1 MHz. Running the flowgraph shows the input signal centered at 0 Hz and the frequency shifted version at 1 MHz:

Frequency shifting centered 1MHz.png

The frequency shifted value can be positive or negative. Update the new_center_frequency variable to be -3 MHz:

Frequency shifting update new center frequency.png

Running the flowgraph now shows the signal centered at -3 MHz:

Frequency shifting neg 3MHz.png

A QT GUI Range block can be used to change the center frequency in real time. Right click on the new_center_frequency and select Disable:

Frequency shifting disable variable block.png

The block will now be grayed out.

Add a QT GUI Range block to the flowgraph:

Frequency shifting qt gui range block.png

Open the QT GUI Range block and update the following properties:

  • ID: new_center_frequency
  • Default Value: 0
  • Start: -samp_rate/2
  • Stop: samp_rate/2


Frequency shifting qt gui range properties.png