В этом примере показано, как сгенерировать устаревшую навигацию Системы глобального позиционирования (GPS) (LNAV) данные, его структура системы координат и комплексная основополосная форма волны. Распространение данных выполняется с крупным кодом приобретения (C/A-code) и кодом точности (Псевдокод). Спроектировать систему навигации на основе GPS, тестируя приемник с полученным сигналом требуется. Сигнал, полученный от спутника, не полезен с этой целью, когда передатчиком и параметрами канала нельзя управлять. Чтобы протестировать приемник, форма волны, сгенерированная под управляемым набором параметров, требуется.
Получите биты данных GPS, которые передаются на уровне 50 бит в секунду (бит/с). Примените C/A-code, распространяющийся на сгенерированные данные. Этот C/A-code имеет уровень 1,023 мега микросхем в секунду. Поскольку один бит данных передается в течение каждых 0,02 секунд (50 бит/с), каждый бит данных распространен с 0.02*1.023*1e6 = 20 460 микросхем. Данные также распространены с Псевдокодом. Этот Псевдокод имеет уровень 10,23 мега микросхем в секунду, который подразумевает, что каждый бит данных распространен с 204 600 микросхемами Псевдокода.
Данные о GPS содержат различные параметры конфигурации, параметры часов и параметры, связанные с местоположением спутникового транспортного средства (SV) на пробеле. Все эти параметры могут быть классифицированы в три широких категории:
Эфемеридные параметры
Параметры альманаха
Параметры, которые не являются ни эфемеридой, ни альманахом, которые включают параметры конфигурации, синхронизируют параметры, параметры ионосферы, параметры Скоординированного всемирного времени (UTC) и параметры таблиц коррекции сообщения навигации (NMCT)
Спутники GPS передают сигналы на двух частотах: L1 (1 575,42 МГц) и L2 (1 227,60 МГц). Оба сигнала сгенерированы от основной частоты 10,23 МГц. Частота сигнала L1 составляет 154*10.23 МГц = 1 575,42 МГц, и частота сигнала L2 составляет 120*10.23 МГц = 1 227,60 МГц. Устаревшие спутники GPS передают различные коды распространения и данные по L1 и несущим частотам L2. Для получения дополнительной информации см. Таблицу IS-GPS-200L 3-III [1].
Существуют три вида распространения для устаревшего GPS:
Распространение C/A-code
Распространение псевдокода
Распространение Y-кода
Y-код не является использованием доступным для общественности. Поскольку Y-код является зашифрованной версией Псевдокода, Псевдокод и Y-код используются вместе в качестве P (Y) - код.
На несущей частоте L1 синфазный компонент несет P (Y) - код наряду с данными.
На несущей частоте L1 компонент квадратурной фазы несет C/A-code наряду с данными.
На несущей частоте L2 синфазный компонент содержит или P (Y) - код с данными, P (Y) - код без данных, или C/A-code с данными.
На несущей частоте L2 компонент квадратурной фазы пуст.
Этот пример демонстрирует сигнал на несущей частоте L1, которая содержит Псевдокод на синфазном компоненте и C/A-code на компоненте квадратурной фазы.
Спутники GPS передают данные в 1 500 системах координат длины в битах с каждой системой координат, состоящей из пяти подкадров 300 битов в каждом подкадре. Поскольку скорость передачи данных составляет 50 бит/с, передавание каждого подкадра занимает 6 секунд, и передавание каждой системы координат занимает 30 секунд. Каждый подкадр составлен из 10 слов с 30 битами в каждом слове. Данные о GPS содержат информацию относительно часов и положения спутников. Чтобы включить расчет расстояния со спутника на приемник, данные о навигации распространены с двумя типами кодов: C/A-code и Псевдокод. C/A-code на уровне 1,023 МГц и повторения после 1 023 микросхем. Псевдокод на уровне 10,23 МГц и повторения после каждой недели для данного спутника.
Этот рисунок иллюстрирует устаревшую навигацию (LNAV) система координат данных.
Подкадр 1 содержит информацию о типе кода (C/A или P) и присутствие данных по каналу L2. Подкадр 1 также предоставляет информацию о часах на борту спутник.
Подкадры 2 и 3 содержат информацию о положении передачи SV на пробеле через орбитальную информацию спутника. Эта орбитальная информация SV называется эфемеридой.
Подкадры 4 и 5 содержат информацию о положении спутников GPS, которые в настоящее время действуют, и дает оценку спутников, которые отображаются пользователю. Эта информация о положениях всех спутников в созвездии коллективно называется альманахом. Эфемерида дает точное положение SV на пробеле, и альманах содержит менее точную информацию о положении всего SVs. Данные об альманахе SVs заполнены более чем 25 систем координат. Поскольку передача каждой системы координат занимает 30 секунд, передавая целый альманах, заполненный, более чем 25 систем координат занимают 12,5 минут.
Выберите ShowVisualizations
параметр, чтобы включить спектр и корреляцию строит визуализацию. Выберите WriteWaveformToFile
параметр, чтобы записать комплексную основополосную форму волны в файл в случае необходимости.
ShowVisualizations = true; WriteWaveformToFile = false;
Задайте спутниковый индекс псевдослучайного шума (PRN).
PRNIndex = 1;
Поскольку генерация формы волны GPS для целых данных о навигации занимает много времени и памяти, этот пример демонстрирует генерирующуюся форму волны для одного бита данных о навигации. При генерации формы волны для количества GPS битами данных LNAV могут управлять параметры NavDataBitStartIndex
и NavDataBitEndIndex
.
NavDataBitStartIndex = 1321; % Set this value to 1 to generate waveform from the first bit of navigation data NavDataBitEndIndex = 1321; % Set this value to navigation data length to generate waveform till the last bit
Задайте для систем координат, для которых должна быть сгенерирована устаревшая форма волны GPS.
FrameIndices = 1:25; % This value must be consecutive integers in the range [1, 25]
Генерация данных о GPS включает инициализацию соответствующих параметров. Этот раздел показывает, как инициализировать эти параметры.
svparams.PRNIdx = PRNIndex; % Current satellite PRN index
svparams.FrameIndices = FrameIndices;
В каждом подкадре Word 1 является словом TLM, и Word 2 КАК. Как показано в этом рисунке, слово TLM содержит восьмибитную преамбулу, сообщение TLM, флаг состояния целостности и четность. Последние 6 битов каждого слова содержат четность. Эти биты четности вычисляются на основе алгоритма, представленного в Таблице IS-GPS-200L, 20-XIV [1].
svparams.TLMPreamble = 139; % Decimal equivalent of [1 0 0 0 1 0 1 1] svparams.TLMMessage = 0; % Contains information needed by the precise positioning service (PPS) user that is authorized user svparams.TLMIntegrityStatusFlag = 0; % Legacy level of integrity
Следующий рисунок показывает поля в КАК. Первые 17 битов, КАК указывают на 17 старших значащих битов (MSBs) времени недели (TOW). TOW является 19-битным номером и младшим значащим битом (LSB) меток деления TOW в течение каждых 1,5 секунд. TOW в, КАК (который является 17 MSBs полного TOW), метки деления в течение каждых 6 секунд. Таким образом, TOW в, КАК метки деления для каждого подкадра. Например, если значение TOW 1000 в текущем экземпляре, то после 1,5 секунд, TOW 1001. Еще после 1,5 секунд TOW 1002 и так далее. Если 17 MSBs TOW (который находится в, КАК) рассматриваются, то для каждых 4 меток деления полного TOW, этот TOW-HOW метки деления в течение одного времени. Поскольку каждый набор 4 меток деления в полном TOW соответствует 6 секундам, меткам деления TOW-HOW в течение каждых 6 секунд.
18-й бит в, КАК аварийный флаг, который указывает, что пользовательская точность области значений (URA) пользователя стандартного сервиса расположения (SPS) хуже, чем, что обозначается svparams.URAIndex
, и пользователь должен использовать текущий спутник в их собственном риске. Бит 19 в, КАК флаг антиимитации. Если этот флаг установлен, то вместо передачи Псевдокода, спутник передает Y-код. Биты 20 - 22 в, КАК указывают на ID подкадра. Обнуляются последние два бита четности на 6 битов, и биты 23 и 24 решены, чтобы установить последние два бита четности обнулять.
svparams.HOWTOW = 2000; % Decimal equivalent of 17 MSBs of TOW svparams.HOWAlertFlag = 0; % Alert flag svparams.AntiSpoofFlag = 0; % Antispoof flag svparams.SubframeID = 1; % Subframe ID of starting subframe
В теории должны синхронизироваться часы всех спутников, который подразумевает, что все часы спутника GPS должны показать то же время в данный момент вовремя. На практике детерминированные спутниковые характеристики ошибки синхронизации смещения, дрейфа, и старения, а также спутниковых характеристик реализации смещения групповой задержки и средней дифференциальной групповой задержки существуют. Эти ошибки отклоняют спутниковые часы с системного времени GPS. Эти параметры часов передаются в подкадре 1. Наряду с информацией о часах, подкадр 1 также содержит различную конфигурационную информацию. Этот код инициализирует эти параметры. Для подробного описания параметров в подкадре 1, смотрите IS-GPS-200L [1].
svparams.WeekNumberMod1024 = 39; % Week number modulo 1024 to fit in 10 bits of data. % Same as in Almanac file svparams.CodesOnL2Channel = 2; % Value of 2 indicates C/A-code on L2 channel % Value of 1 indicates P code on L2 channel svparams.DataFlagForL2P = 1; % Value of 1 indicates nav data Off on P-code % of in-phase component of L2 channel svparams.URAIdx = 0; % User range accuracy (URA) index. % Refer IS-GPS-200L Section 20.3.3.3.1.3 [1] svparams.SVHealth = 0; % SV health svparams.IODC = 0; % Issue of data, clock (IODC) svparams.T_GD = 0; % Estimated group delay differential svparams.t_oc = 0; % Clock data reference time svparams.a_f2 = 0; % Second order clock correction coefficient svparams.a_f1 = 0; % First order clock correction coefficient svparams.a_f0 = 0; % Zeroth order clock correction coefficient
Структурируйте 13 из подкадра 4, включает коррекции области значений NMCT. Эти коррекции области значений сделаны с помощью значений предполагаемого отклонения области значений (ERD) для каждого спутника. Путь, которым значения NMCT сопоставлены со значениями ERD, задан в IS-GPS-200L [1].
svparams.NMCTAvailabilityIndicator
2-битное целочисленное значение, которое указывает на доступность данных NMCT.
0 - NMCT, доступный пользователю точного сервиса расположения (PPS) и для пользователю стандартного сервиса расположения (SPS)
1 - NMCT доступен только для авторизованных пользователей
2 - Никакая таблица коррекции не доступна ни для какого пользователя
3 - Зарезервированный для будущего использования
svparams.NMCTAvailabilityIndicator = 0; % NMCT available to both PPS and SPS users
Код инициализирует значения ERD для конкретного спутника. Значения инициализируются, чтобы обнулить. Допустимая область значений от -9.3
к 9.3
метры. Каждый элемент массива указывает на соответствующее значение ERD (то есть, первым элементом является ERD01, вторым элементом является ERD02, и так далее).
svparams.NMCTERD = zeros(30,1); % Units are in meters
Зависимая задержка частоты вызывается из-за распространения сигнала через ионосферу. Эта задержка является одной из значительных ошибок в вычислении точного времени. Чтобы компенсировать эту задержку из-за ионосферы, двойные приемники частоты должны использоваться для точного расположения приемника. Чтобы предоставить грубую модель ионосферы и задержки, вызванной им для одного приемников частоты, GPS передает некоторые параметры на данных о GPS в подкадре 4. Эти параметры инициализируются можно следующим образом.
svparams.Ionosphere.alpha = zeros(4,1); % Units of each element in the array is seconds svparams.Ionosphere.beta = zeros(4,1); % Units of each element in the array is seconds
Подкадр 4 из GPS данные LNAV содержит параметры, чтобы коррелировать UTC с тем из времени GPS. Этот код инициализирует эти параметры.
svparams.UTC.A_1 = 0; % In seconds/second svparams.UTC.A_0 = 0; % In seconds svparams.UTC.t_ot = 0; % In seconds svparams.UTC.WN_t = 39; % In weeks. Same value as in almanac file svparams.UTC.WN_LSF = 39; % In weeks. Same value as in almanac file svparams.UTC.Delt_LS = 0; % In seconds svparams.UTC.DN = 0; % In days svparams.UTC.Delt_LSF = 0 % In seconds
svparams = struct with fields:
PRNIdx: 1
FrameIndices: [1x25 double]
TLMPreamble: 139
TLMMessage: 0
TLMIntegrityStatusFlag: 0
HOWTOW: 2000
HOWAlertFlag: 0
AntiSpoofFlag: 0
SubframeID: 1
WeekNumberMod1024: 39
CodesOnL2Channel: 2
DataFlagForL2P: 1
URAIdx: 0
SVHealth: 0
IODC: 0
T_GD: 0
t_oc: 0
a_f2: 0
a_f1: 0
a_f0: 0
NMCTAvailabilityIndicator: 0
NMCTERD: [30x1 double]
Ionosphere: [1x1 struct]
UTC: [1x1 struct]
Отобразите структуру svparams.Ionosphere.
disp(svparams.Ionosphere)
alpha: [4x1 double] beta: [4x1 double]
Отобразите структуру svparams.UTC.
disp(svparams.UTC)
A_1: 0 A_0: 0 t_ot: 0 WN_t: 39 WN_LSF: 39 Delt_LS: 0 DN: 0 Delt_LSF: 0
Спутники GPS вращаются вокруг Земли в эллиптической орбите с Землей в одном из центров эллипса. Набор орбитальных параметров, который точно задает спутниковое положение в этой эллиптической орбите, называется эфемеридой. Каждый спутник GPS передает свои собственные эфемеридные данные по подкадрам 2 и 3. Этот рисунок показывает три орбитальных параметра для спутника в системе координат Сосредоточенной землей земли зафиксирована (ECEF). Этот рисунок не показывает фактический спутник GPS, и фигура для рисунка только.
Длина полуглавной оси, A: Расстояние от центра эллиптической орбиты спутника к апогею
Наклонный угол: Угол между экваториальной плоскостью Земли и плоскостью орбиты спутника
Долгота возрастающего узла, : Угол между Гринвичским меридианом и направлением возрастающего узла
Задайте структуру, названную ephemerisparams
, это хранит эфемеридные параметры. Параметры, которые передают угол, находятся в модулях полукругов, потому что стандарт GPS [1] задает эти параметры в полукругах. Один полукруг равен радианы (180 градусов).
ephemerisparams.SqrtA = 0; % Square root of length of semimajor axis ephemerisparams.i_0 = 0; % Inclination angle (in semicircles) ephemerisparams.Omega_0 = 0; % Longitude of ascending node at weekly epoch (in semicircles)
Этот следующий рисунок показывает два орбитальных параметра:
Аргумент перигея, : Угол между направлением возрастающего узла и направлением перигея
Истинная аномалия, : Угол между направлением перигея и направлением, в котором присутствует текущее положение спутника
На второй закон Кеплера планетарного движения скорость вращения (скорость изменения истинной аномалии) отличается в других местах в орбите. Можно задать среднюю аномалию, скорость изменения которой является постоянной по целой орбите спутника. В эфемеридных параметрах GPS, вместо того, чтобы задать истинную аномалию, средняя аномалия задана (от которого истинная аномалия может быть найдена). Алгоритмы, которые связывают среднюю аномалию и истинную аномалию, даны в Таблице IS-GPS-200L, с 20 IV [1].
Эксцентриситет эллипса также задает орбиту. Эксцентриситет дает меру отклонения эллиптической орбиты от круговой формы.
ephemerisparams.omega = 0; % Argument of perigee (in semicircles) ephemerisparams.M_0 = 0; % Mean anomaly at reference time (in semicircles) ephemerisparams.e = 0; % Eccentricity of the ellipse
Эти эфемеридные параметры помогают в получении точного местоположения спутника на пробеле.
ephemerisparams.IODE = 0; % Issue of data, ephemeris ephemerisparams.c_rs = 0; % Amplitude of the Sine Harmonic Correction Term to % the Orbit Radius (in meters) ephemerisparams.Deln = 0; % Mean Motion Difference From Computed Value (in semi-circles/second) ephemerisparams.c_uc = 0; % Amplitude of the Cosine Harmonic Correction Term to % the Argument of Latitude (in radians) ephemerisparams.c_us = 0; % Amplitude of the Sine Harmonic Correction Term to % the Argument of Latitude (in radians) ephemerisparams.t_oe = 0; % Reference time ephemeris (in seconds) ephemerisparams.FitIntervalFlag = 0; % Fit interval flag ephemerisparams.AODO = 0; % Age of data offset ephemerisparams.c_ic = 0; % Amplitude of the Cosine Harmonic Correction Term to % the Angle of Inclination (in radians) ephemerisparams.c_is = 0; % Amplitude of the Sine Harmonic Correction Term to % the Angle of Inclination (in radians) ephemerisparams.c_rc = 0; % Amplitude of the Cosine Harmonic Correction Term to % the Orbit Radius (in meters) ephemerisparams.OmegDot = 0; % Rate of Right Ascension (in semi-circles/second) ephemerisparams.IDOT = 0 % Rate of Inclination Angle (in semi-circles/secon)
ephemerisparams = struct with fields:
SqrtA: 0
i_0: 0
Omega_0: 0
omega: 0
M_0: 0
e: 0
IODE: 0
c_rs: 0
Deln: 0
c_uc: 0
c_us: 0
t_oe: 0
FitIntervalFlag: 0
AODO: 0
c_ic: 0
c_is: 0
c_rc: 0
OmegDot: 0
IDOT: 0
Альманах является набором параметров, который задает положение спутников в орбите. В отличие от эфемериды, альманах менее точен. Кроме того, эфемерида только для одного спутника, тогда как альманах для всех спутников в созвездии. Приемник получает данные об альманахе путем декодирования данных о GPS. Спутник постоянно получает эти данные об альманахе из сегмента управления (CS). Альманах доступен, чтобы загрузить с navcen веб-сайта. Этот пример использует формат системы эффективной модели (SEM) данных об альманахе (см. [2]), и извлекает данные об альманахе как показано ниже.
filename = 'gpsAlmanac.txt'; % Almanac file name (this file should be in current folder) % Use any almanac file almanacparams = HelperGPSAlmanac2Struct(filename)
almanacparams = struct with fields:
SatellitesPRNIndices: [31x1 double]
WeekNumModulo1024: 39
t_oa: 589824
Data: [1x31 struct]
Чтобы сгенерировать сигнал GPS в основной полосе, выполните эти шаги.
Сгенерируйте биты данных навигации на уровне 50 бит в секунду.
Сгенерируйте C/A-code в 1,023 мега микросхемах в секунду.
Выполните операцию "исключающее ИЛИ" C/A-code с данными о навигации, чтобы распространить данные.
BPSK - модулирует микросхемы C/A-code путем отображения бита 0 к +1 и бита 1 к-1.
Повторитесь выше трех шагов для Псевдокода на уровне чипа 10,23 мега микросхем в секунду.
Повторите каждый чип C/A-code 10 раз, чтобы совпадать с частотой Псевдокода.
Поместите Псевдокод и C/A-code на соответствующем, я и Q переходим, чтобы создать комплексный сгенерированный модулированный сигнал.
В случае необходимости запишите эту основополосную форму волны в файл для дальнейшего использования.
После того, как все параметры для данных о навигации и распространяющегося кода инициализируются, генерируют устаревшие данные о навигации GPS с помощью функции помощника HelperGPSLNAVData
.
lnavData = HelperGPSLNAVData(svparams,ephemerisparams,almanacparams); % Generates data for given FrameIndices
Поскольку данные о GPS на уровне 50 бит в секунду, и C/A-code в 1,023 мега микросхемах в секунду, каждый бит данных соответствует 20460 микросхемам C/A-code. Поскольку создание микросхем для всех данных в одно время стоит большой памяти, распространение C/A-code сделано для одного бита данных LNAV за один раз в цикле. Уровень кода PRN упоминается как "уровень чипа", а не "битрейт", чтобы дифференцировать обозначение с уровнем бита данных. В системе навигации распространяющийся код (в этом примере C/A-code или Псевдокод) называется располагающимся кодом, потому что этот код используется в приемнике, чтобы вычислить время распространения сигнала. Расстояние со спутника на приемник измеряется путем умножения времени распространения со скоростью света в свободном пространстве.
prnCAChipRate = 1.023e6; % In chips/second gpsDataRate = 50; % In bits/second
Количество вносит один бит данных, уровень/скорость передачи данных чипа.
numCAChipsPerDataBit = prnCAChipRate/gpsDataRate
numCAChipsPerDataBit = 20460
C/A-code является фиксированным вектором с бинарным знаком для бита определенных данных, таким образом генерируя C/A-code для каждого бита данных, который передается, не необходимо. Сгенерируйте соответствие C/A-code одному биту данных навигации вне цикла.
CACode = HelperGPSCACode(svparams.PRNIdx,numCAChipsPerDataBit);
Возьмите один бит данных о навигации и распространите использование Псевдокода. Возьмите длину Псевдокода, чтобы совпадать вовремя с длиной C/A-code, которая уже взята. Поскольку C/A-code по курсу 1,023 мега микросхем в секунду с 20 460 микросхемами на один бит данных о навигации, и Псевдокод по курсу 10,23 мега микросхем в секунду, 204 600 микросхем Псевдокода существуют для одного бита данных о навигации.
numPChipsPerDataBit = numCAChipsPerDataBit*10 % Because chip rate of P-code is 10 times the chip rate of C/A-code
numPChipsPerDataBit = 204600
Длина Псевдокода такова, что это имеет периодичность 1 недели. Псевдокод, производящий микросхемы по курсу 10,23 мега микросхем в секунду, подразумевает, что 10.23x10^6 микросхемы существуют в течение каждой секунды. Поскольку одна неделя содержит 604 800 секунд, длина Псевдокода в один период 10.23*10^6 * 604800 = 6187104000000 микросхем. Чтобы сгенерировать Псевдокод наряду с длиной последовательности, количество микросхем, которые истекают с начала недели, необходимо, который вычисляется от HOWTOW
значение первого подкадра и его битного индекса.
numSecondsElapsed = (svparams.HOWTOW-1)*6; % Because each subframe is processed in 6 seconds
Инициализируйте файл, в который записана форма волны.
if WriteWaveformToFile == 1 bbWriter = comm.BasebandFileWriter('Waveform.bb',10.23e6,0); end
Независимо процесс каждый бит данных навигации в цикле.
for iDataBit = NavDataBitStartIndex:NavDataBitEndIndex spreadedCA = xor(CACode,lnavData(iDataBit)); M = 2; % Modulation order (for BPSK, M = 2) bpskSigCA = pskmod(double(spreadedCA),M);
Из-за этих двух причин, количество микросхем Псевдокода, которые обрабатываются незадолго до запуска бита данных в факторе, вычисляется как показано в этом коде.
Каждую секунду 10.23*10^6 микросхемы Псевдокода обрабатываются.
Каждый бит данных распространен с numPChipsPerDataBit
количество микросхем Псевдокода.
numPChipsPassed = round(numSecondsElapsed*10.23*10^6+(iDataBit-1)*numPChipsPerDataBit);
Сгенерируйте псевдокод.
PCode = HelperGPSPCode(numPChipsPerDataBit,svparams.PRNIdx,numPChipsPassed); spreadedWithP = xor(PCode,lnavData(iDataBit));
BPSK - модулирует псевдокод.
bpskSigP = pskmod(double(spreadedWithP),M);
Сгенерируйте основополосную форму волны сигнала GPS L1 путем размещения Псевдокода в I-ветвь и C/A-code на Q-ветви. Прежде чем основополосная форма волны сгенерирована, сигнал BPSK, который сгенерирован путем распространения с C/A-code, повторяется 10 раз (потому что Псевдокод в 10 раз быстрее, чем C/A-code). В отличие от линии связи, которая обычно имеет импульсный формирующий фильтр в цифровой основной полосе, передатчик GPS не имеет импульсного формирующий фильтра. Для точного расположения спутниковый ресивер должен воспроизвести распространяющуюся форму волны, которая может быть выполнена меандром. Спектральный КПД сигнала не является главным беспокойством в приложениях навигации.
repeatedBPSKSigCA = repelem(bpskSigCA(:),10); gpsBBWaveform = bpskSigP(:) + 1j*repeatedBPSKSigCA(:); if WriteWaveformToFile == 1 bbWriter(gpsBBWaveform); end end
Закройте файл, если он открыт.
if WriteWaveformToFile == 1 release(bbWriter); end
Постройте автокорреляцию C/A-code и визуализируйте спектр сигналов GPS.
if ShowVisualizations
Располагающиеся коды, спроектированные для GPS, имеют очень хорошие свойства автокорреляции и взаимной корреляции. Автокорреляция последовательности является почти нулем кроме в нулевую задержку, и взаимная корреляция двух различных последовательностей является почти нулем. Когда C/A-code является периодическим с периодом 1 023 битов, автокорреляция имеет пик для задержки каждых 1 023 битов.
lags = (-1023:1023).'; plot(lags,xcorr(real(bpskSigCA(1:1023)),1023)); grid on; xlabel('Number of Samples Delayed') ylabel('Autocorrelation Value') title('Autocorrelation of GPS C/A-Code')
График спектра показывает сравнение степени спектральная плотность распространения сигналов с C/A-code и Псевдокодом. График показывает, что Псевдокод более широк.
repeatFactor = 40; % Repeat the generated BPSK signal of C/A-code to see the adjacent bands spectrum updataCA = repmat(bpskSigCA(:).',repeatFactor,1); updataCA = real(updataCA(:)); % Repeat the generated BPSK signal of P-code to see the adjacent bands spectrum updataP = repmat(bpskSigP(:).',repeatFactor/10,1); % Repeat the P-code ten times less as every chip of C/A-code correspond to 10 chips of P-code updataP = real(updataP(:)); caAndPCodeScope = dsp.SpectrumAnalyzer('SampleRate',prnCAChipRate*repeatFactor, ... 'PlotAsTwoSidedSpectrum',true, ... 'SpectrumType','Power density', ... 'AveragingMethod','Exponential', ... 'SpectrumUnits','dBW', ... 'YLimits',[-130, -50], ... 'Title','Comparison of Power Spectral Density of GPS C/A-Code and P-Code Signal', ... 'ShowLegend',true, ... 'ChannelNames',{'C/A-code spectrum','P-code spectrum'}); caAndPCodeScope([updataCA,updataP]);
Постройте степень сигнала спектральная плотность в основной полосе. Чтобы наблюдать смежный полосатый спектр для сигнала GPS, повторите сигнал в основной полосе.
repeatFactor = 4; % Repeating the generated BPSK signal to see the adjacent bands spectrum updata = repmat(gpsBBWaveform(:).', repeatFactor, 1); updata = updata(:); bbscope = dsp.SpectrumAnalyzer('SampleRate',10*prnCAChipRate*repeatFactor, ... 'PlotAsTwoSidedSpectrum',true, ... 'SpectrumType','Power density', ... 'AveragingMethod','Exponential', ... 'SpectrumUnits','dBW', ... 'YLimits',[-120,-50], ... 'Title', 'Power Spectral Density of Complex Baseband GPS Signal'); bbscope(updata); end
Этот пример использует три структуры: svparams
, ephemerisparams
, и almanacparams
. Эти структуры генерируют биты данных GPS и сигнал навигации в основной полосе. Можно также заменить параметры в каждой из этих структур и наблюдать, как данные о GPS сгенерированы. Можно изменить эфемеридные параметры с существующим действительным набором данных и передать те параметры в эфемериду. Кроме того, можно задать собственный файл альманаха. При использовании собственного файла альманаха, номера недели в файле альманаха и номера недели в svparams
структура должна соответствовать.
Далее, этот пример показывает, как сгенерировать основополосную форму волны GPS, которая может быть расширена, чтобы сгенерировать форму волны промежуточной частоты (IF) от основополосной формы волны путем умножения сигнала косинуса на I-ветви и сигнала синуса на Q-ветви.
Кроме того, этот пример показывает, как сгенерировать форму волны GPS от одного спутника, который может быть объединен наряду с несколькими спутниковые коды PRN, чтобы получить интегрированный сигнал.
Этот пример использует эти данные и файлы помощника:
gpsAlmanac.txt - Файл данных альманаха загружается с веб-сайта Navcen
HelperGPSAlmanac2Struct.m - Преобразуйте текстовый файл альманаха к структуре
HelperGPSCACode.m - Сгенерируйте C/A-code, чтобы распространить данные
HelperGPSPCode.m - Сгенерируйте Псевдокод, чтобы распространить данные
HelperGPSLNAVData.m - Создайте устаревшую систему координат навигации из данных, которые находятся в структурах
[1] IS-GPS-200, версия: L; Космический сегмент GPS NAVSTAR / Пользовательские Интерфейсы Сегмента Навигации; 14 мая 2020; Код Ident: 66RP1.
[2] ICD-GPS-240, версия: C; сегмент управления GPS Navstar к пользовательским интерфейсам сообщества поддержки; 4 марта 2019; код Ident: 66RP1.