Example 07 - Exciting Galileo Signals

SNACS can also be used to generate and track the new binary offset carrier (BOC) modulated Galileo signals. Due to SNACS flexibility, the two signal types for generation and tracking don't have to be the same necessarily.

For example, the signal definition for signal generation could be the CBOC(6,1,1/11) signal as transmitted by (future) Galileo satellites:

signal = {
        inphase = {
                code = "E1B";
                prn = 1;
                modulation = "CBOC(n1,n2,p)";
                n1 = 6.0;
                n2 = 1.0;
                p_numerator = 1.0;
                p_denominator = 11.0;
        };
};

Of course it is possible to use the same CBOC signal for tracking. But we can track this signal also as BOC(1,1) signal, to test a lower receiver complexity, for example. Then, we use a different signal definition block for the "snSDRStandard" aquisition and tracking module:

signal = {
        inphase = {
                code = "E1B";
                prn = 1;
                modulation = "BOC(n,m)";
                n = 1.0;
                m = 1.0;
                subcarrier_phasing = "sin";
                data_type = "none";
        };
};

You can start it by running

cd snacs/trunk/release
./SNACS-release -f ../../examples/example_07/example_07_cboc.cfg 

This is a screenshot of the running simulation:

example-07-screenshot.png
SNACS screenshot of Example 07

You can use the MATLAB script plot_snacs_results_example07.m to plots the results:

snacs-result_example07.png
SNACS simulation result of Example 07

This is the complete SNACS configuration file:

1 /*
2  * Example configuration file for
3  *
4  * SNACS - The Satellite Navigation Radio Channel Simulator
5  *
6  * example_07.cfg
7  *
8  * Demonstration of a SNACS simulation with CBOC signal generation
9  * and BOC tracking.
10  *
11  * Copyright (C) 2010 F. M. Schubert
12  *
13  */
14 
15 Simulation:
16 {
17  sampling_frequency = 60.e6; // Hz
18  c0 = 2.99e8;
19  length = 5.0; // s
20 
21  conc_buf_length = 0.001; // in s
22  buffers_per_concbuf = 4;
23 
24  result_directory = "/tmp/snacs-result_example07";
25  append_date_to_outdir = false;
26 
27  SNBlocks = (
28 
29  { Type = "snSignalGenerate";
30  start = 0.00001;
31  signal = {
32  inphase = {
33  code = "E1B";
34  prn = 1;
35  modulation = "CBOC(n1,n2,p)";
36  n1 = 6.0;
37  n2 = 1.0;
38  p_numerator = 1.0;
39  p_denominator = 11.0;
40  data_type = "none";
41  };
42  };
43  },
44 
45  { Type = "snLowPassFilter";
46  coefficients_type = "remez";
47  order = 64;
48  cut_off_frequency = 8e6;
49  },
50 
51  { Type = "snNoise";
52  snr_db = 45.0;
53  seed_type = "time";
54  start_sec = 0.0;
55  },
56 
57  { Type = "snADC";
58  adc_enable = true;
59  intermediate_frequency = 15e6; // Hz
60  adc_bits = 4;
61  vga_enable = true;
62  vga_lowest_amplification_dB = -6.0;
63  vga_highest_amplification_dB = 42.5;
64  },
65 
66  { Type = "snSDRStandard";
67  signal = {
68  inphase = {
69  code = "E1B";
70  prn = 1;
71  modulation = "BOC(n,m)";
72  n = 1.0;
73  m = 1.0;
74  subcarrier_phasing = "sin";
75  data_type = "none";
76  };
77  };
78 
79  intermediate_frequency = 15e6; // Hz
80  aquisition_enable = true;
81 
82  Aquisition:
83  {
84  plot_3d = true;
85  length = 4e-3;
86  aq_freq_band = 10000.0; // Hz
87  aq_freq_step = 250.0; // Hz
88  threshold = 2.5;
89  };
90 
91  tracking_enable = true;
92  Tracking:
93  {
94  DLL:
95  {
96  discriminator_type = "EML";
97  correlation_length = 0.004;
98  early_late_spacing = .3;
99  damping_ratio = 0.707;
100  noise_bandwidth = 1.0;
101 
102  corr_func_samples = 13; // amount of additional samples on correlation function
103  corr_func_start = -1.5; // start here with additional corr func samples in chips
104  corr_func_dist = 0.25; // distance between corr func samples in chips
105 
106  write_corr_func = false;
107  };
108  PLL:
109  {
110  damping_ratio = 0.707;
111  noise_bandwidth = 25.0;
112  };
113  };
114  }
115 
116  ); // end SNBlocks
117 }; // end Simulation
118 
119 Plotting:
120 {
121  UpdateInterval = 1000; // ms
122  PlotXSize = 300L; // pixel to be plottet. format: long (L)
123  plot_buffer_length = 0.00001; // s
124 };
125 
126