В этом примере показано, как реализовать приемник автоматического зависимого наблюдения - широковещания (ADS-B) для генерации кода HDL и реализации аппаратных средств. Этот пример декодирует сообщения расширенного сквиттера ADS-B, которые могут использоваться для отслеживания самолета. Оптимизированная для ЛПВП модель в этом примере использует блоки Simulink ®, которые поддерживают генерацию кода ЛПВП для реализации приемника ADS-B. Эта модель используется для обработки в режиме реального времени при совместном проектировании аппаратных средств и программного обеспечения ADS-B Receiver Using Analog Devices AD9361/AD9364 (Communications Toolbox Support Package for Xilinx Zynq-Based Radio), для которой требуется пакет поддержки коммуникационных Toolbox™ для радиоприемника Xilinx ® Zynq ®.
ADS-B - система управления воздушным движением и контроля за ним. Широковещательные сообщения (приблизительно один раз в секунду) содержат информацию о полете, включая положение и скорость. Описание технологии ADS-B и режимов передачи см. в [1]. Подсистема HDLRx оптимизирована для генерации кода HDL. Захваченный принятый сигнал поступает в потоковом режиме во внешний интерфейс приемника (подсистема HDLRx). Потоковые выходные данные приемника буферизуются и передаются в функцию MapResults MATLAB ® для просмотра выходных данных.
Модель поддерживает режимы Обычный (Normal) и Ускоритель (Accelerator). Структура верхнего уровня модели приемника ADS-B показана на следующем рисунке.
![]()
Входные данные приемника регистрируются с помощью совместного проектирования аппаратных средств и программного обеспечения ADS-B Receiver Using Analog Devices AD9361/AD9364 (Communications Toolbox Support Package for Xilinx Zynq-Based Radio) на платформе Zynq ®. Захваченные данные представляют принятый сигнал основной полосы частот с частотой дискретизации 4 МГц. Данные содержат 8 кадров расширенных сообщений сквиттера. Передатчик ADS-B модулирует 112-битовые сообщения расширенного сквиттера с использованием 2-битовой импульсно-позиционной модуляции и добавляет 16-битовый префикс. Затем для генерации данных 4 МГц каждое 240-битовое сообщение заполняется нулями и усиливается на 2.
На этой схеме показана подробная структура подсистемы HDLRx.
![]()
Перечисленные здесь подсистемы описаны далее в следующих разделах.
1. Расчет величины - поиск комплексного модуля принятого входного сигнала
2. Threshold Calculation - вычисляет пороговое значение на основе уровня принимаемого входного сигнала
3. Корреляция с преамбулой - коррелирует принятый сигнал с опорным сигналом для обнаружения преамбулы
4. Управление синхронизацией - обеспечивает синхронизацию синхронизации для приемника
5. Битовый процесс - декодирует символы с использованием демодуляции PPM
6. Вычисление CRC и проверка кадра - проверка кадра путем проверки на наличие ошибок CRC
1. Расчет величины
Входами в подсистему вычисления величины являются синфазные (вещественные) и квадратурные (мнимые) отсчеты фаз. Эта подсистема выводит модуль комплексного числа. sqrt (I ^ 2 + Q ^ 2) может быть аппроксимирован алгоритмом «| L | + 0,4 * | S |», описанным на странице 238 [2].
![]()
где
| L | - большее значение | I | или | Q |
| S | - меньшее значение | I | или | Q |.
Блок усиления преобразует принятый входной сигнал с 12-разрядной на 16-разрядную длину слова.
![]()
Для реализации алгоритма «| L | + 0.4 | S |» см. следующую модель.
![]()
2. Расчет порога
Подсистема вычисления порога вычисляет энергию сигнала и применяет коэффициент масштабирования для создания порога обнаружения преамбулы. Фильтр скользящего среднего - это архитектура последовательного КИХ-фильтра с 32 коэффициентами, которая оперирует значениями величин. Коэффициенты КИХ-фильтра выбираются для нахождения средней энергии принятого сигнала. В этом примере энергия сигнала масштабируется на 5 для обнаружения действительных преамбул ADS-B. Дополнительные сведения о фильтре FIR см. в разделе Дискретный фильтр FIR (Simulink).
![]()
3. Корреляция с преамбулой
Подсистема корреляции с преамбулой коррелирует принятый сигнал с опорной последовательностью/последовательностью преамбулы ADS-B [1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0] с использованием фильтра обнаружения пиков. Пиковый фильтр обнаружения представляет собой последовательную архитектуру КИХ-фильтра, сконфигурированную с коэффициентами, соответствующими последовательности преамбулы. Корреляция преамбулы идентифицирует потенциальные передачи ADS-B и выравнивает наш алгоритм обнаружения битов с первым битом сообщения. Преамбула обнаруживается, если пиковая амплитуда превышает масштабированное пороговое значение. Как только преамбула обнаружена, значение корреляции передается как вход (SyncCorr) в блок управления синхронизацией.
![]()
4. Управление синхронизацией
Блок управления синхронизацией является конечным автоматом, который обнаруживает преамбулу и генерирует управляющие сигналы ActivateBP и Reset, которые указывают начало кадра, конец кадра и состояние сброса в блоках Bit Process и Compute CRC и Frame Validation.
5. Битовый процесс
Подсистема обработки битов демодулирует и преобразует с понижением частоты принятый сигнал 4 МГц в последовательность битов 1 МГц. Каждый бит данных представлен четырьмя битами PPM. Для демодуляции блок находит сумму первых двух битов и последних двух битов каждого четверного набора. Затем он сравнивает суммы для определения исходного битового значения. Выходной достоверный сигнал подается каждый четвертый цикл для выравнивания с битовой последовательностью 1 МГц.
![]()
6. Вычисление CRC и проверка кадров
Эта подсистема проверяет несоответствие в 24-битной контрольной сумме каждого 88-битного сообщения. Блок CRC нуждается в указании границ кадра, чтобы определить, какие биты являются контрольной суммой. Передний фронт сигнала ActivateBP, сформированного из блока управления синхронизацией, указывает начало кадра, а задний фронт указывает конец кадра. Начальный сигнал задерживается, чтобы соответствовать задержке демодуляции. Когда выходной сигнал ошибки блока равен нулю, кадр является действительным сообщением ADS-B. Подсистема буферизирует биты сообщения до тех пор, пока сообщение не будет подтверждено без ошибки CRC.
![]()
Можно запустить карту и журнал текстовых файлов с помощью двух переключателей (Запуск карты и Журнал данных).
Карта запуска - карта, на которой можно просмотреть отслеживаемые рейсы. Для использования этой функции необходимо иметь лицензию Mapping Toolbox™.
Регистрация данных - сохранение собранных данных в файле TXT. Сохраненные данные можно использовать для последующей обработки.
Подсистема HDLRx демодулирует и декодирует данные ADS-B, и вывод передается через блок Deserializer1D и функцию MapResults MATLAB, которая выдает шестнадцатеричную выходную информацию о самолете. Каждый расширенный пакет Squitter Mode S содержит частичную информацию (любую из идентификатора летательного аппарата, идентификатора полета, высоты, скорости и местоположения) о летательном аппарате, и таблица складывается из множества сообщений. Выходные данные получены, как показано на следующей диаграмме. Статистика пакетов включает в себя количество обнаруженных пакетов, количество правильно декодированных пакетов и частоту ошибок пакетов (PER). Эти детали самолета соответствуют переданным ценностям от Внедрения Соразработки HW/SW Приемника ОБЪЯВЛЕНИЙ-B Используя Analog Devices AD9361/AD9364 (Коммуникационный Пакет Поддержки Комплекта инструментов для Xilinx Находящееся в Zynq Радио) пример.

