exponenta event banner

Приемопередатчик ADS-B на основе пакетов

Системы на основе пакетов являются обычными в беспроводной связи. Данные принимаются по эфиру и декодируются как дискретные пакетные данные в вычислительном устройстве. Для данных требований к системе трудно спроектировать систему и реализовать ее непосредственно на SoC, поскольку она часто включает длительные итерации отладки и интеграции на аппаратном обеспечении, поскольку аппаратные эффекты трудно учесть во время разработки. В этом примере вы разработаете приложение для отслеживания самолетов на основе пакетов на основе стандарта ADS-B, разделенного между FPGA и встроенным процессором. В отличие от традиционных методов, вы будете моделировать дизайн приложения с интерфейсом памяти перед реализацией на оборудовании с использованием SoC Blockset, чтобы сократить время разработки. Затем будет выполнена проверка конструкции на оборудовании путем автоматического создания кода из модели.

Поддерживаемые аппаратные платформы:

  • Оценочный комплект Xilinx ® Zynq ® ZC706 + плата Analog Devices ® FMCOMMS2/3/4.

  • ZedBoard™ + Плата FMCOMMS2/3/4 аналоговых устройств.

Задачи проектирования и системные требования

Согласно стандарту ADS-B пакет сообщения содержит в общей сложности 120 бит, который имеет 8-битовую преамбулу и 112 бит информации о летательном аппарате, включая его положение и скорость. Общие сведения о схеме сигнализации Mode-S и технологии ADS-B для отслеживания воздушных судов см. в примере «Отслеживание самолетов с помощью MATLAB ®» в Communications Toolbox.

Наша задача - разработать систему для приема сообщений ADS-B в эфир и декодирования со следующими требованиями к производительности:

  • Задержка: 0,5 секунды

  • Частота выборок: < 1 в 105 сообщениях

  • Пропускная способность: 0,125 Мбит/с (для вместимости не более 300 самолетов)

Проектирование с использованием блока SoC

Параметры конструкции: Данные передаются из FPGA в процессор по общей памяти в виде кадра выборок. Существует два ключевых параметра проектирования: «Размер кадра» и «Количество буферов», которые влияют на вышеуказанные требования к производительности.

  • Размер кадра: размер кадра - количество выборок в кадре. Он будет использоваться для определения размера буфера в канале памяти.

  • Количество буферов: количество буферов кадров в канале памяти. Данные непрерывно записываются в память алгоритмом FPGA в качестве буферов кадров, которые затем считываются процессором для выполнения задачи алгоритма идентификации.

Выберите проектные параметры для удовлетворения требований системы следующим образом:

Design to Set Latency Requirement: Latency - это период времени между получением данных логикой FPGA и подготовкой данных к обработке процессором. Он состоит из двух частей, задержки через логику FPGA и задержки для процессора, чтобы быть доступным для обработки данных.

Задержка через логику FPGA - это время, необходимое для обработки данных через FPGA. Обычно это происходит в порядке количества тактовых циклов, при этом тактовый сигнал работает в диапазоне МГц. Задержка для процессора, чтобы быть доступным для обработки данных, определяется временем, которое требуется для передачи выборок от FPGA к процессору через буферы кадров FIFO и памяти. Если размер FPGA FIFO эквивалентен буферу одного кадра, то максимальная задержка может быть записана следующим образом:

$Max Latency = (NumberOfBuffers + 1) * (TimeToGatherAFrame)$

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

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

Для этого примера длина декодированного пакета составляет 112 битов, упакованных в четыре 32-битовые выборки. Итак, размер кадра равен 4.

Конструкция для удовлетворения требований к пропускной способности: Пропускная способность - это объем данных, выдаваемых за единицу времени. Это функция обработки данных в FPGA и передачи и обработки данных процессором. Для логики FPGA данные обрабатываются на тактовой частоте порядка МГц, и выходной сигнал выдается каждые несколько тактовых циклов. Для передачи и обработки данных процессором это зависит от размера кадра. Типичным компромиссом является больший размер кадра, что приводит к более высокой пропускной способности, но увеличивает задержку. И наоборот, меньший размер кадра приводит к более низкой задержке, но снижает пропускную способность.

Конструкция для удовлетворения требований к образцам удаления: Приложение может допускать случайное удаление данных, вызванное изменениями продолжительности выполнения задачи. Буферы кадров в канале памяти содержат данные, если они не могут быть немедленно обработаны процессором. Следовательно, увеличение числа буферов кадров уменьшает выпадение выборки, но это неблагоприятно влияет на задержку, как объяснялось ранее.

Выберите значение Number of Buffers, чтобы выполнить требование Drop samples, не влияя на требование максимальной задержки.

Для этого примера средняя продолжительность задачи, измеренная на ZC706, равна 114us. Продолжительность каждого пакета составляет 120us. Даже если пакеты поступают обратно, они могут обрабатываться с минимальным количеством буферов кадров, поскольку в среднем задача обрабатывается до поступления нового пакета. Таким образом, установите минимально возможное количество буферов кадров, 3.

