Документация Engee

EngeeDSP.gpsWaveformGenerator

Генератор сигнала GPS (традиционные L1 и L2, модернизированные L1C, L2C и L5).

Библиотека

EngeeDSP

Блок

GPS Waveform Generator

Описание

Объект EngeeDSP.gpsWaveformGenerator создает генератор сигналов глобальной системы позиционирования (Global Positioning System, GPS), поддерживающий следующие сигналы GPS:

  • Традиционные L1 и L2 — используется, когда для свойства SignalType указано значение "legacy".

  • Модернизированный L1C — используется, когда для свойства SignalType указано значение "l1c".

  • Модернизированный L2C — используется, когда для свойства SignalType указано значение "l2c".

  • Модернизированный L5 — используется, когда для свойства SignalType указано значение "l5".

Чтобы создать объект генератора сигналов GPS, выполните следующие действия:

  1. Создайте объект EngeeDSP.gpsWaveformGenerator и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • gpsWaveObj = gpsWaveformGenerator() — создает системный объект EngeeDSP.gpsWaveformGenerator со свойствами по умолчанию.

  • gpsWaveObj = gpsWaveformGenerator("Name",value) — создает системный объект EngeeDSP.gpsWaveformGenerator с указанным свойством "Name", установленным на указанное значение Value. Вы можете указать дополнительные аргументы в виде пары имя-значение в любом порядке ("Name1", Value1,…,"NameN", ValueN).

Использование

  • waveform = gpsWaveObj(navdata) — генерирует сигнал GPS во временной области.

    waveform = gpsWaveObj(navdata)
  • waveform = gpsWaveObj(LNAV, CNAV) — генерирует сигнал GPS во временной области.

    waveform = gpsWaveObj(LNAV, CNAV)

Аргументы

Входные аргументы

navdata — навигационные данные
двоичная матрица

Details

Навигационные данные, заданные как двоичная матрица — количество столбцов должно быть равно длине свойства PRNID, поскольку каждый столбец соответствует PRNID. Количество строк представляет собой количество битов навигационных данных.

Зависимости

Чтобы использовать этот аргумент, установите для свойства SignalType значение "legacy", "l1c" или "l5".

Типы данных

AbstractMatrix{Integer}

LNAV — биты традиционного навигационного сообщения
двоичная матрица

Details

Биты традиционного навигационного сообщения, заданные как двоичная матрица.

Если для свойства SignalType установлено значение "l2c" и задан один входной аргумент, то gpsWaveObj присваивает одинаковое значение LNAV и CNAV.

Зависимости

Чтобы использовать этот аргумент, установите для свойства SignalType значение "l2c".

Типы данных

AbstractMatrix{Integer}

CNAV — биты гражданского навигационного сообщения
двоичная матрица

Details

Биты гражданского навигационного сообщения заданные как двоичная матрица, той же размерности, что и LNAV

Если для свойства SignalType установлено значение "l2c" и задан один входной аргумент, то gpsWaveObj присваивает одинаковое значение LNAV и CNAV.

Зависимости

Чтобы использовать этот аргумент, установите для свойства SignalType значение "l2c".

Типы данных

AbstractMatrix{Integer}

Выходные аргументы

waveform — сгенерированный GPS сигнал
матрица

Details

Каждый столбец представляет собой сигнал, соответствующий значению свойства PRNID.

Количество строк равно произведению BitDuration × SampleRate × numBits, где numBits — количество входных битов и равно size(navdata,1).

Частота дискретизации сигнала соответствует значению, указанному в свойстве SampleRate.

Типы данных

AbstractArray{Real}, AbstractArray{ComplexF64}

Свойства

# SignalType — тип генерируемого сигнала основной полосы частот
"legacy" (по умолчанию) | "l1c" | "l2c" | "l5"

Details

Тип генерируемого сигнала основной полосы частот, заданный как:

  • "legacy" — используйте это значение для генерации традиционного сигнала L1 или L2.

  • "l1c" — используйте это значение для генерации модернизированного сигнала L1.

  • "l2c" — используйте это значение для генерации модернизированного сигнала L2.

  • "l5" — используйте это значение для генерации модернизированного сигнала L5.

# PRNID — индекс псевдослучайного кода спутника
1 (по умолчанию) | целое число в диапазоне [1, 210] | вектор целых чисел в диапазоне [1, 210]

Details

Индекс псевдослучайного кода спутника (PRN) спутника, заданный как:

  • Целое число в диапазоне [1, 210] — используйте это значение для ввода индекса PRN для отдельного спутника.

  • Вектор целых чисел в диапазоне [1, 210] — используйте это значение для ввода индексов PRN для нескольких спутников.

Если для свойства SignalType установлено значение "l2c", то индексы PRN должны находиться в диапазоне [1, 63] или [159, 210].

# IsL2CInPhaseQuadrature — включение квадратурного уплотнения для L2C и L2P
true или 1 (по умолчанию) | false или 0

Details

Свойство для включения фазовой квадратуры для L2C и L2P, заданный в виде числового или логического значения:

  • true — используйте эту опцию, чтобы задать код точности (P-код) для синфазной ветви (I-ветвь), а также гражданский код средней длительности (CM) и гражданский длинный код (CL) для квадратурной ветви (Q-ветвь);

  • false — используйте эту опцию для установки всех кодов в I-ветви.

Зависимости

Чтобы использовать это свойство, установите для свойства SignalType значение "l2c".

# EnablePCode — индикатор P-кода
true или 1 (по умолчанию) | false или 0

Details

Индикатор P-кода, заданный в виде числового или логического значения.

В тех случаях, когда не нужен P-код, установите для этого свойства значение false, чтобы повысить скорость выполнения.