В модель добавлены регистры трубопроводов, чтобы убедиться, что подсистема HDLRx не имеет длинного критического пути. Код HDL, сгенерированный из подсистемы HDLRx, был синтезирован с использованием Xilinx ® Vivado ® на Zynq FPGA с устройством 7z045ffg900-2, и конструкция достигает тактовой частоты 264,2 МГц, достаточной для декодирования сигналов ADS-B в реальном времени. Сгенерированный HDL-код тестируется и проверяется в примере в реальном времени HW/SW CoDesign Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364 (пакет поддержки Communications Toolbox для радиоприемника на базе Xilinx Zynq). Для проверки и генерации кода HDL, на который ссылается этот пример, необходимо иметь лицензию HDL Coder™. В следующей таблице приведены результаты синтеза этого примера.

Команды makehdl и makehdltb можно использовать для создания кода HDL и тестового стенда для подсистемы HDLRx. Для создания кода HDL используется следующая команда:
makehdl('commadsbrxhdl/HDLRx')
Для создания тестового стенда используйте следующую команду:
makehdltb('commadsbrxhdl/HDLRx')
Международная организация гражданской авиации, приложение 10, том 4. Системы наблюдения и предотвращения столкновений.
Марвин Э. Фреркинг, цифровая обработка сигналов в системах связи, Springer Science Business Media, Нью- York,1994.