В этом примере показано, как реализовать приемник Automatic Dependent Surveillance - Broadcast (ADS-B) для генерации HDL-кода и аппаратной реализации. Этот пример декодирует расширенные сообщения squitter ADS-B, которые могут использоваться для отслеживания самолета. HDL-оптимизированная модель в этом примере использует блоки Simulink ®, которые поддерживают генерацию HDL-кода, для реализации Приемник. Эта пример модели используется для обработки в реальном времени в HW/SW Co-Design реализации приемника ADS-B с использованием аналоговых устройств AD9361/AD9364 (Пакет поддержки Communications Toolbox для Xilinx Zynq-Based Radio), который требует Пакета поддержки Communications Toolbox™ для Xilinx ® Zynq ®
ADS-B является системой управления воздушным движением и контроля. Широковещательные сообщения (приблизительно один раз в секунду) содержат информацию о рейсе, включая положение и скорость. Введение в технологию ADS-B и режимы передачи см. в [1]. Подсистема HDLRx оптимизирована для генерации HDL-кода. Захваченный принятый сигнал направляется в переднюю часть приемника (подсистему HDLRx). Потоковый выход приемника буферизуется и передается в функцию MapResults MATLAB ®, чтобы просмотреть выход.
Модель поддерживает как режим Normal, так и режимы Accelerator. Структура верхнего уровня модели приемника ADS-B показана на следующем рисунке.
Входные данные приемника регистрируются с помощью HW/SW Co-Design Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364 (Communications Toolbox Support Package for Xilinx Zynq-Based Radio), работающего на платформе Zynq ®. Захваченные данные представляют принятый сигнал основной полосы частот со частотой дискретизации 4 МГц. Данные содержат 8 системы координат расширенных сообщений squitter. Передатчик ADS-B модулирует 112-битовые сообщения с расширенным квадратиром с помощью 2-битовой импульсно-позиционной модуляции и добавляет 16-битовый префикс. Затем, чтобы сгенерировать данные 4 МГц, каждое 240-битовое сообщение заполняется нулями и усиливается на 2.
Эта схема показывает подробную структуру подсистемы HDLRx.
Перечисленные здесь подсистемы описаны далее в следующих разделах.
1. Вычисление величины - Находит комплексный модуль принимаемого входного сигнала
2. Вычисление порога - вычисляет пороговое значение на основе принятого входного сигнала
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 |.
Блок Gain преобразует полученный вход с 12-битной на 16-битный размер слова.
Для реализации «|L|+0.4|S| алгоритма» смотрите следующую модель.
2. Расчет порога
Подсистема Threshold Calculation вычисляет энергию сигнала и применяет коэффициент масштабирования, чтобы создать порог для обнаружения преамбулы. Фильтр Скользящего Среднего является архитектурой последовательной конечной импульсной характеристики с 32 коэффициентами, который действует на значениях величин. Коэффициенты конечной импульсной характеристики выбираются, чтобы найти среднюю энергию принимаемого сигнала. Этот пример масштабирует энергию сигнала на 5, чтобы обнаружить действительные преамбулы ADS-B. Для получения дополнительной информации о конечная импульсная характеристика см. раздел «Дискретный конечная импульсная характеристика».
3. Корреляция с преамбулой
Подсистема корреляции с преамбулой коррелирует принятый сигнал с последовательностью ссылок/преамбул ADS-B [1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0] с использованием пикового фильтра обнаружения. Фильтр пикового обнаружения является архитектурой последовательной конечной импульсной характеристики, сконфигурированной с коэффициентами, которые соответствуют последовательности преамбул. Корреляция преамбулы идентифицирует потенциальные передачи ADS-B и согласовывает наш алгоритм обнаружения битов с первым битом сообщения. Преамбула обнаруживается, если пиковая амплитуда превышает масштабированное пороговое значение. После обнаружения преамбулы значение корреляции передается как вход (SyncCorr) в блок Timing Control.
4. Управление синхронизацией
Блок Timing Control является конечным автоматом, который обнаруживает преамбулу и генерирует сигналы управления ActivateBP и Reset, которые указывают начало системы координат, конец системы координат и состояние сброса в блоки Bit Process и Compute CRC и Frame Validation.
5. Битовый процесс
Подсистема Bit Process демодулирует и понижает частоту принимаемого сигнала 4 МГц в битовую последовательность 1 МГц. Каждый бит данных представлен четырьмя битами PPM. Для демодуляции блок находит сумму первых двух бит и последних двух бит каждого квадруплета. Затем он сравнивает суммы, чтобы определить исходное значение бита. Допустимый выход сигнал утверждается каждый четвертый цикл для выравнивания с битовой последовательностью 1 МГц.
6. Вычисление CRC и валидации систем координат
Эта подсистема проверяет несоответствие в 24-разрядной контрольной сумме каждого 88-разрядного сообщения. Блок CRC нуждается в указании контуров системы координат, чтобы определить, какие биты являются контрольной суммой. Восходящее ребро сигнала ActivateBP, сгенерированного блоком Timing Control, указывает начало системы координат, а падающее ребро указывает конец системы координат. Начальный сигнал задерживается, чтобы соответствовать задержке демода. Когда выходной сигнал блока err равен нулю, система координат является действительным сообщением ADS-B. Подсистема буферизует биты сообщения до тех пор, пока сообщение не подтвердится, что нет ошибки CRC.
Вы можете запустить карту и начать логгирование текстовых файлов с помощью двух переключателей ползунка (Launch Map и Логгирование).
Launch Map - Запуск карты, где можно просмотреть отслеживаемые рейсы. ПРИМЕЧАНИЕ. Для использования этой функции необходимо иметь лицензию Mapping Toolbox™.
Логгирование данных - сохраните захваченные данные в файле TXT. Можно использовать сохраненные данные для последующей обработки.
Подсистема HDLRx демодулирует и декодирует данные ADS-B, и выход передается через Deserializer1D блок и функцию MapResults MATLAB, которая выдает шестнадцатеричную выходную информацию о самолете. Каждый расширенный пакет S. squitter Mode содержит частичную информацию (любой идентификатор самолета, идентификатор Рейса, высота, скорость и местоположение) о самолете, и таблица составлена из нескольких сообщений. Выход получен как показано на следующей схеме. Статистика пакетов включает количество обнаруженных пакетов, количество правильно декодированных пакетов и частоту ошибок пакетов (PER). Эти детали самолета соответствуют переданным значениям из примера реализации совместного проектирования HW/SW приемника ADS-B с использованием аналоговых устройств AD9361/AD9364 (Пакет поддержки Communications Toolbox для Xilinx Zynq-Based Radio).
Регистры конвейера были добавлены в модель, чтобы убедиться, что подсистема HDLRx не имеет длинного критического пути. HDL-код, сгенерированный из подсистемы HDLRx, был синтезирован с использованием Xilinx ® Vivado ® на FPGA Zynq с устройством 7z045ffg900-2, и проект достигает тактовой частоты 264,2 МГц, что достаточно для декодирования ADI в реальном времени Сгенерированный HDL-код тестируется и проверяется в примере HW/SW Co-Design реализации приемника ADS-B с использованием аналоговых устройств AD9361/AD9364 (Пакет поддержки Communications Toolbox для Xilinx Zynq-Based Radio). Чтобы проверить и сгенерировать HDL-код, на который ссылаются в этом примере, необходимо иметь лицензию HDL- Coder™. Следующая таблица показывает результаты синтеза этого примера.
Можно использовать команды makehdl и makehdltb для генерации HDL-кода и испытательного стенда для подсистемы HDLRx. Чтобы сгенерировать HDL-код, используйте следующую команду:
makehdl('commadsbrxhdl/HDLRx')
Чтобы сгенерировать испытательный стенд, используйте следующую команду:
makehdltb('commadsbrxhdl/HDLRx')
Международная организация гражданской авиации, приложение 10, том 4. Системы наблюдения и предотвращения столкновений.
Marvin E. Frerking, Цифровая обработка сигналов в системах связи, Springer Science Business Media, New York,1994.