Создание модели SoC: используйте шаблон SDR для создания модели SoC для приложений беспроводной связи.

Верхняя модель изображена с ограничивающими прямоугольниками, разделяющими модель следующим образом:

  • Внешний ввод/вывод: Эта часть модели содержит блоки Входа и выхода РФ AD9361, которые связаны друг с другом использующим упрощенную модель канала. Кроме того, в этой области имеются светодиодные блоки, соединяющие логику FPGA.

  • FPGA: Раздел FPGA модели содержит алгоритмы FPGA, которые разработаны в отдельной модели и созданы здесь с использованием ссылки на модель.

  • Память: В этом разделе моделируется канал памяти между FPGA и процессором. Он моделирует задержки в соединении HW/SW.

  • Канал регистрации: В этом разделе моделируются три регистра FPGA, которые настраиваются процессором.

  • Процессор: в этом разделе содержится диспетчер задач, подключенный к модели процессора. Диспетчер задач управляет планированием задач процессора. Алгоритм процессора и задачи инициализации моделируются в отдельной модели и создаются здесь с использованием ссылок на модель.

Модель FPGA содержит алгоритм передатчика ADS-B, который передает тестовые пакеты ADS-B с переменной скоростью, и алгоритм приемника ADS-B, который декодирует принятые сообщения ADS-B.

Модель процессора содержит алгоритм процессора, который распаковывает полученные пакеты ADS-B в информационные биты и посылает их через блок UDP Send в другую систему для сообщения информации о самолете. Задача алгоритма процессора обозначается как dataTask в блоке диспетчера задач и указывается как управляемая событиями. Диспетчер задач планирует асинхронное планирование данных с помощью события rdEvent готовности буфера в канале памяти.

Подсистема Initialize Function инициализирует соответствующие регистры конфигурации аппаратных средств. Блоки AD9361 устанавливают центральную частоту, режим усиления и частоту дискретизации основной полосы частот подключенной радиочастотной платы FMC. Другие блоки моделируют три конфигурации отображения памяти пути данных детектора пакетов ADS-B. Они включают в себя выбор входа в алгоритм приемника, период передачи тестовых пакетов от FPGA и пороговое значение для алгоритма обнаружения.

Модель soc_ADSB_UDP_HostPrintout является моделью приема на основе UDP хоста, которая декодирует сообщения ADS-B. Запустите эту модель параллельно модели моделирования или развертывания ADSB, чтобы отобразить декодированные сообщения ADS-B, а также дополнительно отобразить местоположение самолета.

Моделировать

Запустите модель для визуализации передачи данных между FPGA и процессором. Период времени между поступлением пакетов зависит от количества самолетов. При системном требовании к обнаружению 300 летательных аппаратов будет в среднем 300 * 6,2 = 1860 сообщений в секунду (или сообщение каждые 1/1860 = 0,54 мс). Задать количество самолетов можно с помощью переменной NumAircraft, которая в свою очередь задает период в подсистеме Initialize Function. По умолчанию установлено значение 300, соответствующее допустимой емкости системы.

Откройте окно Logic Analyzer, чтобы увидеть формы сигналов, и обратите внимание, что передача памяти происходит в буферах из 4 выборок, или 16 байт.

Чтобы просмотреть использование внешней полосы пропускания памяти, откройте блок Контроллер памяти, перейдите на вкладку Производительность и щелкните Просмотр графиков производительности. Выберите все основные элементы и нажмите «Создать график». График показывает пропускную способность 0,125 Мбит/с. Поскольку 4 байта данных передаются каждые 32us, ожидаемая полоса пропускания составляет 4/32e-6 = 0,125 Мбит/с.

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

Для просмотра декодированных сообщений запустите сопутствующую модель приема UDP. Эта модель отображает информацию слежения за самолетом на графическом интерфейсе пользователя.

Анализ требований к аппаратным средствам

Как обсуждалось ранее, поскольку средняя продолжительность задачи 114us меньше, чем длительность пакета 120us, сообщения не отбрасываются в среднем во время передачи в процессор. Это подтверждается просмотром количества сброшенных выборок в FIFO с использованием сигнала icFIFODroppedCount в инспекторе данных моделирования.

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

Установите NumAircraft на 990 (новое сообщение каждые 163us), чтобы имитировать обратное поступление сообщений самолета. Измените спецификацию задачи в блоке Диспетчер задач, чтобы смоделировать дополнительную вычислительную нагрузку на процессор. На вкладке Моделирование (Simulation) выберите второе распределение, установив значение Процент (Percent) равным 100% во второй строке и 0% в первой строке. Это присваивает средней продолжительности задачи 163us, что приведет к тому, что выполнение некоторых задач займет больше времени, чем разрешено. Установите время моделирования равным 0,1 мс и смоделируйте. Для 990 плоскостей скорость поступления сообщений составляет 990 * 6,2 = 6138 сообщений в секунду. Таким образом, требование к пакету выделения составляет 6138/105 = 58 сообщений в секунду или 5,8 сообщений в 0,1 сек. После получения в Logic Analyzer уведомления о том, что это требование нарушено, поскольку 18 сообщений были отброшены.

