Channels
Each Channel encapsulates blocks for signal acquisition, tracking, and demodulation of the
navigation message
for a single satellite. These abstract interfaces can be populated with
different algorithms addressing any suitable GNSS signal. The user can define
the number of parallel channels to be instantiated by the software receiver, and
the thread-per-block scheduler imposed by GNU Radio automatically manages the
multitasking capabilities of modern multi-core processors. This is done through
the configuration file with the Channels_XX.count
parameter, where XX
is one
of the following signal identifiers:
Identifier | Signal | Center Frequency |
---|---|---|
1G |
Glonass L1 C/A | \(1602.00\) MHz |
1C |
GPS L1 C/A | \(1575.42\) MHz |
1B |
Galileo E1 B/C | \(1575.42\) MHz |
B1 |
Beidou B1I | \(1561.098\) MHz |
E6 |
Galileo E6B | \(1278.75\) MHz |
B3 |
Beidou B3I | \(1268.520\) MHz |
2G |
Glonass L2 C/A | \(1246.00\) MHz |
2S |
GPS L2 L2CM | \(1227.60\) MHz |
7X |
Galileo E5b | \(1207.140\) MHz |
5X |
Galileo E5a | \(1176.450\) MHz |
L5 |
GPS L5C | \(1176.45\) MHz |
Then, eleven parameters can be set: Channels_1G.count
, Channels_1C.count
,
Channels_1B.count
, Channels_B1.count
, Channels_E6.count
,
Channels_B3.count
, Channels_2G.count
, Channels_2S.count
,
Channels_5X.count
, Channels_7X.count
and Channels_L5.count
, all of them
defaulting to \(0\).
In addition, the GNSS-SDR flow graph allows setting the number of channels that
will be executing signal acquisition (which is known to require a high
computational load) concurrently. This is controlled by the parameter
Channels.in_acquisition
, which defaults to the total number of channels (all
of them performing acquisition on different satellite signals at the same time,
if required). When working with real-time configurations, it is a good practice
to set this parameter to 1 (that is, only one channel performing acquisition at
a given time) in order to alleviate the computational burden.
Channels accepts the following parameters:
Parameter | Description | Required |
---|---|---|
Channels_1G.count |
Number of channels targeting Glonass L1 C/A signals. It defaults to \(0\). | Optional |
Channels_1C.count |
Number of channels targeting GPS L1 C/A signals. It defaults to \(0\). | Optional |
Channels_1B.count |
Number of channels targeting Galileo E1 B/C signals. It defaults to \(0\). | Optional |
Channels_B1.count |
Number of channels targeting BeiDou B1I signals. It defaults to \(0\). | Optional |
Channels_E6.count |
Number of channels targeting Galileo E6B signals. It defaults to \(0\). | Optional |
Channels_B3.count |
Number of channels targeting BeiDou B3I signals. It defaults to \(0\). | Optional |
Channels_2S.count |
Number of channels targeting GPS L2 L2CM signals. It defaults to \(0\). | Optional |
Channels_2G.count |
Number of channels targeting Glonass L2 C/A signals. It defaults to \(0\). | Optional |
Channels_7X.count |
Number of channels targeting Galileo E5b (I+Q) signals. It defaults to \(0\). | Optional |
Channels_5X.count |
Number of channels targeting Galileo E5a (I+Q) signals. It defaults to \(0\). | Optional |
Channels_L5.count |
Number of channels targeting GPS L5 signals. It defaults to \(0\). | Optional |
Channel.signal |
Assign all channels to a specific signal [1C , 1B , 2S , 5X , L5 ]. Only required in single-system receivers. |
Optional |
ChannelN.signal |
(where N is the channel number, starting from \(0\)). Assign each channel to a specific signal [1C , 1B , 2S , 5X , L5 ]. Not required in single-system receivers. |
Optional |
Channels_1G.RF_channel_ID |
Connects channels targeting Glonass L1 C/A to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_1C.RF_channel_ID |
Connects channels targeting GPS L1 C/A to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_1B.RF_channel_ID |
Connects channels targeting Galileo E1 B/C to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_B1.RF_channel_ID |
Connects channels targeting BeiDou B1I to a radio frequency chain. It defaults to \(0\).Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_E6.RF_channel_ID |
Connects channels targeting Galileo E6B to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_B3.RF_channel_ID |
Connects channels targeting BeiDou B3I to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_2S.RF_channel_ID |
Connects channels targeting GPS L2 L2CM to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_2G.RF_channel_ID |
Connects channels targeting Glonass L2 C/A to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_7X.RF_channel_ID |
Connects channels targeting Galileo E5b (I+Q) to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_5X.RF_channel_ID |
Connects channels targeting Galileo E5a (I+Q) to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
Channels_L5.RF_channel_ID |
Connects channels targeting GPS L5 to a radio frequency chain. It defaults to \(0\). Not required in single-band receivers. This feature is present in GNSS-SDR v0.0.18 and later versions. | Optional |
ChannelN.RF_channel_ID |
(where N is the channel number, starting from \(0\)). Connects channel N to a radio frequency chain. Overrides Channels_XX.RF_channel_ID parameter value for a specific channel. It defaults to \(0\). Not required in single-band receivers. |
Optional |
ChannelN.Signal_Source_ID |
(where N is the channel number, starting from \(0\)). Connects channel N to a signal source. It defaults to \(0\). Not required in single-source receivers. |
Optional |
ChannelN.satellite |
(where N is the channel number, starting from \(0\)). Assigns channel N to given satellite by its PRN. This channel will always be trying to acquire and track the given satellite. |
Optional |
Channels.in_acquisition |
Maximum number of channels performing signal acquisition at the same time. The recommended value is \(1\). In the case of having assigned a channel to a given satellite (e.g., with Channel0.satellite=1 ), it is recommended to increase this number in order to always have at least one channel searching for new satellites. It defaults to the total number of channels. |
Optional |
Then, each type of defined channel requires the configuration of:
- Acquisition blocks targeting the desired signal type, in charge of the detection of signals coming from a given GNSS satellite and, in the case of a positive detection, to provide coarse estimations of the code phase \(\hat{\tau}\) and the Doppler shift \(\hat{f}_{d}\),
- Tracking blocks targeting the desired signal type, in charge of following the evolution of the signal synchronization parameters: code phase \(\tau(t)\), Doppler shift \(f_d(t)\) and carrier phase \(\phi(t)\), and
- Telemetry Decoder blocks targeting the desired signal type, in charge of demodulating and decoding the GNSS navigation message carried by that particular signal.
Examples for different receiver architectures are provided below.
Single system, single band receiver
Setting a single-band receiver with twelve channels devoted to GPS L1 C/A signal can be done as:
;######### CHANNELS GLOBAL CONFIG ############
Channels_1C.count=12
Channel.signal=1C
Channels.in_acquisition=1
Acquisition_1C.implementation=...
; or Acquisition_1C0, ..., Acquisition_1C11, and parameters.
Tracking_1C.implementation=...
; or Tracking_1C0, ..., Tracking_1C11, and parameters.
TelemetryDecoder_1C.implementation=...
; or TelemetryDecoder_1C0, ..., TelemetryDecoder_1C11, and parameters.
Multi-constellation, single band receiver
When defining a multi-system receiver, the user must specify which channels are
devoted to each signal. This is done through the parameter ChannelN.signal
,
where N
is the absolute channel number, starting from zero:
;######### CHANNELS CONFIG ############
Channels_1C.count=4
Channels_1B.count=4
Channels.in_acquisition=1
Channel0.signal=1C
Channel1.signal=1C
Channel2.signal=1C
Channel3.signal=1C
Channel4.signal=1B
Channel5.signal=1B
Channel6.signal=1B
Channel7.signal=1B
Acquisition_1C.implementation=...
; or Acquisition_1C0, ..., Acquisition_1C3, and parameters.
Acquisition_1B.implementation=...
; or Acquisition_1B4, ..., Acquisition_1B7, and parameters.
Tracking_1C.implementation=...
; or Tracking_1C0, ..., Tracking_1C3
Tracking_1B.implementation=...
; or Tracking_1B4, ..., Tracking_1B7
TelemetryDecoder_1C.implementation=...
; or TelemetryDecoder_1C0, ..., TelemetryDecoder_1C3, and parameters.
TelemetryDecoder_1B.implementation=...
; or TelemetryDecoder_1B4, ..., TelemetryDecoder_1B7, and parameters.
Multi-band receiver
When defining a multi-band receiver, in addition to assign a signal to each
channel, users need to specify the connection of the different radio-frequency
chains to the processing channels. This is done using the
ChannelN.RF_channel_ID
, where N
is the absolute channel number, starting
from zero:
; # Channel connection
Channel0.RF_channel_ID=0
Channel1.RF_channel_ID=1
Thus, a dual-band GPS receiver, connecting eight GPS L1 C/A channels to the radio frequency chain \(0\) and eight GPS L2CM channels to the radio frequency chain \(1\) would be configured as:
;######### CHANNELS CONFIG ############
Channels_1C.count=8
Channels_1B.count=8
Channels.in_acquisition=1
Channel0.signal=1C
Channel1.signal=1C
Channel2.signal=1C
Channel3.signal=1C
Channel4.signal=1C
Channel5.signal=1C
Channel6.signal=1C
Channel7.signal=1C
Channel8.signal=2S
Channel9.signal=2S
Channel10.signal=2S
Channel11.signal=2S
Channel12.signal=2S
Channel13.signal=2S
Channel14.signal=2S
Channel15.signal=2S
Channel0.RF_channel_ID=0
Channel1.RF_channel_ID=0
Channel2.RF_channel_ID=0
Channel3.RF_channel_ID=0
Channel4.RF_channel_ID=0
Channel5.RF_channel_ID=0
Channel6.RF_channel_ID=0
Channel7.RF_channel_ID=0
Channel8.RF_channel_ID=1
Channel9.RF_channel_ID=1
Channel10.RF_channel_ID=1
Channel11.RF_channel_ID=1
Channel12.RF_channel_ID=1
Channel13.RF_channel_ID=1
Channel14.RF_channel_ID=1
Channel15.RF_channel_ID=1
Acquisition_1C.implementation=...
; or Acquisition_1C0, ..., Acquisition_1C7
Acquisition_2S.implementation=...
; or Acquisition_2S8, ..., Acquisition_2S15
Tracking_1C.implementation=...
; or Tracking_1C0, ..., Tracking_1C7
Tracking_2S.implementation=...
; or Tracking_2S8, ..., Tracking_2S15
TelemetryDecoder_1C.implementation=...
; or TelemetryDecoder_1C0, ..., TelemetryDecoder_1C7
TelemetryDecoder_2S.implementation=...
; or TelemetryDecoder_2S8, ..., TelemetryDecoder_2S15
Multi-source receiver
When defining a multi-source receiver, in addition to assign a signal to each
channel, users need to specify the connection of the different signal sources to
the processing channels. This is done using the ChannelN.SignalSource_ID
,
where N
is the absolute channel number, starting from zero:
; # Channel connection
Channel0.SignalSource_ID=0
Channel1.SignalSource_ID=0
Channel2.SignalSource_ID=1
Channel3.SignalSource_ID=1
Leave a comment