Отладьте проект Zynq Используя HDL Coder и Embedded Coder

В этом примере показано, как отладить проект Zynq с помощью функций Embedded Coder® и HDL Coder™.

Требования

Введение

Когда вы моделируете и разрабатываете алгоритм для платформы Zynq, полезно контролировать, настроить, и отладить алгоритм, в то время как это работает на оборудовании. В этом примере показано, как использовать функции как режим external mode, интерфейс AXI и HDL, FIFO блокируется, чтобы зондировать в проект Zynq. Используя функцию режима external mode, можно зондировать внутренние данные в программном обеспечении, работающем на процессоре ARM. И потому что процессор ARM соединяется с FPGA через интерфейс AXI, можно контролировать и настроить параметры на FPGA также. Вместе с HDL блоки FIFO можно собрать быстрые данные о FPGA и получить его назад к Simulink для анализа.

Давайте начнем путем рассмотрения модели в качестве примера.

open_system('hdlcoder_data_capture');

Подсистема DataCapture является аппаратной подсистемой, предназначающейся для матрицы FPGA. В этой подсистеме подсистема OriginalDUT содержит блок Trigonometric Function, который генерирует быстрый синус и потоки данных косинуса. Подсистема OriginalDUT представляет наш проект алгоритма. Если мы хотим отладить этот проект, как мы получаем и контролируем этот быстрый поток данных?

FPGA запускается на намного более быстрой частоте часов, чем программный код на процессоре ARM. Режим external mode может использоваться с программным обеспечением, работающим на процессоре ARM, чтобы контролировать медленно изменяющиеся параметры состояния, такие как состояние FIFO, но частота дискретизации программного кода, например, 1 кГц, не достаточно быстра, чтобы собрать быстро изменяющиеся данные в FPGA, например, 50 МГц.

В этом примере показано, как использовать блок FIFO, чтобы собрать быстрые данные о FPGA, и затем использовать программное обеспечение на процессоре ARM, чтобы получить собранные данные через интерфейс AXI и режим external mode.

Для отладки целей мы добавляем подсистему Debug_FIFOs в DUT. Эта подсистема использует два HDL блоки FIFO, чтобы получить быстрые потоки данных для будущего извлечения. Входные параметры управляющего сигнала к подсистеме Debug_FIFOs соединяются с интерфейсом DUT и соединяются с процессором ARM через интерфейс AXI.

В верхнем уровне модели в качестве примера, когда переключатель EnableCapture включен, и выключен переключатель RetrieveData, модуль Debug_FIFOs получит 1 000 выборок данных в HDL блоки FIFO. Это - фаза сбора данных. Затем когда переключатель EnableCapture сохранен, и переключатель RetrieveData снова включен, модуль Debug_FIFOs возвратит собранные данные к процессору ARM. Это - фаза поиска данных. Можно использовать ручные переключатели, чтобы переключиться между этими двумя фазами, чтобы получить и контролировать внутренние данные о FPGA.

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

Выходной порт аппаратной подсистемы, DirectDataOut, выходных данных непосредственно к интерфейсу AXI. В отличие от этого CapturedDataOut1 и CapturedDataOut2 выходных портов выходные параметры собрал данные от FIFOs. Мы сравним результаты этих двух выходных параметров в последнем разделе.

Разверните проект на оборудовании Zynq

Затем мы запустим HDL Workflow Advisor с модели и пробежим рабочий процесс элемента кода HW/SW Zynq, чтобы развернуть этот проект на оборудовании Zynq. Для подробного пошагового руководства обратитесь к примеру, Начинающему с Рабочим процессом Элемента кода HW/SW для Платформы Xilinx Zynq.

1. В Цели Набора> Целевое устройство Набора и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают IP Core Generation. Для Целевой платформы выберите оценочный комплект Xilinx Zynq ZC702. Запустите эту задачу.

2. В Цели Набора> Поставившая Целевая Интерфейсная задача, выберите AXI4-Lite для всех портов ввода и вывода.

3. Затем пробегите все шаги рабочего процесса, чтобы сгенерировать IP HDL, создать проект EDK, сгенерировать модель программного интерфейса, и создать и загрузить поток битов FPGA. Модель интерфейса сгенерированного программного обеспечения показывают в следующем изображении:

4. Сконфигурируйте и создайте модель программного интерфейса для режима external mode:

  1. В сгенерированной модели откройте диалоговое окно Configuration Parameters.

  2. Выберите Solver и установите "Время остановки" на "inf".

  3. В меню модели выберите Simulation> Mode> External.

  4. Щелкните по кнопке Run на панели инструментов модели. Embedded Coder создает модель, загружает исполняемый файл ARM на оборудование Zynq ZC702, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании Zynq ZC702.

Получите и отобразите данные из оборудования Zynq

Теперь оба, аппаратные и программные части проекта работают на оборудовании Zynq, следующий шаг, должны получить и получить данные от платы Zynq.

Если режим external mode соединяется, убедитесь, что переключатель EnableCapture находится в 1 положении, и переключатель RetrieveData находится в 0 положениях. Заметьте, что поле отображения FIFONumber увеличивается до 1 000 почти сразу. Это означает, что FIFO в матрице FPGA начал собирать данные и был быстро заполнен 1 000 выборок данных.

Откройте блок Time Scope и наблюдайте DirectDataOut выход в первой строке. Заметьте, что полученные данные являются на вид случайной формой волны между-1 и 1. Это вызвано тем, что FPGA запускается на намного более быстрой частоте, чем программное обеспечение работает на процессоре ARM. Непосредственно использующий режим external mode, чтобы контролировать быстрые данные о FPGA означает производить быструю форму волны синуса на очень низкой скорости, которая генерирует случайную форму волны между-1 и 1.

Теперь дважды кликните переключатель RetrieveData, чтобы включить считывание данных. Переключатель EnableCapture должен быть сохранен. Когда переключатель RetrieveData включен, внутренняя логика, смоделированная в этом примере, отсылает полученные выборки данных один за другим с FIFO на процессор ARM через интерфейс AXI. Эти выборки данных затем отправляются от процессора ARM до Simulink через режим external mode. Заметьте, что поле отображения FIFONumber уменьшается к 0.

Откройте блок Time Scope, вторая и третья строка осциллографа теперь показывает синус и волну косинуса, которую мы получили в FIFO. Следующее изображение показывает формы волны осциллографа.

Сводные данные

В этом примере показано, как использовать функции как режим external mode, интерфейс AXI и HDL блоки FIFO, чтобы зондировать в проект Zynq, соберите быстрые данные о FPGA и получите их назад к Simulink для анализа. Можно также сделать подобный контроль с инструментами поставщика FPGA как ChipScope™ или SignalTap™. Но сила этого подхода - то, что можно извлечь всю пользу визуализации из Simulink, как различные блоки осциллографа, и можно также создать собственные средства управления, триггеры или спецификаторы в Simulink.