Основанные на пакете системы распространены в радиосвязях. Данные получены по воздуху и декодируются как дискретные пакетные данные по вычислить устройству. Для данных системных требований это затрудняет, чтобы спроектировать систему и реализацию непосредственно на SoC, когда это часто включает длинные итерации отладки и интегрирования на оборудовании, поскольку аппаратные эффекты затрудняют с учетом во время проектирования. В этом примере вы спроектируете основанное на пакете приложение отслеживания самолета на основе Автоматической Зависимой Широковещательной передачи Наблюдения (ADS-B) стандарт, разделенный между FPGA и встраиваемым процессором. В отличие от традиционных методов, вы симулируете проектирование приложений с интерфейсом памяти перед реализацией на оборудовании с помощью SoC Blockset, чтобы сократить время разработки. Вы затем подтвердите проект на оборудовании автоматически сгенерированным кодом из модели.
Поддерживаемые аппаратные платформы:
Оценочный комплект Xilinx® Zynq® ZC706 + карта Analog Devices® FMCOMMS2/3/4.
ZedBoard™ + Аналоговые устройства FMCOMMS2/3/4 карта.
Согласно стандарту ADS-B пакет сообщения содержит в общей сложности 120 битов, который имеет преамбулу на 8 битов и 112 битов информации о самолете включая его положение и скорость. Для введения в Режимы сигнальная схема и технология ADS-B для отслеживания самолета, отошлите к 'Отслеживанию Самолета Используя MATLAB®' пример в Communications Toolbox.
Наша задача состоит в том, чтобы спроектировать систему, чтобы получить сообщения ADS-B от воздуха и декодировать со следующими требованиями к производительности:
Задержка: 0,5 секунды
Частота дискретизации отбрасывания: <Каждое 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, которые соединяются друг с другом использующим упрощенную модель канала. Кроме того, эта область имеет блоки LED, которые соединяют логику FPGA.
FPGA: раздел FPGA модели содержит алгоритмы FPGA, которые проектируют в отдельной модели и инстанцируют здесь с помощью модели - ссылки.
Память: Этот раздел моделирует канал памяти между FPGA и процессором. Это симулирует задержки в связи HW/SW.
Канал регистра: Эти модели раздела три регистра FPGA, которые сконфигурированы процессором.
Процессор: Этот раздел содержит Диспетчер задач, который соединяется с моделью процессора. Диспетчер задач управляет планированием задач процессора. Алгоритм процессора и задачи инициализации моделируются в отдельной модели, и инстанцирован здесь с помощью моделей - ссылок.
Модель FPGA содержит Алгоритм Передатчика ADS-B, который передает, тестируют пакеты ADS-B по плавающему курсу и Алгоритму Приемника ADS-B, который декодирует полученные сообщения ADS-B.
Модель процессора содержит Алгоритм Процессора, который распаковывает полученные пакеты ADS-B в информационные биты и отправляет их через блок UDP Send к другой системе для того, чтобы сообщить информацию самолета. Задача алгоритма процессора обозначается как dataTask в блоке Task Manager и задана как событийно-управляемая. Диспетчер задач планирует данные асинхронно посредством буферного готового события rdEvent в канале памяти.
Инициализировать Функциональная подсистема инициализирует соответствующие регистры аппаратной конфигурации. Блоки AD9361 устанавливают центральную частоту, получают режим и основополосную частоту дискретизации присоединенной платы RF FMC. Другая модель блоков три настройки с отображенной памятью пакетного детектора ADS-B datapath. Они включают выбор входа к алгоритму приемника, передают период тестовых пакетов от FPGA и порогового значения для алгоритма обнаружения.
Модель soc_ADSB_UDP_HostPrintout является основанным на UDP хостом, получают модель, которая декодирует сообщения ADS-B. Запустите эту модель параллельно к имитационной модели ADSB или модели развертывания, чтобы отобразить декодируемые сообщения ADS-B и также опционально сопоставить местоположение самолета.
Запустите модель, чтобы визуализировать передачу данных между FPGA и процессором. Период времени между прибытием пакетов является функцией количества самолетов. Учитывая системное требование обнаружения 300 самолетов, будут в среднем 300*6.2 = 1 860 сообщений в секунду (или сообщение каждый 1/1860 = 0,54 мс). Можно определить номер самолетов с помощью переменной NumAircraft, которая в свою очередь устанавливает период в Инициализировать Функциональной подсистеме. Настройка по умолчанию 300, чтобы совпадать с допустимой системной способностью.
Откройте окно Logic Analyzer, чтобы видеть формы волны и заметить, что передачи памяти происходят в буферах 4 выборок, или 16 байтов.
Чтобы просмотреть использование полосы пропускания внешней памяти, откройте блок Mem Controller, выберите вкладку Performance и нажмите графики эффективности View. Выберите все ведущие устройства и нажмите Create Plot. График показывает полосу пропускания 0,125 Мбайт/с. Начиная с 4 байтов данных передается каждый 32us, ожидаемая полоса пропускания 4/32e-6 = 0,125 Мбайт/с.
Используя Инспектора Данных моделирования, можно визуализировать расписание выполнения задачи. Задача данных управляется событием от FPGA, уведомляющего процессор, что пакет декодировался FPGA, записанным во внешнюю память, и читал драйвером DMA.
Чтобы видеть декодируемые сообщения, запуститесь, сопутствующий UDP получают модель. Эта модель отобразит информацию об отслеживании самолета о графический интерфейсе пользователя.
Как обсуждено ранее, поскольку средняя длительность задачи 114us меньше пакетной длительности 120us, сообщения не пропущены в среднем, во время передачи в процессор. Это подтверждено путем рассмотрения количества пропущенных выборок в FIFO с помощью сигнала icFIFODroppedCount в Инспекторе Данных моделирования.
Модель SoC может использоваться, чтобы исследовать пробел проекта. Рассмотрите худший вариант, когда плоские сообщения получены плотно и существует больше нагрузки расчета на процессор. Можно изменить настройки модели и симулировать и определить, пропущены ли пакеты в этом более агрессивном сценарии.
Установите NumAircraft на 990 (новое сообщение каждый 163us) симулировать последовательное прибытие плоских сообщений. Измените спецификацию задачи на блоке Task Manager, чтобы симулировать больше нагрузки расчета на процессор. На вкладке Simulation выберите второе распределение путем установки Процентного значения на 100% на второй строке и 0% на первой строке. Это присваивает среднюю длительность задачи 163us, который приведет к некоторому выполнению задачи, занимающему больше времени, чем позволенный. Установите время симуляции на 0,1 мс и симулируйте. Для 990 плоскостей частота поступления сообщений 990*6.2 = 6 138 сообщений в секунду. Пакетное требование отбрасывания поэтому, 6138/105 = 58 сообщений в секунду или 5,8 сообщений за 0,1 секунды. На уведомление симуляции в Logic Analyzer, что это требование нарушено, когда 18 сообщений были пропущены.
Следующие продукты требуются для этого раздела:
HDL Coder™
Embedded Coder®
Чтобы реализовать модель на поддерживаемой плате SoC используют инструмент SoC Builder. По умолчанию модель будет реализована на оценочном комплекте Xilinx® Zynq® ZC706, когда это сконфигурировано с той платой. Открытому Разработчику SoC выберите вкладку 'System on Chip' в панели инструментов Simulink и нажмите кнопку 'Configure, Build, & Deploy'. Если Разработчик SoC открывается, выполните эти шаги:
Выберите экран '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 Hardware', чтобы протестировать возможность соединения хоста - компьютера с платой SoC. Нажмите '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 и установить следующие параметры в качестве примера. Открытые Параметры конфигурации Модели, перейдите к вкладке Hardware Implementation и выполните следующее:
Выберите ZedBoard из выпадающего списка под 'Аппаратной платой' и на верхней части и на модели процессора.
Перейдите к ресурсам Целевого компьютера> проект FPGA (верхний уровень) вкладка, включите, Включают MATLAB как Ведущий IP AXI для основанного на хосте взаимодействия и устанавливают тактовую частоту ядра IP (МГц) на 4 МГц.
Перейдите к ресурсам Целевого компьютера> проект FPGA (отладка) вкладка и включите, Включают Соединительный монитор AXI.
Перейдите к деталям Устройства и выбирайте Support долго долго и на верхней части и на модели процессора.
Затем откройте Разработчика SoC и выполните шаги, как ранее утверждено для Xilinx® Zynq® ZC706 выше. Измените copyfile команду, чтобы совпадать с потоком битов Zedboard 'soc_ADSB-zedboard.bit'.
Чтобы включить профилирование задачи процессора, откройте параметры конфигурации и перейти к настройкам Hardware Implementation> Hardware Board> Профилирование Задачи на процессоре и выбрать 'Show on SDI' и 'Save to file'. Установите время остановки Симуляции на 10 секунд и запустите модель в режиме external mode. После того, как симуляция завершается, открытый Инспектор данных моделирования (SDI), и перейдите к последнему запуску и добавьте DataReadTask сигнала в график. Заметьте, что имитационная модель точно предсказала, как приложение выполнит на оборудовании.
Этот пример показал, как SoC Blockset используется, чтобы спроектировать основанный на пакете стандарт ADS-B, чтобы соответствовать системным требованиям. Путем симуляции проекта с памятью образовывают канал как интерфейс между FPGA и Процессором, вы подтвердили это, системным требованиям пропускной способности и пакетов отбрасывания соответствуют во время проектирования. Вы реализовали проект на устройстве SoC из модели и проверили результаты на оборудовании. Несмотря на то, что ADS-B не является в вычислительном отношении интенсивным стандартом, полезно продемонстрировать процесс проектирования для основанных на пакете систем, предназначенных для реализации на устройстве SoC. Можно следовать за той же методикой проектирования для еще более в вычислительном отношении интенсивных требований для этого приложения или другого основанного на пакете приложения.