Giter Club home page Giter Club logo

gnss_sdr's Introduction

Getting Started

This DVD contains a GNSS Software Defined Radio (SDR) implemented in MATLAB code and GNSS signal records. In addition, some of the scripts for creating the figures in the text are also on included.

Legal Information (disclaimer)

® 2006 Springer Science+Business Media, LLC This electronic component package is protected by federal copyright law and international treaty. If you wish to return this book and the electronic component package to Springer Science+Business Media, LLC, do not open the disc envelope or remove it from the book. Springer Science+Business Media, LLC, will not accept any returns if the package has been opened and/or separated from the book. The copyright holder retains title to and ownership of the package. U.S. copyright law prohibits you from making any copy of the entire electronic component package for any reason without the written permission of Springer Science+Business Media, LLC, except that you may download and copy the files from the electronic component package for your own research, teaching, and personal communications use. Commercial use without the written consent of Springer Science+Business Media, LLC, is strictly prohibited. Springer Science+Business Media, LLC, or its designee has the right to audit your computer and electronic components usage to determine whether any unauthorized copies of this package have been made.

Springer Science+Business Media, LLC, or the author(s) makes no warranty or representation, either express or implied, with respect to this electronic component package or book, including their quality, merchantability, or fitness for a particular purpose. In no event will Springer Science+Business Media, LLC, or the author(s) be liable for direct, indirect, special, incidental, or consequential damages arising out of the use or inability to use the electronic component package or book, even if Springer Science+Business Media, LLC, or the author(s) has been advised of the possibility of such damages.

System requirements

The system requirements for using GNSS software defined radio are:

  • MATLAB version 7.0.4(R14SP2) or later
  • DVD drive
  • A minimum of 256 megabytes (MB) of RAM (512 MB of RAM, or more, is strongly recommended)
  • A minimum of 50 MB of hard-disk space for the GNSS software installation. 4.3 gigabytes (GB) might be required for the GNSS software and signal records from the DVD.

Installation

To install the GNSS SDR, complete the following steps:

  1. Copy folder "GNSS_SDR" to the hard-disk
  2. (Optional) Copy folder "GNSS_signal_records" to the hard-disk.
  3. Please use a file browser to browse the contents of the DVD.

Running the GNSS SDR software

Note: It is assumed that the user is familiar with MATLAB language from MATHWORKS. To run the GNSS SDR, complete the following steps:

  1. In Matlab open the "GNSS software defined radio" folder
  2. Run the M-script init. Press 0 and then press Enter if you want to select a different data file (signal record) or if the default path is incorrect. If the default path to the data file is correct, press 1 at the MATLAB command prompt, then press Enter and then continue at step 6
  3. Run the M-script setSettings. In the settings window click "Open data file" button. Select and open data file in the dialog
  4. In the settings window click "Probe data" button. A plot window should be presented if a correct data file was selected
  5. Run the M-script postProcessing
  6. Now the signal processing will start. It may take a few hours, depending on the speed of the computer, to process the data record. At the end results will be plotted
  7. Continue from step 3 to repeat the process with a different data file. Note: Always run init.m to setup GNSS SDR environment each time MATLAB is restarted. The GNSS SDR depends on the settings structure. It will not work if a correct settings structure is missing in the MATLAB workspace. It is restored by the init script or by the command settings=initSetting();. Also it can be loaded from a file (e.g. from tracking results). Note: The init.m loads default settings. Therefore save settings in a file or update initSettings.m to save your changes, before running init.m.

More details on code part

The GNNS SDR is using structure settings system widely. This makes the software flexible and most of the software properties are controlled at one place. There are three ways to change settings. The default values are defined in function initSettings. The default settings are applied by the init script or by a button click at the settings GUI.

The second way to change settings is to use a dedicated GUI. The GUI is launched by the setSettings script. The GUI has three buttons at the bottom of the dialog window. Button "Default" loads default values defined in the function initSettings. "Apply" button saves settings from GUI in the variable settings (in MATLAB workspace). The third button "Load current" loads current contents of the variable settings from the MATLAB workspace. The apply button is switched off if none of the settings was changed since last load from the MATLAB workspace.

