Часть 3. Проверка алгоритма декодирования сигналов Mode S с использованием подхода Hardware-in-the-Loop (HIL)

Introduction

После реализации любого алгоритма обработки сигналов в MATLAB или Simulink® следующим логичным шагом будет проверка работоспособности алгоритма на реальных данных, полученных от аппаратной программно-определяемой радиосистемы, на которой он будет работать. На первом этапе алгоритм проверяется на различных наборах входных данных, полученных от системы. Это помогает проверить работоспособность алгоритма, но не гарантирует, что он будет работать должным образом в условиях, отличных от тех, в которых были получены исходные данные, а также что его поведение и производительность будут такими же при различных настройках аналогового входного каскада и цифровых блоков программно-определяемой радиосистемы. Чтобы проверить все эти аспекты, очень полезно иметь возможность запускать алгоритм в режиме реального времени, получая на вход данные в режиме реального времени и настраивая программно-определяемую радиосистему для достижения оптимальной производительности. В этой части серии статей рассматриваются программные инструменты, предоставляемые компанией Analog Devices для обеспечения прямого взаимодействия моделей MATLAB и Simulink с платформами FMCOMMSx SDR. В ней показано, как эти инструменты можно использовать для проверки моделей ADS-B, представленных во второй части серии статей.2

MATLAB and Simulink IIO System Object

Компания Analog Devices предоставляет полную программную инфраструктуру, которая позволяет моделям MATLAB и Simulink взаимодействовать в режиме реального времени с SDR-платформами FMCOMMSx, подключёнными к системам FPGA/SoC под управлением Linux. Это возможно благодаря системному объекту ввода-вывода™3, который предназначен для обмена данными по протоколу TCP/IP с аппаратной системой для потоковой передачи данных на целевое устройство и с него, управления настройками целевого устройства и мониторинга различных параметров целевого устройства, таких как RSSI. На рисунке 1 представлена высокоуровневая архитектура программной инфраструктуры и схема передачи данных между компонентами системы.

Рисунок 1. Блок-схема программной инфраструктуры.
Рисунок 1. Блок-схема программной инфраструктуры.