Если установлено значение false, P-код в I-ветви устанавливается равным 0.

Зависимости

Чтобы использовать это свойство, установите для свойства SignalType значение "legacy" или "l2c".

# HasDataWithPCode — возможность передачи данных с помощью P-кода
true или 1 (по умолчанию) | false или 0

Details

Возможность передачи данных с помощью P-кода, заданная в виде числового или логического значения. Если установлено значение true, то данные передаются вместе с P-кодом.

Зависимости

Чтобы использовать это свойство, установите для свойства SignalType значение "legacy" или "l2c", а для свойства EnablePCode значение true.

# HasDataWithCACode — возможность передачи данных с кодом грубого захвата (C/A-код)
true или 1 (по умолчанию) | false или 0

Details

Возможность передачи данных с кодом грубого захвата (C/A-код), заданная в виде числового или логического значения. Если установлено значение true, то данные передаются вместе с C/A-кодом.

Зависимости

Чтобы использовать это свойство, установите для свойства SignalType значение "legacy".

# InitialTime — начальное время в течение одной недели, с
0 (по умолчанию) | вещественный скаляр в диапазоне [1, 604800]

Details

Начальное время в течение одной недели в секундах, заданное как вещественный скаляр в диапазоне [0, 604800].

Зависимости

Чтобы использовать это свойство, установите для свойства SignalType значение "legacy", а для свойства EnablePCode значение false.

# SampleRate — частота дискретизации сигнала, Гц
10.23e6 (по умолчанию) | скаляр больше 1e6

Details

Частота дискретизации сигнала в Гц, заданная в виде скаляра больше 1e6. Это свойство определяет частоту дискретизации сигнала.

# BitDuration — длительность входных битов
"0.01" | "0.02"

Details

Это свойство доступно только для чтения. Длительность входных битов, представленная в виде одного из этих значений:

  • "0.01" — если свойство SignalType имеет значение "l1c" или "l5".

  • "0.02" — если свойство SignalType имеет значение "legacy" или "l2c".

# ChipRate — скорость обработки самого медленного кода в сигнале
"1.023e6" | "511.5e3" | "10.23e6"

Details

Это свойство доступно только для чтения. Скорость обработки самого медленного кода в сигнале, представленная в виде одного из этих значений:

  • "1.023e6" — если свойство SignalType имеет значение "legacy" или "l1c".

  • "511.5e3" — если свойство SignalType имеет значение "l2c".

  • "10.23e6" — если свойство SignalType имеет значение "l5".

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Примеры

Генерация традиционного сигнала GPS

Details

Сгенерируем случайные фрагменты навигационных данных.

using EngeeDSP, EngeeSatellites

navdata = rand(0:1, 2, 1)

Создадим объект EngeeDSP.gpsWaveformGenerator и установим его свойства.

gpswaveobj = gpsWaveformGenerator()
gpswaveobj.EnablePCode = true
gpswaveobj.SampleRate = 4*10.23e6

Сгенерируем традиционный сигнал GPS и изобразим его спектр.

waveform = gpswaveobj(navdata)
txscope = spectrumAnalyzer(SampleRate=gpswaveobj.SampleRate)
txscope(waveform)

gpswaveformgenerator 1

Генерация сигнала GPS L1C

Details

Установим индексы PRN и сгенерируем случайные биты навигационных данных.

prn = [4 70]
numsat = length(prn)
numbits = 100
msg = rand(0:1, numbits, numsat)

Создадим объект EngeeDSP.gpsWaveformGenerator и установим его свойства.

fs = 25e6
gpswaveobj = gpsWaveformGenerator(
    "SignalType","l1c",
    "PRNID",prn,
    "SampleRate",fs
)

Сгенерируем сигнал GPS L1C и изобразим его спектр.

waveform = gpswaveobj(msg)
txscope = spectrumAnalyzer(SampleRate=fs)
txscope(waveform)

gpswaveformgenerator 2

Генерация сигнала GPS L2C

Details

Сгенерируем сигнал GPS L2C со случайными данными LNAV и CNAV для четырех спутников GPS.

Зададим индексы PRN и сгенерируем случайные данные LNAV и CNAV.

prn = [7 11 20 28]
numsat = length(prn)
numbits = 10
lnavdata = rand(0:1, numbits, numsat)
cnavdata = rand(0:1, numbits, numsat)

Создадим объект EngeeDSP.gpsWaveformGenerator и установим его свойства.

gpswaveobj = gpsWaveformGenerator()
gpswaveobj.SignalType = "l2c"
gpswaveobj.PRNID = prn
gpswaveobj.SampleRate = 15e6
gpswaveobj.EnablePCode = true

Сгенерируем сигнал GPS L2C и изобразим его спектр.

waveform = gpswaveobj([lnavdata, cnavdata])
txscope = spectrumAnalyzer()
txscope(waveform)

gpswaveformgenerator 3

Генерация сигнала GPS L5

Details

Установим индексы PRN и сгенерируем случайные навигационные данные.

prn = [185, 189]
numsat = length(prn)
numbits = 40
msg = rand(0:1, numbits, numsat)

Создадим объект EngeeDSP.gpsWaveformGenerator и установим его свойства.

fs = 25e6
gpswaveobj = gpsWaveformGenerator(
    "SignalType", "l5",
    "PRNID", prn,
    "InitialTime", 42123,
    "SampleRate", fs
)

Сгенерируем сигнал GPS L2C и изобразим его спектр.

waveform = gpswaveobj(msg)
txscope = spectrumAnalyzer(SampleRate=fs)
txscope(waveform)

gpswaveformgenerator 4