The third way to change settings is to change values in the settings structure using the MATLAB command prompt or variable editor. Examine the file initSettings.m for more details on the settings structure.

The software is made such that three main modules - acquisition, tracking, and positioning can be executed separately. The scenario depends on the debugged module.

Acquisition can be switched off (to save time) if the acquisition results already are present in MATLAB workspace (structure acqResults). The acquisition step is controlled by the field skipAcquisition in the settings (for field and allowed values description see comments in function initSettings).

The tracking part can be skipped too (in case the positioning module is debugged and there are no changes in tracking part). A correct settings structure and the tracking results must be present (structure trackResults). The tracking results and settings are automatically saved after each completion of tracking stage in the MATLAB data file trackingResults.mat. To run the positioning part without running tracking part complete the following steps:

  1. Load tracking results and settings. Skip this step if tracking results are already in the MATLAB workspace
  2. Run this command at the MATLAB command prompt: navSolutions = postNavigation(trackResults, settings);
  3. The results are plotted by function plotNavigation: plotNavigation(navSolutions, settings);.

Examine files init.m, initSettings.m, and postProcessing.m for more details on settings and how to use different functions of the SDR and how they work.

Resources

  • The official homepage of the book
  • The official homepage of GNSS USB front-end
  • SiGe 4110 datasheet (the SiGe 4110 is an example of a GNSS front end ASIC)

gnss_sdr's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gnss_sdr's Issues

Invalid preamble issue whenever trying to process data

Hi there, I have been trying to process a signal that I have created using GPS-SDR-SIM.

the signal has 0 Hz IF because it is a baseband signal in the .bin file. Similarly, the sampling frequency is 2.5e6 and the total duration of the signal is 300 seconds.

Apart from that, I have another signal that I caught with RTL-SDR and it has a sampling frequency of 2.048 MHz. However, when I was trying to process these signals, I noticed that no satellites were being acquired during the acquisition phase. So I reduce the Det. Acquisition from 2.5 to 1.5 and after that Selected the sampling frequency to 2.048 and IF to 0.

When I run the code again I can acquire all the PRNs available in the channels. However, when it comes to tracking it says invalid preamble. Can you help me what could be the reason behind this error?

Here are the screenshots of the settings and results

image

res

acquisition exclude range of second peak and fine resolution fft

Greetings,

So I have 2 questions, regarding the acquisition.m

  1. At line 155. If I understand correctly there has to be a second high peak not closer to 1 chip to the first peak. There is also a check that considers the matrix's boundaries. But why check against the number 2. (if excludeRangeIndex1 < 2) This condition seems wrong to me, and it would make more sense if it would be checking against 1 (if excludeRangeIndex1 < 1).
    An example: What if samplesPerChip = 12 and first peak is at index 13. Then excludeRangeIndex1 = 13 - 12 = 1 < 2 which follows to (... samplesPerCode + excludeRangeIndex1) where samplesPerCode + 1 will exceed the boundaries in results.

  2. I struggle to understand the part at 203 [fftMax, fftMaxIndex] = max(fftxc(5 : uniqFftPts-5));
    Why is the range 5 : uniqFftPts-5, what is that 5 number?

Thanks

PLL discriminator logic

Hello,

I have a doubt in the step where you are mixing the incoming signal to baseband. As in you are using cosine carrier to Q channel and sine carrier to I channel as given below:
% First mix to baseband
qBasebandSignal = carrCos .* rawSignal;
iBasebandSignal = carrSin .* rawSignal;

and later in PLL discriminator you are using Q/I which will in this case become Cosine/Sine.

Then how is it possible to take atan of this value here to get the desired result?

Also everywhere in books as well its written as the Phi=tan(Q/I) which is only possible if it is sin(theta)/cos(theta).

Kindly explain me the logic behind this and I'll be very grateful to you.

Thanks,
Priyanka

How the processing time is selected?

Hello,

My doubt is related to the code file (initsettings.m).

In code line no: 43, How the processing time selected is 37000 ms?

I am mentioning the code line below:

settings.msToProcess = 37000; %[ms]

Waiting for the positive reply

Thank you
Raza Javed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.