Sample Rate Change: Difference between revisions
Mattcarrick (talk | contribs) |
Mattcarrick (talk | contribs) |
||
Line 100: | Line 100: | ||
* Value: ''samp_rate*decimation_rate'' | * Value: ''samp_rate*decimation_rate'' | ||
Change the ''Low-Pass Filter Taps'' block: | Change the ''Low-Pass Filter Taps'' block properties: | ||
* Sample Rate (Hz): ''samp_rate'' | * Sample Rate (Hz): ''samp_rate'' | ||
* Cutoff Frequency (Hz): ''samp_rate/(decimation_rate*2)'' | * Cutoff Frequency (Hz): ''samp_rate/(decimation_rate*2)'' | ||
Line 108: | Line 108: | ||
* Decimation: ''decimation_rate'' | * Decimation: ''decimation_rate'' | ||
* Taps: ''lowPassTaps'' | * Taps: ''lowPassTaps'' | ||
Update the properties for the ''Throttle'' block: | |||
* Sample Rate: ''samp_rate_decimated'' | |||
Update the properties for the ''QT GUI Frequency Sink'' block: | |||
* Bandwidth (Hz): ''samp_rate_decimated'' | |||
== Rational Rate Resampling == | == Rational Rate Resampling == |
Revision as of 15:30, 13 January 2022
This tutorial describes how to implement sample rate change within GNU Radio.
The previous tutorial, Designing Filter Taps, demonstrates how to design filter taps and use them in signal processing blocks. Please complete the Designing Filter Taps tutorial before completing this one.
Interpolation
Interpolation is the process of increasing the sampling rate and thus the available bandwidth. This example will demonstrate how to increase the sampling rate using the Interpolating FIR Filter block.
Start by adding the following blocks to the flowgraph and connect them:
- Two Variable blocks
- Low-Pass Filter Taps
- QT GUI Range
- Signal Source
- Interpolating FIR Filter
- Throttle
- QT Frequency GUI Sink
Edit the first of the two new variable blocks:
- Id: interpolation_rate
- Value: 4
Edit the second of the two new variable blocks:
- Id: samp_rate_interpolated
- Value: samp_rate*interpolation_rate"
Edit the properties of the Low-Pass Filter Taps block:
- Id: lowPassTaps
- Sample Rate (Hz): samp_rate_interpolated
- Cutoff Freq (Hz): samp_rate_interpolated/(interpolation_rate*2)
- Transition Width (Hz): samp_rate_interpolated/(interpolation_rate*4)
Edit the properties of the QT GUI Range block:
- Id: frequency
- Default Value: 0
- Start: -samp_rate/2
- Stop: samp_rate/2
Edit the property of the Signal Source:
- Frequency: frequency
Edit the properties of the Interpolating FIR Filter block:
- Interpolation: interpolation_rate
- Taps: lowPassTaps
The Interpolating FIR Filter will increase the sampling rate from 32 kHz to 128 kHz, a factor of 4 due to the interpolation_rate variable. Make a note of this by editing the Comment field under the Advanced tab:
The comment is then displayed as a visual reminder in GRC:
Edit the Throttle property:
- Sample Rate: samp_rate_interpolated
Edit the QT GUI Frequency Sink property:
- Bandwidth (Hz): samp_rate_interpolated
The flowgraph should now look like the following:
Running the flowgraph will show the following QT GUI Frequency Sink:
The four peaks come from the interpolation operation. Scroll-wheel-click on the window and enable Max Hold:
Drag the frequency slider to show how the four peaks change in frequency, creating an outline of the frequency response of the Interpolating FIR Filter block. The interpolation has increased the sampling rate by a factor of 4, with the low-pass filter taps attenuating the spectral images to minimize distortion.
Decimation
Where interpolation increases the sample rate, decimation decreases the sample rate and available bandwidth. Starting with the flowgraph from the previous Interpolation example, rename the interpolation_rate variable to decimation_rate. The flowgraph will now have some errors:
Change the samp_rate_interpolated variable:
- Id: samp_rate_decimated
- Value: samp_rate*decimation_rate
Change the Low-Pass Filter Taps block properties:
- Sample Rate (Hz): samp_rate
- Cutoff Frequency (Hz): samp_rate/(decimation_rate*2)
- Transition Width (Hz): samp_rate/(decimation_rate*4)
Replace the Interpolating FIR Filter block with the Decimating FIR Filter block. Update the properties:
- Decimation: decimation_rate
- Taps: lowPassTaps
Update the properties for the Throttle block:
- Sample Rate: samp_rate_decimated
Update the properties for the QT GUI Frequency Sink block:
- Bandwidth (Hz): samp_rate_decimated
Rational Rate Resampling
Arbitrary Rate Resampling
- updating sample rate variable