Этот пример представляет систематический подход, чтобы разработать информационный канал между аппаратной логикой (FPGA) и встраиваемым процессором с помощью SoC Blockset. Приложения часто делятся между аппаратной логикой и встраиваемым процессором на устройстве системы на чипе (SoC), чтобы встретить пропускной способности, задержке и требованиям к обработке. Вы разработаете и моделируете включение целого приложения из алгоритмов процессора FPGA &, интерфейса памяти и планирования задач, чтобы соответствовать системным требованиям. Вы затем подтвердите проект на оборудовании путем генерации кода из модели и реализации на устройстве SoC.
Поддерживаемые аппаратные платформы:
Оценочный комплект Xilinx® Zynq® ZC706
Xilinx Zynq UltraScale™ + оценочный комплект MPSoC ZCU102
Макетная плата ZedBoard™ Zynq-7000
Комплект разработчика Altera® Cyclone® V SoC
Altera комплект разработчика Arria® 10 SoC
Рассмотрите заявление, которые постоянно обрабатывают данные на FPGA и встраиваемом процессоре. В этом примере алгоритм FPGA фильтрует входной сигнал и передает получившиеся данные потоком к процессору. В модели реализации soc_hwsw_stream_implementation, блок Buffer представляет передачу данных с FPGA на процессор. Процессор работает с буферизированными данными и классифицирует данные или как высокочастотную или как низкую частоту в подсистеме Алгоритма Процессора. FPGA генерирует тестовые данные или низкой частоты или высокочастотной синусоиды на основе установки Dip-переключателя в Исходной подсистеме Тестовых данных.
Приложение имеет следующие требования к производительности:
Пропускная способность: 10e6 выборки в секунду
Максимальная задержка: 100 мс
Выборки пропущены: <1 в 10 000
Выборка данных о процессах FPGA выборкой, в то время как процессор работает с кадром данных за один раз. Данные передаются асинхронно между FPGA и процессором, и длительность программной задачи может отличаться для каждого выполнения. Поэтому очередь необходима, чтобы содержать данные между FPGA и процессором, чтобы предотвратить потерю данных. Эта очередь реализована на двух этапах, один как FIFO пакетов выборок данных в памяти FPGA и другом как серия кадровых буферов во внешней памяти. Необходимо будет установить три параметра, связанные с очередью: формат кадра (количество выборок в кадре данных), количество кадровых буферов и размера FIFO (количество пакетов выборок в FIFO).
Эти параметры проекта влияют на производительность и использование ресурса. Увеличение формата кадра позволяет больше времени для выполнения программной задачи и удовлетворять требования пропускной способности за счет увеличивающейся задержки. Как правило, вы устанавливаете эти параметры только, когда вы готовы реализовать на оборудовании, которое представляет собой следующие проблемы:
Трудно отладить проблемы как отбрасывание выборок в оборудовании из-за отсутствия видимости.
Трудно разработать ваше приложение эффективно без первой оценки эффектов аппаратных интерфейсов. Может потребоваться много итераций реализации проекта, когда можно оценить производительность только через реализацию на оборудовании.
Трудно оптимизировать проект начиная с производительности, и причинно-следственные отношения трудно определить посредством реализации.
Идеально вы хотите объяснить эти аппаратные эффекты, в то время как вы разрабатываете приложение во время проектирования, прежде, чем реализовать и работать на оборудовании. Один способ удовлетворить эти требования состоит в том, чтобы моделировать аппаратные эффекты во время проектирования. Если можно моделировать изменение в длительности задачи, использование памяти buffers/FIFOs и задержек передачи внешней памяти, можно оценить их эффекты на проектирование приложений и реализовать доказанный проект на оборудовании. SoC Blockset позволяет вам моделировать эти эффекты, таким образом, можно оценить производительность развертываемого приложения перед работой оборудования.
Создайте модель SoC soc_hwsw_stream_top из модели реализации soc_hwsw_stream_implementation использование Потока от FPGA до Шаблона Процессора. Топ-модель включает модель FPGA soc_hwsw_stream_fpga и модель процессора soc_hwsw_stream_proc инстанцированный как модели - ссылки. Топ-модель также включает блоки Контроллера канала и Контроллера памяти Памяти, какая модель совместно использовала внешнюю память между FPGA и процессором. Они были ранее смоделированы с помощью буферного блока в модели реализации. Чтобы улучшать производительность симуляции, алгоритм FPGA также моделируется для Основанной на кадре обработки soc_hwsw_stream_fpga_frame и включен как образцовая различная подсистема в верхнем уровне. Можно выбрать модель, чтобы запуститься в Основанной на кадре или Основанной на выборке обработке путем выбора из маски подсистемы FPGA.
Разработайте, чтобы Удовлетворить Требование Задержки: Задержка в datapath с FPGA на процессор включает задержку через логику FPGA и время для передачи данных с FPGA на процессор через канал памяти. В этом примере часы FPGA составляют 10 МГц, и задержка находится на порядке наносекунд. Это незначительно по сравнению с задержкой в канале памяти, который находится на порядке миллисекунд. Поэтому давайте фокусироваться на разработке для задержки для передачи данных следующим образом.
Начните с нескольких потенциальных форматов кадра и вычислите период Кадра для каждого формата кадра в Таблице-1. Период кадра является временем между двумя последовательными кадрами с FPGA на процессор. В данном примере FPGA, шаг расчета вывода является 10e-6 как допустимыми данными, выводится каждые 100 тактов от FPGA.
Задержка канала памяти происходит из-за времени, истекшего выборками в очереди кадровых буферов и FPGA FIFO. Позвольте нам FPGA размера FIFO, эквивалентный одному кадровому буферу. Чтобы остаться в максимальном требовании задержки, вычислите количество кадровых буферов для каждого формата кадра согласно:
Максимальная задержка допускала этот пример, 100 мс. Начиная с количества буферного счета на максимальное требование задержки, для всех случаев в Таблице-1, удовлетворяется требование задержки. Минимум 3 кадровых буферов необходим во внешней памяти для передачи данных. В то время как один из кадровых буферов записан FPGA, другой кадровый буфер читается процессором. Поэтому Дело № 8-10 из приведенной ниже таблицы отклонено, когда они нарушают минимальное буферное требование.
Чтобы визуализировать задержку, моделируйте модель и открытый блок Memory Channel, перейдите к вкладке Performance и кликните по выставленным для обозрения графикам производительности. Выберите все опции задержки под Средствами управления Графиком и нажмите Create Plot. Как получено в фигуре - 2, вы заметите, что составная задержка встречается <требование на 100 мс.
Разработайте, чтобы Удовлетворить Требование Пропускной способности: В среднем обработка программных задач должна завершиться в период кадра, когда в противном случае, задача превысит продвижение к отбрасыванию данных и нарушит требование пропускной способности. т.е. .
Существуют различные способы получения средней длительности задач, соответствующей форматам кадра для вашего алгоритма, которые покрыты Примером Выполнения Задачи. Средняя длительность задачи для различных форматов кадра получена в Таблице 2.
Чтобы моделировать модель с параметрами, соответствующими строкам (#2-#7) в таблице, используют функциональную функцию set_hwsw_stream_set_parameters
со строкой # в качестве аргумента. Установите параметры модели для строки № 2 как указано ниже:
>> soc_hwsw_stream_set_parameters(2); % row # 2
Поскольку Средняя Длительность Задачи 1,06 мс является меньше, чем Период Кадра 1,0 мс, данные пропущены в канале памяти. Открытый Logic Analyzer и уведомление, которые сигнализируют о icFIFODroppedCount, увеличиваются в течение симуляции, как получено в рисунке 3, указывая на накапливающуюся сумму пропущенных данных.
Поскольку данные пропущены во время передачи с FPGA на процессор через память, это отражается как понижение пропускной способности. Открытый блок Контроллера памяти, перейдите к вкладке Performance и нажмите на кнопку пропускной способности Plot под вкладкой Performance, чтобы рассмотреть график пропускной способности памяти как в фигуре 4. Обратите внимание на то, что пропускная способность является меньше, чем необходимые 0,4 Мбайт/с. Поскольку шаг расчета выходных данных FPGA является 10e-6, и каждая выборка 4 байта шириной, необходимая пропускная способность потоковой передачи для системы равняется 4 bytes/10e-6 = 400 кБайт/с.
Разработайте, чтобы Удовлетворить Демонстрационное Требование Отбрасывания: Поскольку длительность задачи может отличаться по многим причинам как различные пути к выполнению кода и изменение во время переключения ОС, возможно, что данные пропущены в канале памяти. Задайте среднюю длительность выполнения задачи и статистическое распределение на время задачи в маске блока Task Manager. Измерьте FIFO, эквивалентный одному кадровому буферу. Установите пакетный размер FIFO на 16 байтов и вычислите глубину FIFO:
Теперь, моделируйте модель в течение 100 секунд (10e6 выборки на 10e-6 выборках в секунду) для случаев № 3-7. Откройте Анализатор логики и отметьте количество выборок, пропущенных на сигнал icFIFODroppedCount.
>> soc_hwsw_stream_set_parameters(3); % set the model parameters for #3
Открытый Инспектор Данных моделирования и добавляет сигналы от канала памяти как показано в рисунке 5 ниже. Обратите внимание на то, что как буферное использование (сигнализируют о buffAvail) увеличиваются до максимальных 11, использование FIFO (предупредите, isFIFOEntries) начинают увеличиваться. Когда FIFO полностью используется, выборки пропущены (предупредите о isFIFODroppedCount),
Результаты симуляции для всех случаев № 3-7 и результирующая выборка, пропущенная на 10 000, сведены в таблицу в Таблице 3.
Подсвеченные записи (строки № 4 и № 5) являются допустимыми проектными решениями, поскольку они встречают пропускной способности, задержке и демонстрационному требованию отбрасывания.
Следующие продукты требуются для этого раздела:
HDL Coder™
Embedded Coder®
Чтобы реализовать модель на поддерживаемой плате SoC используют инструмент SoC Builder. Откройте маску подсистемы 'FPGA' и избранного образцового варианта к 'Основанной на выборке обработке'. По умолчанию модель будет реализована на оценочном комплекте Xilinx® Zynq® ZC706, когда это сконфигурировано с той платой. Откройте Разработчика SoC из меню Tools и выполните эти шаги:
Выберите экран '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(matlabroot,'toolbox','soc','socexamples','bitstreams','soc_hwsw_stream_top_fpga-zc706.bit'), './soc_prj/soc_hwsw_stream_fpga-zc706.bit');
В то время как приложение работает на оборудовании, переключите Dip-переключатель на своей плате, чтобы изменить тестовые данные от 'низко' до 'высокой' частоты и заметить, что мигание соответствия Вовлекло плату. Можно также читать, выборки пропустили количество в модели, работающей на режиме external mode. Таким образом вы проверяете, что ваша реализация из модели SoC Blockset совпадает с симуляцией и удовлетворяет требования.
Реализация на других платах: Чтобы реализовать модель на поддерживаемой плате кроме платы оценочного комплекта Xilinx® Zynq® ZC706, необходимо сначала сконфигурировать модель на поддерживаемую плату и установить параметры в качестве примера как ниже. Открытые Образцовые Параметры конфигурации, перейдите к вкладке Hardware Implementation и выполните следующие настройки:
Выберите свою плату из выпадающего списка под Аппаратной платой и на верхней части и на модели процессора.
Перейдите к ресурсам Целевого компьютера> проект FPGA (верхний уровень) вкладка и включите, Включают MATLAB как Ведущий IP AXI для основанного на хосте взаимодействия и устанавливают частоту часов ядра IP (МГц) на 10 МГц.
Перейдите к ресурсам Целевого компьютера> проект FPGA (отладка) вкладка и включите, Включают Соединительный монитор AXI.
Затем, откройте Разработчика SoC и выполните шаги, как ранее утверждено для Xilinx� Zynq� ZC706 выше. Измените copyfile команду, чтобы совпадать с потоком битов, соответствующим вашей плате. Доступные предсгенерированные потоки битов:
'soc_hwsw_stream_top_fpga-zc706.bit'
'soc_hwsw_stream_top_fpga-zedboard.bit'
'soc_hwsw_stream_top_fpga-zcu102.bit'
'soc_hwsw_stream_top_fpga-c5soc.sof'
'soc_hwsw_stream_top_fpga-a10soc.sof'
Таким образом, этот пример показал вам систематический подход, чтобы разработать datapath между аппаратной логикой и встраиваемым процессором с помощью SoC Blockset. Вы выбрали параметры проекта формата кадра, количество кадровых буферов и размера FIFO, чтобы удовлетворить требования производительности системы пропускной способности, задержки и выборок отбрасывания. Путем симуляции и визуализации эффектов этих параметров на полной модели, содержащей аппаратную логику, алгоритмы процессора, внешнюю память и длительность задачи процессора, вы раскрыли проблемы как потеря пропускной способности, задержки и отбрасывания выборок прежде, чем реализовать на оборудовании. Этот рабочий процесс гарантирует, что дизайнерские работы на оборудовании перед реализацией и избегают длинных итераций реализации проекта.