Системный объект IIO основан на спецификации системных объектов MathWorks4 и предоставляет интерфейсы для передачи данных и управления, с помощью которых модели MATLAB/Simulink взаимодействуют с платформами на базе IIO. Эти интерфейсы указаны в файле конфигурации, который связывает интерфейс системного объекта с каналами передачи данных IIO или с атрибутами IIO. Это делает реализацию системного объекта IIO универсальной и позволяет использовать его с любой платформой IIO, просто изменив файл конфигурации. Некоторые платформы, для которых в репозитории ADI на GitHub доступны файлы конфигурации и примеры, включают в себя SDR-платы AD-FMCOMMS2-EBZ/AD-FMCOMMS3-EBZ/AD-FMCOMMS4-EBZ/AD-FMCOMMS5-EBZ и высокоскоростную плату для сбора данных AD-FMCDAQ2-EBZ. Связь между системным объектом IIO и целевым устройством осуществляется через инфраструктуру сервера и клиента libiio. Сервер работает на встроенном устройстве под управлением Linux и обеспечивает обмен данными в режиме реального времени между устройством и локальными и удалёнными клиентами. Библиотека libiio абстрагируется от низкоуровневых особенностей аппаратного обеспечения и предоставляет простой, но полноценный программный интерфейс, который можно использовать для сложных проектов с различными языковыми привязками (C, C++, C#, Python).

В следующих разделах статьи приведены реальные примеры использования системного объекта IIO для проверки моделей ADS-B в MATLAB и Simulink. Для проверки работы алгоритма обнаружения и декодирования сигналов ADS-B использовалась платформа SDR AD-FMCOMMS3-EBZ6, подключённая к плате ZedBoard7 под управлением дистрибутива Analog Devices Linux, как показано на рисунке 2.

Рисунок 2. Аппаратная установка для проверки алгоритма ADS-B.
Рисунок 2. Аппаратная установка для проверки алгоритма ADS-B.

Проверка алгоритма MATLAB ADS-B с использованием системного объекта IIO

Для проверки работы алгоритма декодирования ADS-B в MATLAB с использованием данных в реальном времени, полученных с платформы AD-FMCOMMS3-EBZ SDR, был разработан скрипт MATLAB для выполнения следующих операций:

  • Вычисление зоны на поверхности Земли на основе входных данных пользователя.

  • Создание и настройка системного объекта IIO

  • Настройка аналогового интерфейса AD-FMCOMMS3-EBZ и цифровых блоков с помощью системного объекта ввода-вывода

  • Получение кадров данных с платформы SDR с помощью системного объекта IIO

  • Обнаружение и декодирование данных ADS-B

  • Отображение декодированной информации ADS-B

После создания объекта системы ввода-вывода его необходимо настроить, указав IP-адрес системы SDR, имя целевого устройства, а также количество и размеры каналов ввода/вывода. На рисунке 3 показан пример создания и настройки объекта системы ввода-вывода MATLAB.

Рисунок 3. Создание и настройка системного объекта MATLAB IIO.
Рисунок 3. Создание и настройка системного объекта MATLAB IIO.

Затем системный объект ввода-вывода используется для установки атрибутов AD9361 и получения сигналов ADS-B. Атрибуты AD9361 настраиваются с учётом следующих факторов:

 Рисунок 4. MATLAB libiio задаёт параметры AD9361.
Рисунок 4. MATLAB libiio задаёт параметры AD9361.

С платформами на базе AD9361 всё довольно просто. Скорость передачи данных обычно равна скорости приёма данных и в конечном счёте зависит от алгоритма основной полосы частот. В этом примере, поскольку алгоритм декодирования рассчитан на частоту дискретизации 12,5 млн выборок в секунду, скорость передачи данных на AD9361 настроена соответствующим образом. Таким образом, полученные выборки можно сразу использовать в алгоритме декодирования без дополнительных операций усечения или интерполяции.

Регулятор полосы пропускания радиочастотного сигнала устанавливает полосу пропускания аналогового низкочастотного фильтра приёмника AD9361 для подавления сглаживания и внеполосных сигналов. Для успешной демодуляции принимаемых сигналов система должна обеспечивать максимальное соотношение сигнал/шум (SNR). Для этого необходимо установить как можно более узкую полосу пропускания радиочастотного сигнала, соблюдая при этом требования к равномерности амплитудно-частотной характеристики и подавлению внеполосных сигналов, чтобы минимизировать уровень внутриполосных шумов и паразитных сигналов. Если полоса пропускания RF установлена шире, чем это необходимо, линейный динамический диапазон АЦП будет уменьшен из-за дополнительного шума. Аналогичным образом, динамический диапазон АЦП, не содержащий паразитных сигналов, будет уменьшен из-за снижения уровня подавления внеполосного сигнала, что приведёт к уменьшению динамического диапазона приёмника в целом. Таким образом, установка оптимальной ширины полосы частот имеет решающее значение для получения желаемых внутриполосных сигналов и подавления внеполосных сигналов. Наблюдая за спектром принимаемых сигналов, мы приходим к выводу, что 4 МГц — это подходящее значение для полосы пропускания радиочастотного сигнала.

Помимо настройки аналоговых фильтров AD9361 с помощью атрибута RF bandwidth, мы также можем повысить эффективность декодирования, включив цифровые КИХ-фильтры на AD9361 с помощью системного объекта IIO, как показано на рисунке 5. В соответствии с характеристиками спектра сигнала ADS-B мы разработали КИХ-фильтр с частотой дискретизации 12,5 млн выборок в секунду, полосой пропускания 3,25 МГц и полосой задерживания 4 МГц. Таким образом, мы можем сосредоточиться на интересующем нас диапазоне частот.

Рис. 5. Включение соответствующего КИХ-фильтра на AD9361 с помощью libiio.
Рис. 5. Включение соответствующего КИХ-фильтра на AD9361 с помощью libiio.

Adsb.ftr — это файл, содержащий коэффициенты КИХ-фильтра, разработанного с помощью приложения Analog Devices AD9361 Filter Wizard MATLAB.8 Этот инструмент позволяет не только создавать фильтры нижних частот общего назначения, но и выравнивать амплитуду и фазу на других этапах обработки сигнала.

Рис. 6. КИХ-фильтр, разработанный для сигналов ADS-B с помощью мастера фильтров MATLAB AD9361.
Рис. 6. КИХ-фильтр, разработанный для сигналов ADS-B с помощью мастера фильтров MATLAB AD9361.

Универсальный приёмопередатчик AD9361 с широкими возможностями настройки имеет несколько режимов управления коэффициентом усиления, что позволяет использовать его в различных областях. Параметр «Режим усиления» системного объекта ввода-вывода выбирает один из доступных режимов: ручной, slow_attack, гибридный и fast_attack. Чаще всего используются режимы ручной настройки, slow_attack и fast_attack. Режим ручного управления коэффициентом усиления позволяет процессору основной полосы частот (BBP) управлять коэффициентом усиления. Режим Slow_attack предназначен для сигналов с медленными изменениями, а режим fast_attack — для сигналов, которые «вспыхивают» и гаснут. Режим усиления сильно зависит от мощности принимаемых сигналов. Если сигнал слишком сильный или слишком слабый, рекомендуется использовать ручной режим или режим slow_attack. В остальных случаях подойдёт режим fast_attack. В случае с ADS-B режим усиления fast_attack даёт наилучшие результаты из-за прерывистого характера этих сигналов. Режим fast_attack необходим для этого сигнала, поскольку в нём есть преамбула, и система автоматической регулировки усиления должна реагировать достаточно быстро, чтобы уловить первый бит. При отсутствии сигнала существует разница между временем нарастания — временем, за которое снижается коэффициент усиления, — и временем спада — временем, за которое коэффициент усиления увеличивается. Цель состоит в том, чтобы быстро снизить коэффициент усиления, чтобы на первом бите отображалась корректная «1», но при этом не увеличивать коэффициент усиления между битами.

В конце концов, в зависимости от того, как вы настроили TX_LO_FREQ и RX_LO_FREQ, эту модель можно использовать двумя способами: с использованием предварительно записанных данных (обратная связь по радиочастоте) и с использованием данных в реальном времени.

Предварительно собранные данные

В этом случае мы передаём и принимаем предварительно захваченные сигналы ADS-B с помощью AD-FMCOMMS3-EBZ. Эти сигналы сохраняются в переменной newModeS.

Рис. 7. Определение входных данных с использованием предварительно записанных сигналов ADS-B.
Рис. 7. Определение входных данных с использованием предварительно записанных сигналов ADS-B.

В этом случае необходимо, чтобы TX_LO_FREQ = RX_LO_FREQ. Это может быть любое значение частоты гетеродина, поддерживаемое AD-FMCOMMS3-EBZ. Из-за особенностей предварительно записанных данных в них содержится много корректных данных ADS-B, поэтому это хороший способ проверить правильность настройки оборудования.

Данные в режиме реального времени

В этом случае мы получаем сигналы ADS-B в режиме реального времени по радиоканалу, а не сигналы, передаваемые системой AD-FMCOMMS3-EBZ. Согласно спецификации ADS-B, сигнал передаётся на центральной частоте 1090 МГц, поэтому в этом случае требования следующие:

  • RX_LO_FREQ = 1090 МГц, TX_LO_FREQ — частота, значительно отличающаяся от 1090 МГц, чтобы избежать помех.

  • Используйте на стороне приёмника подходящую антенну, способную работать в диапазоне 1090 МГц, например, мобильную антенну ADS-B Double 1/2 Wave9. Использование плохо настроенной или некачественной антенны приведёт к уменьшению дальности действия вашего радара.

Если всё настроено правильно, для запуска модели MATLAB достаточно ввести следующую команду:

[rssi1,rssi2]=ad9361_ModeS('ip','data source',channel);

где ip — IP-адрес платы FPGA, а source data указывает на источник данных принимаемого сигнала. В настоящее время эта модель поддерживает источники данных «предварительно записанные» и «в реальном времени». Channel указывает, какие каналы используются для приёма сигналов: канал 1 или канал 2 AD-FMCOMMS3-EBZ.

Например, следующая команда получает предварительно записанные данные на канале 2:

[rssi1,rssi2]=ad9361_ModeS('192.168.10.2','pre-captured',2);

По завершении моделирования вы получите значения RSSI для обоих каналов, а также таблицы с результатами, показанные ниже:

Рисунок 8. Таблица результатов, показанная в конце моделирования.
Рисунок 8. Таблица результатов, показанная в конце моделирования.

В этой таблице результатов представлена информация о воздушных судах, обнаруженных во время моделирования. С подходящей антенной эта модель способна улавливать и декодировать сигналы воздушных судов в радиусе 80 миль (около 130 км - прим. пер.) с помощью AD-FMCOMMS3-EBZ. Поскольку существует два типа сообщений в режиме S (56 мкс или 112 мкс), некоторые из них содержат больше информации, чем другие.

При тестировании этой модели с реальными сигналами ADS-B для успешного декодирования очень важна мощность сигнала, поэтому убедитесь, что антенна находится в зоне прямой видимости воздушного судна. Мощность принимаемого сигнала можно оценить по значениям RSSI на обоих каналах. Например, при приёме сигналов на канале 2 - значение RSSI на канале 2 - должно быть, значительно выше, чем на канале 1. По анализатору спектра можно определить, есть ли полезные данные.

Качество радиочастотного сигнала

Для любого радиочастотного сигнала должен быть показатель качества. Например, для сигналов, подобных QPSK, у нас есть величина вектора ошибки (EVM). Для сигналов ADS-B недостаточно просмотреть выходные данные слайсера для получения правильных сообщений, как показано на рисунке 8. Нам нужен показатель для определения качества ADS-B/импульсной позиционной модуляции, чтобы мы могли определить, лучше ли одна настройка, чем другая.

В функции ModeS_BitDecode4.m есть переменная diffVals, которую можно использовать в качестве такого показателя. Эта переменная представляет собой вектор размером 112 × 1. Для каждого декодированного бита в одном сообщении в Mode S она показывает, насколько он отклоняется от порогового значения. Другими словами, насколько каждый декодированный бит отклоняется от правильного решения. Очевидно, что чем больше отклонение, тем точнее результат декодирования. С другой стороны, если запас невелик, это означает, что решение находится на грани допустимого, поэтому велика вероятность, что декодированный бит будет неверным.

На следующих двух рисунках сравниваются значения diffVals, полученные от приёмников ADS-B с КИХ-фильтром и без него. Если посмотреть на ось Y, то можно заметить, что при использовании КИХ-фильтра значение diffVals больше, независимо от того, находится ли оно в верхней, нижней или средней точке. Однако без КИХ-фильтра значения diffVals для некоторых битов очень близки к 0, что означает, что результаты декодирования могут быть неверными. Таким образом, мы можем убедиться, что использование подходящего КИХ-фильтра улучшает качество сигнала для декодирования.

Рис. 9. Значения diffVals, полученные с помощью приёмника ADS-B с КИХ-фильтром.
Рис. 9. Значения diffVals, полученные с помощью приёмника ADS-B с КИХ-фильтром.
Рис. 10. Значения diffVals, полученные от приёмника ADS-B без КИХ-фильтра.
Рис. 10. Значения diffVals, полученные от приёмника ADS-B без КИХ-фильтра.

Алгоритм MATLAB ADS-B с использованием системного объекта IIO можно скачать из репозитория ADI на GitHub.10

Проверка алгоритма Simulink ADS-B с использованием системного объекта IIO

Модель Simulink основана на модели, представленной во второй части серии статей.2 Детектор и декодер взяты напрямую из этой модели, а для приёма сигнала и аппаратного обеспечения в моделировании контура мы добавили системный объект Simulink IIO.

Исходная модель работает с частотой дискретизации 1 и размером кадра 1. Однако системный объект Simulink IIO работает в буферном режиме: он накапливает определённое количество выборок, а затем обрабатывает их. Чтобы исходная модель работала с системным объектом, мы добавили между ними два блока: unbuffer, для размера кадра равному 1, и rate transition, чтобы сделать частоту дискретизации равной 1. Таким образом, мы сохранили исходную модель без изменений.

Рисунок 11. Модель Simulink для захвата и декодирования сигналов ADS-B.
Рисунок 11. Модель Simulink для захвата и декодирования сигналов ADS-B.

Системный объект Simulink IIO настраивается следующим образом. Как и в MATLAB, создаётся системный объект, а затем определяются IP-адрес, имя устройства, а также количество и размеры каналов ввода/вывода, связанных с этим системным объектом.

Рисунок 12. Системный объект Simulink IIO.
Рисунок 12. Системный объект Simulink IIO.

Входные и выходные порты этого блока Simulink, соответствующего системному объекту IIO, определяются в диалоговом окне свойств блока объекта, а также в файле конфигурации, специфичном для целевой платформы ADI SDR. Входные и выходные порты делятся на порты данных и управляющие порты. Порты данных используются для приёма/передачи буферов непрерывных данных из целевой системы и обратно в режиме обработки на основе кадров, а управляющие порты — для настройки и мониторинга различных параметров целевой системы. Количество и размер портов данных настраиваются в диалоговом окне конфигурации блока, а управляющие порты определяются в файле конфигурации. Атрибуты AD9361 настраиваются в соответствии с теми же факторами, которые были учтены в модели MATLAB. Здесь можно применить все теории и методы, использованные в модели MATLAB.

В зависимости от того, как вы настроили TX_LO_FREQ и RX_LO_FREQ, эту модель Simulink можно запускать в двух режимах: с использованием предварительно записанных данных DataIn и с использованием текущих данных. Например, если использовать предварительно записанные данные, то в конце моделирования в командном окне можно увидеть следующие результаты.

Рисунок 13. Результаты в командном окне по завершении моделирования с использованием предварительно собранных данных.
Рисунок 13. Результаты в командном окне по завершении моделирования с использованием предварительно собранных данных.

Вместо таблицы результатов, показанной в модели MATLAB, здесь результаты представлены в текстовом формате.

Модель Simulink ADS-B с использованием системного объекта IIO можно скачать из репозитория ADI на GitHub.11

Заключение

В этой статье рассказывается о моделировании Hardware-in-the-Loop (HIL) с использованием инфраструктуры libiio от Analog Devices. С помощью этой инфраструктуры можно протестировать алгоритмы MATLAB и Simulink для обнаружения и декодирования сигналов ADS-B на реальных сигналах и реальном оборудовании. Поскольку настройка атрибутов сильно зависит от конкретного приложения и формы сигнала, то, что подходит для одного сигнала, может не подойти для другого. Это важный шаг для обеспечения того, чтобы аналоговый интерфейс и цифровые блоки системы SDR были должным образом настроены на нужный алгоритм и форму сигнала, а также чтобы алгоритм был достаточно надёжным и работал должным образом с реальными данными, полученными в различных условиях окружающей среды. После проверки алгоритма можно переходить к следующему этапу: преобразованию алгоритма в HDL-код и код на языке C с помощью инструментов автоматической генерации кода от MathWorks и интеграции этого кода в программируемую логику и программное обеспечение реальной системы SDR. В следующей части серии статей мы расскажем, как сгенерировать код и развернуть его на производственном оборудовании, а также о результатах работы платформы с реальными сигналами ADS-B в аэропорту. Таким образом, мы пройдём все этапы, необходимые для перехода от прототипа системы SDR к её серийному производству.

Ссылки

1 Cozma, Andrei, Di Pu, and Tom Hill. “Four Quick Steps to Production: Using Model-Based Design for SoftwareDefined Radio—Part 1.” Analog Dialogue, Volume 49, Number 3, 2015.

2 Donovan, Mike, Andrei Cozma, and Di Pu. “Four Quick Steps to Production: Using Model-Based Design for Software-Defined Radio—Part 2.” Analog Dialogue, Volume 49, Number 4, 2015.

3 Analog Devices. “IIO System Object.”

4 MathWorks. “What Are System Objects?

5 Analog Devices, “Mathworks_tools.” GitHub repository.

6 Analog Devices. AD-FMCOMMS3-EBZ User Guide.

7 ZedBoard.

8 Analog Devices. MATLAB AD9361 Filter Design Wizard.

9 ADS-B Double 1/2 Wave Mobile Antenna.

10 MATLAB ADS-B Algorithm Using The IIO System Object Source Code.

11 Simulink ADS-B Model Using The IIO System Object Source Code.

Комментарии (0)