Системы, основанные на пакетах, являются общими для беспроводной связи. Данные принимаются по эфиру и декодируются как дискретные пакетные данные на вычислительном устройстве. Для заданных системных требований трудно спроектировать систему и реализовать непосредственно на SoC, поскольку она часто включает длительные итерации отладки и интегрирования на оборудовании, поскольку аппаратные эффекты трудно учитывать во время проекта. В этом примере вы спроектируете основанное на пакетах приложение отслеживания самолетов на основе стандарта Automatic Dependent Surveillance Broadcast (ADS-B), разделенного между FPGA и встраиваемым процессором. В отличие от традиционных методов, вы будете симулировать проект приложения с интерфейсом памяти перед реализацией на оборудовании с помощью SoC Blockset, чтобы сократить время разработки. Затем вы подтвердите проект на оборудовании с помощью автоматически сгенерированного кода из модели.
Поддерживаемые аппаратные платформы:
Комплект для оценки ZC706 Xilinx ® Zynq ® + карта FMCOMMS2/3/4 Analog Devices ®.
ZedBoard™ + аналоговые устройства FMCOMMS2/3/4 плата.
Согласно стандарту ADS-B пакет сообщений содержит в общей сложности 120 биты, который имеет 8-разрядную преамбулу и 112 биты информации о самолете, включая его положение и скорость. Введение в схему сигнализации Mode-S и технологию ADS-B для слежения за самолетами см. в примере 'Airplane Tracking Using MATLAB ®' в Communications Toolbox.
Наша задача - спроектировать систему приема сообщений ADS-B вне эфира и декодировать со следующими требованиями к эффективности:
Задержка: 0.5 секунд
Частота выборки: < 1 из 105 сообщений
Пропускная способность: 0,125 Мбит/с (для вместимости не более 300 самолетов)
Расчётные параметры: Данные передаются от FPGA к процессору через общую память как система координат выборок. Существуют два ключевых расчётных параметров, Формат кадра и Количество буферов, которые влияют на вышеуказанные требования к эффективности.
Формат кадра: Формат кадра - это количество выборок в системе координат. Он будет использоваться для определения buffer size в канале памяти.
Количество буферов: Количество систем координат в канале памяти. Данные постоянно записываются в память алгоритмом FPGA в виде кадровых буферов, которые затем считываются процессором для выполнения задачи алгоритма идентификации.
Выберите расчётные параметры, чтобы удовлетворить системным требованиям следующим образом:
Проект для удовлетворения требований к задержкам: Задержка - это период времени между получением данных логикой FPGA и готовостью данных к обработке процессором. Он содержит две части, задержку через логику FPGA и задержку для процессора, которая будет доступна для обработки данных.
Задержка через логику FPGA является временем, необходимым для обработки данных через FPGA. Обычно это происходит по порядку нескольких тактовых синхроимпульсов с синхроимпульсом в области значений МГц. Задержка для процессора, чтобы быть доступным для обработки данных, определяется временем, которое требуется для передачи выборок от FPGA к процессору через FIFO и буферы системы координат памяти. Если размер FPGA FIFO эквивалентен одной системе координат, то максимальная задержка может быть записана следующим образом:
Поскольку время сбора системы координат прямо пропорционально формату кадра, поэтому максимальная задержка в передаче данных прямо пропорциональна формату кадра и количеству буферов.
Время сбора кадра является константой для непрерывно потоковых приложений и равен размеру кадра, умноженному на время выходной выборки FPGA. Однако для асинхронных систем, основанных на пакетах, это время также зависит от частоты поступления пакетов. Если вы выбираете формат кадра, больший, чем размер пакета, тогда, возможно, вам придется ждать неопределенного времени для поступления всех пакетов, необходимых для создания системы координат. Если вы выберете размер пакета, меньший, чем размер пакета, это отрицательно скажется на пропускной способности. Поэтому для систем, основанных на асинхронных пакетах, формат кадра, равный размеру пакета, является разумным выбором. Это позволяет каждому пакету передавать в процессор, как только обработка FPGA завершена, тем самым уменьшая задержку.
В данном примере декодированная длина пакета составляет 112 биты, упакованных в четыре 32-битовых выборки. Итак, формат кадра равен 4.
Проект, удовлетворяющий требованиям пропускной способности: Пропускная способность - это объем данных, получаемых в качестве выходных данных в единицах времени. Это функция обработки данных в FPGA и передачи данных и обработки процессором. Для логики FPGA данные обрабатываются на тактовых частотах порядка МГц и выводится каждые несколько тактов. Для передачи и обработки данных процессором, это зависит от формата кадра. Типичный компромисс является большим форматом кадра приводит к более высокой пропускной способности, но увеличивает задержку. И наоборот, меньший формат кадра приводит к меньшей задержке, но уменьшает пропускную способность.
Проект для удовлетворения требований к выборкам: Приложение может переносить случайные данные о сбросах, вызванные изменениями в продолжительности выполнения задачи. Системы координат в канале памяти содержат данные, когда они не могут быть немедленно обработаны процессором. Поэтому увеличение количества буферов системы координат уменьшает выпадение выборки, но это отрицательно влияет на задержку, как объяснено ранее.
Выберите значение Количество буферов, таким образом, чтобы вы могли удовлетворить требованию выборки, не влияя на требование максимальной задержки.
В данном примере средняя длительность задачи, измеренная на ZC706, равна 114us. Каждая длительность пакета составляет 120us. Даже если пакеты поступают назад к назад, они могут быть обработаны с минимальным количеством буферов систем координат, поскольку в среднем задача обрабатывается до поступления нового пакета. Итак, установите количество буферов систем координат на минимально возможное, 3.
Создайте модель SoC: используйте шаблон SDR для создания модели SoC для приложений беспроводной связи.
Верхняя модель изображена с ограничивающими рамками, которые сегментируют модель следующим образом:
Внешние вводы-выводы: Эта часть модели содержит AD9361 RF Входа и Выхода блоки, которые соединяются друг с другом с помощью упрощенной модели канала. В сложение этой области есть светодиодные блоки, которые соединяют логику FPGA.
FPGA: Раздел FPGA модели содержит алгоритмы FPGA, которые разработаны в отдельной модели и представлены здесь с помощью модели-ссылки.
Память: Этот раздел моделирует канал памяти между FPGA и процессором. В нем описываются задержки в соединениях HW/SW.
Register Channel: Этот раздел моделирует три регистра FPGA, которые сконфигурированы процессором.
Процессор: Этот раздел содержит Диспетчер задач, который подключен к модели процессора. Диспетчер задач контролирует планирование задач процессора. Алгоритм процессора и задачи инициализации моделируются в отдельной модели и создаются здесь с помощью моделей-ссылок.
Модель FPGA содержит алгоритм передатчика ADS-B, который передает тестовые пакеты ADS-B с переменной скоростью, и алгоритм приемника ADS-B, который декодирует принятые сообщения ADS-B.
Модель процессора содержит Алгоритм Процессора, который распаковывает полученные пакеты ADS-B в информационные биты и отправляет их через блок UDP Send в другую систему для сообщения информации о самолете. Задача алгоритма процессора обозначается как dataTask в блоке Task Manager и задается как событийно-управляемая. Диспетчер задач планирует данные асинхронно с помощью события готовности буфера rdEvent в канале памяти.
Подсистема Initialize Function инициализирует соответствующие регистры аппаратного строения. Блоки AD9361 устанавливают центральную частоту, режим усиления и частоту выборки основной полосы частот подключенной платы FMC RF. Другие блоки моделируют три сопоставленные с памятью строения datapath детектора пакетов ADS-B. Они включают выбор входа в алгоритм приемника, период передачи тестовых пакетов от FPGA и пороговое значение для алгоритма обнаружения.
soc_ADSB_UDP_HostPrintout модели является моделью приема на основе host UDP, которая декодирует сообщения ADS-B. Запустите эту модель параллельно с моделью симуляции или развертывания ADSB, чтобы отобразить декодированные сообщения ADS-B, а также опционально сопоставить местоположение самолета.
Запустите модель, чтобы визуализировать передачу данных между FPGA и процессором. Период времени между прибытием пакетов является функцией от количества самолетов. Учитывая системное требование обнаружения 300 самолетов, в среднем 300 * 6,2 = 1860 сообщений в секунду (или сообщение каждые 1/1860 = 0,54 мс). Можно задать количество самолетов с помощью переменной NumAircraft, которая, в свою очередь, устанавливает период в подсистеме Initialize Function. Настройка по умолчанию является 300, чтобы соответствовать допустимой емкости системы.
Откройте окно Logic Analyzer, чтобы увидеть формы волны и заметить, что передачи памяти происходят в буферах 4 выборок или 16 байтов.
Чтобы просмотреть использование полосы пропускания внешней памяти, откройте блок Mem Controller, выберите вкладку Performance и нажмите View performance plots. Выберите все шаблоны и щелкните Создать график (Create Plot). График показывает пропускную способность 0,125 МБпс. Поскольку 4 байта данных передаются каждые 32us, ожидаемая полоса пропускания составляет 4/32e-6 = 0,125 Мбит/с.
Используя Данные моделирования Inspector, можно визуализировать график выполнения задачи. Задача данных управляется событием от FPGA, уведомляющим процессор о том, что пакет был декодирован FPGA, записан во внешнюю память и считан драйвером DMA.
Чтобы увидеть декодированные сообщения, запустите модель приема сопутствующего UDP. Эта модель будет отображать информацию отслеживания самолета на графический интерфейс пользователя.
Как обсуждалось ранее, поскольку средняя длительность задачи 114us меньше, чем длительность пакета 120us, сообщения не сбрасываются в среднем во время передачи процессору. Это подтверждается просмотром количества выпавших выборок в FIFO с помощью сигнала icFIFODroppedCount в Данные моделирования Inspector.
Модель SoC может использоваться, чтобы исследовать проект пространство. Рассмотрим наихудший сценарий, когда сообщения о плоскости принимаются плотно, и существует большая вычислительная нагрузка на процессор. Можно изменить настройки модели и моделировать и определить, отбрасываются ли пакеты в этом более агрессивном сценарии.
Установите значение NumAircraft 990 (новое сообщение каждые 163us), чтобы симулировать назад прибытие сообщений о самолете. Измените спецификацию задачи в блоке Task Manager, чтобы симулировать большую вычислительную нагрузку на процессор. На вкладке Simulation выберите второе распределение путем установки процентного значения равного 100% во второй строке и 0% в первой строке. Это присваивает среднюю длительность задачи 163us, что приведет к выполнению некоторых задач дольше, чем разрешено. Установите время симуляции равным 0,1 мс и промоделируйте. Для 990 самолетов частота поступления сообщений составляет 990 * 6,2 = 6138 сообщений в секунду. Поэтому требование к отбрасываемому пакету составляет 6138/105 = 58 сообщений в секунду или 5,8 сообщений в 0.1 сек. После симуляции уведомления в Logic Analyzer, что это требование нарушается, так как 18 сообщений были сброшены.
Для этого раздела требуются следующие продукты:
HDL Coder™
Embedded Coder ®
Для реализации модели на поддерживаемой плате SoC используйте инструмент SoC Builder. По умолчанию модель будет реализована на наборе для оценки ZC706 Xilinx ® Zynq ®, так как она сконфигурирована с этой платой. Чтобы открыть SoC Builder, выберите вкладку 'System on Chip' на панели инструментов Simulink и нажмите кнопку 'Configure, Build, & Deploy'. После открытия SoC Builder выполните следующие действия:
Выберите 'Build Model ' on ' Setup' экран. Нажмите 'Next'.
Нажмите 'View/Edit Memory Map', чтобы просмотреть карту памяти на экране 'Review Memory Map'. Нажмите 'Next'.
Укажите папку проекта на экране 'Select Project Folder'. Нажмите 'Next'.
Выберите 'Build, load and run ' on ' Select Build Action'. Нажмите 'Next'.
Нажмите 'Validate', чтобы проверить совместимость модели для реализации на экране 'Validate Model'. Нажмите 'Next'.
Нажмите 'Build', чтобы начать создание модели на экране 'Build Model'. Внешний интерпретатор откроется, когда начнется синтез FPGA. Нажмите 'Next'.
Щелкните 'Test Connection ' on ' Connect Оборудования', чтобы проверить связь хоста-компьютера с платой СнК. Нажмите 'Next', чтобы перейти к экрану 'Run Application'.
Синтез 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, перейдите на вкладку Аппаратная реализация и выполните следующее:
Выберите ZedBoard из раскрывающегося списка в разделе «Аппаратная плата» в верхней и процессорной модели.
Перейдите на целевой компьютер ресурсы > Проект FPGA (верхний уровень), включите Включить MATLAB как AXI Master IP для взаимодействия на основе хоста и установите тактовую частоту IP-ядра (МГц) равной 4 МГц.
Перейдите на целевой компьютер resources > FPGA design (debug) и включите Include AXI Interconnect monitor.
Перейдите к разделу Детали устройства и выберите Поддержка долго как на верхней, так и на процессорной модели.
Затем откройте SoC Builder и выполните действия, указанные выше для Xilinx ® Zynq ® ZC706. Измените команду copyfile, чтобы соответствовать битовому потоку Zedboard 'soc _ ADSB-zedboard.bit'.
Чтобы включить профилирование задач процессора, откройте параметры конфигурации и перейдите к Аппаратная реализация > Настройки аппаратной платы > Профилирование задач на процессоре и выберите 'Show on SDI' и 'Save to file'. Установите время остановки симуляции в 10 секунд и запустите модель в режиме external mode. После завершения симуляции откройте Данные Моделирования Inspector (SDI) и перейдите к последнему запуску и добавьте сигнал DataReadTask к графику. Заметьте, что симуляционная модель точно предсказала, как приложение будет работать на оборудовании.
Этот пример показал, как SoC Blockset используется для разработки основанного на пакетах стандарта ADS-B, чтобы соответствовать системным требованиям. Симулируя проект с каналом памяти как интерфейсом между FPGA и Процессором, вы подтвердили, что системные требования к пропускной способности и сбросным пакетам выполняются во время проектирования. Вы реализовали проект на SoC-устройстве из модели и проверили результаты на оборудовании. Несмотря на то, что ADS-B не является интенсивным в вычислительном отношении стандартом, полезно продемонстрировать процесс проекта для основанных на пакетах систем, предназначенных для реализации на однокристальном устройстве. Вы можете следовать той же процедуре проекта для еще более интенсивных в вычислительном отношении требований к этому приложению или другому приложению на основе пакетов.