September 13, 2021

Многоканальный имитатор сигнала GPS на RFSoC

Многоканальный имитатор GPS - зачем он нужен? Все знают, как используются одноканальные: для тестирования навигационных приемников при разработке и производстве, для обмана систем навигации в мирное и военное время. А зачем нужны многоканальные?

Излучать в эфир сигнал с многоканального имитатора особого смысла нет, если не брать в расчет редкие сценарии типа создания передающих антенных решеток для подавления навигации или имитации группировки спутников в безэховой камере.

А вот подключить такой имитатор к многоканальному навигационному приемнику или системе из разнесенных в пространстве отдельных приемников типа RTK может быть полезно. Такой имитатор можно использовать для отработки тяжело-воспроизводимых сценариев движения носителя, радио-помех и искажений в приемном тракте и в антенной системе. Также такой имитатор можно использовать при отладке и тестировании систем высокоточного позиционирования типа RTK.

Например, вы отлаживаете систему мониторинга стабильности конструкций (Structure Health Monitoring, SHM) на базе RTK. С помощью такого имитатора вы можете создать как сигнал RTK-базы, так и сигнал RTK-роверов на объектах с учетом модельной аварии конструкции и транслировать их на реальные приемники. Вам не нужно устанавливать систему на реально падающее здание или башню и ждать, когда все случится.

Или, например, у вас есть помехозащищенный многоканальный приемник для беспилотника, который нужно проверить. Если сам беспилотник готов к полетам, то можно установить на него приемник и запустить его в небо, создав на земле несколько источников помех требуемой мощности, и наблюдать работу приемника. Хуже, если источники помех должны также перемещаться на беспилотниках. Тогда вам нужна уже целая стая. Такие эксперименты для проверки приемника нужны обязательно, их не избежать, но теперь представьте, что в приемнике обнаружилась некая ошибка. Помехозащита не сработала в определенном сценарии. Все затраты на испытания были впустую, необходимо исправить ошибку и произвести испытания заново.

Или, например, у вас на летательном аппарате установлена система ориентации по навигационным сигналам и нужно ее протестировать на точность, на влияние помех на ее работу и на надежность работы при предельных углах крена и тангажа носителя. Если испытание на реальном носителе будет стоить дорого, то предварительная проверка системы на имитаторе будет очень полезна.

Для изготовления многоканального имитатора нам понадобится многоканальный синхронный синфазный (когерентный) передатчик на частоте навигационного сигнала. Можно качественно сформулировать требования к такому передатчику. К динамическому диапазону, линейности, побочным составляющим в спектре требования не будут жесткими. Хотя суммарный навигационный сигнал имеет сложную структуру, он не должен иметь большой уровень, соответственно, уровень побочных составляющих и линейность не имеют большого значения. Требования к точности воспроизведения фаз сигналов довольно высоки и их можно оценить, например, по требованию к точности систем ориентации: это единицы градусов. Эти требования должны выполняться в диапазоне температур и при заданных изменениях других параметров внешней среды. В системе желательно наличие возможность калибровки фазовых соотношений каналов и точная их корректировка. Хотя создание такой радио-системы решаемая задача, давайте поищем готовое решение.

На наше счастье, единственно правильное решение находится сразу: Xilinx RFSoC. Это система на кристалле (СнК) с программируемыми процессорной и логической частями и восемью или шестнадцатью каналами ЦАП с частотой дискретизации до 6ГГц каждый. Не будем вдаваться в теоретическую часть. За нас это уже сделали, даже на Хабре уже давно есть статья нашего уважаемого коллеги. Поиск в Сети также даст много пищи для вашего воображения. Перейдем к суровой практике.

В мире существует множество готовых плат с RFSoC. Цены на них, конечно, далеки от бюджетов энтузиастов. Вот некоторые примеры с ценами, где их удалось обнаружить:

Сами микросхемы "как бы" доступны для покупки, но цены на них больше цен на платы в разы.

Самое неприятное для российских инженеров, что доступ к этому буйству технологий для нас закрыт Госдепом США. Есть слухи, что избранным разрешен ввоз этих плат и микросхем для целей создания техники 5G, но тем горше это ограничение для нас, всех остальных. Свято место пусто не бывает, и сочится ручеёк RFSoC сквозь прозрачные границы нашей Родины, позволяя нам, неизбранным, прикоснуться к последним чудесам радиотехники. Так автору сотоварищи посчастливилось получить в руки некоторую плату с RFSoC и изготовить на ней многоканальный имитатор GPS. Здесь следует сразу на всякий случай заметить, что плату я получил случайно, и не факт, что мне это все не приснилось. Грешен излишними возлияниями.