Внедрение и запуск на оборудовании

Для этого раздела требуются следующие продукты:

Для реализации модели на поддерживаемой плате SoC используйте инструмент SoC Builder. По умолчанию модель будет реализована на оценочном комплекте Xilinx ® Zynq ® ZC706 в конфигурации с этой платой. Чтобы открыть SoC Builder, выберите вкладку «Система на кристалле» на панели инструментов Simulink и нажмите кнопку «Настроить, построить и развернуть». После открытия SoC Builder выполните следующие действия.

  • Выберите «Build Model» на экране «Setup». Нажмите кнопку «Далее».

  • Нажмите кнопку «View/Edit Memory Map» для просмотра карты памяти на экране «Review Memory Map». Нажмите кнопку «Далее».

  • Укажите папку проекта на экране «Select Project Folder». Нажмите кнопку «Далее».

  • Выберите «Build, load and run» на экране «Select Build Action». Нажмите кнопку «Далее».

  • Нажмите кнопку «Validate», чтобы проверить совместимость модели для реализации на экране «Validate Model». Нажмите кнопку «Далее».

  • Нажмите кнопку «Build», чтобы начать построение модели на экране «Build Model». Внешняя оболочка откроется, когда начнется синтез FPGA. Нажмите кнопку «Далее».

  • Нажмите кнопку «Test Connection» на экране «Connect Hardware» для проверки подключения хост-компьютера к плате SoC. Нажмите кнопку «Далее», чтобы перейти к экрану «Запуск приложения».

Синтез FPGA может занять более 30 минут. Чтобы сэкономить время, можно использовать предоставленный предварительно сгенерированный битовый поток, выполнив следующие действия.

  • Закройте внешнюю оболочку для завершения синтеза.

  • Скопируйте предварительно созданный битовый поток в папку проекта, выполнив приведенную ниже команду, а затем:

  • Нажмите кнопку «Load and Run» для загрузки предварительно созданного битового потока и запуска модели на плате SoC.

copyfile(fullfile(matlabshared.supportpkg.getSupportPackageRoot,'toolbox','soc',...
         'supportpackages','xilinxsoc','xilinxsocexamples','bitstreams',...
         'soc_ADSB-zc706.bit'),'./soc_prj');

Реализация на ZedBoard: для реализации модели на ZedBoard необходимо сначала сконфигурировать модель на ZedBoard и установить следующие параметры примера. Откройте окно Model Configuration Parameters, перейдите на вкладку Hardware Implementation и выполните следующие действия.

  • Выберите ZedBoard в выпадающем списке под заголовком «Hardware board» (Аппаратная плата) как в верхней, так и в процессорной модели.

  • Перейдите на вкладку Target hardware resources > FPGA design (верхний уровень), включите параметр Include MATLAB as AXI Master IP для взаимодействия с хостом и установите тактовую частоту ядра IP (МГц) равной 4 МГц.

  • Перейдите на вкладку Целевые аппаратные ресурсы > FPGA design (debug) и включите монитор Include AXI Interconnect.

  • Перейдите в раздел Сведения об устройстве и выберите Поддержка длинной модели как сверху, так и процессора.

Затем откройте SoC Builder и выполните действия, описанные выше для ZC706 Xilinx ® Zynq ®. Измените команду copyfile в соответствии с битовым потоком Zedboard soc _ ADSB-zedboard.bit.

Результаты профилирования

Чтобы включить профилирование задач процессора, откройте параметры конфигурации и перейдите в раздел Hardware Implementation > Hardware Board settings > Task Profiling on processor и выберите «Show on SDI» и «Save to file». Установите время остановки моделирования 10 секунд и запустите модель во внешнем режиме. После завершения моделирования откройте инспектор данных моделирования (SDI) и перейдите к последнему запуску и добавьте на график сигнал DataReadTask. Обратите внимание, что имитационная модель точно предсказывала, как приложение будет работать на оборудовании.

Резюме

В этом примере показано, как SoC Blockset используется для разработки стандарта ADS-B на основе пакетов в соответствии с системными требованиями. Смоделировав конструкцию с каналом памяти в качестве интерфейса между FPGA и процессором, вы подтвердили, что системные требования к пропускной способности и выделяемым пакетам удовлетворяются во время разработки. Вы внедрили конструкцию на устройстве SoC из модели и проверили результаты на оборудовании. Хотя ADS-B не является ресурсоемким стандартом, полезно продемонстрировать процесс проектирования систем на основе пакетов, предназначенных для реализации на устройстве SoC. Можно следовать той же процедуре проектирования для еще более ресурсоемких требований к этому приложению или другому приложению на основе пакетов.