AN SDR-BASED FRS TRANSCEIVER
PROTOTYPING A MULTI-CHANNEL FRS TRANSCEIVER WITH CTCSS
SUPPORT VIA GNU RADIO AND THE NU AND BLADERF
JUNE 21, 2016
An SDR-based FRS Transceiver Nuand, LLC
License
This work by Nuand, LLC is licensed under:
Creative Commons Attribution 4.0 International License
Authors
Robert Ghilduta Brian Padalino
<robert.ghilduta@nuand.com> <brian.padalino@nuand.com>
Nuand, LLC Nuand, LLC
Jon Szymaniak
<jon.szymaniak@nuand.com>
Nuand, LLC
Contributing Authors
Dr. Juan R. Pimentel
<jpimente@kettering.edu>
Professor of Computer Engineering
Kettering University
i
An SDR-based FRS Transceiver Nuand, LLC
Revisions
Comments, feedback, improvements, and fixes may be sent to <bladeRF@nuand.com>.
Revision Date Summary
1 2015-06-12 Initial public draft
2 2015-10-25 Incorporated feedback and revisions from Dr. Juan R. Pimentel
3 2016-01-07 Fixed incorrect frequency values in Figure 1
4 2016-06-21 Typo fix in Section 5.4
ii
An SDR-based FRS Transceiver Nuand, LLC
Contents
1 Intended Audience 1
2 Abstract 1
3 Overview of the Family Radio Service 2
4 Transceiver Design 3
4.1 Transmit Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1.1 Audio Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1.2 Optional CTCSS Tone . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1.3 FM Modulation and Mute Blocks . . . . . . . . . . . . . . . . . . . . 7
4.1.4 Polyphase Synthesizer . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1.5 Post-PS gain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.6 Interpolating Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.7 Mixing and Hardware Sink . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Receive Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.1 Hardware Source and Valve . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.2 Power Meter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.2.3 Frequency Translation and Decimating FIR Filters . . . . . . . . . . 15
4.2.4 Polyphase Channelizer . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2.5 Squelch and FM Demodulation . . . . . . . . . . . . . . . . . . . . . 17
4.2.6 CTCSS Tone IIR Filter . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2.7 Audio Sinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5 Testing and Evaluation 21
5.1 Flowgraph GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Nuand bladeRF SDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.3 Reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.4 Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6 Software and System Configuration 29
7 Conclusions 29
8 Flowgraph Diagrams 30
References 33
iii
An SDR-based FRS Transceiver Nuand, LLC
List of Tables
1 FRS frequency allocations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Common CTCSS tone frequencies, in Hz . . . . . . . . . . . . . . . . . . . . 2
3 Filter parameters of TX audio LPF . . . . . . . . . . . . . . . . . . . . . . . 7
4 Filter parameters for polyphase synthesizer LPF . . . . . . . . . . . . . . . . 9
5 Filter parameters for first TX interpolating (5x) FIR filter . . . . . . . . . . 11
6 Filter parameters for second TX interpolating (4x) FIR filter . . . . . . . . . 12
7 Filter parameters for RX frequency translating and decimating FIR filter . . 15
8 Filter parameters for RX decimating FIR filter . . . . . . . . . . . . . . . . . 16
9 Filter parameters of RX CTCSS-blocking high pass filter . . . . . . . . . . . 19
10 Minimum required component versions . . . . . . . . . . . . . . . . . . . . . 29
List of Figures
1 Transceiver tuning with respect to FRS channel allocations . . . . . . . . . . 4
2 Avoiding effect of IQ imbalance via offset tuning . . . . . . . . . . . . . . . . 4
3 MATLAB Filter Design and Analysis Tool . . . . . . . . . . . . . . . . . . . 5
4 FRS TX block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5 Magnitude response of TX audio LPF . . . . . . . . . . . . . . . . . . . . . . 7
6 Polyphase Synthesizer configuration for FRS channels 1-7 . . . . . . . . . . . 8
7 Magnitude response of polyphase synthesizer FIR filter . . . . . . . . . . . . 10
8 Magnitude response TX interpolating FIR filters . . . . . . . . . . . . . . . . 12
9 FRS RX block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10 Magnitude response of RX decimating FIR filters . . . . . . . . . . . . . . . 16
11 Magnitude response of NBFM de-emphasis filter . . . . . . . . . . . . . . . . 18
12 Response of RX CTCSS-blocking high pass filter . . . . . . . . . . . . . . . . 20
13 RX Section of the flowgraph GUI . . . . . . . . . . . . . . . . . . . . . . . . 22
14 TX Section of the flowgraph GUI . . . . . . . . . . . . . . . . . . . . . . . . 22
15 Nuand bladeRF architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
16 Lime Microsystems LMS6002D architecture . . . . . . . . . . . . . . . . . . 24
17 Cobra CXT545 FRS handheld transceiver used to test flowgraph . . . . . . . 25
18 FFT plot of digital signal containing FRS channels 8-14 . . . . . . . . . . . . 26
19 FFT plot of digital signal containing FRS channel 8 . . . . . . . . . . . . . . 27
20 FFT plot of digital signal containing all FRS channels . . . . . . . . . . . . . 27
21 FFT plot of analog signal containing FRS channels 1-7 . . . . . . . . . . . . 28
22 FFT plot of analog signal containing all 14 FRS channels . . . . . . . . . . . 28
23 Full FRS transceiver flowgraph . . . . . . . . . . . . . . . . . . . . . . . . . 30
24 RX path of FRS transceiver . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
25 TX path of FRS transceiver, slightly re-arranged to fit page . . . . . . . . . 32
iv
An SDR-based FRS Transceiver Nuand, LLC
List of Acronyms and Abbreviations
CTCSS Continuous Tone-Coded Squelch System
DAC Digital to Analog Converter
FIR Finite Impulse Response
FPGA Field Programmable Gate Array
FRS Family Radio Service
IIR Infinite Impulse Response
GRC GNU Radio Companion
GUI Graphical User Interface
LNA Low Noise Amplifier
LPF Low Pass Filter
RX Receive
SINAD Signal-to-Noise and Distoration ratio
SDR Software Defined Radio
TX Transmit
VGA Variable Gain Amplifier
VSA Vector Signal Analyzer
v
An SDR-based FRS Transceiver Nuand, LLC
Intended Audience
The intended audience for this document is someone with a basic understanding of fre-
quency domain analysis, sampling theory, digital filtering, and analog modulation techniques.
Prior experience with GNU Radio, GNU Radio Companion (GRC), Software Defined Ra-
dio (SDR), and MATLAB is also beneficial. This paper is likely to be useful for SDR users
looking for examples of:
Narrow-band FM transmitters and receivers
Filter design using software tools
Usage of GNU Radio’s polyphase channelizer and synthesizer blocks
Full-duplex operation of the bladeRF
Abstract
The Nuand bladeRF is a USB 3.0 SDR featuring full-duplex operation and configurable
filter bandwidths that can cover up to 28 MHz. These properties are leveraged to design and
implement a real-time Family Radio Service (FRS) transceiver capable of simultaneously
transmitting and/or receiving on any subset of its 14 channels, with optional Continuous
Tone-Coded Squelch System (CTCSS) support. The open source GNU Radio framework
and the GRC tool are used to realize the transceiver design as a graphical flowgraph and
to create an interactive GUI interface for the transceiver. This paper presents both a high-
level description of the design, as well as a detailed discussion of the GNU Radio blocks
utilized and the rationale for their associated parameter values. In doing so, considerations
for targeting the bladeRF and accounting for real-world nonidealties are included. Lastly,
the approaches for testing and evaluation the design using RF test equipment and FRS
handhelds is presented, along with results.
1
An SDR-based FRS Transceiver Nuand, LLC
Overview of the Family Radio Service
FRS is a private, 14-channel, two-way data communications service intended for short-
distance voice and data communications [1]. Rules governing this service are defined in
Title 47, Part 95B [2].
The frequency allocations for each of the 14 channels are listed below. Each channel is
allocated 12.5 kHz of bandwidth, and the max deviation of the narrow band FM signals
used on these channels is 2.5kHz [2].
Table 1: FRS frequency allocations
Channel Frequency (MHz) Channel Frequency (MHz)
1 462.5625 8 467.5625
2 462.5875 9 467.5875
3 462.6125 10 467.6125
4 462.6375 11 467.6375
5 462.6625 12 467.6624
6 462.6875 13 467.6875
7 462.7125 14 467.7125
Many handheld FRS radios include CTCSS support
1
, in which receivers require the presence
of a sub-audible tone in order to break squelch. Table 2 presents commonly used frequencies
for these sub-audible tones. Note that these CTCSS tones are not part of the FRS standard,
but an industry-created and adopted method for co-channel use between multiple parties.
Table 2: Common CTCSS tone frequencies, in Hz
67.0 71.9 74.4 77.0 79.7 82.5 85.4 88.5
91.5 94.8 97.4 100.0 103.5 107.2 110.9 114.8
118.8 123.0 127.3 131.8 136.5 141.3 146.2 151.4
156.7 162.2 167.9 173.8 179.9 186.2 192.8 203.5
210.7 218.1 225.7 233.6 241.8 250.3
1
CTCSS support is often marketed as “sub-codes” or “privacy codes.”
2
An SDR-based FRS Transceiver Nuand, LLC
Transceiver Design
The transceiver presented in this document is designed to simultaneously receive and trans-
mit on any subset of the 14 FRS channels using GNU Radio [3] and the Nuand bladeRF SDR
[4]. This section first presents some of the driving factors of the design, followed by a detailed
description of both the Transmit (TX) and Receive (RX) portions of the flowgraph. It is
recommend that one have the flowgraph (or the screenshots in Section 8) readily accessible
while reading this section.
Although the individual FRS channels have a very small bandwidth, there is a 4.85 MHz
separation between channels 7 and 8. Instead of re-tuning the transceiver to the desired
frequency, the bladeRF is tuned to an intermediate frequency and its bandwidth and sample
rate are configured to cover the entire FRS spectrum. As the bladeRF is capable of operating
on up to 28 MHz of bandwidth, this does not pose a significant challenge.
This approach has the following advantages:
No time is spent re-tuning or sweeping across channels.
Calibration only needs to be performed for the intermediate frequencies used.
The tuning of the RX and TX channels in the context of the FRS spectrum is presented in
Figure 1. Note that both the TX and RX center frequencies are not in the “center” of the
FRS spectrum, as also shown in Figure 2(a). If the transceiver were tuned directly to the
“center” of the FRS spectrum, any IQ imbalance that remains after calibration could cause
mirror images of channels 1-7 to interfere with channels 8-14, and vice versa. This situation
is depicted in Figure 2(b). To avoid this, the RX and TX channels are tuned at 200 kHz
offsets from the “center” of the FRS spectrum, which is illustrated in Figure 2(c).
It is important to be aware of some trade-offs with this design, which must be be kept in
mind during the implementation and evaluation of the transceiver:
1. Using over 5 MHz of bandwidth concurrently on TX and RX will exceed USB 2.0
capabilities. A USB 3.0 connection is required.
2. By not tuning hardware to one of the FRS channels, any LO leakage from the trans-
mitter may interfere with other signals.
3. The offset tuning approach places any IQ images out-of-band, which may interfere with
neighboring signals.
We argue that #1 is reasonable, given the ever increasing availability of USB 3.x controllers
on modern systems.
Trade-offs #2 and #3 include interference and out-of-band emissions and are therefore serious
concerns. Fortunately, both DC offset and IQ imbalance can be compensated for using
3
An SDR-based FRS Transceiver Nuand, LLC
1 2 3 4 5 6 7
462.5625 MHz
462.7125 MHz
8 9 10 11 12 13 14
467.5625 MHz
467.7125 MHz
465.1375 MHz
TX
464.9375 MHz
RX
465.3375 MHz
2.3 MHz
2.7 MHz 2.3 MHz
2.7 MHz
Figure 1: Transceiver tuning with respect to FRS channel allocations
Ch 1-7
Ch 8-15
(a)
Ch 1-7
Ch 8-15
(b)
Ch 8-15
Ch 1-7
Ch 1-7
Ch 8-15
(c)
Ch 8-15
Ch 1-7
(a) Nominal case: Tuning to “center” and no IQ imbalance.
(b) Realistic case: IQ imbalance yields mirror images interfering with signals.
(c) Offset tuning to ensure IQ imbalance images do not overlap with signals.
Figure 2: Avoiding effect of IQ imbalance via offset tuning
hardware features of the bladeRF. In evaluating this design, these signals will be important
to measure and take note of.
In designing with this approach, we must first determine how the transmitter and receiver
will utilize the spectrum. Given the 25 kHz separation between channels and each channel’s
12.5 kHz of bandwidth, this implies that the bladeRF needs to be configured for a minimum
bandwidth defined by the following:
BW
TX, min
= 2 × (Max (|F
T X
F
CH 1
|, |F
T X
F
CH 14
|) + 6.25 kHZ)
= 2 × (Max (|464.9375 462.5625|, |464.9375 467.7125|) MHz + 6.25 kHZ)
= 5.5625 MHz
The equation for BW
RX, min
is similar, but instead uses an (F
RX
= 465.1175 MHz) term.
The Lime Microsystems LMS6002D transceiver [5] on the bladeRF has discrete TX Low Pass
Filter (LPF) bandwidth settings, with the next largest value being 6.0 MHz in quadrature,
4
An SDR-based FRS Transceiver Nuand, LLC
which passes [3 MHz, 3 MHz] at baseband. The rejection of the LMS6002D 3 MHz filter
exceeds 50 dB at approximately ± 4 MHz [6]. On RX, this filter is used as an anti-aliasing
filter to ensure incoming signals outside of the sampling bandwidth are sufficiently attenuated
before being converted by the ADC. On TX, this filter is used to remove the images created
due to the zero-order hold nature of the DAC. Therefore, to avoid these artifacts, an 8 MHz
sample rate is used by the TX and RX modules.
These sample rate and bandwidth calculations provide constraints which guide the design of
the TX and RX paths detailed in the following subsections.
MATLAB’s fdatool, shown in Figure 3 is used to design the digital filters presented in
this document. However, GNU Radio’s gr filter design program and/or Octave could
also be used.
Figure 3: MATLAB Filter Design and Analysis Tool
5
An SDR-based FRS Transceiver Nuand, LLC
Transmit Path
Audio Input
At the beginning of the TX path, audio enters through an Audio Source block. Through
the use of the “pulse” argument provided to this block, the audio from the host machine’s
PulseAudio [7] subsystem is used. A 25 kHz sample rate is selected since it shares all common
factors with the final DAC output sample rate of 8 MHz. This alleviates the need for digital
resampling in the flowgraph prior to entering a downstream Polyphase Synthesizer
block.
bladeRF Sink
8 Msps
Interpolating FIR
↑4
Interpolating FIR
↑5
Audio Source
25kHz
Audio LPF
CTCSS Tone
Source
+
NBFM Mod
Polyphase
Synthesizer
↑16
X
Upper LO Offset
Source
Interpolating FIR
↑4
Interpolating FIR
↑5
Polyphase
Synthesizer
↑16
X
Lower LO Offset
Source
+
Figure 4: FRS TX block diagram
A Valve block is used to start and stop the flow of samples to the downstream portions of the
flowgraph. This value is “closed” when the user presses the “Push to Talk” Graphical User
Interface (GUI) button or checks the “Continuous TX” checkbox. When the valve is opened,
downstream blocks are not processing samples which saves CPU cycles when the transmit
functionality is not enabled. When no channels are selected to transmit, the bladeRF’s TX
front end is turned off. This helps guarantee no residual carrier is being transmitted when
there is nothing to transmit.
A Finite Impulse Response (FIR) Filter block is used to realize an LPF to limit
the audio frequency response to 3.125 kHz [2]. Using fdatool and the parameters shown in
Table 3, a filter whose magnitude response is shown in Figure 5 is created. From this filter’s
magnitude response, is is clear that frequencies above the 3.125 kHz limit are attenuated by
60 dB, while the vast majority of the human vocal range is passed.
Optional CTCSS Tone
Next, a Selector block is used to pass either the audio, or the audio added with a sub-
audible CTCSS tone supplied by a Signal Source block, to the next stage. The frequency
6
An SDR-based FRS Transceiver Nuand, LLC
Table 3: Filter parameters of TX audio LPF
Design Method FIR: Equiripple
Density Factor 20
Order 74
Sampling Frequency (kHz) 25
Passband Frequency (kHz) 2
Stopband Frequency (kHz) 3.125
Passband Weight 1
Stopband Weight 1
Frequency (kHz)
0 2 4 6 8 10 12
Magnitude (dB)
-70
-60
-50
-40
-30
-20
-10
0
Figure 5: Magnitude response of TX audio LPF
of the CTCSS tone is controlled by a drop-down widget in the GUI. When “None” is se-
lected, the selector passes the audio from the Audio Source block. Otherwise, the Signal
Source block is configured for the desired CTCSS frequency, and the Selector passes
the combination of the audio and this tone.
FM Modulation and Mute Blocks
The output of the Selector is fed into the NBFM Transmit block. There is no need to
interpolate here, so the Quadrature Rate is left the same as the sample rate of the incoming
audio.
No pre-emphasis is desired. As of GNU Radio commit ee369b92 (2015-03-04), the NBFM
Transmitter block does not currently implement pre-emphasis
2
, so the tau parameter is
2
The IIR filter is constructed with hard-coded feed-forward and feed-back taps set to 1.0.
7
An SDR-based FRS Transceiver Nuand, LLC
unused. However, this tau value is used simply to match the value used on the RX side of
the flowgraph, should this change in the future. The rationale for this value is discussed in
Section 4.2.5.
The FM modulated signal is then fed into a series of Mute blocks. Each of these blocks is
associated with one of the FRS channels, and is controlled by a GUI checkbox. When the
channel is not muted, the FM modulated signal is passed to the next stage. When muted,
values of (0 + 0j) are supplied to the next stage. Note the important difference here between
the Mute and Valve blocks the former zeroes samples and keeps the stream running,
whereas the latter stops the flow of samples entirely. Using a Valve here would cause the
following block to stop running if one or more channels were muted, which is undesirable.
Polyphase Synthesizer
Because the FRS channels within their groupings are evenly spaced, GNU Radio’s Polyphase
Synthesizer [8] provides a very simple solution for combining multiple channels into a
single interpolated signal.
Two Polyphase Synthesizer blocks are used in conjunction with each other to con-
struct two 400 kHz wide signals one containing FRS channels 1-7, and a second 400 kHz
wide signal containing FRS channels 8-14. Channels 4 and 11 are located at the center fre-
quencies of their respective signals. Each channel in the output is separated by the desired
25 kHz, as this is the input sample rate.
As noted in the previous section, input channels contain either the FM modulated audio
signal, or (0 + 0j), depending on the state of the associated mute block.
(8, N/A)
Legend: (Polyphase Synthesizer Channel, FRS Channel Number)
(0, 4)
(1, 5)
(2, 6)
(3, 7)
(13, 1)
(14, 2)
(15, 3)
0 kHz-200 kHz +200 kHz
(4, N/A)
(5, N/A)
(6, N/A)
(7, N/A)
(8, N/A)
(9, N/A)
(10, N/A)
(11, N/A)
(12, N/A)
Figure 6: Polyphase Synthesizer configuration for FRS channels 1-7
Although only 7 of these 25 kHz channels are required, these blocks are configured for a
total of 16 channels, with 9 of the channels left unused. This is done to alleviate the need
for more interpolation in later blocks; a value of “16” is selected to avoid necessitating an
additional factor of 2 in later interpolating blocks. The extra unused channels allow for a
8
An SDR-based FRS Transceiver Nuand, LLC
wider transition band to be used in the interpolating FIR filter that follows this stage, which
reduces the required number of filter taps
3
.
The Channel Map property is set to [13, 14, 15, 0, 1, 2, 3], in order to position
FRS channels 1-7 (on input indices 0 through 6) as shown in Figure 6. With respect to
channel mapping, the same approach is taken for FRS channels 8 through 14 in the second
Polyphase Synthesizer block.
To minimize the impact of aliases, the Polyphase Synthesizer applies a per-channel
filter at the output sample rate of 400 kHz. The filter used in this block passes signals within
the 12.5 kHz FRS bandwidth limit. Therefore, the pass band is located at
12.5
2
kHz. To reject
the image occurring at the next channel, the stop band is place before the “edge” of the
image, expected to occur at 18.75 kHz = 25 kHz
12.5
2
kHz.
The parameters used with fdatool to generate these filter taps are shown in Table 4. As
shown by the magnitude response in Figure 7, spectral content outside of the desired region
should be significantly rejected. However, one must take note of this undesired spectral
content when evaluating the design and measuring out-of-band emissions.
Table 4: Filter parameters for polyphase synthesizer LPF
Design Method FIR: Equiripple
Density Factor 20
Order 191
Sampling Frequency (MHz) 400
Passband Frequency (kHz) 6.25
Stopband Frequency (kHz) 18.75
Passband Weight 1
Stopband Weight 1
Post-PS gain
A Multiply Const block follows each Polyphase Synthesizer. These apply gain
to compensate for the reduction of average power resulting from zero-stuffing during inter-
polation. However, the gain applied here is not a constant value. Instead, it is a function
of the number of enabled channels that are being supplied to the input of the Polyphase
Synthesizer. The goal here is to apply gain to the signal such that the output IQ values
remain within [-1.0, 1.0].
With only one input enabled, a gain that is just slightly less than the interpolation factor is
used to avoid clipping. Thus, a value of 16×0.95 is used. When a second input is enabled, the
system is combining two signal sources whose amplitudes may be within [0.0, 1.0], yielding
a signal with an amplitude within [0.0, 2.0]. Therefore, to keep our signal amplitude within
3
This reduces the number of convolution operations required.
9
An SDR-based FRS Transceiver Nuand, LLC
Figure 7: Magnitude response of polyphase synthesizer FIR filter
the desired range, a division by two is applied, yielding a gain factor of
16×0.95
2
. By carrying
this logic through for our total of 7 channels, one arrives at the following gain expression
used for channels 8-15, with a similar expression being used for channels 1-7.
1 if tx num enabled ch8 14 == 0 else 16
*
0.95 / tx num enabled ch8 14
tx num enabled ch8 14 is a variable that represents how many channels are currently
enabled, based upon the state of GUI checkboxes. If no channels are enabled, a value of one
is used as a default. Note that this expression is written such that the check for this zero
case is first. This is done to ensure the logic short circuit does not cause a division by zero
to be evaluated.
Technically, the gain could be applied by scaling the tx pfs taps filter taps by this desired
gain value. This would have the advantage of removing extraneous multiplications from the
system. However, since these blocks are operating at a lower sample rate (400 kHz), they
have been left here to serve as an explicit reminder of this scaling operation.
The outputs of these blocks are connected to Qt GUI Waterfall Sink blocks to provide
feedback to the user that the channels selected via checkboxes are indeed being transmitted
on, as well as to provide visibility of the signal power and bandwidth.
Interpolating Filters
Ultimately, the two groups of FRS signals must be recombined into a single signal that
has been interpolated by a factor of 20 to match the hardware’s 8 Msps sample rate. This
interpolation is achieved utilizing two Interpolating FIR Filter blocks. As indicated
10
An SDR-based FRS Transceiver Nuand, LLC
by the block name, these first interpolate by zero-stuffing samples and then filter to reject
image artifacts that result from zero-stuffing.
The first FIR filter interpolates by a factor of 5, yielding an output sample rate of 2 MHz.
The second stage interpolates by a factor of 4, yielding the final output sample rate of 8
MHz.
The parameters for these filters are shown in Tables 5 and 6.
To account for energy lost due to the interpolation, the filter taps obtained via fdatool are
scaled by their associated interpolation factor. Figure 8 presents the magnitude responses
of the individual stages, as well the combined response of both stages.
The passband frequencies are selected to ensure all 7 of the 25 kHz channels are passed
without attenuation. Of the 400 kHz of bandwidth provided to the input of the first filter,
175 kHz
4
may contain information. Therefore, we set our passband to 85.7 kHZ =
175
2
kHz.
The stop band for the first filter is placed at the location where the first image artifact caused
by interpolation is expected to be. This is calculated as follows:
F
stop
=
F
s
2
+
F
s
2
BW
= 200 kHz + (200 kHz 87.5 kHz)
= 312.5 kHz
The position of the second filter’s stop band is selected such that the first null of this filter
aligns with null occurring before the image of the previous filter’s response. This can be
quickly achieved through an iterative process of measuring the location of the first null,
changing the F
stop
value in fdatool, and repeating until the nulls align sufficiently.
Table 5: Filter parameters for first TX interpolating (5x) FIR filter
Design Method FIR: Equiripple
Density Factor 20
Order 59
Sampling Frequency (MHz) 2
Passband Frequency (kHz) 87.5
Stopband Frequency (kHz) 312.5
Passband Weight 1
Stopband Weight 1
The motivation behind using two stages rather than one is to minimize the number of
convolution operations performed by the filter per unit of time. If a single interpolation by
4
Recall that seven 25 kHz inputs are provided to the Polyphase Synthesizer.
11
An SDR-based FRS Transceiver Nuand, LLC
Table 6: Filter parameters for second TX interpolating (4x) FIR filter
Design Method FIR: Equiripple
Density Factor 20
Order 27
Sampling Frequency (MHz) 8
Passband Frequency (kHz) 87.5
Stopband Frequency (MHz) 1.67
Passband Weight 1
Stopband Weight 1
Frequency (MHz)
0 0.5 1 1.5 2 2.5 3 3.5
Magnitude (dB)
-200
-150
-100
-50
0
Combined Response
Second (4x) Stage
First (5x) Stage
Figure 8: Magnitude response TX interpolating FIR filters
20 were performed, all of the filtering would be done at the final 8 MHz samplerate. Because
the FRS spectral content is in a relatively small percentage of the interpolated signal, this
requires a large number of taps to achieve the desired transition band and rejection. This
combination of higher sample rate and more taps leads to higher computational load. In
general, by performing the interpolation and filtering in stages, it is possible to achieve fewer
operations per stage, with each stage running at a fraction of the final sample rate.
Mixing and Hardware Sink
After the previous stages of interpolation, there is ample bandwidth to combine the two
groups of 7 FRS channels. Each group is mixed from baseband to a target frequency offset,
per Figure 1, and then added to form the final output signal. This mixing is performed
though multiplication with the output of a Signal Source block.
12
An SDR-based FRS Transceiver Nuand, LLC
The Signal source is configured to provide a cosine at the target offset frequency (-2.3
MHz for Ch 1-7 and 2.7 MHz for Ch 8-14). The amplitude of this cosine is set to 0.5 in
order to ensure that the final output is within (-1.0, 1.0).
The final output signal is sent to the bladeRF via an osmocom Sink block, which presents
a hardware-agnostic sink interface.
The sink’s frequency, sample rate, and bandwidth are set to the values described at the
beginning of this section 464.9375 MHz, 8Msps, and 6 MHz, respectively.
The bladeRF has two Variable Gain Amplifier (VGA) stages in its TX path, as shown in [6].
Generally, TXVGA1 should be increased before TXVGA2. Sliders for these parameters have
been provided in the GUI, via QT GUI Range block. The osmocom Sink block maps its
BB Gain to TXVGA1, and the RF Gain to TXVGA2.
The device-specific arguments are provided via the Device Parameters property string, which
includes the following:
bladerf=0,buffers=128,buflen=8192,transfers=32
The first argument specifies that the first instance of a bladeRF device found on the system
should be used. The remaining items configure properties of the data stream, including
number of sample buffers to use, the size of each sample buffer, and the number of USB
transfers to pre-allocate. Additional buffering ensures that samples are not dropped during
periods of heavy CPU load, with trade-offs of added latency and memory usage.
13
An SDR-based FRS Transceiver Nuand, LLC
Receive Path
The design of the RX path is very similar to the TX path, but in reverse. The same sample
rate and bandwidth settings from the TX path are applied. Also, the filter designs from the
TX path are used as a starting point for the associated filter in the RX path, implying that
the decimation rates follow the same interpolation rates.
bladeRF Source
8 Msps
Freq. Xlating FIR
↓4
Decimating FIR
↓5
Polyphase
Filterbank
↓16
Power Squelch NBFM Demod CTCSS Squelch IIR HPF
Audio Sink
25kHz
Power Squelch NBFM Demod CTCSS Squelch IIR HPF
Audio Sink
25kHz
Power Squelch NBFM Demod CTCSS Squelch IIR HPF
Audio Sink
25kHz
Power Squelch NBFM Demod CTCSS Squelch IIR HPF
Audio Sink
25kHz
Figure 9: FRS RX block diagram
Hardware Source and Valve
An osmocom Source block is used to receive samples from the bladeRF. Per previous
calculations, it is tuned to 465.3375 MHz, with a sample rate of 8 Msps, and a bandwidth
of 6 MHz.
In the RX path, the LMS6002D provides a Low Noise Amplifier (LNA) gain stage, and two
VGA gain stages. The LNA stage should be adjusted first, followed by RXVGA1 and then
RXVGA2. The osmocom Source block maps the RF Gain field to the LNA gain, and
the BB Gain to the sum of RXVGA1 and RXVGA2, where RXVGA2 is incremented after
RXVGA1 reaches its max value.
The output of this hardware source is connected to a Valve block allowing all RX processing
to be stopped.
Power Meter
The instantaneous power of the received signal passing through the Valve is filtered via
a Single Pole IIR Filter, converted to dBFs, and then displayed via a QT GUI
Number Sink. This GUI Widget provides a thermometer-style bar that allows the user to
quickly gain a sense of the input power over the full 8 MHz captured at the ADC.
If strong in-band signals cause this GUI item to display a value greater than 0 dBFS, the
input will saturate and likely result in artifacts and distortion. Upon observing the power
meter nearing or exceeding 0dBFS, a user should reduce RX gain values, or introduce external
attenuation if gain values are already at a minimum.
14
An SDR-based FRS Transceiver Nuand, LLC
Frequency Translation and Decimating FIR Filters
The signals passed by the Valve are also routed to sections of the flowgraph that perform
frequency translation, filtering, and decimation. Again, like in the TX case, the decima-
tion and filtering is performed in two stages instead of a single stage in order to reduce
computational load.
The first block is a Frequency Xlating FIR Filter, which efficiently translates a
signal to a desired frequency offset, while filtering and decimating.
The Frequency Xlating FIR Filter for FRS channels 1-7 centers the input originally
at -2.7MHz, and the block for channels 8-14 centers the input originally at 2.3 MHz, per
Figure 1.
These blocks are configured to decimate by a factor of 4, yielding an output sample rate of
2 MHz. To avoid aliasing caused by decimation, the FIR filter applied prior to decimation
must reject frequencies outside [-1 MHz, 1 MHz]. Frequencies within [-87.5 kHz, 87.5 kHz]
must be passed, as this region of the spectrum contains the FRS channels. The parameters
used to create a filter that meets these constraints are shown in Table 7.
Table 7: Filter parameters for RX frequency translating and decimating FIR filter
Design Method FIR: Equiripple
Density Factor 20
Order 39
Sampling Frequency (MHz) 8
Passband Frequency (kHz) 21.875
Stopband Frequency (MHz) 1
Passband Weight 1
Stopband Weight 1
Note that although the pass band frequency specified for use with fdatool is 21.875 kHz,
the resulting response of this stage (Figure 10) does not impose any significant attenuation
up through the 87.5 kHz region of interest. In this case, it is found that relaxing the passband
constraint allows fdatool to design a filter with better stop band attenuation.
Next, the 2 MHz signal is passed through a Decimating FIR Filter, which performs
filtering and an additional decimation by a factor of 5, resulting in a 400 kHz signal. This
implies that frequencies outside of [-200 kHz, 200 kHz] must be rejected, while ensuring the
FRS content in [-87.5 kHz, 87.5 kHz] is passed without attenuation. Table 8 presents the
filter design parameters.
As shown in Figure 10, this filter does indeed meet the desired requirements, as does the
entire response of the two filtering stages.
15
An SDR-based FRS Transceiver Nuand, LLC
Table 8: Filter parameters for RX decimating FIR filter
Design Method FIR: Equiripple
Density Factor 20
Order 39
Sampling Frequency (MHz) 2
Passband Frequency (kHz) 87.5
Stopband Frequency (kHz) 200
Passband Weight 1
Stopband Weight 1
Frequency (MHz)
0 0.5 1 1.5 2 2.5 3 3.5
Magnitude (dB)
-200
-150
-100
-50
0
Combined Response
First (4x) Stage
Second (5x) Stage
Figure 10: Magnitude response of RX decimating FIR filters
Polyphase Channelizer
In this flowgraph, the usage of the Polyphase Channelizer is very similar to that of
the Polyphase Synthesizer in the TX path.
The input to each channelizer is a 400 kHz wide signal, centered on FRS channels 4 or 11
(see Figure 6). By configuring the channelizer for 16 channels and using the same channel
mapping presented in Section 4.1.4, indices 0-6 are associated with FRS channels 1-7 or 8-14.
Each of the outputs containing a single FRS channel are routed to a Valve block. Similar
to the Mute blocks used in the TX path, these are controlled by GUI checkboxes to allow
the user to select which FRS channels to listen to. However, the Valve is used to disable
downstream blocks when opened. This eliminates the unnecessary processing of channels
that the user is not interested in.
16
An SDR-based FRS Transceiver Nuand, LLC
Bus ports [9] are used to route the remaining 9 unused outputs to a single Null Sink,
rather than having 9 separate Null Sinks displayed on the flowgraph; this is merely a
matter of preference to reduce visual clutter in the flowgraph.
Squelch and FM Demodulation
A Power Squelch block is placed before the NBFM Receive block to prevent the CPU
from performing all the demodulations simultaneously when no active signal is being received.
The Gate option is set to “Yes,” meaning that when the incoming signal does not exceed
a specified power threshold, no samples will be passed to the output causing downstream
blocks to stop. This is intended to further eliminate unnecessary processing.
The squelch level is controllable by the user via a slider provided by a QT GUI Range
block. The required level for this block is expected to vary with the operating environment.
A fairly high squelch threshold default has been selected for to avoid immediately passing
noise when the flowgraph is started.
A value of 0.0125 for the alpha parameter of the Power Squelch is selected to signif-
icantly favor past samples in order to avoid breaking squelch due to any transient spikes.
This parameter can be tuned in the flowgraph via an rx power squelch alpha.
After breaking squelch, a signal then enters