Такой имитатор конкретно нам был определенно нужен для отладки техники такого типа. Также мы надеялись, что он нужен еще некоторому небольшому числу коллективов, которые занимаются чем-то подобным.

Итак, берем программный генератор сигнала GPS L1 C/A (opensource) от prof. Takuji Ebinuma. В Сети можно найти множество описаний и примеров его использования, есть одно от меня. Легким движением руки @catscuryделает его многоканальным. Теперь генератор может выдать не один файл, а несколько, согласно описанию, например, такому:

{
  "Gps": {
    "Enable": true,
    "Snr_dbhz": 100
  },
  "Sources": [
  ],
  "PositionRx": [ 59, 30, 350 ],
  "SamplesFreqHz": 5000000,
  "Duration_s": 100,
  "Antennas": [
    [ 0, 0, 0 ],
    [ 1.3321, 2.5322, -1.1856 ],
    [ -1.3321, 2.5322, 1.1856 ]
  ],
  "Format": "int16",
  "Ephemeries": "brdc1650.21n",
  "Outfile": "iqdata.bin"
}

Для трех каналов по 100 секунд всего получается шесть гигабайт шестнадцатиразрядного комплексного сигнала на частоте дискретизации 5 МГц. Все, что теперь нужно, это "проиграть" эти файлы на частоте GPS L1 - 1575.42 МГц. Тогда @gaudima берет RFSoC и делает на нем "проигрыватель". Для этого был создан проект Vivado и софт для petalinux. В проекте задействуем модуль DDR4 на 8ГБ, подключенный к PL части RFSoC, как буфер для проигрываемого сигнала. Сначала софт настраивает все клоки и загружает сигнал в DDR, после этого PL часть читает его по кругу, интерполирует и отдает встроенному в RFSoC ЦАПу для излучения.

Блок-дизайн отвечающий за интерполяцию сигнала и его излучение выглядит так:

  • S_AXIS_DATA - данные идущие из DDR с частотой 5МГц;
  • fir_complier_0 - интерполяционный фильтр, 5МГц -> 250МГц;
  • axis_switch_0 - отключает фильтр при необходимости (интерполирует квадратным окном);
  • four_channel_splitter_0 - разбивает входную шину на 4 канала;
  • usp_rf_data_converter_0 - блок, который управляет АЦП и ЦАП, встроенными в RFSoC.

Настройки некоторых из этих блоков:

Когда все отлажено, берем любезно предоставленный нам для тестирования угломерный приемник (компас) K3X компании Фарватер, и с помощью уважаемого @Jef239 пытаемся увидеть работу угломера, а именно: определение углов пространственной ориентации, на столе. Напомню, что, так как такие угломерные приемники используют фазу несущей (режим RTK), то в реальных условиях для работы угломера нужно соблюсти некоторые условия. Во-первых, три антенны, которые подключаются к приемникам, должны быть не простые, а со стабильным фазовым центром. Во-вторых, в верхней полусфере не должно быть больших препятствий для прямого распространения волн со спутников. Последнее, к примеру, выполнить в большом городе получается не везде. На столе все сильно проще.

Подключаем выходы RFSoC ко входам угломера, запускаем генерацию, запускаем угломер. Нам нужно спешить, так как сейчас возможна длительность непрерывного излучения не более 100 секунд, а для сходимости угломерной задачи нужно время. Только для холодного старта позиционирования приемнику нужно не менее 30 секунд, чтобы получить из сигнала все нужные сообщения. После получения позиции по коду, угломеру еще нужно некоторое немаленькое время, чтобы сошлась его угломерная задача (я в этом плохо понимаю, обращайтесь к @Jef239в комментариях).

Для профессионалов, результаты тонких измерений имитатора (нуль база)

На входы угломера пришлось установить аттенюаторы, чтобы снизить SNR спутников до реального порядка - 50дБ/Гц.

После получения сходимости, угломер начинает выдавать углы ориентации.

Создадим три набора файлов c поворотами по разным осям: курсу, крену и тангажу.

Смещение на 180 градусов по курсу:

Смещение на 40 градусов по крену:

Смещение на 40 градусов по тангажу:

Все работает!

Теперь мы готовим испытания многоканального симулятора на помехозащищенном приемнике. Там мы добавим к сигналам спутников помехи и сможем задавать разное количество помех и их уровни относительно сигналов спутников и испытывать их влияние на приемник не вставая со стула.

Источник:https://habr.com/ru/post/577388/